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

xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động

60 404 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 60
Dung lượng 1,41 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ố

Trang 1

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

Trang 2

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:

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ềnThô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ảovệ:

Hà Nội, ngày tháng năm

Giáo viên hướng dẫn

Trang 3

Thầy Hoàng Anh Việt

Trang 4

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âydự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 thaotá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 ứngdụ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ố frameworktiêu biểu như Zend Framework hay Hibernate Framework, sau đó thiết kế các giải phápnhằ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

Trang 5

ABSTRACT OF THESIS

The goal of this thesis is to develop Joob library, a lightweight library for buildingweb 2.0 applications Joob provides a normalized MVC architecture, helps developersbuild web applications quickly and efficiently, especially when interacting with databases.Joob solves the problems in server-side web application programming with the support ofJoo Framework in client-side

Joob are designated mainly for AJAX model and Single Page Application Theauthor has researched some major existing frameworks, especially Zend Framework andHibernate Framework, designed a solution which made use of some advantages of thoseplatforms 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 performancecharacteristics

Joob has been deployed in a location-based social network, which provides somelocation-based features besides the traditional social features

Trang 6

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áotrong trường đại học Bách Khoa Hà Nội nói chung và các thầy cô giáo trong ViệnCô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ànhhọc, đồng thời truyền đạt cho em nhiều kiến thức, kinh nghiệm quý báu trong suốt 5nă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ìnhlà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ứcchuyê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ómBKProfile Team Thời gian làm việc cùng nhóm BKProfile tại công ty Cazoodledướ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áttriể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ácbạ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ànhtố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òngcode đầ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è, đồngnghiệ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 2011Chân thành cảm ơn!

Trang 7

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 8

DANH MỤC CÁC HèNH MINH HỌA 9

DANH MỤC CÁC TỪ VIẾT TẮT 10

PHẦN MỞ ĐẦU 11

CHƯƠNG 1 – BÀI TOÁN XÂY DỰNG ỨNG DỤNG WEB 12

VÀ CÁC FRAMEWORK MÃ NGUỒN MỞ 12

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 12

1.1.1 Bài toán xây dựng ứng dụng web 2.0 12

1.1.2 Giới thiệu về Google Maps API và ứng dụng mạng xã hội địa điểm 14

1.1.3 Nhận xét và các vấn đề còn tồn tại 15

1.2 Phân tích ưu nhược điểm một số framework hiện tại 15

1.2.1 Zend Framework 15

1.2.2 Joo Framework 18

1.3 Mục tiêu của đồ án tốt nghiệp 20

1.3.1 Mục tiêu của đồ án 20

1.3.2 Nhiệm vụ cụ thể của đồ án 21

1.4 Kết chương 21

CHƯƠNG 2 – MÔ HÌNH JOOB - LIB ĐỀ XUẤT 23

2.1 Các ý tưởng kế thừa từ các mô hình hiệu quả 23

2.1.1 Mô hình lập trình ứng dụng đa tầng 23

2.1.2 Hibernate framework 26

2.2 Đề xuất mô hình thư viện lập trình Joob Lib 28

2.2.1 Kiến trúc tổng quan Joob Lib 28

2.2.2 Kiến trúc chi tiết Joob Model 30

2.2.3 Đánh giá tính hiệu quả của Joob Lib 33

2.3 Kết chương 2 36

CHƯƠNG 3 - ỨNG DỤNG JOOB LIB 37

MẠNG XÃ HỘI ĐỊA ĐIỂM TRấN DI ĐỘNG 37

3.1 Bài toán ứng dụng mạng xã hội địa điểm 37

3.2 Yêu cầu của hệ thống 37

3.2.1 Yêu cầu về môi trường 37

3.2.2 Yêu cầu về giao diện 38

3.2.3 Sơ đồ chức năng hệ thống 38

3.3 Thiết kế hệ thống 43

3.3.1 Thiết kế thành phần 43

3.3.2 Thiết kế cơ sở dữ liệu 45

