1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng mạng thông tin địa xã hội trên cơ sở ứng dụng dịch vụ hướng vị trí

107 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 107
Dung lượng 5,85 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - Hà Văn Phát XÂY DỰNG MẠNG THÔNG TIN ĐỊA-XÃ HỘI TRÊN CƠ SỞ ỨNG DỤNG DỊCH VỤ HƯỚNG VỊ TRÍ Chun ngành: Cơng nghệ thơng tin LUẬN VĂN THẠC SỸ KỸ THUẬT CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC TS NGUYỄN KHANH VĂN Hà Nội – Năm 2013   Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   MỤC LỤC Danh mục từ viết tắt, thuật ngữ tiếng Anh   Danh mục bảng .5   Danh mục hình vẽ   MỞ ĐẦU   Đặt vấn đề   Cách tiếp cận/giải 10   Cấu trúc luận văn 11   CHƯƠNG I: KHẢO SÁT CÁC CÔNG NGHỆ XÂY DỰNG MÁY CHỦ .12   1.1 Mơ hình xử lý vào 12   1.1.1 Mô hình vào đóng băng (Blocking I/O) 13   1.1.2 Mơ hình vào khơng đóng băng (Non-blocking I/O) 13   1.2 Mơ hình xử lý u cầu 15   1.2.1 Xử lý yêu cầu hướng luồng/tiến trình (Thread based) 19   1.2.2 Mơ hình xử lý u cầu hướng kiện (Event driven) .21   1.3 Ngơn ngữ lập trình phía máy chủ 23   CHƯƠNG II: XÂY DỰNG MÁY CHỦ CHO MẠNG THÔNG TIN ĐỊA-XÃ HỘI VỚI NODEJS 25   2.1 NodeJs gì? 25   2.2 Những thông tin đáng ý NodeJs 27   2.3 Kiến trúc nguyên tắc hoạt động NodeJs .30   2.3.1 Kiến trúc 30   2.3.2 Nguyên tác hoạt động 33   2.4 Tính co giãn quy mơ (scalability) 40   2.4.1 Co giãn quy mô theo chiều dọc .40   2.4.2 Co giãn quy mô theo chiều ngang 41   2.4.3 Co giãn quy mô sở liệu 42     Hà Văn Phát     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   2.5 Hỗ trợ cân tải 42   2.6 Tương tác với sở liệu không quan hệ (NoSQL) 46   2.6.1 MongoDB 46   2.6.1.1 Các tính MongoDB 46   2.6.1.2 Các phương thức truy cập vào MongoDB NodeJs .47   2.6.2 CouchDB 50   2.7 Giới thiệu lập trình với NodeJs 53   2.7.1 Giới thiệu NPM 53   2.7.2 Định dạng gói cài npm .53   2.7.3 Sử dụng NPM 54   2.8 Một số module phổ biến hữu dụng NodeJs .55   2.8.1 npm – Trình quản lý gói NodeJs .55   2.8.2 express – Khung ứng dụng Web cho NodeJs 55   2.8.3 socket.io –Các ứng dụng thời gian thực dễ dàng chạy liên thông quacác loại trình duyệt 55   2.8.4 cradle –Thư viện CouchDB mức cao, hỗ trợ nhớ đệm cho NodeJs 57   2.8.5 xml2js –Bộ chuyển đổi XML sangđối tượng JavaScript .58   2.8.6 node_redis: Thư viện Redis cho NodeJs 59   2.8.7 restify: Framework hỗ trợ lập trình RESTFul webservice hiệu 60   CHƯƠNG III: THỰC NGHIỆM SO SÁNH HIỆU NĂNG CỦA NODEJS VÀ CÔNG NGHỆ MÁY CHỦ TRUYỀN THỐNG .61   3.1 Tốc độ xử lý yêu cầu đồng thời 61   3.2 Hiệu xử lý yêu cầu đồng thời 65   3.3 So sánh tốc độ tính tốn số PI 67   3.4 So sánh hiệu xử lý đồng thời tính số PI 67   3.5 So sánh hiệu xử lý theo khối lượng liệu với số webserver khác .68   3.6 Khả cân tải nhân CPU .72     Hà Văn Phát     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   CHƯƠNG IV: XÂY DỰNG ỨNG DỤNG MÁY KHÁCH CHO MẠNG THÔNG TIN ĐỊA-XÃ HỘI VỚI NODEJS VÀ JAVASCRIPT .75   4.1 Ứng dụng Web .75   4.2 Ứng dụng web di động 78   4.2.1 Ngôn ngữ HTML5 79   4.2.2 Khung ứng dụng PhoneGap (Cordova) 79   4.2.3 Các thư viện Javascript hỗ trợ lập trình di động 81   4.2.4 Thư việnSencha Touch 2.0 82   CHƯƠNG V: MỘT SỐ ỨNG DỤNG DEMO SỬ DỤNG NODEJS VÀ JAVASCRIPT 86   5.1 Máy chủ đẩy thông báo (push notification server) 86   5.1.1 Giới thiệu ứng dụng 86   5.1.2 Các bước thực 86   5.2 Tán gẫu thời gian thực (Real time chat) 93   5.2.1 Giới thiệu ứng dụng 93   5.2.2 Các bước xây dựng 95   5.3 Sổ địa (Address book) 99   KẾT LUẬN 103   TÀI LIỆU THAM KHẢO 105       Hà Văn Phát     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Danh mục từ viết tắt, thuật ngữ tiếng Anh Tiếng Anh Tiếng Việt POSIX - Portable Operating System Interface Giao diện hệ điều hành khả chuyển IO – Input Output Vào API-Application Programming Interface Giao diện lập trình ứng dụng Blocking IO Vào đóng băng Non-Blocking IO Vào khơng đóng băng Multi-platform Đa tảng SPA- Single-page application Ứng dụng web đơn trang SPI- Single-page interface Giao diện đơn trang Thread pool Tổ hợp luồng Multi-core Đa nhân Multi-Processing Mudule Môdun xử lý đa tiến trình (luồng) Single-thread Đơn luồng Thread based Dựa theo luồng Event loop Vòng lặp kiện Event driven Hướng kiện Native application Ứng dụng gốc/bản địa WHATWG -Web Hypertext Application Tên riêng tổ chức Technology Working Group   Danh mục bảng Bảng Bảng tổng kết số tính NodeJs Apache + PHP 24 Bảng Kết kiểm thử tốc độ xử lý yêu cầu đồng thời 63 Bảng Kết kiểm thử hiệu xử lý yêu cầu đồng thời 66     Hà Văn Phát     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Danh mục hình vẽ Hình Thời gian thực hai tác vụ sử dụng Blocking IO .13   Hình Thời gian thực hiên hai tác vụ sử dụng Non-blocking IO 14   Hình So sánh hiệu xử lý yêu cầu Nginx Apache .16   Hình So sánh độ tiêu hao nhớ chương trình Nginx Apache .17   Hình Tạo luồng tiến trình để xử lý yêu cầu 19   Hình Mơ hình xử lý yêu cầu theo luồng, yêu cầu luồng 20   Hinh Mơ hình xử lý yêu cầu hướng kiện 21   Hình Nguyên tắc hoạt động vòng lặp kiện NodeJs 22   Hình Thống kê NodeJs .28   Hình 10 Hệ thống LinkedIn trước sau dùng NodeJs .29   Hình 11 Wal-Mart xây dựng web cho di động với NodeJs 29   Hình 12 Các khối kiến trúc NodeJs .31   Hình 13 Mơ hoạt động xử lý u cầu bên NodeJs .34   Hình 14 Mơ hình hoạt động NodeJs POSIX 36   Hình 15 Mơ hình xử lý đơn luồng 37   Hình 16 Mơ hình xử lý đa luồng 38   Hình 17 Mơ hình xử lý tổ hợp luồng 39   Hình 18 Chế độ chạy song song nhiều thể nhân CPU .45   Hình 19 Yêu cầu từ trình duyệt web worker khác xử lý 46   Hình 20 Biểu đồ mơ tả độ tiêu hao tài nguyên CPU theo thời gian 64   Hình 21 Biểu đồ mơ tả độ tiêu hao nhớ theo thời gian .65     Hà Văn Phát     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Hình 22 Biểu đồ kết kiểm thử hiệu xử lý yêu cầu đồng thời 66   Hình 23 Biểu đồ thời gian thực tính số Pi .67   Hình 24 Biểu đồ thời gian tính số Pi theo số lượng yêu cầu đồng thời 68   Hình 25 Biểu đồ thời gian hồi đáp yêu cầu theo kích thước liệu .72   Hình 26 Màn hình ứng dụng Facebook native (trái) web (phải) .76   Hình 27 Thực đơn trượt bên ứng dụng Facebook native (trái) web (phải) 76   Hình 28 Giao diện sử dụng SenchTouch 2.0 tảng thiết bị khác 83   Hình 29 Mơ hình cấu trúc ứng dụng SenchaTouch 84   Hình 30 Thơng báo GCM trạng thái điện thoại Android 89   Hình 31 Hộp thoại hiển thị thơng báo GCM ứng dụng PhoneGap 93   Hình 32 Màn hình ứng dụng tán gẫu với ba người dùng online .94   Hình 33 Màn hình nhập tên người trước vào tán gẫu .98   Hình 34 Màn hình tán gẫu .99   Hình 35 Màn hình danh sách bạn bè .101   Hình 36 Màn hình thơng tin cá nhân .101   Hình 37 Màn hình chỉnh sửa thơng tin cá nhân 102       Hà Văn Phát     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   MỞ ĐẦU Đặt vấn đề Mạng thông tin địa-xã hội (geo-social network) hay thường gọi mạng địa xã hội loại mạng xã hội mà thơng tin gắn liền với địa điểm Nếu mạng xã hội tạo giới ảo mạng máy tính mạng địa xã hội đưa người dùng giới ảo tiếp xúc gần với giới thực nhờ tương tác gắn với địa điểm họ Người dùng biết bạn bè tham gia hoạt động gì, đâu? Nhờ chia sẻ bạn bè, người dùng biết xung quanh có hoạt động hấp dẫn diễn chương trình biểu diễn ca nhạc, nghệ thuật, thi đấu thể thao, lễ hội, Mạng địa xã hội giúp thành viên chia sẻ địa điểm thú vị mà họ viếng thăm (check-in), hay dễ dàng tìm thấy địa điểm ví dụ quán café, siêu thị, nhà hàng,… Trong trường hợp có thiên tai, thảm hoạ, bệnh dịch,… mạng địa xã hội giúp có cảnh báo mối hiểm hoạ khu vực để có biện pháp phòng tránh, cứu hộ Ngày với phát triển vô mạnh mẽ thiết bị di động cầm tay thơng minh có hỗ trợ định vị điện thoại thơng minh (smartphone), máy tính bảng, laptop,… tạo môi trường thuận lợi tiếp đà phát triển cho mạng địa xã hội Rõ ràng mạng địa xã hội ngày tỏ hữu ích thu hút quan tâm lớn người dùng, hứa hẹn trở thành xu hướng cho mạng xã hội giới có số mạng địa xã hội thành công FourSquare, Yepl, Facebook Places, Google Places, Việt Nam chưa thực có mạng địa xã hội đáng ý Định hướng chung đề tài xây dựng mạng thông tin địa-xã hội với đầy đủ tính bao gồm việc xây dựng hệ thống máy chủ đủ mạnh, xây dựng liệu thông tin địa điểm sử dụng lại thơng tin từ dịch vụ hướng vị trí sẵn có, xây dựng cơng cụ tìm kiếm, lọc thông tin hiệu quả, chức chia sẻ   Hà Văn Phát     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   thơng tin thành viên, chức bảo mật, an tồn thơng tin cho hệ thống, ứng dụng máy khách để người dùng kết nối đến mạng Nếu thực luận văn theo hướng bao quát toàn mảng đề tài kết nghiên cứu khơng đủ độ sâu kỹ thuật tính ứng dụng khơng cao Vì tác giả nghiên cứu theo hướng hẹp sâu tìm kiếm giải pháp hiệu quả, phù hợp để xây dựng ứng dụng máy chủ, máy khách cho mạng địa xã hội cỡ trung bình Nói cách khác, luận văn sử dụng tên thứ hai, chi tiết đầy đủ sau (trong tên ban đầu xác định hướng nghiên cứu chung): Lựa chọn giải pháp xây dựng mạng thông tin địa-xã hội đảm bảo tính co giãn quy mơ, hiệu cao, cân tải tối ưu khả chuyển Như thực tế diễn ra, phát triển bùng nổ mạng xã hội khiến cho số lượng người dùng truy cập vào hệ thống ngày tăng mạnh Một đại diện tiêu biểu Facebook, ngày phục vụ hàng chục tỷ lượt truy cập, với tỷ lượt người dùng vào tháng Một đại diện khác Foursquare, mạng địa xã hội hàng đầu nay, đạt số 30 triệu người dùng toàn cầu, tỷ lượt ký tên đến (check-in) với hàng triệu lượt ngày tháng có thêm khoảng triệu người dùng đăng ký Đây thật số ấn tượng phát triển mạng xã hội Để giải phát triển bùng nổ đó, nhà phát triển dịch vụ mở rộng hệ thống máy chủ lớn, phân bổ toàn cầu, phân tải, Nhưng với tốc độ tăng trưởng việc nâng cấp máy chủ khơng thơi chưa đủ, cần tìm kiếm, lựa chọn giải pháp xây dựng hệ thống máy chủ đảm bảo tính co giãn quy mô (scalability), hiệu cao cân tải tối ưu Tính co giãn quy mơ giúp hệ thống máy chủ đủ sức đáp ứng tăng trưởng liên tục số lượng người dùng Hiệu cao cân tải tối ưu giúp hệ thống đủ sức xử lý lượng kết nối lớn thời gian đáp ứng nhanh (thời gian thực)   Hà Văn Phát     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Một đặc thù mạng thông tin địa xã hội ứng dụng máy khách chạy thiết bị di động có khả định vị điện thoại thông minh (smartphone) máy tính bảng (tablet),… Tuy nhiên thiết bị vơ đa dạng phong phú tảng hệ điều hành ngơn ngữ lập trình, dẫn đến việc phát triển ứng dụng gặp nhiều khó khăn Đây thách thức lớn nhà phát triển ứng dụng kết nối với mạng thông tin địa xã hội Trong khuôn khổ luận văn thạc sỹ kỹ thuật, tác giả tập trung vào nghiên cứu giải pháp hiệu cho việc xây dựng hệ thống máy chủ ứng dụng máy khách đáp ứng yêu cầu mạng thông tin địa-xã hội Đây coi phần móng, cốt lõi để từ tiếp tục xây dựng phần khác xây dựng liệu địa điểm, cơng cụ tìm kiếm, chia sẻ thơng tin,… Như nhiệm vụ luận văn tìm kiếm giải pháp phù hợp cho việc xây dụng hệ thống máy chủ mạng thông tin địa xã hội vừa đáp ứng tính co giãn quy mô (scalability), hiệu cao cân tải tối ưu, đồng thời hỗ trợ tốt cho việc giải toán đa tảng thiết bị di động chạy ứng dụng máy khách Qua khảo sát, phân tích cơng nghệ xây dựng máy chủ, ứng dụng máy khách di động, tác giả lựa chọn tảng NodeJs để xây dựng máy chủ cho mạng địa xã hội chọn hướng sử dụng HTML5 phát triển ứng dụng máy khách chạy xuyên tảng di động Cách tiếp cận/giải v Tìm hiểu cơng nghệ máy chủ tại, so sánh kiến trúc mơ hình hoạt động, thấy rõ tính ưu việt NodeJs, đáp ứng yêu cầu đặt cho việc xây dựng hệ thống máy chủ cho mạng thông tin địa xã hội v Thực nghiệm kiểm chứng hiệu NodeJs so với máy chủ khác v Tìm hiểu cơng nghệ để giải toán đa tảng (multi-platform) cho ứng dụng máy khách mạng thông tin địa xã hội   Hà Văn Phát 10     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Hình 31 Hộp thoại hiển thị thông báo GCM ứng dụng PhoneGap Với tảng iOS, dễ dàng tạo máy chủ đẩy thông báo tương tự cho Android, thay sử dụng GCM, phải sử dụng dịch vụ đẩy thông báo Apple (APNS- Apple Push Notification service), dạng tương tự GCMcủa Google Và NodeJs có sẵn mơdun hỗ trợ thực việc cách dễ dàng, số node-apn, push_server, node-pushserver, Phía client, tạo ứng dụng native để nhận thông điệp theo cách iOS, ngồi viết ứng dụng web với PhoneGap sử dụng plugin PhoneGap PushPlugin tương tự GCMPlugin để nhận thông điệp làm với Android Chúng ta vửa thấy NodeJs với Javascript hỗ trợ tốt công cụ cho lập trình mạng thơng tin địa xã hội 5.2 Tán gẫu thời gian thực (Real time chat) 5.2.1 Giới thiệu ứng dụng Đây ứng dụng tán gẫu thời gian thực web, có hiển thị đồ định vị người tham gia tán gẫu với bạn   Hà Văn Phát 93     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Hình 32 Màn hình ứng dụng tán gẫu với ba người dùng online Ứng dụng xây dựng chủ yếu NodeJs với ngơn ngữJavascript, có dùng số môdun phổ biếncủa NodeJs express, socket.io, jade, nib, socket.io-client… mơdun bên mơdun -express: Khuôn khổ ứng dụng web cho NodeJs, giới thiệu chương trước, giúp dễ dàng tạo khung trang web -socket.io:Giúp tạo ứng dụng thời gian thực chạy trình duyệt thiết bị di động, xoá mờ khác biệt chế truyền vận -jade: Mô tơ mẫu (template) hiệu suất cao, giống với Haml, thực với Javascript cho NodeJs Hỗ trợ việc tạo khuôn mẫu trang web, đọc express, thay cho html -stylus: Stylus ngơn ngữ mang tính cách mạng, cung cấp cách hiệu quả, động biểu cảm để tạo CSS Hỗ trợ cú pháp thụt vào phong cách CSS thường xuyên -nib: Hỗ trợ số tiện ích tối đa hoá Stylus   Hà Văn Phát 94     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   -socket.io-client: Mơdun socket.io sử dụng cho client, giống với websocket bổ sung thêm số tính mà Websocket khơng hỗ trợ phía trình duyệt người dùng 5.2.2 Các bước xây dựng - Cài đặt mơdun cần thiết kể sau tiến hành lập trình cho client server Phía server:Tạo tệp có tên app.js với nội dung sau Khai báo đối tượng var express = require('express') , stylus = require('stylus') , nib = require('nib') , sio = require('socket.io'); var app = express.createServer(); Thiết lập đường dẫn đến tệp chứa nội dung trang web hiển thị phía client app.get('/', function (req, res) { res.render('index', { layout: false }); }); Thiết lập để lắng nghe cổng 8080 app.listen(8080, function () { }); var io = sio.listen(app); Đón xử lý kiện ‘connection’ io.sockets.on('connection', function (socket) { //Đón xử lý thơng điệp từ máy khách đến socket.on('user message', function (msg) { //Cập nhật thông điệp đến tất máy khách kết nối socket.broadcast.emit('user message', socket.nickname, msg); });   Hà Văn Phát 95     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   //Đón xử lý kiện ‘nickname’ socket.on('nickname', function (nick, fn) { //thông báo cho tất máy khách kiện người dùng tham gia phịng tán gẫu socket.broadcast.emit('announcement', nick + ' connected'); //Thơng báo cập nhật lại mảng tên người dùng tán gẫu io.sockets.emit('nicknames', nicknames); } }); Đón xử lý kiện cập nhật vị trí người dùng socket.on('userlocation', function (nick, lat, lng){ // Lưu địa điểm người dùng vào danh sách // Cập nhật lại cho máy khách danh sách địa điểm người dùng io.sockets.emit('userlocation', nicknames, userlats, userlngs); }); Đón xử lý kiện người dùng ngắt kết nối socket.on('disconnect', function () { //cập nhật lại danh sách người dùng địa điểm họ cho tất máy khách socket.broadcast.emit('announcement', socket.nickname + ' disconnected'); socket.broadcast.emit('nicknames', nicknames); io.sockets.emit('userlocation', nicknames, userlats, userlngs); }); Phía client: Tạo giao diện web với jade lưu vào tệp index.jade var socket = io.connect();   Hà Văn Phát 96     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Đón xử lý thông điệp 'announcement' từ server socket.on('announcement', function (msg) { //Hiển thị thơng báo có người tham gia ngừng tán gẫu }); Đón xử lý thơng điệp 'nicknames' từ server socket.on('nicknames', function (nicknames) { //Cập nhật danh sách người tham gia tán gẫu }); Đón xử lý thông điệp 'user message' từ server socket.on('user message', message (from, msg){ //Cập nhật thơng điệp lên hình tán gẫu }); Đón xử lý thơng điệp 'userlocation' từ server socket.on('userlocation', function (nicknames, userlats, userlngs) { //Cập nhật lại danh sách địa điểm người dùng đồ }); Xử lý hành động người dùng: Khi người dùng nhập tên enter, gửi thông điệp 'nickname' lên server socket.emit('nickname', $('#nick').val()); Sau tiếp tục khởi tạo đồ định vị địa điểm người dùng Nếu trình duyệt hỗ trợ HTML5, cho phép định vị địa điểm tiến hành định vị if(navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { Khi định vị thành cơng cập nhật địa điểm lên server socket.emit('userlocation', name, lat, lng); }); }else{ Nếu trình duyệt khơng hỗ trợ định vị cập nhật địa điểm mặc định lên server   Hà Văn Phát 97     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   socket.emit('userlocation', name, 20.9695030, 105.8224120); } Khi người dùng nhập message ấn Send thực gửi thông điệp lên server socket.emit('user message', $('#message').val()); Sau hồn thành lập trình cho client server, tiến hành chạy ứng dụng: Mở terminal, tìm đén thư mục chứa mã nguồn, gõ lênh node app.js Terminal thông báo server chạy lắng nghe cổng 8080 info - socket.io started app listening on http://0.0.0.0:8080 Mở trình duyệt, truy cập vào địa http://localhost:8080hoặc http://0.0.0.0:8080sẽ nhận kết trả trang web, yêu cầu người nhập tên nhấn Enter để vào phịng tán gẫu Hình 33 Màn hình nhập tên người trước vào tán gẫu Sau nhập tên Enter hình thị, cửa sổ tán gẫu bên trái với danh sách bạn tham gia tán gẫu nhập thơng điệp, phía bên phải đồ với vị trí người tham gia tán gẫu   Hà Văn Phát 98     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Hình 34 Màn hình tán gẫu Chúng ta bật nhiều trình duyệt để thử nghiệm tán gẫu với nhiều người Tốc độ cập nhật thông điệp gần tức thời 5.3 Sổ địa (Address book) Trình bày bước để xây dựng ứng dụng sổ địa với hỗ trợ PhoneGap SenchaTouch, cho phép ứng dụng chạy nhiều nên tảng di động khác nhau, có hai đại diện tiêu biểu Android iOS Ứng dụng lưu danh sách bạn bè với thông tin cá nhân họ, bao gồm địa nơi họ sống kèm đồ Các bước thực hiện: - Tải Cordova PhoneGap máy, lấy thư viện tương ứng cho Android iOS để tạo ứng dụng Cordova Android iOS, tiến hành theo bước hướng dẫn Cordova - Dùng thư viện SenchaTouch để tạo giao diện ứng dụngAddress book web, toàn mã nguồn lưu trữ thư mục có tên addressbook   Hà Văn Phát 99     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   - Đưa mã nguồn (toàn thư mục addressbook) ứng dụng SenchaTouch web vào thư mục quy định Cordova Android iOS Trên Android thư mục /assest/www, iOS thư mục /www - Sửa lại đường dẫn đến tệp khởi động ứng dụng web cho với đường dẫn tảng tương ứng Với Android: @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); super.setIntegerProperty("splashscreen", R.drawable.splash); super.loadUrl("file:///android_asset/www/addressbook/index.html", 10000); } Với iOS: self.viewController.useSplashScreen = YES; self.viewController.wwwFolderName = @"www/addressbook"; self.viewController.startPage = @"index.html"; Bây chạy ứng dụng Address book Android iOS ứng dụng gốc (native), thực ứng dụng gốc cho Android (tệp apk) iOS (tệp ipa), sẵn sàng đưa lên PlayStore Appstore Và kết chạy ứng dụng Android iOS Màn hình danh sách bạn bè lưu sổ địa   Hà Văn Phát 100     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Hình 35 Màn hình danh sách bạn bè Khi chọn người bạn để xem thông tin chi tiết bao gồm ảnh, tên, nghề nghiệp, đồ với địa hiển thị hình Hình 36 Màn hình thơng tin cá nhân   Hà Văn Phát 101     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   Để chỉnh sửa thông tin người bạn ta chọn Edit hình cho phép thay đổi thơng tin bao gồm tên, địa chỉ, số điện thoại,… Hình 37 Màn hình chỉnh sửa thơng tin cá nhân Rõ ràng ứng dụng chạy hai tảng di động hồn tồn giống nhau, việc lập trình thực lần cho ứng dụng dạng web với Javascript đơn giản co hỗ trợ thư viện SenchaTouch Ngoài dễ dàng tạo ứng dụng gốc giống hệt chạy tảng khác Winphone, Blackberry, Windows, MacOSX,…Như tiêt kiệm nhiều chi phí nhân cơng thời gian phát triển ứng dụng         Hà Văn Phát 102     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   KẾT LUẬN Qua tìm hiểu, nghiên cứu cấu trúc, nguyên tắc hoạt động thực nghiệm NodeJs cơng nghệ máy chủ truyền thống, thấy rõ ưu điểm vượt trội NodeJs việc thiết kế xây dựng hệ thống máy chủ cho mạng thơng tin địa xã hội nói riêng mạng xã hội nói chung đáp ứng đầy đủ tiêu chí mà đề tài đặt tính co giãn quy mô, hiệu cao, cân tải tốt Tính co giãn quy mơ NodeJs thể qua khả dễ dàng nâng cấp hệ thống phần cứng máy chủ cách suốt với phần mềm, tức phần mềm tự co giãn theo phần cứng, khơng cần phải cấu hình lại NodeJs hỗ trợ đa tảng hệ điều hành việc cài đặt đơn giản giúp cho việc mở rộng thêm số lượng máy chủ dễ dàng (mở rộng theo chiều ngang) Hiệu NodeJs vượt trội so với công nghệ máy chủ truyền thống, đại diện Apache, thể hiệu xử lý kết nối đồng thời, xử lý u cầu với kích thước liệu lớn, tính tốn phức tạp, Khả cân tải NodeJs ưu điểm vượt trội Môdun cluster cho phép NodeJs chạy song song nhiều thể máy chủ chia sẻ cổng để phục vụ yêu cầu từ máy khách Điều giúp cân tải hiệu quả, tức yêu cầu phân đến thể xử lý yêu cầu thể bị lỗi thể cịn lại phục vụ bình thường Bên cạnh cịn giúp mở rộng số lượng yêu cầu xử lý đồng thời lên gấp bội, góp phần tăng tính co giãn quy mơ Ngồi cịn tìm hướng để phát triển ứng dụng thiết bị di động có độ khả chuyển cao, tận dụng sức mạnh ngôn ngữ Javascript kết hợp với khung ứng dụng PhoneGap SenchaTouch, viết mã nguồn lần dùng cho nhiều tảng thiết bị khác Với NodeJs, ngôn ngữ Javascript hỗ trợ HTML5 khung ứng dụng SenchaTouch, Cordova, nhà phát triển có đầy đủ cần thiết để   Hà Văn Phát 103     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   xây dựng hệ thống máy chủ ứng dụng máy khách cho mạng thông tin địa xã hội với thời gian ngắn chi phí nhỏ mà đáp ứng tiêu chí đề Sau có tảng hệ thống máy chủ hoạt động hiệu quả, có khả co giãn quy mơ tốt nhờ cơng nghệ NodeJs nhà phát triển tiếp tục nghiên cứu xây dựng môdun quan trọng khác mạng thông tin địa xã hội liệu địa điểm gồm đồ số điểm quan tâm (POI – Point Of Interest), hệ thống bảo mật thông tin, hệ thống chia sẻ thông tin, kết nối thành viên,…     Hà Văn Phát 104     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   TÀI LIỆU THAM KHẢO 10gen (2013), MongoDB overview Nguồn: http://www.mongodb.org/ 10gen (2013), MongoDB manual documentation Nguồn: http://docs.mongodb.org/manual/ Adobe (2012), About PhoneGap Nguồn: http://phonegap.com/ Apache (2013), Cordova overview Nguồn: http://cordova.apache.org/ Cộng đồng Tornado (2013), Tornado web server Nguồn: http://www.tornadoweb.org/en/stable/ Cộng đồng Nginx (2013), About Nginx Nguồn: http://wiki.nginx.org/Main Clock.co.uk (2012), Ten reasions to use NodeJs Nguồn: http://clock.co.uk/downloads/ten-reasons-to-use-nodejs.pdf eBay (2012), About ql.io service Nguồn: http://ql.io/docs/about Foursquare (2013), About Foursquare Nguồn: https://foursquare.com/about/ 10 Gianluca Guarini's (2012), Nodejs and a simple push notification server Nguồn: http://www.gianlucaguarini.com/blog/nodejs-and-a-simple-push-notification-server/ 11 Jake Luer (2013), Delivering iOS Push Notifications with Node.js Nguồn: https://blog.engineyard.com/2013/developing-ios-push-notifications-nodejs 12 Joyent (2013), Trang giới thiệu tổng quan NodeJs Nguồn:http://nodejs.org/about/ 13 Joyent (2013), Tài liệu mô tả API NodeJs phiên 0.10 Nguồn: http://nodejs.org/api/   Hà Văn Phát 105     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   14 Joyent (2013), Kho môdun NodeJs Nguồn: https://npmjs.org/ 15 Joyent (2013), Danh sách mơdun NodeJs u thích Nguồn: https://nodejsmodules.org/interesting 16 Macournoyer (2013) Tiny, fast & funny HTTP server Nguồn: https://github.com/macournoyer/thin/ 17 Manuel Kiessling (2013), The Node beginner book Nguồn: http://www.nodebeginner.org/ 18 Pedro Teixeira (2012), Professional Node.js: Building JavaScript Based Scalable Software 19 Ralph Caraveo (2012), How is Node.js inherently faster when it still relies on Threads internally? Nguồn: http://stackoverflow.com/questions/3629784/how-is-node-js-inherently-fasterwhen-it-still-relies-on-threads-internally 20 Ryan Dalh (2009), JSConf - slides thuyết trình NodeJs Nguồn: http://s3.amazonaws.com/four.livejournal/20091117/jsconf.pdf 21 Ryan Dalh (2010), JSConf– slides thuyết trình NodeJs lần thứ Nguồn: http://nodejs.org/jsconf2010.pdf 22 Remi D (2008), A little holiday present: 10,000 reqs/sec with Nginx! Nguồn: http://blog.webfaction.com/2008/12/a-little-holiday-present-10000-reqssecwith-nginx-2/ 23 Sencha (2013), Sencha Touch overview Nguồn: http://www.sencha.com/products/touch 24 Srirangan(2012), Node.js and MongoDB - Getting started with MongoJS Nguồn: http://howtonode.org/node-js-and-mongodb-getting-started-with-mongojs 25 Wikipedia (2013), Thread pool pattern Nguồn: http://en.wikipedia.org/wiki/Thread_pool_pattern   Hà Văn Phát 106     Xây dựng mạng thông tin địa-xã hội sở ứng dụng dịch vụ hướng vị trí   26 Yahoo! News (2013), Number of active users at Facebook over the years Nguồn: http://news.yahoo.com/number-active-users-facebook-over-230449748.html 27 Yin Yang (2012), Html5 - WebSocket Node.js http://vietgamedev.net/blog/222/html5-websocket-v%C3%A0-node-js/   Hà Văn Phát 107   ...     Xây dựng mạng thông tin địa- xã hội sở ứng dụng dịch vụ hướng vị trí   CHƯƠNG IV: XÂY DỰNG ỨNG DỤNG MÁY KHÁCH CHO MẠNG THÔNG TIN ĐỊA-XÃ HỘI VỚI NODEJS VÀ JAVASCRIPT .75   4.1 Ứng dụng. .. thơng tin từ dịch vụ hướng vị trí sẵn có, xây dựng cơng cụ tìm kiếm, lọc thơng tin hiệu quả, chức chia sẻ   Hà Văn Phát     Xây dựng mạng thông tin địa- xã hội sở ứng dụng dịch vụ hướng vị trí   thông. .. lớn thời gian đáp ứng nhanh (thời gian thực)   Hà Văn Phát     Xây dựng mạng thông tin địa- xã hội sở ứng dụng dịch vụ hướng vị trí   Một đặc thù mạng thông tin địa xã hội ứng dụng máy khách chạy

Ngày đăng: 08/12/2021, 23:18

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. 10gen (2013), MongoDB overview Nguồn: http://www.mongodb.org/ Sách, tạp chí
Tiêu đề: MongoDB overview
Tác giả: 10gen
Năm: 2013
2. 10gen (2013), MongoDB manual documentation Nguồn: http://docs.mongodb.org/manual/ Sách, tạp chí
Tiêu đề: MongoDB manual documentation
Tác giả: 10gen
Năm: 2013
3. Adobe (2012), About PhoneGap Nguồn: http://phonegap.com/ Sách, tạp chí
Tiêu đề: About PhoneGap
Tác giả: Adobe
Năm: 2012
4. Apache (2013), Cordova overview Nguồn: http://cordova.apache.org/ Sách, tạp chí
Tiêu đề: Cordova overview
Tác giả: Apache
Năm: 2013
9. Foursquare (2013), About Foursquare Nguồn: https://foursquare.com/about/ Sách, tạp chí
Tiêu đề: About Foursquare
Tác giả: Foursquare
Năm: 2013
10. Gianluca Guarini's (2012), Nodejs and a simple push notification server Nguồn:http://www.gianlucaguarini.com/blog/nodejs-and-a-simple-push-notification-server/ Sách, tạp chí
Tiêu đề: Nodejs and a simple push notification server
Tác giả: Gianluca Guarini's
Năm: 2012
16. Macournoyer (2013) Tiny, fast & funny HTTP server Nguồn: https://github.com/macournoyer/thin/ Sách, tạp chí
Tiêu đề: Tiny, fast & funny HTTP server
22. Remi D (2008), A little holiday present: 10,000 reqs/sec with Nginx! Nguồn: http://blog.webfaction.com/2008/12/a-little-holiday-present-10000-reqssec-with-nginx-2/ Sách, tạp chí
Tiêu đề: A little holiday present: 10,000 reqs/sec with Nginx
Tác giả: Remi D
Năm: 2008
23. Sencha (2013), Sencha Touch overview Nguồn: http://www.sencha.com/products/touch Sách, tạp chí
Tiêu đề: Sencha Touch overview
Tác giả: Sencha
Năm: 2013
5. Cộng đồng Tornado (2013), Tornado web server. Nguồn: http://www.tornadoweb.org/en/stable/ Link
6. Cộng đồng Nginx (2013), About Nginx Nguồn: http://wiki.nginx.org/Main Link
14. Joyent (2013), Kho môdun của NodeJs. Nguồn: https://npmjs.org/ Link
15. Joyent (2013), Danh sách các môdun NodeJs được yêu thích nhất. Nguồn: https://nodejsmodules.org/interesting Link
17. Manuel Kiessling (2013), The Node beginner book Nguồn: http://www.nodebeginner.org/ Link
7. Clock.co.uk (2012), Ten reasions to use NodeJs Khác
11. Jake Luer (2013), Delivering iOS Push Notifications with Node.js Khác
13. Joyent (2013), Tài liệu mô tả các API của NodeJs phiên bản 0.10 Khác
18. Pedro Teixeira (2012), Professional Node.js: Building JavaScript Based Scalable Software Khác
20. Ryan Dalh (2009), JSConf - slides thuyết trình về NodeJs Khác

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w