TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
──────── * ───────
ĐỒ ÁN
TỐT NGHIỆP ĐẠI HỌC
NGÀNH CÔNG NGHỆ THÔNG TIN
Xây dựng bộ thư viện lập trình JOOB Lib
Ứng dụng:Xõy dựng mạng xã hội địa điểm
trên di động
Sinh viên thực hiện : Bùi Kim Dung
Lớp Công nghệ phần mềm A – K51
Giáo viên hướng dẫn: Thầy Hoàng Anh Việt
1
HÀ NỘI 6 - 2011
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
1. Thông tin về sinh viên
Họ và tên sinh viên:
Điện thoại liên lạc : Email:
Lớp: Công nghệ phần mềm K51 Hệ đào tạo: Đại học chính quy
Đồ án tốt nghiệp được thực hiện tại: Bộ môn Công nghệ phần mềm, Viện CNTT & Truyền
Thông – Đại học Bách Khoa Hà Nội
Thời gian làm ĐATN: Từ ngày 15 / 01 / 2011 đến 25 / 05 /2011
2. Mục đích nội dung của ĐATN
Xây dựng thư viện lập trình PHP Joob Lib đơn giản hóa việc lập trình các ứng dụng web
bằng PHP.
Ứng dụng: mạng xã hội địa điểm trên di động sử dụng Google Maps API
3. Các nhiệm vụ cụ thể của ĐATN
• Tìm hiểu mô hình lập trình ứng dụng web và các framework lập trình
• Xõy dưng phiên bản 1.0 của bộ thư viện Joob Lib
• Ứng dụng Joob Lib để xây dựng hệ thống cụ thể (mạng xã hội địa điểm trên di
động Joob)
4. Lời cam đoan của sinh viên:
Tôi – Bùi Kim Dung - cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự
hướng dẫn của Thầy Hoàng Anh Việt.
Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ
công trình nào khác.
Hà Nội, ngày 22 tháng 5 năm 2011
Tác giả ĐATN
Bùi Kim Dung
5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo
vệ:
Hà Nội, ngày tháng năm
Giáo viên hướng dẫn
Thầy Hoàng Anh Việt
2
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP
Mục tiêu của người viết luận văn là xây dựng bộ thư viện Joob, nhằm hỗ trợ xây
dựng các ứng dụng web 2.0, cung cấp kiến trúc MVC tiêu chuẩn cho các nhà phát triển,
đồng thời hỗ trợ việc phát triển ứng dụng web nhanh và đơn giản hơn, đặc biệt là các thao
tác xử lý với cơ sở dữ liệu.
Joob ra đời với nhiệm vụ giải quyết vấn đề lập trình phía máy chủ cho các ứng
dụng web, với hỗ trợ từ phớa mỏy khỏch là Joo Framework, do đó Joob được thiết kế để
tối ưu hóa cho mô hình AJAX và ứng dụng một trang (Single page application).
Người viết luận văn đã nghiên cứu trờn cỏc mô hình trước đó và một số framework
tiêu biểu như Zend Framework hay Hibernate Framework, sau đó thiết kế các giải pháp
nhằm kế thừa những ưu điểm, khắc phục nhược điểm của những mụ hỡnh này. Kiến trúc
hệ thống của Joob là kết quả của quá trình nghiên cứu và tích hợp các giải pháp thu được –
với điểm mạnh là sự nhỏ gọn và tốc độ nhanh.
Joob đã được triển khai thực tế trên hệ thống mạng xã hội địa điểm cùng tên, đây là
một mạng xã hội được tích hợp với các chức năng về địa điểm và tối ưu cho điện thoại di
động.
3
ABSTRACT OF THESIS
The goal of this thesis is to develop Joob library, a lightweight library for building
web 2.0 applications. Joob provides a normalized MVC architecture, helps developers
build web applications quickly and efficiently, especially when interacting with databases.
Joob solves the problems in server-side web application programming with the support of
Joo Framework in client-side.
Joob are designated mainly for AJAX model and Single Page Application. The
author has researched some major existing frameworks, especially Zend Framework and
Hibernate Framework, designed a solution which made use of some advantages of those
platforms and remedy their disadvantages.
The architecture of JOO Framework is the result of a long progress of researching,
implementing and testing, with the advantages of its lightweight and high performance
characteristics.
Joob has been deployed in a location-based social network, which provides some
location-based features besides the traditional social features.
4
LỜI CẢM ƠN
Đầu tiên, em xin gửi lời cảm ơn chân thành sâu sắc đến các thầy cô giáo
trong trường đại học Bách Khoa Hà Nội nói chung và các thầy cô giáo trong Viện
Công nghệ thông tin và truyền thông nói riêng, nhất là các thầy cô giáo trong bộ
môn Công nghệ phần mềm, đã tận tình giảng dạy, cho em niềm đam mê với ngành
học, đồng thời truyền đạt cho em nhiều kiến thức, kinh nghiệm quý báu trong suốt 5
năm vừa qua.
Đặc biệt, em xin gửi lời cảm ơn đến thầy Hoàng Anh Việt, người đã hướng
dẫn và chỉ bảo em trong suốt giai đoạn thực tập chuyên ngành và toàn bộ quá trình
làm đồ án tốt nghiệp. Làm việc với thầy, em không chỉ nhận được những kiến thức
chuyên ngành cần có, mà ở thầy em còn nhận được nhiệt huyết tìm hiểu, sự đam mê
công việc, tình cảm của một người anh, và nhất là những định hướng, động viên.
Nhờ đó em đã hình thành cho mình một định hướng tương lai đầy đủ, vững chắc.
Một lần nữa, xin cảm ơn thầy!
Không thể thiếu được là lời cảm ơn em muốn gửi tới thầy Lê Quốc – bộ môn
Công nghệ phần mềm, Viện Công nghệ thông tin và truyền thông, ĐH Bách Khoa
Hà Nội, và công ty Cazoodle Việt Nam, cùng với tất cả các thành viên trong nhóm
BKProfile Team. Thời gian làm việc cùng nhóm BKProfile tại công ty Cazoodle
dưới sự hướng dẫn, động viên và góp ý của thầy Lê Quốc cùng với sự cổ vũ và
nhiệt huyết làm việc đầy đam mê, sáng tạo của các thành viên trong đội ngũ phát
triển BKProfile, em đã học hỏi được rất nhiều từ tinh thần và cách làm việc của các
bạn. Không có thầy và các bạn, có lẽ đồ án này của em không bao giờ hoàn thành
tốt được.
Đồng thời, em xin gửi lời cảm ơn tới công ty Nes Inc cùng toàn thể anh chị
em đồng nghiệp làm việc tại công ty đã giúp đỡ và cổ vũ em rất nhiều trong quá
trình làm đồ án. Đây cũng là nơi giúp em hình thành ý tưởng và bắt đầu những dòng
code đầu tiên cho đồ án tốt nghiệp.
Cuối cùng, em xin gửi lời cảm ơn chân thành nhất tới tất cả bạn bè, đồng
nghiệp, và người thõn… Những người đó bờn em, động viên, đóng góp ý kiến và
giúp đỡ em trong suốt khoảng thời gian vừa qua.
Hà Nội, tháng 5 năm 2011
Chân thành cảm ơn!
5
MỤC LỤC
PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 2
TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP 3
ABSTRACT OF THESIS 4
LỜI CẢM ƠN 5
MỤC LỤC 6
DANH MỤC CÁC BẢNG 7
DANH MỤC CÁC HèNH MINH HỌA 8
DANH MỤC CÁC TỪ VIẾT TẮT 9
PHẦN MỞ ĐẦU 10
CHƯƠNG 1 – BÀI TOÁN XÂY DỰNG ỨNG DỤNG WEB 11
VÀ CÁC FRAMEWORK MÃ NGUỒN MỞ 11
CHƯƠNG 2 – MÔ HÌNH JOOB - LIB ĐỀ XUẤT 22
CHƯƠNG 3 - ỨNG DỤNG JOOB LIB 37
MẠNG XÃ HỘI ĐỊA ĐIỂM TRấN DI ĐỘNG 37
52
53
CHƯƠNG 4 - KẾT LUẬN VÀ ĐÁNH GIÁ 55
4.1.Kết quả đạt được 55
4.2.Những khó khăn và thuận lợi 55
4.3.Phương hướng phát triển 55
TÀI LIỆU THAM KHẢO 57
6
DANH MỤC CÁC BẢNG
Hình 1 – Table Data Gateway pattern 16
Hình 2 - Sơ đồ tổng quan hệ thống Joo framework 17
Hình 3 - Mô hình xử lý dữ liệu của một ứng dụng xây dựng trên JOO framework 18
Hình 4 – Mô hình ứng dụng MVC 24
Hình 5 – Biểu đồ tuần tự mô hình MVC đơn giản 25
Hình 6 – Kiến trúc Hibernate Framework 28
Hình 7 – Kiến trúc tổng quan Joob framework 29
Hình 8 – Biểu đồ lớp Joob Model 31
Bảng 1a – So sánh tính năng của Joob với một số framework hiện tại 34
Bảng 1b – So sánh tính năng của Joob với một số framework hiện tại 35
Bảng 2 – Yêu cầu về môi trường của mạng xã hội Joob 38
Bảng 3 – Yêu cầu về giao diện của mạng xã hội Joob 38
Bảng 4 – Danh sách các chức năng phía người dùng 38
Hình 9 – Sơ đồ usecase của người dùng trong mạng xã hội Joob 40
Bảng 5a – Mô tả yêu cầu phía người dùng 41
Bảng 5b – Mô tả yêu cầu phía người dùng 41
Bảng 5c – Mô tả yêu cầu phía người dùng 42
Bảng 6 – Danh sách các chức năng phía quản trị hệ thống 42
Hình 10 – Sơ đồ usecase của quản trị trong mạng xã hội Joob 43
Bảng 7a – Mô tả yêu cầu phía quản trị 44
Bảng 7b – Mô tả yêu cầu phía quản trị 44
Hình 11 – Biểu đồ thành phần tổng quan mạng xã hội Joob 45
Hình 12 – Sơ đồ quan hệ thực thể cơ sở dữ liệu mạng xã hội Joob 46
Hình 13 – Biểu đồ lớp thành phần Model 47
Hình 14 – Biểu đồ lớp thành phần Module 48
Hình 15 – Sơ đồ lớp Map.js 50
Hình 16 – Sơ đồ thiết kế giao diện Joob 51
Hình 17 – Giao diện trang chủ 52
Hình 18 – Giao diện trang địa điểm 52
Hình 19 – Giao diện trang cập nhật của người dùng 53
Hình 20 – Trang web daisyfishing.com được viết trên Joob 54
7
DANH MỤC CÁC HèNH MINH HỌA
Hình 1 – Table Data Gateway pattern 16
Hình 2 - Sơ đồ tổng quan hệ thống Joo framework 17
Hình 3 - Mô hình xử lý dữ liệu của một ứng dụng xây dựng trên JOO framework 18
Hình 4 – Mô hình ứng dụng MVC 24
Hình 5 – Biểu đồ tuần tự mô hình MVC đơn giản 25
Hình 6 – Kiến trúc Hibernate Framework 28
Hình 7 – Kiến trúc tổng quan Joob framework 29
Hình 8 – Biểu đồ lớp Joob Model 31
Bảng 1a – So sánh tính năng của Joob với một số framework hiện tại 34
Bảng 1b – So sánh tính năng của Joob với một số framework hiện tại 35
Bảng 2 – Yêu cầu về môi trường của mạng xã hội Joob 38
Bảng 3 – Yêu cầu về giao diện của mạng xã hội Joob 38
Bảng 4 – Danh sách các chức năng phía người dùng 38
Hình 9 – Sơ đồ usecase của người dùng trong mạng xã hội Joob 40
Bảng 5a – Mô tả yêu cầu phía người dùng 41
Bảng 5b – Mô tả yêu cầu phía người dùng 41
Bảng 5c – Mô tả yêu cầu phía người dùng 42
Bảng 6 – Danh sách các chức năng phía quản trị hệ thống 42
Hình 10 – Sơ đồ usecase của quản trị trong mạng xã hội Joob 43
Bảng 7a – Mô tả yêu cầu phía quản trị 44
Bảng 7b – Mô tả yêu cầu phía quản trị 44
Hình 11 – Biểu đồ thành phần tổng quan mạng xã hội Joob 45
Hình 12 – Sơ đồ quan hệ thực thể cơ sở dữ liệu mạng xã hội Joob 46
Hình 13 – Biểu đồ lớp thành phần Model 47
Hình 14 – Biểu đồ lớp thành phần Module 48
Hình 15 – Sơ đồ lớp Map.js 50
Hình 16 – Sơ đồ thiết kế giao diện Joob 51
Hình 17 – Giao diện trang chủ 52
Hình 18 – Giao diện trang địa điểm 52
Hình 19 – Giao diện trang cập nhật của người dùng 53
Hình 20 – Trang web daisyfishing.com được viết trên Joob 54
8
DANH MỤC CÁC TỪ VIẾT TẮT
STT Tên Giải thích
1 RIA Rich Internet Application, chỉ các ứng dụng chạy trên nền
web nhưng mang đầy đủ đặc tính của một ứng dụng desktop.
Được nhắc đến ở chương 1.
2 AJAX Asynchronous Javascript and XML. Thuật ngữ được ra đời
năm 2005 dùng để chỉ một tập hợp các công nghệ hỗ trợ việc
phát triển ứng dụng web theo cơ chế bất đồng bộ.
3 JSON Javascript Object Notation. Là định dạng để ký hiệu các đối
tượng của ngôn ngữ Javascript, nhưng rất hay được dùng
trong việc trao đổi dữ liệu, đặc biệt là trong mô hình AJAX.
4 ORM Object-relational mapping. (ORM, O/RM, and O/R mapping) là
một kĩ thuật lập trình nhằm chuyển đổi dữ liệu giữa những hệ
thống không tương thích (database) sang các ngôn ngữ lập
trình hướng đối tượng
5 MVC Model – View – Controller. Là một kiến trúc, đồng thời cũng
là một mẫu thiết kế trong lập trình hướng đối tượng. MVC
hay được sử dụng trong các hệ thống web.
6 CRUD Create, Retrieve, Update, Delete. Các thao tác cơ bản đối với
một đối tượng hoặc với cơ sở dữ liệu: tạo, tìm kiếm, cập nhật,
xóa.
7 PHP PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là
một ngôn ngữ lập trình kịch bản hay một loại mã lệnh chủ
yếu được dùng để phát triển các ứng dụng viết cho máy
chủ, mã nguồn mở, dùng cho mục đích tổng quát. Nó rất
thích hợp với web và có thể dễ dàng nhúng vào trang HTML
8 HTTP Hypertext Transfer Protocol. Giao thức truyền tải các dữ liệu
siêu văn bản. Là giao thức cơ bản của truyền tải dữ liệu trên
Internet
9 RDBMS Relation Database Management System. Hệ quản trị cơ sở dữ
liệu.
10 MySQL Hệ quản trị cơ sở dữ liệu mã nguồn mở của Oracle.
11 URL Uniform Resource Locator: Là một định dạng được sử dụng
để xác định một tài nguyên trên Internet, chỉ ra vị trí cũng
như phương thức để truy cập tài nguyên đó.
12 UI User Interface: Giao diện người dùng. Chỉ các thành phần
hiển thị và cung cấp tương tác giữa người dùng và hệ thống.
13 API Application Programming Interface. Là một giao diện cung
cấp cho các nhà phát triển ứng dụng để thao tác với một hệ
thống nào đó mà không cần phải quan tâm cách thức hoạt
động bên trong hệ thống đó.
9
PHẦN MỞ ĐẦU
Tóm tắt các nhiệm vụ đề ra trong ĐATN
• Tìm hiểu mô hình lập trình ứng dụng web và các framework lập trình
• Xây dưng phiên bản 1.0 của bộ thư viện Joob Lib
• Ứng dụng Joob Lib để xây dựng hệ thống cụ thể (mạng xã hội địa điểm trên
di động Joob)
Môi trường thực hiện đồ án:
• Bộ môn công nghệ phần mềm, Viện CNTT & TT – Đại học Bách Khoa Hà
Nội
Bố cục đồ án: bao gồm
• Phần mở đầu: giới thiệu tóm tắt nhiệm vụ đề tài, xác định mục tiêu và phạm
vi thực hiện.
• Phần nội dung: có kết cấu bốn chương, nội dung chính như sau:
Chương 1. Bài toán xây dựng ứng dụng web và các framework mã nguồn
mở.Khái quát về trào lưu web 2.0, bài toán ứng dụng web và mạng xã hội địa
điểm. Từ đó phân tích ưu nhược điểm một số framework phổ biến hiện tại.
Đề xuất mục tiêu và nội dung của đồ án tốt nghiệp.
Chương 2. Mô hình thư viện lập trình đề xuất. Trình bày các ý tưởng kế
thừa từ các mô hình có sẵn, đề xuất mô hình Joob Lib, bao gồm kiến trúc
tổng quan và kiến trúc chi tiết. Đánh giá tính hiệu quả của Joob Lib.
Chương 3. Ứng dụng mạng xã hội địa điểm trên di động. Sau khi phân tích
mô hình của Joob Lib, để làm rừ tớnh hiệu quả của Joob, chương này đi sâu
phân tích và thiết kế kiến trúc chi tiết của một ứng dụng mạng xã hội địa
điểm được xây dựng trên Joob Lib. Kết quả đạt được và đánh giá.
Chương 4. Kết luận và đánh giá. Đánh giá kết quả đạt được, bao gồm tính
hiệu quả của Joob Lib và ứng dụng mạng xã hội Joob. Các nhận định toàn bộ
công việc đồ án và đề ra phương hướng phát triển tiếp theo.
• Kết luận: đánh giá kết quả thực hiện đồ án, phân tích những thuận lợi, khó
khăn khi thực hiện đồ án, và định hướng phát triển đồ án trong tương lai.
10
CHƯƠNG 1 – BÀI TOÁN XÂY DỰNG ỨNG DỤNG WEB
VÀ CÁC FRAMEWORK MÃ NGUỒN MỞ
1.1. Khái quát bài toán xây dựng ứng dụng web 2.0 và mạng xã hội
1.1.1 Bài toán xây dựng ứng dụng web 2.0
Khái niệm Web 2.0 đầu tiên được Dale Dougherty, phó chủ tịch của OReilly
Media, đưa ra tại hội thảo Web 2.0 lần thứ nhất do OReilly Media và MediaLive
International tổ chức vào tháng 10/2004. Sau đó Tim OReilly, chủ tịch kiêm giám
đốc điều hành OReilly Media, đã đúc kết lại 7 đặc tính của Web 2.0:
1. Web có vai trò nền tảng, có thể chạy mọi ứng dụng
2. Tập hợp trí tuệ cộng đồng
3. Dữ liệu có vai trò then chốt
5. Phần mềm được cung cấp ở dạng dịch vụ web và được cập nhật không
ngừng
4. Phát triển ứng dụng dễ dàng và nhanh chóng
6. Phần mềm có thể chạy trên nhiều thiết bị
7. Giao diện ứng dụng phong phú
Thực tế, ứng dụng trên web là thành phần rất quan trọng của Web 2.0. Hàng
loạt công nghệ mới được phát triển nhằm làm cho ứng dụng trên web "mạnh" hơn,
nhanh hơn và dễ sử dụng hơn, được xem là nền tảng của Web 2.0.
Kiến trúc công nghệ của Web 2.0 cơ bản bao gồm: phần mềm máy chủ, cơ
chế cung cấp nội dung, giao thức truyền thông, trình duyệt và ứng dụng.
Cung cấp nội dung
Bước phát triển đầu tiên và quan trọng nhất hướng đến Web 2.0 đó là cơ chế
cung cấp nội dung, sử dụng các giao thức chuẩn hoá để cho phép người dùng sử
dụng thông tin theo cách của mình (nghĩa là có khả năng tùy biến thông tin). Có
11
Nội dung chương 1:
• Trình bày khái quát về trào lưu web 2.0 và mạng xã hội, các vấn đề còn
tồn tại và xu hướng phát triển.
• Các framework hiện tại đã và đang giải quyết các vấn đề này. Đánh giá
ưu, nhược điểm khi ứng dụng các framework này vào bài toán xây dựng
ứng dụng web.
• Đề xuất mục tiêu, nội dung cụ thể của đồ án tốt nghiệp.
nhiều giao thức được phát triển để cung cấp nội dung như RSS, RDF và Atom, tất
cả đều dựa trên XML. Ngoài ra cũn cú cỏc giao thức đặc biệt như FOAF và XFN
dùng để mở rộng tính năng của website hay cho phép người dùng tương tác.
Dịch vụ web
Các giao thức truyền thông 2 chiều là một trong những thành phần then chốt
của kiến trúc Web 2.0. Có hai loại giao thức chính là REST và SOAP. REST
(Representation State Transfer) là dạng yêu cầu dịch vụ web mà mỏy khỏch truyền
đi trạng thái của tất cả giao dịch; còn SOAP (Simple Object Access Protocol) thì
phụ thuộc máy chủ trong việc duy trì thông tin trạng thái. Với cả hai loại, dịch vụ
web đều được gọi qua API. Ngôn ngữ chung của dịch vụ web là XML, nhưng có
thể có ngoại lệ.
Một ví dụ điển hình của giao thức truyền thông thế hệ mới là Object
Properties Broadcasting Protocol do Chris Dockree phát triển. Giao thức này cho
phép các đối tượng ảo (tồn tại trên web) tự biết chúng "là gì và có thể làm gỡ”, nhờ
vậy có thể tự liên lạc với nhau khi cần.
Phần mềm máy chủ
Web 2.0 được xây dựng trên kiến trúc web thế hệ trước nhưng chú trọng hơn
đến phần mềm làm việc ở "hậu trường". Cơ chế cung cấp nội dung chỉ khác phương
thức cấp phát nội dung động (của Web 1.0) về danh nghĩa, tuy nhiên dịch vụ web
yêu cầu tiến trình làm việc và dữ liệu chặt chẽ hơn.
Các giải pháp phát triển theo hướng Web 2.0 hiện nay có thể phân làm 2
loại: hoặc xây dựng hầu hết tính năng trên một nền tảng máy chủ duy nhất; hoặc
xây dựng ứng dụng "gắn thêm" cho máy chủ web, có sử dụng giao tiếp API.Cụng
nghệ chỉ là "bề nổi" của Web 2.0, chính cộng đồng người dùng mới là yếu tố nền
tảng tạo nên thế hệ web mới. Việc chuyển từ "duyệt và xem" sang "tham gia" là
cuộc cách mạng thực sự, dĩ nhiên nhờ có sự phát triển công nghệ giúp hiện thực khả
năng này nhưng ở đây muốn nhấn mạnh đến hành vi của người dùng đối với web.
Công nghệ chỉ là "bề nổi" của Web 2.0, chính cộng đồng người dùng mới là yếu tố
nền tảng tạo nên thế hệ web mới. Việc chuyển từ "duyệt và xem" sang "tham gia" là
cuộc cách mạng thực sự, dĩ nhiên nhờ có sự phát triển công nghệ giúp hiện thực khả
năng này nhưng ở đây muốn nhấn mạnh đến hành vi của người dùng đối với web.
Về cơ bản, Web 2.0 trao quyền nhiều hơn cho người dùng và tạo nên môi
trường liên kết chặt chẽ các cá nhân với nhau. Giờ đây có nhiều ví dụ cho thấy cộng
đồng người dùng có thể đóng góp thông tin giá trị khi họ có phương tiện thích hợp.
Wikipedia có lẽ là ví dụ nổi tiếng nhất. Tuy có nhiều học giả không đánh giá cao
Wikipedia, nhưng họ quên một điều quan trọng: nó đủ tốt, miễn phí và nhiều người
12
có thể đọc. Ngoài ra cũn cú những ví dụ khác như các site Reddit và Digg để cho
người dùng quyết định thông tin gì là quan trọng, hay del.icio.us cho phép mọi
người chia sẻ những địa chỉ web hay.
1.1.2 Giới thiệu về Google Maps API và ứng dụng mạng xã hội địa điểm
• Giới thiệu về Google Maps API
Map API là một phương thức cho phép một website B sử dụng dịch vụ bản
đồ của site A (gọi là Map API) và nhúng vào website của mình (site B). Một Map
API tối thiểu phải cho phép tìm kiếm một địa điểm và đánh dấu trên bản đồ. Đồng
thời, người dùng có thể sử dụng chuột để rờ trờn bản đồ (trực tiếp trên site B) để
tìm kiếm vị trí mình muốn.
Google Maps (thời gian trước còn gọi là Google Local) là một dịch vụ ứng
dụng và công nghệ bản đồ trực tuyến trên web miễn phí được cung cấp bởi Google
và hỗ trợ nhiều dịch vụ dựa vào bản đồ như Google Ride Finder và một số có thể
dùng để nhúng vào các trang web của bên thứ ba thông qua Google Maps API. Nó
cho phép thấy bản đồ đường xá, đường đi cho xe đạp, cho người đi bộ (những
đường đi ngắn hơn 6.2 dặm) và xe hơi, và những địa điểm kinh doanh trong khu
vực cũng như khắp nơi trên thế giới. Lúc đó chúng ta có thể nhấp và kéo bản đồ để
xem ngay các khu vực lân cận. Xem hình ảnh vệ tinh của vị trí mong muốn mà bạn
có thể thu nhỏ, phóng to và quay.
• Ứng dụng mạng xã hội địa điểm trên di động
Mạng xã hội, hay gọi là mạng xã hội ảo (social network) là dịch vụ nối kết
các thành viên cùng sở thích trên Internet lại với nhau với nhiều mục đích khác
nhau không phân biệt không gian và thời gian.
Mạng xã hội có những tính năng như chat, e-mail, phim ảnh, voice chat, chia
sẻ file, blog và xã luận. Mạng đổi mới hoàn toàn cách cư dân mạng liên kết với
nhau và trở thành một phần tất yếu của mỗi ngày cho hàng trăm triệu thành viên
khắp thế giới. Các dịch vụ này có nhiều phương cách để các thành viên tìm kiếm
bạn bè, đối tác: dựa theo group (ví dụ như tên trường hoặc tên thành phố), dựa trên
thông tin cá nhân (như địa chỉ e-mail hoặc screen name), hoặc dựa trên sở thích cá
nhân (như thể thao, phim ảnh, sách báo, hoặc ca nhạc), lĩnh vực quan tâm: kinh
doanh, mua bán
Mạng xã hội địa điểm (location based social network) bên cạnh những tính
năng tương tự như mạng xã hội thông thường sẽ hỗ trợ cho người sử dụng biết được
bạn bè mình đang ở đâu, tìm kiếm những người dùng ở gần, tìm kiếm địa điểm
xung quanh, cập nhật địa điểm yêu thích và chia sẻ vị trí của mình với bạn bè.
13
Cùng với sự phát triển của các thiết bị di động thông minh (Android,
Iphone ) hỗ trợ tốt Javascript, việc phát triển ứng dụng mạng xã hội địa điểm trên
di động với những tính năng chia sẻ tiện lợi sẽ mang lại cho người dùng những trải
nghiệm hoàn toàn khác so với mạng xã hội thông thường.
1.1.3 Nhận xét và các vấn đề còn tồn tại
Sự phát triển của các loại thiết bị điện tử cá nhân có sức mạnh tính toán cao
và xu hướng công nghệ điện toán đám mây, xu hướng web 2.0 và sự bùng nổ của
mạng xã hội trong thời gian gần đây khiến các ứng dụng web đa nền ngày càng trở
nên phổ biến: dữ liệu được đặt ở các máy chủ phân tán, ứng dụng được truy cập và
tất cả các thao tác được thực thi trờn cỏc trình duyệt, thông tin được truyền qua
mạng giữa mỏy khỏch với nhiều máy chủ. Tuy nhiên việc xây dựng các ứng dụng
này còn gặp rất nhiều trở ngại: khả năng tương tác với người dùng rất phức tạp do
phải đáp ứng nhiều loại nền tảng phần cứng khác nhau, hiệu năng xử lý dữ liệu phía
máy chủ cũng như hiệu năng truyền tải dữ liệu còn rất thấp (tốc độ tải trang trung
bình xấp xỉ 4s) do mô hình xử lý dữ liệu truyền thống còn nhiều điểm bất hợp lý.
Từ khi mô hình truyền tải dữ liệu bất đồng bộ lần đầu tiên được triển khai
thực tế trong bộ Java Applet của Java vào năm 1995, đã có rất nhiều công nghệ dựa
trên mô hình này được phát triển như mô hình Spiar[7] để xây dựng ứng dụng web
dạng một trang (Single-page application)[1], framework GWT của Google[2], các
nền tảng RIA như Flash, Java Applet … Những nền tảng này đã giải quyết được
một phần lớn những trở ngại kể trên.
Những trở ngại trong việc xây dựng ứng dụng web và xử lý dữ liệu dẫn đến
sự ra đời của một loạt các framework hỗ trợ lập trình ứng dụng web. Phần tiếp theo
của chương sẽ đi vào giới thiệu và phân tích ưu nhược điểm của 2 trong số những
framework như vậy.
1.2. Phân tích ưu nhược điểm một số framework hiện tại
1.2.1. Zend Framework
Zend Framework là một PHP Framework mã nguồn mở được lập trình trên
PHP dựa theo mô hình MVC (Model – View - Controller).
Một số đặc điểm của Zend Framework:
- Được xây dựng trên PHP 5
- Hoàn toàn hướng đối tượng
- Hỗ trợ mô hình lập trình MVC
ZF cung cấp một loạt các ứng dụng API của các nhà cung cấp hàng đầu như
Google, Yahoo, Flicker… Nó không phải là một application framework / toolkit
như kiểu của symfony hay CakePHP; ZF là một thư viện các lớp và nó không bắt
14
buộc developer phải làm việc theo một cách thức nào cả (mặc dù nó tập trung vào
kiến trúc MVC). Chia ra làm nhiều components, gần như tất cả mọi nhu cầu của
developer đều được đáp ứng, từ việc access database, webservice, search index…
cho đến authenticate, caching, log. Với ZF, tốc độ phát triển ứng dụng PHP sẽ tăng
lên đáng kể. Cụ thể ZF cung cấp cho developer:
- Chuẩn hóa việc lập trình ứng dụng web theo mô hình MVC
- Chuẩn hóa URL (các đường link trong trang web)
- Hỗ trợ rất tốt việc quản lý truy nhập (Access Control): quản lý phân quyền
theo từng Action.
- Có các thành phần thư viện hỗ trợ API của Google, Yahoo, Flickr
- Quản lý code dễ dàng
- Dễ dàng phát triển thờm cỏc Model, Plugins.
Sơ qua về các thành phần trong Zend Framework:
- Zend_Controller: Module này giúp lấy các request từ phía Client và thực
thi nó bằng các Action.
- Zend_Db: dựa trên đối tượng PDO (PHP Data Objects), cung cấp các
phương thức giao tiếp với database.
- Zend_View: tầng View trong mô hình MVC.
- Zend_Acl: quản lý phân quyền
- Zend_Feed: xử lý RSS và Atom Feeds
- Zend_Filter: Lọc các dữ liệu nhập vào từ phía người dùng và kiểm tra tính
hợp lệ của dữ liệu đầu vào.
- Zend_Pdf: Tạo và thao tác với các file PD
- Zend_Service_Amazon, Zend_Service_Flickr, Zend_Service_Yahoo: cung
cấp truy nhập tới các dịch vụ web APIs của các nhà cung cấp như Amazon,
Flickr, Yahoo.
- Zend_XmlRpc: tạo ra giao tiếp XMLRpc (giao tiếp client-server với các xử
lý tập trung phía server, chỉ client để hiển thị dữ liệu).
- Zend_Session: quản lý session
- Zend_Log: hỗ trợ việc ghi log cho ứng dụng
- Zend_Cache: hỗ trợ ghi cache cho ứng dụng
Zend Model được thiết kế theo mẫu thiết kế Table and data gateway: cung
cấp khả năng truy nhập đến cơ sở dữ liệu bằng cách trừu tượng hóa từng bảng trong
cơ sở dữ liệu (hoặc một file, một cấu trúc dữ liệu cây) dưới dạng một đối tượng
interface. Tất cả các thao tác CRUD được thực thi bằng cách truy cập các phương
thức của table data gateway: DELETE, INSERT, SELECT, UPDATE. Các tham số
trong phương thức tương ứng trực tiếp với các tham số trong câu lệnh SQL. Với cỏc
15
cõu truy vấn phức tạp, table data gateway sử dụng các cặp attribute/value và tạo nên
các generic query.
Hình 1 – Table Data Gateway pattern
Nhận xét:
Zend Framework là một framework mạnh, tính linh hoạt và tính khả mở rất
cao với khối lượng các thư viện component phong phú, đáp ứng được hầu hết
những nhu cầu của developer. Bên cạnh đó, tuy được thiết kế theo mô hình MVC
nhưng ZF không bó buộc người lập trình theo một quy trình khắt khe nhưng vẫn có
được sự chuẩn hóa nhất định. Với những ưu thế đó, ZF có khả năng tạo ra những
ứng dụng cỡ lớn và khả chuyển.
Nhược điểm:
- Zend Framework do khả năng bao gói quá nhiều các component và các lớp
abstract khiến cho bộ thư viện ZF trở nên cồng kềnh & chỉ thích hợp với
những ứng dụng lớn. Hiệu năng của hệ thống khá thấp (ứng dụng xây dựng
trên Zend Framework mất trung bình ~4s cho một lần tải trang), điều này
khiến khả năng tương tác với người dùng giảm đi đáng kể.
- Phần Zend Model (Zend_Db) dựa trên mẫu thiết kế Table and Row data
gateway. Đây là một trong những mẫu thiết kế ORM đơn giản nhất. Với
những cơ sở dữ liệu đơn giản và có tính table-oriented (mỗi bảng dữ liệu lưu
trữ dữ liệu cho một mục đích duy nhất – Class- and Single – Table
Inheritance) thì Table and Row data gateway là lựa chọn thích hợp. Tuy
nhiên với những cơ sở dữ liệu không có tính table-oriented hoàn toàn, hoặc
mỗi bảng đơn lưu trữ dữ liệu cho nhiều mục đích khác nhau thỡ nó không
còn thích hợp. Hoặc trong trường hợp ứng dụng đòi hỏi việc truy cập đồng
16
thời nhiều đối tượng của cùng một class, hoặc các đối tượng liên kết với
nhau theo dạng phức tạp (dạng cây hoặc đồ thị) thì table data gateway cũng
không hỗ trợ tốt. Những ứng dụng như vậy đòi hỏi mẫu thiết kế linh hoạt
hơn.
Cũng như row data gateway, sử dụng table data gateway cũng tương đương
với việc chia mô hình dữ liệu của ứng dụng thành rất nhiều các lớp riêng biệt, gây
bất lợi trong việc cập nhật và quản lý code.
1.2.2. Joo Framework
JOO – framework là một framework được xây dựng trên Javascript sử dụng
bộ thư viện Jquery, nhằm chuẩn hóa lại mô hình lập trình các ứng dụng web, quản
lý và tối ưu hóa hiệu năng xử lý dữ liệu ở máy chủ, truyền dữ liệu phân tán qua
mạng… JOO ra đời giải quyết những trở ngại còn tồn tại trong quá trình xây dựng
các ứng dụng này: có khả năng tương đương với những ứng dụng thông thường trên
máy tính cá nhân, tương thích với nhiều loại nền tảng và phần cứng, hiệu năng
truyền tải dữ liệu qua mạng, hiệu năng xử lý dữ liệu ở máy chủ, khả năng phân tán
JOO được thiết kế nhằm khắc phục nhược điểm và kế thừa những ưu điểm của các
giải pháp trước đây. Sơ đồ dưới đây thể hiện mô hình kiến trúc tổng quan của JOO:
Hình 2 - Sơ đồ tổng quan hệ thống Joo framework
Kiến trúc hệ thống bao gồm 4 thành phần chính:
Porlet & Plugins
Tiếp nhận các yêu cầu từ người dùng dưới dạng các sự kiện (event), sau đó
gửi các Ajax request lên máy chủ và nhận về dữ liệu dưới dạng JSON. Các plugin
& porlet sẽ xử lý dữ liệu dạng JSON gửi cho tầng Application, thông qua UI hiển
thị dữ liệu. Điểm khác biệt giữa portlet và plugin là: portlet là các thành phần hiển
thị và xử lý dữ liệu độc lập và được gọi khi trang web được tải, còn plugin chỉ được
gọi với những sự kiện nhất định.
Event Manager
17
JOO framework architecture
UI
Portlets & Plugins
Application
Event
Manager
Bộ quản lý sự kiện: sử dụng mẫu thiết kế Observer, giỳp cỏc portlet, plugin
có thể tương tác với nhau thông qua sự kiện, làm cho cấu trúc chương trình trở nên
lỏng lẻo và các portlet, plugin có thể hoạt động độc lập với nhau. Các sự kiện có thể
được sinh ra do tương tác của người dùng hoặc do chính portlet/plugin sinh ra.
Application
Bao gồm 3 thành phần chính:
- Bộ quản lý tài nguyên (Resource Manager)
- Bộ xử lý yêu cầu (Request Handler)
- Bộ quản lý porlet & plugin (Porlet&Plugin Manager)
Ở tầng này xử lý các template và layout, thực thi các cấu hình cho porlet và
plugin. Thông qua lớp Bootstrap tiếp nhận các yêu cầu, lớp xử lý yêu cầu gửi các
yêu cầu này đến plugin & porlet tương ứng. Các lớp Plugin Manager, Porlet
Container kiểm tra và nạp (load) các plugin, porlet tương ứng.
* UI: bao gồm các lớp và các thành phần (widget) hỗ trợ xây dựng giao diện giao
tiếp với người dùng. UI trực tiếp nhận các yêu cầu của người dùng và thông qua bộ
quản lý sự kiện (Event Manager) gửi sự kiện đến tầng ứng dụng (Application) và
tầng Porlets & Plugins để xử lý.
Kiến trúc một ứng dụng xây dựng bằng JOO
Dưới đây là mô hình xử lý dữ liệu của một ứng dụng được xây dựng bằng
JOO framework:
Hình 3 - Mô hình xử lý dữ liệu của một ứng dụng xây dựng trên JOO framework
18
HTTP
Client
Server 1
Server N
Porlets &
Plugins
Service
Provider
Ajax
Interface
UI
JSON Data
Ajax request
Ajax
requestt
Data
Update data
Event
…
.
Service
Provider
Quá trình xử lý dữ liệu có thể được mô tả như sau: ở lần request (yêu cầu)
đầu tiên server gửi về client toàn bộ trang ứng dụng. Mỗi khi có một sự kiện phát
sinh ở phía client, sự kiện này được gửi đến bộ Porlet & Plugin của JOO. Bộ Porlet
& Plugin sẽ tiếp nhận sự kiện này và sinh ra một yêu cầu Ajax (Ajax request), thông
qua bộ Ajax Interface gửi đến server. Ajax request này có thể được gửi đến một hay
nhiều server. Server tiếp nhận yêu cầu và xử lý dữ liệu, sau đó gửi về client bằng
giao thức REST. Client sau đó sẽ nhận được phần dữ liệu kết quả ở định dạng
JSON (hoặc JSONP nếu như có nhiều máy chủ phục vụ) và xử lý nó thành dữ liệu
HTML tương ứng và hiển thị nó lờn client.
Thay vì yêu cầu dữ liệu trả về dưới dạng các chuẩn như HTTP, HTML,
Cascading Style Sheets, Javascript, Document Object Model, phía client chỉ yêu cầu
phía server trả về dữ liệu dưới dạng JSON (hoặc JSONP) thông qua giao thức
REST. Sau đó, client xử lý nó thành dữ liệu theo các chuẩn như trên, và hiển thị
theo mô hình giao diện tương tác người dùng một trang (Single-page user interface
interaction). Tương tự như các ứng dụng trên desktop, mô hình tương tác này cũng
được chia thành các thành phần riêng biệt. Sự thay đổi dữ liệu trên từng thành phần
này diễn ra độc lập mà không cần tải lại toàn bộ trang.
Đánh giá Joo framework
JOO framework thực hiện một hướng tiếp cận – không hoàn toàn mới so với
những mô hình lập trình trước, mà kế thừa những ưu điểm, đồng thời đưa ra và thực
thi những cải tiến hiệu quả, khắc phục nhược điểm của những mô hình này – mang
lại hiệu năng tốt nhất về mặt hiệu năng cũng như tính bảo mật cho các ứng dụng
trên nền web. Những cải tiến này đồng thời chuẩn hóa lại mô hình lập trình các ứng
dụng trên nền web, quản lý các luồng xử lý và truyền dữ liệu giữa mỏy khỏch với
một máy chủ hoặc nhiều máy chủ (đối với hệ thống phân tán) nhằm cải thiện tốc độ
xử lý và truyền dữ liệu. JOO cũng góp phần chuẩn hóa mô hình lập trình hướng đối
tượng với ngôn ngữ Javascript.
Mô hình kiến trúc của JOO đạt yêu cầu hầu hết đối với các thuộc tính chất
lượng của ứng dụng. Những kết quả và số liệu thực tế đạt được khi thử nghiệm với
hệ thống Bkprofile đã chứng minh tính hiệu quả của JOO. Việc chuẩn hóa mô hình
lập trình và mô hình hoạt động của ứng dụng web đồng thời cải thiện thời gian phát
triển (bao gồm từ giai đoạn thiết kế, cài đặt, đến kiểm thử) và thời gian nâng cấp
một ứng dụng được xây dựng trên nền tảng JOO.
19
1.3. Mục tiêu của đồ án tốt nghiệp
1.3.1. Mục tiêu của đồ án
Với các phân tích đưa ra ở mục trên, người viết luận văn đề xuất bộ thư viện lập
trình ứng dụng web đơn giản – Joob Lib xây dựng trên ngôn ngữ PHP với các đặc
điểm như sau:
- Phần client sử dụng Joo framework
- Thiết kế theo mô hình kiến trúc MVC
- Phần Model: ánh xạ các lớp trong Model xuống các bảng thực thể trong cơ
sở dữ liệu quan hệ một cách trong suốt, chỉ đòi hỏi các lớp trong Model có
hàm khởi tạo khai báo tên bảng dữ liệu và khóa chớnh, đồng thời cho phép
người sử dụng có thể thực hiện những câu truy vấn xuống cơ sở dữ liệu
thông qua các đối tượng hoặc những câu truy vấn SQL thông thường, hỗ trợ
tốt cỏc kiờu quan hệ như một – nhiều, một – một giữa các quan hệ trong cơ
sở dữ liệu.
- Đơn giản, nhỏ gọn & rút ngắn thời gian xây dựng các ứng dụng web sử dụng
PHP – MySQL.
Để thử nghiệm và đánh giá Joob Lib, phần thứ 2 của đồ án là xây dựng một ứng
dụng mạng xã hội địa điểm trên di động sử dụng Joob framework và thư viện lập
trình Gooogle Maps với các tính năng:
- Quản trị người dùng hệ thống
+ Các thông tin cơ bản + Thiết lập các quyền riêng tư + Các thông tin cơ
bản
+ Thiết lập các quyền riêng tư
- Tính năng mạng xã hội:
+ Cập nhật status, bình luận, thích + Cập nhật địa điểm tự động + Tìm kiếm
người dùng ở gần, bạn bè ở gần
+ Cập nhật địa điểm tự động
+ Tìm kiếm người dùng ở gần, bạn bè ở gần
- Quản lý địa điểm:
+ Quản lý danh mục địa điểm + Danh sách địa điểm theo danh mục + Thêm
địa điểm dựa trên bản đồ + Xem địa điểm trên google map & liệt kê địa
điểm ở gần
+ Danh sách địa điểm theo danh mục
+ Thêm địa điểm dựa trên bản đồ
+ Xem địa điểm trên google map & liệt kê địa điểm ở gần
- Tương tác người dùng - địa điểm+ Tìm kiếm địa điểm+ Tìm kiếm địa điểm ở
gần dựa trên bản đồ google map+ Bình chọn địa điểm yêu thích+ Viết nhận
xét cho địa điểm+ Chia sẻ địa điểm qua facebook, twitter
20
+ Tìm kiếm địa điểm
+ Tìm kiếm địa điểm ở gần dựa trên bản đồ google map
+ Bình chọn địa điểm yêu thích
+ Viết nhận xét cho địa điểm
+ Chia sẻ địa điểm qua facebook, twitter
1.3.2. Nhiệm vụ cụ thể của đồ án
• Tìm hiểu mô hình lập trình ứng dụng đa tầng, Joo framework, xây dựng Joob
Lib hỗ trợ và đơn giản hóa việc lập trình ứng dụng web.
• Xây dựng ứng dụng sử dụng Joob Lib: mạng xã hội địa điểm trên di động.
1.4. Kết chương
Tóm lại trong chương một, người viết luận văn đã giới thiệu sơ qua về xu
hướng web 2.0, bài toán xây dựng các ứng dụng web mà điển hình là các ứng dụng
mạng xã hội hiện nay, cùng với các framework hỗ trợ cho việc xây dựng loại ứng
dụng này. Từ đó đưa ra những nhận định khách quan về ưu nhược điểm của các
framework này. Trong phần 1.3, người viết luận văn đã đề xuất mục tiêu xây dựng
bộ thư viện hỗ trợ lập trình ứng dụng web hiệu quả sử dụng Joo Framework và trình
bày cụ thể về mục tiêu, nhiệm vụ của đồ án tốt nghiệp.
Ở chương 2 sẽ đi sâu vào trình bày cụ thể hơn những phân tích, đánh giá trên
một số mô hình và framework lập trình hiệu quả, từ đó đưa ra ý tưởng và thiết kế
kiến trúc tổng quan của Joob Lib và mô tả chi tiết kiến trúc phần Joob Model hỗ trợ
thao tác với cơ sở dữ liệu.
21
CHƯƠNG 2 – MÔ HÌNH JOOB - LIB ĐỀ XUẤT
2.1. Các ý tưởng kế thừa từ các mô hình hiệu quả
2.1.1. Mô hình lập trình ứng dụng đa tầng
Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng
như không bị ảnh hưởng bởi các thay đổi, người ta hay nhúm cỏc thành phần có
cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc
không bị chồng chéo và ảnh hưởng lẫn nhau. Ví dụ trong một công ty có từng
phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng
này không được can thiệp vào công việc nội bộ của phòng. Trong phát triển phần
mềm, người ta cũng áp dụng cách phân chia chức năng này. Đó là mô hình kiến trúc
đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3
lớp là phổ biến nhất. Ba lớp của mô hình gồm: Presentation, Business Logic, và
Data Access. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà
mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp
kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì.
Ví dụ, một ứng dụng có thể chia làm 3 phần như sau: phần giao diện người
dùng (UI layer), phần xử lý nghiệp vụ (business layer) và phần chứa dữ liệu (data
layer). Cụ thể ra, business layer sẽ có thể chia nhỏ thành 2 layer con là business
logic layer (chỉ quan tâm đến ý nghĩa của các nghiệp vụ, các tính toán mang nhằm
thoả mãn yêu cầu của người dùng) và persitence layer. Persistence layer chịu trách
nhiệm giao tiếp với data layer (thường là một hệ quản trị cơ sở dữ liệu quan hệ -
Relational DBMS). Persistence layer sẽ đảm nhiệm các nhiệm vụ mở kết nối, truy
xuất và lưu trữ dữ liệu vào các Relational DBMS.
Persistence Object và non-persistence Object
22
Nội dung chương 2:
• Các ý tưởng kế thừa từ các mô hình có sẵn:
o Mô hình lập trình ứng dụng đa tầng
o Hibernate Framework
• Đề xuất mô hình thư viện hỗ trợ lập trình Joob Lib
o Kiến trúc tổng quan Joob Lib
o Kiến trúc chi tiết
o Đánh giá tính hiệu quả của Joob Lib
Như trong lập trình Hướng đối tượng, việc một chương trình chạy là do sự
liên kết cùng hoạt động của các đối tượng với nhau. Non-persistence Object (đối
tượng không bền vững) là các đối tượng mà nó chỉ tồn tại trong thời gian chạy của
chương trình. Khi chương trình đó bị ngắt (exit) thỡ cỏc đối tượng đó sẽ mất. Đến
khi chương trình khởi động lại thỡ cỏc đối tượng đó lại được khởi tạo lại từ đầu.
Còn persistence Object (đối tượng bền vững) là các đối tượng mà trạng thái của nó
có thể tồn tại trong thời gian dài, kể cả sau khi chương trình bị ngắt và được phục
hồi lại thỡ cỏc đối tượng này cũng được phục hồi lại trang thái như trong lần trước
chương trình đang chạy. Một persistence Object cần phải có khả năng lưu trữ và
khôi phục lại. Ta sẽ bàn đến việc lưu trữ một đối tượng bằng CSDL thông qua các
hệ quản trị CSDL. CSDL cũng có nhiều loại, phổ biến nhất là CSDL quan hệ và
CSDL đối tượng. Trong CSDL quan hệ, dữ liệu được lưu trữ thành bảng 2 chiều
gồm các cột (hay còn gọi là thuộc tính) và các hàng. Việc lưu trữ này thì thuận lợi
cho việc quản lý, trớch rỳt và cập nhật dữ liệu. Mô hình CSDL hướng đối tượng dựa
trên việc mô hình hóa thế giới thực bằng các đối tượng và quan hệ giữa các đối
tượng. Tư tưởng của nó cũng tương tự như lập trình hướng đối tượng. Việc sử dụng
mô hình CSDL đối tượng thì thuận tiện trong việc mô hình hóa vỡ nó gần với thế
giới thực hơn. Sử dụng CSDL quan hệ thì dễ quản lý, trớch rỳt, cập nhật dữ liệu
nhưng lại khó trong việc mô hình hóa vỡ nó không đủ các khái niệm để mô hình
hóa thế giới thực. CSDL đối tượng thì tuận tiện trong việc lập trình, nhưng lại khó
xây dựng và quản lý. Với mỗi loại CSDL thỡ cú cỏc hệ quản trị CSDL tương ứng
như HQT CSDL quan hệ, HQT CSDL đối tượng. Hiện nay các hệ quản trị CSDL
dựa trên mô hình quan hệ, hệ quản trị CSDL đối tượng gần như chưa phát triển.
Trong khi đó xu hướng lập trình hiện tại lại chủ yếu theo phương pháp hướng đối
tượng. Như vậy để lưu trữ các đối tượng ta phải ánh xạ và xây dựng các bảng để lưu
trữ và ánh xạ các điều kiện sang cỏc cõu truy vấn. Công việc này phải lặp đi lặp lại
khiến bạn thấy nhàm chán và việc truy cập không được hoàn toàn linh hoạt, hơn
nữa không mấy ai giỏi cả về lập trình lẫn quản trị CSDL. Java cho ra đời Hibernate
framework nhằm giúp gắn kết việc lập trình hướng đối tượng và CSDL quan hệ.
Đối với người lập trình thì mọi câu truy vấn đều có thể thực hiện trên đối tượng và
họ gần như trong suốt đối với việc lưu trữ CSDL như thế nào. Còn với người quản
trị CSDL thì họ cũng chỉ cần quan tâm đến việc tối ưu hóa CSDL của mình.
23
Mô hình ứng dụng Model – Controller – View
Hình 4 – Mô hình ứng dụng MVC
Biểu đồ tuần tự mô tả mô hình MVC đơn giản:
24
Hình 5 – Biểu đồ tuần tự mô hình MVC đơn giản
- Model (mô hình): Là một đối tượng hoặc tập hợp các đối tượng biểu diễn
cho phần dữ liệu của chương trình, ví dụ các dữ liệu được lưu trong cơ sở dữ
liệu (CSDL) hay từ các hệ thống ứng dụng khác (như mail ) View (
- View (phần hiển thị): Là phần giao diện với người dùng, bao gồm việc hiện
dữ liệu ra màn hình, cung cấp các menu, nút bấm, hộp đối thoại, chọn lựa ,
để người dùng có thể thờm, xóa, sửa, tìm kiếm và làm các thao tác khác đối
với dữ liệu trong hệ thống.
- Controller (phần điều khiển): Là phần điều khiển toàn bộ logic về hoạt
động của giao diện, tương tác với thao tác của người dùng (từ chuột, bàn
phím và các thiết bị ngoại vi khác) và cập nhật, thao tác trên dữ liệu theo đầu
vào nhận được và điều khiển việc chọn phần View thích hợp để truyền dữ
liệu tới người dùng.
Với phương pháp thiết kế này, các chức năng hiển thị, chức năng logic điều
khiển và chức năng truy cập dữ liệu của chương trình được chia làm các phần tách
biệt.
2.1.2. Hibernate framework
• Object Relational Mapping
25