3.3.3 Thiết kế các module của hệ thống 46

3.3.4 Thiết kế giao diện người dùng 49

3.4 Kết quả và đánh giá 50

Trang 8

CHƯƠNG 4 - KẾT LUẬN VÀ ĐÁNH GIÁ 53

4.1 Kết quả đạt được 53

4.2 Những khó khăn và thuận lợi 53

4.3 Phương hướng phát triển 53

TÀI LIỆU THAM KHẢO 55

Trang 9

DANH MỤC CÁC BẢNG

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

Bảng 5a – Mô tả yêu cầu phía người dùng 40

Bảng 5b – Mô tả yêu cầu phía người dùng 40

Bảng 5c – Mô tả yêu cầu phía người dùng 41

Bảng 6 – Danh sách các chức năng phía quản trị hệ thống 41

Bảng 7a – Mô tả yêu cầu phía quản trị 43

Bảng 7b – Mô tả yêu cầu phía quản trị 43

Trang 10

DANH MỤC CÁC HèNH MINH HỌA

Hình 1 – Table Data Gateway pattern 17

Hình 2 - Sơ đồ tổng quan hệ thống Joo framework 18

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 19

Hình 4 – Mô hình ứng dụng MVC 25

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

Hình 9 – Sơ đồ usecase của người dùng trong mạng xã hội Joob 39

Hình 10 – Sơ đồ usecase của quản trị trong mạng xã hội Joob 42

Hình 11 – Biểu đồ thành phần tổng quan mạng xã hội Joob 44

Hình 12 – Sơ đồ quan hệ thực thể cơ sở dữ liệu mạng xã hội Joob 45

Hình 13 – Biểu đồ lớp thành phần Model 46

Hình 14 – Biểu đồ lớp thành phần Module 47

Hình 15 – Sơ đồ lớp Map.js 48

Hình 16 – Sơ đồ thiết kế giao diện Joob 49

Hình 17 – Giao diện trang chủ 50

Hình 18 – Giao diện trang địa điểm 50

Hình 19 – Giao diện trang cập nhật của người dùng 51

Hình 20 – Trang web daisyfishing.com được viết trên Joob 52

Trang 11

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 đó

Trang 12

PHẦN MỞ ĐẦUTó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ổngquan 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âuphâ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

Trang 13

CHƯƠNG 1 – BÀI TOÁN XÂY DỰNG ỨNG DỤNG WEB

VÀ CÁC FRAMEWORK MÃ NGUỒN MỞ

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 OReillyMedia, đưa ra tại hội thảo Web 2.0 lần thứ nhất do OReilly Media và MediaLiveInternational 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ôngngừ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àngloạ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ó

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

Trang 14

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à XFNdù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ốtcủ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à ObjectProperties Broadcasting Protocol do Chris Dockree phát triển Giao thức này chophé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ươngthức cấp phát nội dung động (của Web 1.0) về danh nghĩa, tuy nhiên dịch vụ webyê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âydự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ạonên thế hệ web mới Việc chuyển từ "duyệt và xem" sang "tham gia" là cuộc cáchmạ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àynhư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ôitrườ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á caoWikipedia, nhưng họ quên một điều quan trọng: nó đủ tốt, miễn phí và nhiều người

Trang 15

có thể đọc Ngoài ra cũn cú những ví dụ khác như các site Reddit và Digg để chongười dùng quyết định thông tin gì là quan trọng, hay del.icio.us cho phép mọingườ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 MapAPI 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 đồ Đồngthờ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ìmkiế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ụ ứngdụ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 khuvự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ếtcá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ácnhau 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ớinhau 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ênkhắ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ếmbạ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ênthô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: kinhdoanh, mua bán

Mạng xã hội địa điểm (location based social network) bên cạnh những tínhnă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 đượcbạn bè mình đang ở đâu, tìm kiếm những người dùng ở gần, tìm kiếm địa điểmxung 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è

