Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 102 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
102
Dung lượng
3,17 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ -o0o - VĂN DUY ĐỨC THỬ NGHIỆM TRIỂN KHAI DỊCH VỤ WEB HƯỚNG THỜI GIAN ĐÁP ỨNG TỨC THỜI QUA CÔNG NGHỆ NODEJS LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Hà Nội – 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ -o0o - VĂN DUY ĐỨC THỬ NGHIỆM TRIỂN KHAI DỊCH VỤ WEB HƯỚNG THỜI GIAN ĐÁP ỨNG TỨC THỜI QUA CÔNG NGHỆ NODEJS Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60 48 01 03 LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: GS.TS NGUYỄN THANH THỦY Hà Nội – 2014 LỜI CAM ĐOAN Tôi xin cam đoan điều sau: - Luận văn thực - Những kiến thức tham khảo ghi rõ nguồn gốc tác giả - Tôi xin chịu trách nhiệm nghiên cứu Hà Nội, Ngày 10 tháng 06 năm 2014 Học viên Văn Duy Đức LỜI CÁM ƠN Trước tiên xinh gửi lời biết ơn sâu sắc đến gia đình, bố mẹ tạo điều kiện tốt cho suốt trình học cao học thực luận văn Tôi xin gửi lời cảm ơn đến tất quý thầy cô giảng dạy chương trình Cao học Công nghệ thông tin - Trường Đại học công nghệ, người truyền đạt cho kiến thức hữu ích Công nghệ làm sở cho thực tốt luận văn Tôi xin chân thành cảm ơn GS TS Nguyễn Thanh Thủy tận tình hướng dẫn cho thời gian thực luận văn Mặc dù trình thực luận văn có giai đoạn không thuận lợi Thầy hướng dẫn, bảo cho nhiều điều bổ ích thời gian thực đề tài Tôi xin gửi lời cảm ơn đến tất Thầy Cô giảng dạy Khoa Trường Đại học Công Nghệ – Đại học Quốc Gia Hà Nội (ĐHQG-HCM) tận tình bảo, đóng góp ý kiến để Luận văn hoàn thiện Hà Nội, Ngày 10tháng 06 Năm 2014 Học viên Văn Duy Đức MỞ ĐẦU Web đóng vai trò quan trọng Công nghệ thông tin Web đóng vai trò kết nối người dùng Ứng dụng web phát triển ban đầu với xuất HTML vào năm 1993, công bố tổ chức W3C (World wide web consortium) Sau nhiều công nghệ web động mang đến cho người dùng nhà phát triển trải nghiệm PHP phát triển từ năm 1999, loại Server-side scripting Tính đến áp dụng cho 240 triệu trang web 2.1 triệu máy chủ web Hiện phát triển đến phiên 5.5 Ngoài PHP, Microsoft đưa ASP (Active server page) ASP.NET Java đưa JSP Làm cho cộng đồng phát triển web thêm phong phú Từ nhu cầu phát triển web, kỹ thuật người ta phát minh Asynchronous Javascript and XML (AJAX) thức công bố vào 18/02/2005 Kỹ thuật cho phép gửi nhận liệu cách bất đồng từ Client đến Web-server Vào năm gần đây, với bùng nổ thiết bị di động – smart phone, máy tính bảng Ứng dụng web việc hỗ trợ Browser máy tính phát triển trình duyệt với giao thức WAP NodeJS đời nằm xu phát triển chung, NodeJS thiết kế để xây dựng ứng dụng Web Network nhanh, khả mở, chạy nhiều thiết bị Nodejs phát triển sử dụng rộng rãi Nodejs phiên v0.10.28 tính đến thời điểm có 9969 revision có 524 contributor cho việc phát triển Bài luận văn viết với mục đích giới thiệu công nghệ Nodejs Phương pháp cách làm Nodejs áp dụng vào trang web có phản ứng tức thời Sự khác biệt với Ajax mà họ sử dụng Request/response thông qua XMLHttpRequest so với Websocket Nodejs Đồng thời giới thiệu kiến trúc bên Nodejs Hiệu Nodejs so với Application server phổ biến Ứng dụng 13Instant ứng dụng demo công nghệ Nodejs, sử dụng công nghệ Nodejs để phát triển tính đòi hỏi phản ứng tức thời Web web chat, news feed, instant searching Bài luận văn chia gồm 54 chương vớiý tưởng chủ đạo chương sau: • Chương Tổng quan Web đáp ứng tức thời : Chương làm rõ, giới thiệu Web đáp ứng tức thời Lịch sử, công nghệ sử dụng để thực • Chương Nodejs: Chương giới thiệu Nodejs, Nodejs gì, ý nghĩa, tác dụng Kiến trúc Nodejs Tổ chức Module Nodejs • Chương Hiệu Nodejs: Chương so sánh hiệu Nodejs với Application server phổ biến • Chương Ứng dụng 13Instant: Chương giới thiệu ứng dụng 13Instant Là ứng dụng áp dụng Nodejs vào để tạo ứng dụng Web phản ứng tức thời gồm News feed Web chat • Kết luận: Kết luận công nghệ Nodejs, ưu điểm Nodejs so với tảng khác Về nhỏ gọn, nhanh chóng, dễ dàng phát triển Và đánh giá tương lai công nghệ Nodejs MỤC LỤC DANH MỤC HÌNH VẼ DANH MỤC THUẬT NGỮ STT Thuật ngữ Ý nghĩa 01 WEB World wide web, hệ thống liên kết nối siêu văn (Hyper text document) mà truy cập từ Internet 02 Website Hoặc viết web site, site Là tập trang Web có liên quan đến nhau, phục vụ 03 WAP Wireless Application Protocol tiêu chuẩn kỹ thuật cho phép truy cập thông tin qua Mạng di động 04 Ajax Asynchronous Javascript and XML: tập hợp kỹ thuật có liên quan đến phát triển Web để tạo ứng dụng Web bất đồng 05 V8 V8 engine (công cụ) mã nguồn mở Javascript Google Viết C++ sử dụng Google Chrome Trong lập trình máy tính, mẫu Thread pool (hoặc replicated workers worker-crew model) nơi số lượng thread tạo để thực số lượng tác vụ 06 Thread pool 07 Libeio Là thư viện đầy đủ tính (full-featured) I/O bất đồng cho ngôn ngữ C Scalability Là khả hệ thống, network tiến trình (process) làm chủ tăng trưởng công việc theo cách hợp lý khả lớn lên để thỏa mãn tăng trưởng Event loop Một thuật ngữ khoa học máy tính (hoặc tên khác Message Dispatcher, Message Loop, Message Pump Run loop) Là cấu trúc lập trình mà chờ đợi gửi kiện thông điệp chương trình Mỗi request có event handler tương ứng Libev Một Event loop implementation đầy đủ tính hiệu cao mà mô hình theo libevent Được sử dụng GNU Virtual Private Ethernet, rxvt-unicode, auditd, Deliantra MORPG 08 09 10 Một thuật ngữ lập trình máy tính, callback đoạn code truyền vào tham số đoạn code khác, 11 Callback 12 Heap memory Một vùng nhớ cấp phát động 13 Thread-stack Memory dạng stack hỗ trợ làm việc Thread 14 Dead-lock 15 16 17 18 19 20 21 Là trạng thái mà công việc cạnh tranh chờ kết thúc, dẫn đến không công việc kết thúc Event Machine hệ thống phần mềm thiết kế để Ruby Event Machine viết ứng dụng chuyên mở rộng cho Ruby Nó cung cấp event-driven I/O mà sử dụng reactor pattern Python Twisted Là framework event-driven network programming viết Python Nằm quản lý MIT license Apache HTTP Server phát triển Apache Software Foundation Dịch vụ HTTP service an ninh, hiệu quả, khả mở với chuẩn HTTP có Cross platform Windows Linux Nginx Proxy reverse server mã nguồn mở cho giao thức HTTP, HTTPS, SMTP, POP3, IMAP chạy Load balancer, HTTP cache Webserver Context switch Trong lĩnh vực máy tính, context switch tiến trình lưu trữ phục hồi trạng thái (context) process thread, làm cho việc thực thi hồi phục điểm lưu trữ thời điểm khác Execution stack Trong khoa học máy tính, Excecution stack (còn gọi callstack) cấu trúc ngăn xếp mà lưu trữ thông tin phương thức chương trình chạy Non blocking I/O Còn gọi Asynchronous I/O Là dạng xử lý input/ouput mà cho phép xử lý khác tiếp tục chạy trước mà giao dịch I/O chấm dứt 22 Network traffic 23 Postgresql Network traffic data traffic mạng máy tính Data đo Network packets Hệ quản trị sở liệu hướng đối tượng-quan hệ Phát triển ngôn ngữ C, giấy phép PostgresSQL license 245 Socket.io Thư viện Javascript cho ứng dụng web thời gian thực Hỗ trợ realtime, giao tiếp bi-directional cho web client server 256 Websocket Là giao thức cung cấp kênh giao tiếp full-duplex qua kết nối TCP Giao thức W3C chuẩn hóa 10 CHƯƠNG 5.ỨNG DỤNG 13INSTANT 13Instant áp dụng công nghệ đề cập (Nodejs, socket.io, postgresql) để xây dựng ứng dụng Newsfeed instant messaging 13Instant viết HTML Javascript Phần server backend chạy Nodejs version 0.10.29 Database server Postgresql server 9.3 13Instant đem cho người dùng trải nghiệm với news feed Facebook Instant chat free instant search Các lời truy vấn thông tin người dùng online qua Websocket Chương trình hỗ trợ emoticon hỗ trợ sinh động Có history web chat Cấu hình history webchat số lượng tin nhắn tối đa lưu trữ 5.1 THIẾT KẾ CHƯƠNG TRÌNH Kiến trúc tổng thể chương trình gồm thành phần: • Front-end: o Browser o Home-page o Feed module o Chat module o Socket.io client • Back-end: o Nodejs server o Socket.io server o UserService o Chatservice o Newsfeeder • Database o Postgresql 88 Hình Mô hình tổng quát 13instant Biểu đồ Use-case hệ thống: o Tác nhân: user o Use-case: Authenticate 89 Instant message Feeder Broadcast Hình Use case 13Instant Các thành phần tham gia chat-sequence thể sơ đồ đây: 90 Hình Chat sequence Và biểu đồ sequence news-feed Hình Feed sequence 91 Thiết kế sở liệu thể sơ đồ sau Hình Các bảng sở liệu Mã lệnh tạo sở liệu cho 13Instant 92 CREATE TABLE users ( id integer NOT NULL DEFAULT nextval('user_id_seq'::regclass), name text, username text, password text, avatar text, avatar64 text, CONSTRAINT "PK_user" PRIMARY KEY (id) ) WITH ( OIDS=FALSE ); CREATE TABLE status ( status_id serial NOT NULL, content text, user_id integer, createddate timestamp with time zone, CONSTRAINT "PK_Status" PRIMARY KEY (status_id) ) WITH ( OIDS=FALSE ); CREATE TABLE news ( news_id serial NOT NULL, title text, content text, user_id integer, createddate time with time zone, CONSTRAINT "PK_User" PRIMARY KEY (news_id) ) WITH ( OIDS=FALSE ); CREATE TABLE conversation ( conversation_id serial NOT NULL, createdtime time with time zone, user_id integer, 93 user_id_to integer, CONSTRAINT "PK_Conversation" PRIMARY KEY (conversation_id) ) WITH ( OIDS=FALSE ); CREATE TABLE chathistory ( chathistory_id serial NOT NULL, user_id integer, user_id_to integer, content text, createdtime timestamp with time zone, CONSTRAINT "PK_ChatHistory" PRIMARY KEY (chathistory_id) ) WITH ( OIDS=FALSE ); STT 01 02 03 04 05 06 07 08 09 10 Danh sách thông điệp gửi/nhận từ server client sau: Tên Ý nghĩa Thiết lập kết nối từ webserver tới websocket Connection client Trả userid đăng nhập hệ thống Uid Server nhận thông điệp từ client join socket group vào nhóm uid Gửi thông điệp chat từ người dùng Nội Send_msg dung send_msg có from to From id user gửi đi, to id user nhận Authenticate người dùng tên đăng nhập Authenticate mật Server trả cho client giá trị khác NULL trường hợp thành công Client hỏi server trả danh sách bạn bè get_account_list Client hỏi server trả danh sách trạng thái get_user_status status update người dùng Danh sách trả xếp get_my_status Trả status initial_client_socket Khởi tạo client socket Đăng tải status từ người dùng Server post_status nhận thông điệp broadcast status tới người dùng khác require_chat_session Client hỏi server tạo phiên chat text 94 người sử dụng 95 5.2 SCREENSHOTS Chụp ảnh hìnhNhững hình ảnh giao diện tính 13Instant Hình Màn hình đăng nhập Đăng nhập 13instant tài khoản cho trước hình đăng nhập Bằng tên truy cập mật đăng ký 96 Hình Trang newsfeed 13Instannt Trang chủ feeds đưa status người dùng cập nhật Tiêu chí xếp thời gian từ trở trước 97 Hình Instant chat 13instant 98 Instant chat 13Instant cho phép chat text tức người dùng đăng nhập Trên hình screenshot đoạn chat text account mrthuy ducvd Emoticons hỗ trợ 99 100 KẾẾT LUẬN Nodejs mang lại nhiều lợi mạnh cho người sử dụng Cơ sở Nodejs Google V8 nguồn phát triển tin cậy Khi mà không nhiều ngôn ngữ cho phép bạn viết http server với vài dòng lệnh – Nodejs hữu dụng Bằng việc thiết kế chương trình không dựa thread, nhận biết ưu Event loop, việc Implementation tốt hơn, mang lại hiệu tốt (Kiểm chứng qua test Benchmark) Phát triển Nodejs không cần Framework cồng kềnh Đơn giản cài Nodejs (~20MB) Người phát triển viết module NPM tìm kiếm tốt, cập nhật Nhỏ gọn mà mang lại hiệu cực tốt – vẻ đẹp Nodejs Khi mà muốn tăng cường hiệu năng, người phát triển viết module C++ để tích hợp vào Nodejs Thông thường xử lý byte-bit Javascript không thuận lợi Với Buffer Nodejs không vấn đề Bài test Apache, nodejs, thin, tornado, nginx cho thấy có Nodejs Buffer, hiệu Nodejs tiệm cận Nginx, web accelerator tốt Nodejs cross platform Lập trình lần, bạn chạy Windows Linux Với ưu điểm mình, Nodejs xứng đáng để thử nghiệm đối trọng với tảng web framework khác 101 TÀI LIỆU THAM KHẢO Tiếng Anh Trang chủ Nodejs – www.nodejs.org Wiki postgresql – www.wiki.postgresql.org Linux technologies project http://www.hpl.hp.com/research/linux/ Dan Kegel’s Web hostel http://kegel.com/ Trang chủ Socket.io http://socket.io/ Trang chủ hướng dẫn Web online www.w3school.com Bách khoa toàn thư mở tiếng Anh Wikipedia www.en.wikipedia.org Jeff Harell nói việc ứng dụng Nodejs Paypal, Nodejs thay Java https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/ Blog Node packaged module http://blog.npmjs.org/ 10 The C Programming Language, 2ndEdition Brian W Kernighan Dennis M Ritche(01/04/1988) 11 102 [...]... QUAN VỀ WEB ĐÁP ỨNG TỨC THỜI Web đáp ứng thời gian tức thời được gọi bằng thuật ngữ Realtime web: Web thời gian thực (real time web) là một tập hợp các công nghệ (technologies) và thực tiễn (practices) cho phép người dùng đầu cuối nhận được thông tin ngay sau khi nó được xuất bản bởi tác giả của nó, chứ không phải là đòi hỏi rằng họ hoặc phần mềm của họ kiểm tra một nguồn theo định kỳ để cập nhật Web. .. Ý AJAX Nhắc đến Web đáp ứng tức thời thì không thể không nhắc tới Ajax (Asynchronous Javascript and XML) Mô hình xuất hiện đầu những năm 2000, mang lại trải nghiệm mới cho người dùng về môi trường web Ajax không xuất hiện từ hư không, nhưng cái gì cũng có lý do của nó Nguồn gốc ra đời: được làm nóng trong 1 thời gian Sau thời gian dài làm việc trên Web đã khuyến khích người tạo ra công cụ làm việc... với tin tức chính luận hay sự kiện Với Real-time web, thời gian đi vòng tín hiệu server đến client phải ... QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ -o0o - VĂN DUY ĐỨC THỬ NGHIỆM TRIỂN KHAI DỊCH VỤ WEB HƯỚNG THỜI GIAN ĐÁP ỨNG TỨC THỜI QUA CÔNG NGHỆ NODEJS Ngành: Công nghệ thông tin Chuyên ngành:... chuẩn hóa 10 CHƯƠNG 1.TỔNG QUAN VỀ WEB ĐÁP ỨNG TỨC THỜI Web đáp ứng thời gian tức thời gọi thuật ngữ Realtime web: Web thời gian thực (real time web) tập hợp công nghệ (technologies) thực tiễn... Web đáp ứng tức thời : Chương làm rõ, giới thiệu Web đáp ứng tức thời Lịch sử, công nghệ sử dụng để thực • Chương Nodejs: Chương giới thiệu Nodejs, Nodejs gì, ý nghĩa, tác dụng Kiến trúc Nodejs