Trang 16

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ảinghiệ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ủamạ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 quamạ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ụngnà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 dophả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íamá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 trungbì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 khaithực tế trong bộ Java Applet của Java vào năm 1995, đã có rất nhiều công nghệ dựatrên mô hình này được phát triển như mô hình Spiar[7] để xây dựng ứng dụng webdạng một trang (Single-page application)[1], framework GWT của Google[2], cácnền tảng RIA như Flash, Java Applet … Những nền tảng này đã giải quyết đượcmộ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 theocủ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ữngframework như vậy

2 Phân tích ưu nhược điểm một số framework hiện tại

Zend Framework là một PHP Framework mã nguồn mở được lập trình trênPHP 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 / toolkitnhư kiểu của symfony hay CakePHP; ZF là một thư viện các lớp và nó không bắt

Trang 17

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àokiến trúc MVC) Chia ra làm nhiều components, gần như tất cả mọi nhu cầu củadeveloper đề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ănglê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ềntheo 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ựcthi nó bằng các Action

- Zend_Db: dựa trên đối tượng PDO (PHP Data Objects), cung cấp cácphươ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ínhhợ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: cungcấ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: cungcấ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ượnginterface Tất cả các thao tác CRUD được thực thi bằng cách truy cập các phươngthứ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

Trang 18

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êncá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ấtcao với khối lượng các thư viện component phong phú, đáp ứng được hầu hếtnhững nhu cầu của developer Bên cạnh đó, tuy được thiết kế theo mô hình MVCnhư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ớpabstract khiến cho bộ thư viện ZF trở nên cồng kềnh & chỉ thích hợp vớinhững ứng dụng lớn Hiệu năng của hệ thống khá thấp (ứng dụng xây dựngtrên Zend Framework mất trung bình ~4s cho một lần tải trang), điều nàykhiế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 datagateway Đây là một trong những mẫu thiết kế ORM đơn giản nhất Vớinhững cơ sở dữ liệu đơn giản và có tính table-oriented (mỗi bảng dữ liệu lưutrữ dữ liệu cho một mục đích duy nhất – Class- and Single – TableInheritance) thì Table and Row data gateway là lựa chọn thích hợp Tuynhiên với những cơ sở dữ liệu không có tính table-oriented hoàn toàn, hoặcmỗi bảng đơn lưu trữ dữ liệu cho nhiều mục đích khác nhau thỡ nó khôngcòn thích hợp Hoặc trong trường hợp ứng dụng đòi hỏi việc truy cập đồng

Trang 19

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ớinhau theo dạng phức tạp (dạng cây hoặc đồ thị) thì table data gateway cũngkhông hỗ trợ tốt Những ứng dụng như vậy đòi hỏi mẫu thiết kế linh hoạthơn.

Cũng như row data gateway, sử dụng table data gateway cũng tương đươngvớ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âybất lợi trong việc cập nhật và quản lý code

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 quamạ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ựngcá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ênmá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ăngtruyề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ácgiả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ểnthị dữ liệu Điểm khác biệt giữa portlet và plugin là: portlet là các thành phần hiểnthị và xử lý dữ liệu độc lập và được gọi khi trang web được tải, còn plugin chỉ đượcgọi với những sự kiện nhất định

Event Manager

JOO framework architecture

UIPortlets & PluginsApplication ManagerEvent

Trang 20

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ênlỏ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ácyêu cầu này đến plugin & porlet tương ứng Các lớp Plugin Manager, PorletContainer 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ằngJOO 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

Ajax Interface

UI

JSON Data Ajax request

Ajax requestt

Trang 21

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átsinh ở 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ôngqua bộ Ajax Interface gửi đến server Ajax request này có thể được gửi đến một haynhiều server Server tiếp nhận yêu cầu và xử lý dữ liệu, sau đó gửi về client bằnggiao 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 HTMLtươ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ầuphía server trả về dữ liệu dưới dạng JSON (hoặc JSONP) thông qua giao thứcREST 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 interfaceinteraction) 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ầnnà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ớinhữ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ựcthi 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 – manglạ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ụngtrê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 ứngdụ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ớimộ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 đốitượ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ấtlượ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ìnhlậ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áttriể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ấpmột ứng dụng được xây dựng trên nền tảng JOO

Trang 22

3 Mục tiêu của đồ án tốt nghiệp

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ậptrì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épngười sử dụng có thể thực hiện những câu truy vấn xuống cơ sở dữ liệuthô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ơ

- 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

Trang 23

+ 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, twitter1.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 JoobLib 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

Tóm lại trong chương một, người viết luận văn đã giới thiệu sơ qua về xuhướ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ụngmạ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 ứngdụng này Từ đó đưa ra những nhận định khách quan về ưu nhược điểm của cácframework 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ìnhbà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ênmộ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

Trang 24

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ũngnhư 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ệckhông bị chồng chéo và ảnh hưởng lẫn nhau Ví dụ trong một công ty có từngphò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òngnà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ầnmề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ớpkia 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ườidùng (UI layer), phần xử lý nghiệp vụ (business layer) và phần chứa dữ liệu (datalayer) Cụ thể ra, business layer sẽ có thể chia nhỏ thành 2 layer con là businesslogic layer (chỉ quan tâm đến ý nghĩa của các nghiệp vụ, các tính toán mang nhằmthoả mãn yêu cầu của người dùng) và persitence layer Persistence layer chịu tráchnhiệ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, truyxuất và lưu trữ dữ liệu vào các Relational DBMS

Persistence Object và non-persistence Object

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

Trang 25

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 (đốitượ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ủachương trình Khi chương trình đó bị ngắt (exit) thỡ cỏc đối tượng đó sẽ mất Đếnkhi 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ụchồ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ướcchươ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ềugồ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ợicho 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ựatrê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 đốitượ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ệunhưng lại khó trong việc mô hình hóa vỡ nó không đủ các khái niệm để mô hìnhhó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 ứngnhư HQT CSDL quan hệ, HQT CSDL đối tượng Hiện nay các hệ quản trị CSDLdự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 đốitượ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ưutrữ 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ạikhiế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ơnnữa không mấy ai giỏi cả về lập trình lẫn quản trị CSDL Java cho ra đời Hibernateframework 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ảntrị CSDL thì họ cũng chỉ cần quan tâm đến việc tối ưu hóa CSDL của mình

Trang 26

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:

Trang 27

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ễncho 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 đốivớ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ànphí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 đầuvà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ềukhiể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áchbiệt

2.1.2 Hibernate framework

 Object Relational Mapping

Tiến trình trao đổi từ một giải pháp quan hệ đến một giải pháp hướng đối

Trang 28

xem xét lại một số khái niệm trong lập trình hướng đối tượng: Identity (Định danh),State (Trạng thái), Behavior (Cách hành xử), Type (Kiểu), Association (Tập hợp),Class (Lớp), Encapsulation (Đóng gói), Inheritance (Kế thừa).

Identity: Identity phân biệt một đối tượng với tất cả những đối tượng khỏc

cựng kiểu Mỗi đối tượng tại một thời điểm tạo ra nhận được một identity Nó làđịnh danh để phân biệt một đối tượng với một kiểu dữ liệu trừu tượng (AbstractData Type - ADT)

State: State của một đối tượng là giá trị chứa bởi đối tượng đó Mặt khác,

state là giá trị hiện hành được tập hợp với Identity Một đối tượng có thể đi thôngqua những state khác nhau trong suốt vòng đời của nó State cả một đối tượng cóthể chỉ là hiện hữu bằng cách xác định behavior của đối tượng đó

Behavior: Behavior của một đối tượng bao gồm:

- Một tập các thao tác và phương thức mà một đối tượng cung cấp, còn đượcgọi là Interface

- Các trả lời cung cấp ngược lại, còn được biết là các thông điệp

- Những thay đổi những thao tác này tạo nên đối tượng

Tất cả cỏc cỏch giao tiếp với đối tượng phải thông qua interface State củamột đối tượng có thể được kiểm tra bằng các thể hiện của behavior Mặt khác, cácgiá trị được trả về của các thao tác và ảnh hưởng sau đó của các thao tác này cungcấp cho behavior của đối tượng, mà trong đó nói cho chúng ta state của đối tượng

Type: Các đối tượng có thể hỗ trợ các interface có những đặc tả khác nhau.

Những đặc tả này là kiểu của giao tiếp, được bổ sung bởi đối tượng Những đốitượng khác nhau có thể là cùng kiểu, và những đối tượng như thế có thể được tươngtác với nhau thông qua cùng Interface Một đối tượng có thể bổ sung nhiều kiểu

Association: Một đối tượng của một kiểu có thể được liên kết với đối tượng

thuộc kiểu khác Liên kết này được biết như một Association Association giúp đỡtrong việc chuyển tải những đối tượng khỏc đó liên kết với một đối tượng

 ORM (Object Relational Mapping) framework là một cơ chế cho phép ngườilập trình thao tác với database một cách hoàn toàn tự nhiên thông qua các đối tượng.Lập trình viên hoàn toàn không quan tâm đến loại database sử dụng, SQL, …

Persistence Layer:

- “Tier” và “Layer”: tier thường được gắn với phần cứng về mặt vật lý(physical) còn layer thỡ dớnh đến vấn đề cách thức tổ chức bên trong củaứng dụng Việc phân chia tier là “trong suốt” (transparent) đối với ứng dụng

về mặt luận lý (logical) Điều này có nghĩa là khi ta phát triển một ứng dụng,chúng ta không bận tâm đến các thành phần (component) sẽ triển khai(deploy) ra sao mà chỉ chú ý là chúng ta sẽ tổ chức ứng dụng thành nhữnglayer như thế nào

Trang 29

- Peristence layer: một ứng dụng có thể được chia làm 3 phần như sau: giaodiện người dùng (presentation 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 có thể được chianhỏ thành 2 layer con là business logic layer (các tính toán nhằm thỏa mãnyêu cầu người dùng) và persistence layer Persistence layer chịu trách nhiệmgiao 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 sẽ đảm nhiệm các nhiệm vụ mở kết nối, truyxuất và lưu trữ dữ liệu vào các Relational DBMS

 Hibernate Framework

Hibernate framework là một ORM framework cho persistence layer Nhưvậy, nhờ có Hibernate framework mà giờ đây khi phát triển ứng dụng ta chỉ còn chútâm vào những layer khác mà không phải bận tâm nhiều về persistence layer nữa

Hibernate: là một dịch vụ lưu trữ và truy vấn dữ liệu quan hệ mạnh mẽ vànhanh

 Hibernate giúp phát triển các class dùng để lưu trữ dữ liệu theo cáchthức hướng đối tượng: association, inheritance, polymorphism, composition

và collections

 Hibernate cho phép thực hiện cỏc cõu truy vấn dữ liệu bằng cách sửdụng ngôn ngữ SQL mở rộng của Hibernate (HQL) hoặc là ngôn ngữ SQLnguyên thủy cũng như là sử dụng các API

 Hibernate được license theo LGPL (Lesser GNU Public License) Kiến trúc tổng thể của Hibernate như sau:

Trang 30

Hình 6 – Kiến trúc Hibernate Framework

Nhận xét Hibernate Framework:

 Trong suốt đối với các đối tượng Java cơ bản (POJO – Plain Old Java

object) Không cần phải kế thừa các interface có sẵn của Hibernate để tạo một đối tượng trong database

 Sử dụng kiểu tham chiếu thông thường hoặc kiểu tập hợp để mô tả mối quan

hệ giữa các bảng

 Có nhiều công cụ hỗ trợ đi kèm

 Tài liệu đầy đủ và chất lượng, có rất nhiều sách hướng dẫn Hibernate.Vớ dụ như cuốn Hibernate In Action

 Mạnh mẽ, ít lỗi và hiệu năng cao

 Hỗ trợ caching

 Ngôn ngữ truy vấn tốt (HQL), hỗ trợ cả truy vấn SQL thông thường trong trường hợp cần

2.2 Đề xuất mô hình thư viện lập trình Joob Lib

2.2.1 Kiến trúc tổng quan Joob Lib

Joob được xây dựng dựa trên mô hình MVC (Model-View-Controller) Cácnhà phát triển xây dựng hệ thống bằng cách kế thừa lại các thành phần mà Joobcung cấp (Joob Controller, Joob Model và Joob View)

Ngoài 3 thành phần Model, View, Controller, Joob cung cấp một nền tảngthư viện để các nhà phát triển có thể mở rộng trên đó, nhằm phục vụ nhu cầu chomình, bao gồm:

 Router: Để chuyển yêu cầu HTTP tới Controller tương ứng Ví dụ, một yêucầu ajax có dạng sau: index.php?mod=user sẽ được chuyển tới controllerUser Các nhà phát triển có thể kế thừa lại Joob Router để tự xây dựng mộtluật phù hợp với mình

 Bootstrap: Phần khởi tạo hệ thống, có nhiệm vụ cấu hình một số tham số cầnthiết, khởi tạo các giá trị mặc định (Router mặc định)

Ngày đăng: 22/11/2014, 08:41

HÌNH ẢNH LIÊN QUAN

Hình 1 – Table Data Gateway pattern - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 1 – Table Data Gateway pattern (Trang 16)
Hình 2 - Sơ đồ tổng quan hệ thống Joo framework - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 2 Sơ đồ tổng quan hệ thống Joo framework (Trang 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 - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
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 (Trang 18)
Hình 4 – Mô hình ứng dụng MVC - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 4 – Mô hình ứng dụng MVC (Trang 24)
Hình 5 – Biểu đồ tuần tự mô hình MVC đơn giản - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 5 – Biểu đồ tuần tự mô hình MVC đơn giản (Trang 25)
Hình 6 – Kiến trúc Hibernate Framework - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 6 – Kiến trúc Hibernate Framework (Trang 28)
Hình 7 – Kiến trúc tổng quan Joob framework - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 7 – Kiến trúc tổng quan Joob framework (Trang 29)
Hình 8 – Biểu đồ lớp Joob Model - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 8 – Biểu đồ lớp Joob Model (Trang 31)
Bảng 1a – So sánh tính năng của Joob với một số framework hiện tại - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Bảng 1a – So sánh tính năng của Joob với một số framework hiện tại (Trang 34)
Bảng 1b – So sánh tính năng của Joob với một số framework hiện tại - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Bảng 1b – So sánh tính năng của Joob với một số framework hiện tại (Trang 35)
Bảng 2 – Yêu cầu về môi trường của mạng xã hội Joob - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Bảng 2 – Yêu cầu về môi trường của mạng xã hội Joob (Trang 38)
Bảng 4 – Danh sách các chức năng phía người dùng - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Bảng 4 – Danh sách các chức năng phía người dùng (Trang 38)
Hình 9 – Sơ đồ usecase của người dùng trong mạng xã hội Joob - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 9 – Sơ đồ usecase của người dùng trong mạng xã hội Joob (Trang 40)
Hình 10 – Sơ đồ usecase của quản trị trong mạng xã hội Joob - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 10 – Sơ đồ usecase của quản trị trong mạng xã hội Joob (Trang 43)
Hình 11 – Biểu đồ thành phần tổng quan mạng xã hội Joob - xây dựng bộ thư viện lập trình joob lib ứng dụngxây dựng mạng xã hội địa điểm trên di động
Hình 11 – Biểu đồ thành phần tổng quan mạng xã hội Joob (Trang 45)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w