Khóa luận Tìm hiểu về location services cho di động và xây dựng ứng dụng minh họa

MỤC LỤC

Chương 1 GIỚI THIỆU26

Chương 2 CÔNG NGHỆ29

2.1 Công nghệ định vị29

2.1.1 Các hệ thống vệ tinh định vị hiện có30

2.1.1.1 NAVSTAR GPS:30

2.1.1.2 GLONASS (GLObal NAvigation Satellite System)31

2.1.1.3 Galilleo32

2.1.2 Trạm thu phát (Base station)32

2.1.3 Các loại thiết bị có tính năng định vị cho người dùng34

2.1.4 Cách thức định vị36

2.1.4.1 Cell identification / Cell of origin36

2.1.4.2 Định vị từ nhiều phía (multilateration)37

2.1.4.2.1 Time difference of arrival (TDOA)37

2.1.4.2.2 Time of arrival (TOA)39

2.1.4.2.3 Angle of arrival (AOA)40

2.1.4.2.4 Enhanced observed time difference (E-OTD)40

2.1.4.2.5 Advanced forward link trilateration (A-FLT)41

2.1.4.3 Định vị bằng vệ tinh: hệ thống định vị toàn cầu (GPS)41

2.1.4.3.1 Các thành phần của GPS: user, ground & space section41

2.1.4.3.2 Phương pháp định vị42

2.1.4.3.3 Các cải tiến43

2.1.5 Khác biệt giữa các hệ thống định vị được ứng dụng trong LBS với các hệ

thống tương tự46

2.1.5.1 Khác biệt với các hệ thống định vị thời gian thực46

2.1.5.2 Sự khác biệt với các hệ thống định hướng và theo dõi48

2.1.6 Tính riêng tư khi sử dụng công nghệ định vị49

2.2 Hệ thống thông tin địa lý (GIS)49

2.2.1 Lịch sử50

2.2.2 Dữ liệu cho GIS51

2.2.3 Xử lý thông tin với GIS53

2.2.3.1 Mô hình hóa dữ liệu54

2.2.3.2 Mô hình hóa các mạng lưới54

2.2.3.3 Mô hình hóa bản đồ55

2.2.3.4 Thống kê địa lý55

2.2.3.5 Mã hóa địa chỉ (geocoding)56

2.2.4 Trình bày thông tin với GIS56

2.2.4.1 Bản đồ56

2.2.4.2 Đồ họa máy tính57

2.3 Công nghệ truyền tải dữ liệu57

2.3.1 WAP/GPRS/EDGE57

2.3.2 Bluetooth/Wifi/WiMax58

2.3.3 Truyền thông vệ tinh59

Chương 3 CÁC NGHIÊN CỨU, CHUẨN VÀ ỨNG DỤNG HIỆN TẠI61

3.1 Nghiên cứu61

3.1.1 Các công ty & tổ chức nổi bật61

3.1.2 Các vấn đề mở62

3.2 Chuẩn62

3.3 Các ứng dụng thương mại64

3.3.1 Google64

3.3.2 Yahoo68

3.3.3 Vietmap69

3.3.4 DiaDiem.com70

3.3.5 Vietbando.com71

3.3.6 Vimap73

3.3.7 SMS Locator73

Chương 4 XÂY DỰNG SERVER PHỤC VỤ LBS75

4.1 Giới thiệu về server và web service75

4.1.1 Vai trò và khả năng của hệ thống server75

4.1.2 Yêu cầu cho ứng dụng trên server77

4.1.2.1 Có thể tái sử dụng, dễ bảo trì77

4.1.2.2 Bảo mật78

4.1.2.3 An toàn (secure & reliable)78

4.1.3 Ưu điểm của thiết kế có server79

4.2 Xây dựng hệ thống server phục vụ LBS79

4.2.1 Phân tích79

4.2.1.1 Giới thiệu về web service80

4.2.1.2 Kiến trúc của web service trong ứng dụng LBS82

4.2.1.3 Mashup83

4.2.1.4 Các phương pháp khác84

4.2.1.4.1 SAAS84

4.2.1.4.2 Client only85

4.2.2 Ngôn ngữ85

4.2.2.1 Giới thiệu Java86

4.2.2.2 Ưu điểm của Java87

4.2.2.2.1 Là ngôn ngữ lập trình thế hệ thứ 3 (3GL) với nhiều cải tiến87

4.2.2.2.2 Là ngôn ngữ được thông dịch (interpreted)87

4.2.2.2.3 Phát triển về mặt công nghệ88

4.2.2.3 Khuyết điểm của Java89

4.2.2.4 Kết luận về Java89

4.2.2.5 Các ngôn ngữ khác có thể dùng để triển khai web service90

4.2.2.5.1 ASP.NET90

4.2.2.5.2 PHP90

4.2.2.5.3 Ruby on Rails91

4.2.3 Cơ sở dữ liệu91

4.2.3.1 Giới thiệu MySQL91

4.2.3.2 MySQL spatial extension92

4.2.3.2.1 Biểu diễn dữ liệu92

4.2.3.2.2 Truy xuất thuộc tính cũa dữ liệu địa lý93

4.2.3.2.3 Thao tác trên dữ liệu địa lý96

4.2.3.3 Ứng dụng MySQL vào xây dựng LBS98

Chương 5 XÂY DỰNG CLIENT CHO LBS102

5.1 Định nghĩa102

5.2 Môi trường client102

5.2.1 Windows Mobile và Microsoft Auto102

5.2.2 Symbian104

5.2.3 J2ME105

5.3 Các vấn đề khi phát triển ứng dụng trên client là thiết bị di động106

5.3.1 Dữ liệu106

5.3.2 Xử lý và tốc độ107

5.3.3 Liên lạc107

5.3.4 Đồ họa108

Chương 6 XÂY DỰNG ỨNG DỤNG LBS109

6.1 Phát biểu bài toán109

6.1.1 Giới thiệu109

6.1.2 Mô tả tổng quan109

6.1.3 Sử dụng110

6.2 Phân tích yêu cầu111

6.2.1 Usecase111

6.2.1.1 Danh sách các actor111

6.2.1.2 Danh sách các usecase111

6.2.1.3 Usecase “Định vị”112

6.2.1.4 Usecase “Hiển thị vị trí”113

6.2.1.5 Usecase “Hiển thị đường đi”113

6.2.1.6 Usecase “Di chuyển trên bản đồ”114

6.2.1.7 Usecase “Tìm đường”114

6.2.1.8 Usecase “Tìm địa danh”115

6.2.1.9 Usecase “Tìm địa danh gần đúng”115

6.2.1.10 Usecase “Liệt kê loại địa điểm”116

6.2.1.11 Usecase “Hiển thị danh sách kết quả”117

6.2.1.12 Usecase “Tìm đường”117

6.2.1.13 Usecase “Thay đổi phương pháp tìm kiếm”118

6.2.1.14 Usecase “Bật / tắt chức năng định vị”118

6.3 Thiết kế và phát triển ứng dụng119

6.3.1 Công cụ, môi trường và tổng quan hệ thống119

6.3.1.1 Công cụ và môi trường119

6.3.1.2 Cơ sở dữ liệu và hoạt động của hệ thống120

6.3.2 Cơ sở dữ liệu123

6.3.3 Sơ đồ lớp mức thiết kế ở server126

6.3.3.1 Lớp LocationBasedServices128

6.3.3.2 Package business129

6.3.3.2.1 Lớp Finder129

6.3.3.2.2 Lớp Router129

6.3.3.3 Package data129

6.3.3.3.1 Lớp StreetData129

6.3.3.3.2 Lớp LocationSearchResultData129

6.3.3.3.3 Lớp StreetNodeData129

6.3.3.3.4 Lớp VenueTypeData129

6.3.3.3.5 Lớp Configuration130

6.3.3.4 Package objects130

6.3.3.4.1 Lớp LocationSearchResult130

6.3.3.4.2 Lớp StreetNode130

6.3.3.4.3 Lớp SimpleStreetNode130

6.3.3.4.4 Lớp DijkstraVertex130

6.3.3.4.5 Lớp Street130

6.3.3.4.6 Lớp Coordinate130

6.3.3.4.7 Lớp VenueType131

6.3.4 Sơ đồ lớp mức thiết kế ở client131

6.3.4.1 Các lớp trong package location based service131

6.3.4.1.1 Lớp LocationBasedService131

6.3.4.1.2 Lớp LocationBasedService_Stub132

6.3.4.1.3 Lớp LocationSearchResult, Coordinate và SimpleStreetNode132

6.3.4.2 Lớp GoogleMaps132

6.3.4.3 Lớp CloudMade132

6.3.4.4 Lớp MicroDouble132

6.3.5 Thiết kế giao diện132

6.3.5.1 Sơ đồ tương tác giữa các màn hình134

6.3.5.2 Màn hình chính135

6.3.5.3 Màn hình tìm kiếm137

6.3.5.4 Màn hình tìm kiếm theo loại địa điểm138

6.3.5.5 Màn hình kết quả tìm kiếm138

6.3.5.6 Màn hình tùy chọn ứng dụng140

6.3.6 Các API, lớp và hàm của các tác giá khác được sử dụng trong đề tài141

6.3.6.1 Google Maps static API & Lớp Google Map141

6.3.6.2 Cloud made routing API141

6.3.6.3 JSONObject142

6.3.6.4 MicroFloat142

6.4 Kiểm thử (testing)142

6.4.1 Acceptance system test cho server và client143

6.4.2 Unit test trên server143

6.4.2.1 LocationBasedServicesTest143

6.4.2.2 Finder test144

6.4.2.3 Router test144

6.4.2.4 LocationSearchResultData test145

6.4.2.5 StreetData test146

6.4.2.6 StreetNodeData test147

6.4.2.7 VenueTypeData test148

6.4.2.8 Coordinate test148

6.4.2.9 DijkstraVertex test149

6.4.2.10 LocationSearchResult test150

6.4.2.11 SimpleStreetNode test150

6.4.2.12 StreetNode test150

6.4.2.13 Street test151

6.4.3 Conformance test trên server151

6.4.3.1 Các test case đã thực hiện trên hàm Find152

6.4.3.2 Các test case đã thực hiện trên hàm FindFuzzy154

6.4.3.3 Các test case đã thực hiện trên hàm FindStreet154

6.4.3.4 Các test case đã thực hiện trên hàm Route155

6.4.4 Performance test trên server156

6.4.4.1 Cấu hình các hệ thống tham gia test157

6.4.4.2 Test 1: Null test157

6.4.4.3 Test 2: Các request bình thường159

6.5 Tích hợp và triển khai159

6.5.1 Client160

6.5.2 Server160

6.5.3 Mô hình triển khai thực tế nhằm đánh giá ứng dụng162

6.6 Đánh giá và so sánh163

6.6.1 Lưu trữ163

6.6.2 Xử lý164

6.6.3 So sánh tính năng với các ứng dụng khác165

6.6.3.1 Kết quả chạy Google Maps166

6.6.3.2 Kết quả chạy Vimap168

6.6.3.3 Kết quả chạy SMS Locator169

6.6.3.4 Kết quả chạy ứng dụng minh họa – locations service client170

Chương 7 TỔNG KẾT173

7.1 Kết quả đạt được173

7.2 Hướng phát triển173

7.2.1 Cải thiện hiệu năng173

7.2.2 Cải thiện mô hình triển khai174

7.2.3 Thêm tính năng cho ứng dụng174

7.2.4 Tăng tính tiện dụng cho người dùng174

TÀI LIỆU THAM KHẢO175

 

pdf202 trang | Chia sẻ: maiphuongdc | Lượt xem: 2042 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Khóa luận Tìm hiểu về location services cho di động và xây dựng ứng dụng minh họa, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
các client không có năng lực xử lý (còn gọi là terminal) yêu cầu. Server giờ đây là một khái niệm trừu tượng hơn vì không còn bị bó hẹp trong phạm vi vật lý của một máy tính mà có thể bao gồm nhiều máy tính kết hợp lại. Trong đó, năng lực xử lý của mỗi máy có thể không cao và thậm chí khoảng cách địa lý giữa của các máy tạo nên một server cũng có thể khá lớn. Đây là thành quả của sự phát triển không nghệ xử lý phân tán (distributed computing) và điện toán đám mây (cloud computing). 23 Vai trò và khả năng của hệ thống server Server cung cấp tài nguyên cho nhiều đối tượng khác. Do đó server cần có khả năng đa nhiệm (multitasking) tốt để có thể đáp ứng yêu cầu khi có nhiều yêu cầu truy cập đồng thời. Khả năng đa nhiệm tốt có được nhờ sự kết hợp khéo léo giữa phần cứng và phần mềm, trong đó quan trọng nhất là hệ điều hành và bộ vi xử lý. Trong các hệ thống hiện tại, server thường là nơi tập trung các tài nguyên trọng yếu nên 89 server thường là nơi được bảo vệ tốt nhất về mặt an ninh và được điều hành một cách cẩn thận (có đội ngũ trực xử lý sự cố, có nguồn điện dự phòng, v.v..). An ninh của server còn được coi trọng cả ở mặt logic: Tài nguyên trên server cần được kiểm soát để tránh việc chúng bị truy cập trái phép cũng như bị hư hỏng bởi các sự cố phần mềm. Công nghệ ảo hóa đang dần phát triển để đáp ứng nhu cầu này. Giờ đây có thể dễ dàng cấu hình nhiều server “ảo” chạy trên một server vật lý mà khi một server “ảo” gặp sự cố thì những server khác vẫn có thể hoạt động bình thường. Một số dịch vụ các hệ thống server thường cung cấp: - Lưu trữ file - Cơ sở dữ liệu - Quản lý hệ thống mạng (domain controller, firewall, proxy v.v…) - Xử lý tập trung - Host các dịch vụ chạy trên mạng như web server, web service v.v… Trong ứng dụng LBS phục vụ cho thiết bị di động, hệ thống server thường phải cung cấp tất cả các dịch vụ ở trên. Khác với các hệ thống máy tính để bàn, các thiết bị di động có khả năng lưu trữ và xử lý thông tin khá hạn chế - do đó hai chức năng này nên được server đảm nhận để bảo đảm về mặt tốc độ. Giảm bớt gánh nặng cho thiết bị di động đồng nghĩa với việc ứng dụng sẽ có khả năng chạy trên cả những thiết bị rẻ tiền hơn. Điều này mang đến tiện ích cho đại đa số người dùng vì theo thống kê tháng 04/2009, 80% điện thoại nhập về Việt Nam là hàng giá rẻ, dưới 50USD. Vì server cung cấp nhiều dịch vụ nên cần truyền rất nhiều thông tin. Do đó, hệ thống server bao gồm máy tính và các thành phần liên quan như router, switch, firewall… phải được cấu hình sao cho: 90 - Hệ thống được thông suốt: mọi thành phần trong hệ thống đều phải có khả năng liên lạc với nhau. - Linh hoạt: khi có thay đổi trong hệ thống như thay thế server, chuyển cơ sở dữ liệu… thì không tốn nhiều công sức thay đổi cấu hình hệ thống. - Đảm bảo về bảo mật: cấm các truy cập trái phép từ bên ngoài và cả những client không có phận sự liên quan tới dữ liệu được lưu trữ trong mạng nội bộ. 24 Yêu cầu cho ứng dụng trên server Các ứng dụng trên server cung cấp các dịch vụ mới ngoài các dịch vụ căn bản đã đề cập ở 4.1. Vì một dịch vụ web là sự kết hợp của cả phần cứng và phần mềm nên ngoài các yêu cầu phần cứng đã để cập, phần mềm trên hệ thống cũng cần đảm bảo một số yêu cầu để tạo ra một hệ thống có chất lượng. 16 Có thể tái sử dụng, dễ bảo trì Tái sử dụng ở đây bao gồm cả tái sử dụng code, chức năng của ứng dụng và kết quả xử lý. Cách tốt nhất để đạt được yêu cầu này là thiết kế ứng dụng theo mô hình 3 lớp: chi ứng dụng thành 3 phần đảm nhận 3 nhiệm vụ khác nhau: - Presentation: trình bày nội dung. - Business logic: xử lý. - Data: quản lý và truy xuất dữ liệu. Mô hình này khác với mô hình Model – View – Controller (MVC) thường thấy trong các ứng dụng desktop. Ở server có nhiệm vụ đảm nhận hầu hết việc xử lý đồng thời phải bảo mật dữ liệu. Vì client và server liên lạc với nhau qua môi trường internet mà 91 trong mô hình MVC, View có khả năng cập nhật trực tiếp dữ liệu xuống model : các dữ liệu này thường cần được bảo vệ nhưng lại phải truyền đi truyền lại nhiều lần trên internet nên hiển nhiên độ an toàn sẽ giảm. Có thể thấy mô hình MVC không thích hợp cho ứng dụng dịch vụ web phục vụ client di động như đồ án đang cần xây dựng. Ngoài việc chia nhỏ xử lý để nhiều thành phần thuộc lớp trên có thể sử dụng cùng một thành phần của lớp dưới – có sử dụng lại kết quả xử lý trước đó nếu có, việc thiết kế theo mô hình 3 lớp còn giúp việc bảo trì hệ thống dễ dàng hơn: lỗi sẽ dễ dàng được cô lập và định vị nhờ việc các lớp xử lý hoàn toàn tách biệt với nhau. 17 Bảo mật Vì môi trường liên lạc giữa client và server là qua internet, kể cả khi client là thiết bị di động nên việc đảm bảo an toàn thông tin trên đường truyền cũng là một vấn đề. An toàn thông tin ở đây bao gồm: - Bảo đảm tính toàn vẹn của thông tin: thông tin nhận được ở bên đến phải giống như lúc được truyền ở bên đi và không bị chỉnh sửa bởi bên thứ 3. - Bảo đảm tính riêng tư: thông tin truyền đi không nên bị bên thứ 3 đọc được. Vì các client trên di động thường chỉ hoạt động qua giao thức web – HTTP nên cách đảm bảo bảo mật thông tin tốt nhất là dùng Secure Socket Layer (SSL) extension cho HTTP: HTTPS. SSL sẽ mã hóa mọi dữ liệu truyền / nhận giữa client và server qua giao thức HTTP. Tuy nhiên SSL đòi hỏi server phải có certificate of authority (CA) do một tổ chức có thẩm quyền cấp. Certificate này được một số dịch vụ cung cấp hosting cung cấp cho người dùng (webmaster) miễn phí; tuy nhiên trong phần lớn trường hợp người dùng phải tự bỏ chi phí xin certificate. Ngoài các giải pháp mã hóa có sẵn, ứng dụng có thể tự xây dựng phương thức mã hóa riêng dựa trên các công nghệ mã hóa bằng khóa công (public key) hiện có. 92 18 An toàn (secure & reliable) Trong tình hình an ninh mạng phức tạp như hiện nay, ứng dụng cần được thiết kế sao cho có khả năng chịu lỗi cao nhất. Ứng dụng cần được kiểm tra cần thận trong và sau quá trình phát triển để tránh mắc phải các lỗi bảo mật thường gặp như: - Tràn bộ đệm. - SQL/code injection. - Lỗi khi xử lý chuỗi với các kí tự đặc biệt. - Race condition. - Mạo danh server / client. Ngoài ra trong trường hợp ứng dụng gặp sự cố, cần đảm bảo thiệt hại với dữ liệu là ít nhất: - Các thao tác đọc ghi và truyền nhận nên được cá thể hóa (atomic) để khi có một thao tác (transaction) bị hỏng thì có thể thực hiện lại chính xác thao tác đó. - Phải xử lý lỗi tốt để khi ứng dụng gặp lỗi và không thể ghi dữ liệu, các dữ liệu hiện có và hệ thống chạy ứng dụng phải không bị ảnh hưởng. 25 Ưu điểm của thiết kế có server Khi đáp ứng các yêu cầu thiết kế, hệ thống sẽ có các ưu điểm của mô hình server – client như: - Dữ liệu được tập trung: việc sao lưu và thay đổi sẽ dễ dàng hơn. Nâng cấp phần mềm và dữ liệu sẽ không còn là gánh nặng ở phía client. - Quản lý tập trung: khi cần thay đổi cấu hình ứng dụng chỉ cần thực hiện tại một 93 điểm. - Bảo mật: mọi truy cập và thao tác trên dữ liệu đều có thể quản lý và theo dõi dễ dàng. - Tốc độ: với các ứng dụng lớn, việc chia nhỏ các khối xử lý ra nhiều phần ngoài việc tăng tính tái sữ dụng còn có thể cải thiện hiệu năng hệ thống do việc xử lý có thể được đảm nhận bởi nhiều máy tính vật lý khác nhau, mỗi máy lại có thể có các biện pháp cải thiện tốc độ khác như cache. - Chi phí cho toàn hệ thống giảm: chi phí bảo trì trên client giảm đi nhiều do chi phí cập nhật và cấu hình hệ thống được giảm. 2 Xây dựng hệ thống server phục vụ LBS 26 Phân tích Vì server là nơi thực hiện đa phần tính toán, client sẽ là nơi biểu diễn kết quả nên: - Ở server không cần phải tạo giao diện cho người dùng mà chỉ cần cung cấp giao diện cho client sử dụng. Loại ứng dụng phù hợp nhất cho mục đích này là web service. - Client là thiết bị di động, có khả năng xử lý hạn chế nên chỉ gồm giao diện người dùng và các lời gọi đến service do server cung cấp. Vì LBS thường bao gồm GIS mà các hệ thống GIS lại khá đồ sộ nên để tiết kiệm công sức và tập trung vào xây dựng dịch vụ, LBS có thể xử lý thông tin từ các hệ thống GIS có sẵn. Quá trình kết hợp thông tin này gọi là Mashup. 94 19 Giới thiệu về web service Theo W3C, dịch vụ web (web service) là: - Một phần mềm. - Có một địa chỉ (URI). - Có giao diện và dữ liệu có thể được định nghĩa bằng XML. - Có thể tương tác trức tiếp với các ứng dụng khác. - Truyền nhận thông điệp dưới dạng XML qua các giao thức của internet. Nói một cách khác, dịch vụ web là một tập các phương thức (method / function) có thể được gọi thực hiện từ xa. Mỗi web service thường có một URL duy nhất và có thể nhận lệnh / trả kết quả xử lý về qua các giao thức trên HTTP như SOAP, XML-RPC, v.v… Web service cũng là một giải pháp công nghệ để phát triển ứng dụng theo kiến trúc theo hướng dịch vụ. Tuy không phải là công nghệ mới mẻ (vì chỉ đơn giản dựa trên HTTP và kết hợp với các công nghệ khác như XML), web service cũng thể hiện sự tiến hóa không ngừng của Internet. Web service cung cấp giao diện lập trình (API) cho các ứng dụng có khả năng sử dụng. Chức năng truy cập đến web service được hỗ trợ trong khá nhiều ngôn ngữ hiện đại như .NET, Java... Web service giúp tách phần trình bày ra khỏi phần xử lý bên dưới bằng cách chuyển phần xử lý và dữ liệu lên server, chỉ để lại phần trình bày ở client. Web service kế thừa tất cả tính chất của một ứng dụng trên Internet và còn có them những ưu điểm mà một ứng dụng web thông thường không thể có được: - Dễ mở rộng, đơn giản nhưng lại có thể xử lý phân tán. - Giảm phụ thuộc ngôn ngữ và nền tảng lập trình, các ngôn ngữ có thể sử dụng 95 thành quả của nhau. - Loose coupling: Giao thức của 2 bên được xác định rõ ràng để có thể liên lạc với nhau. Phương thức lien lạc này thường đơn giản hơn nội dung cần trình bày cho người dung nên dữ liệu truyền đi cần ít hơn. - Thông qua mạng Internet: Có thể được sử dụng ở bất kì đâu, tuy nhiên cần quan tâm đến vấn đề bảo mật. Trên thực tế, ngoài web service chạy trên hệ thống server và client sử dụng các web service này, còn có thêm một thành phần nữa lập danh sách các web service hiện được cung cấp trên mạng, cho phép client có thể truy cập vào và tìm service phục vụ cho mục đích của mình. Thành phần thứ 3 này gọi là web service broker Hình 27 Triển khai web service Giữa các thành phần trong hệ thống web service đã được triển khai này có thể có các 96 loại thông điệp sau: - Publish: hệ thống cung cấp web service đăng ký mô tả về dịch vụ mà mình cung cấp vào service registry trên web service broker. - Find: Người dùng tìm trong service registry dịch vụ đáp ứng nhu cầu của mình. - Bind: Người dùng sử dụng web service trong ứng dụng của mình. 20 Kiến trúc của web service trong ứng dụng LBS Theo (Jagoe 2002), server theo mô hình 3 lớp phục vụ ứng dụng LBS có thể có kiến trúc như sau: Hình 28 Kiến trúc server phục vụ LBS Ở đây, với mục đích xây dựng ứng dụng đơn giản và chưa mô hình hóa người dùng, các thành phần như thương mại điện tử và quản lý người dùng sẽ không có trong ứng dụng. 21 Mashup Mashup là loại ứng dụng kết hợp dữ liệu hoặc chức năng từ nhiều nguồn bên ngoài để tạo nên một chức năng mới, tiết kiệm được thời gian và công sức phát triển lại các chức năng này. Hiện nay với nhiều dịch vụ được cung cấp sẵn dưới dạng web service, mashup lại càng dễ triển khai hơn trước: developer không còn phải bận tâm tới việc tách dữ liệu thô mà được cung cấp chính xác những gì mình cần. 97 Hình 29 Ví dụ mashup với Yahoo pipes: dùng dữ liệu từ blog kết hợp với babelfish để tạo ra dữ liệu bằng ngôn ngữ khác Tuy nhiên Mashup làm ứng dụng phụ thuộc nhiều vào các hệ thống bên ngoài nên khó có thể kiểm soát độ ổn định và tính liên tục của dịch vụ tổng hợp. Do đó đối với các hệ thống quan trọng cần tránh sử dụng mashup hoặc cung cấp thêm nhiều nguồn dữ liệu thay thế. Hiện các nhà cung cấp dịch vụ web lớn đều cung cấp dịch vụ Mashup để cả người dùng bình thường và developer đều có thể sử dụng: - Google với Mashup Editor (nay đã được tích hợp vào App Engine) 98 - Yahoo với Yahoo Pipes - Microsoft với Microsoft Popfly 22 Các phương pháp khác 9 SAAS Ngoài việc tự xây dựng web service phục vụ LBS như đã đề cập, hiện đã có một số công ty cung cấp các ứng dụng LBS đóng gói sẵn, có thể được triển khai ngay đến người dùng theo phương pháp SAAS (Software as a Service)(Mark Turner 2003). Mọi việc liên quan đến hệ thống từ triển khai đến bảo trì đều sẽ được nhà cung cấp dịch vụ đảm nhận. SAAS thường được triển khai dưới dạng tương tự web service, cũng ứng dụng các công nghệ như XML, SOAP và cũng có các ưu khuyết điểm tương tự. SAAS có thể được triển khai ở 4 mức độ khác nhau: 1. Đơn giản: mỗi người dùng sẽ có một phiên bản độc lập của ứng dụng chạy độc lập với nhau trên server của nhà cung cấp dịch vụ. Các phiên bản này có thể khá khác nhau giữa các người dùng do mục đích của mỗi người dùng là khác nhau. 2. Có khả năng cấu hình: người dùng có thể cấp hình ứng dụng bằng metadata, nhiều người dùng có thể sử dụng các ứng dụng giống nhau. Ở mức này nhà cung cấp vẫn đáp ứng được nhu cầu của tất cả các người dùng đồng thời đơn giản hóa việc quản lý và bảo trì code. 3. Có khả năng cấu hình tốt: chỉ một phiên bản của ứng dụng có thể phục vụ tất cả mọi người dùng, tiết kiệm thêm chi phí vận hành nhưng chưa được thiết kế để dễ dàng mở rộng. 4. Có thể mở rộng, có thể cấu hình dễ dàng: ứng dụng SAAS được thiết kế theo mô 99 hình đa lớp, hỗ trợ cân bằng tải giữa nhiều hệ thống tương tự nhau, chạy trên nhiều server. Nhà cung cấp dịch vụ có thể tăng hoặc giảm khả năng tính toán bằng cách thêm vào hoặc loại bớt server mà không cần thay đổi ứng dụng. Tuy nhiên SAAS khiến người dùng phụ thuộc khá nhiều vào nhà cung cấp dịch vụ. Để giải quyết vấn đề này mô hình SAAS “lai” đã ra đời: người dùng có thể tự triển khai SAAS với tài nguyên của mình và có khả năng chuyển đồi giữa dịch vụ của nhà cung cấp và của mình khi cần thiết. Ví dụ tiêu biểu cho việc triển khai phần mềm dưới dạng SAAS gồm có Google Docs và Microsoft Dynamics CRM. 10 Client only Trong một số trường hợp chẳng hạn như ứng dụng quá đơn giản hoặc việc liên lạc với các hệ thống khác không được đảm bảo, việt thiết kế LBS tập trung vào client có thể là lựa chọn tốt hơn. Tuy mắc phải một số khuyết điểm như đã đề cập (tốc độ xử lý chậm, dữ liệu lưu trữ bị giới hạn v.v…) nhưng việc đặt ứng dụng hoàn toàn trên client có thể tăng tính độc lập cho ứng dụng (phần nào tăng độ tin cậy do không phụ thuộc vào đường truyền), giảm nguy cơ rò rỉ thông tin (vì không cần phải liên lạc với các hệ thống khác)… 27 Ngôn ngữ Có khá nhiều ngôn ngữ có thể dùng để phát triển web service và mỗi ngôn ngữ có thể có những ưu khuyết điểm riêng. Ở đây đồ án chọn dùng Java. 23 Giới thiệu Java Java là ngôn ngữ lập trình được thiết kế bởi James Gosling thuộc Sun Microsystems vào năm 1995. Java được xây dựng với cú pháp tương tự C và C++. Tuy nhiên Java lại 100 là ngôn ngữ hướng đối tượng hoàn toàn (không hỗ trợ thủ tục như C và C++) và hỗ trợ truy xuất các đối tượng đơn giản hơn. Năm mục tiêu chính mà java nhắm tới gồm: (Sun microsystems 1997) 1. Đơn giản, hướng đối tượng và tạo cảm giác xa lạ với lập trình viên. 2. Ổn định và an toàn. 3. Không phụ thuộc vào nền tảng (hệ điều hành hay phần cứng) và có tính cơ động cao. 4. Hiệu năng tốt. 5. Được thông dịch (interpreted), có khả năng đa tiểu trình (threaded) và xử lý đối tượng động (dynamic). Các lớp trong Java được đóng gói thành nhiều phiên bản phục vụ cho các mục đích khác nhau, gồm: - JavaSE (standard edition): Dành cho các ứng dụng làm việc trên máy trạm (workstation) - JavaEE (enterprise edition): Dành cho các ứng dụng trên server - JavaME (micro edition): Dành cho các thiết bị di động và hệ thống nhúng - JavaCard: Là công nghệ cho phép các ứng dụng Java nhỏ chạy trên thẻ thông minh (smart card) mà vẫn đảm bảo về bảo mật. Sun đã tiến hành “dân chủ hóa” Java và để cho cộng đồng developer trên thế giới quyết định hướng phát triển của Java qua Java Community Process (JCP). Ngoài ra, một số thành phần của Java cũng đã được release dưới các giấy phép mã nguồn mở như GPL 101 và LGPL. 24 Ưu điểm của Java 11 Là ngôn ngữ lập trình thế hệ thứ 3 (3GL) với nhiều cải tiến Qua thiết kế hướng đối tượng của mình, Java cung cấp sẵn một framework lập trình khá hoàn chỉnh, giúp đẩy nhanh việc phát triển ứng dụng. Ngoài ra hầu hết các IDE Java hiện nay cho phép mô hình hóa, thiết kế giao diện và tạo (generate) code tự động – những tính năng của một ngôn ngữ thế hệ thứ 4. So với C và C++, Java tập trung hỗ trợ lập trình hướng đối tượng nên phát huy được các ưu điểm của phương pháp này: - Đơn giản và dễ hiểu: các đối tượng lập trình thường là ánh xạ của các đối tượng trong đời thực. - Dễ mở rộng: khả năng tái sử dụng code tốt nhờ kế thừa - Tách biệt giữa các lớp xử lý nhờ đóng gói (encapsulation), giúp xác định vấn đề dễ dàng hơn vì lỗi dễ được cô lập. Ngoài ra khi có thay đổi đến một phần của ứng dụng, thay đổi đối với các phần khác cũng dễ được nhận thấy hơn. Với các thư viện được cung cấp sẵn, Java có hỗ trợ web service, xử lý XML và mã hóa nên tương đối lý tưởng để phát triển web service. 12 Là ngôn ngữ được thông dịch (interpreted) Java không được biên dịch thành mã máy như các ngôn ngữ lập trình trước đó mà được biên dịch thành mã trung gian (bytecode), mã này chỉ chứa các lệnh có thể được thực thi bởi máy ảo Java (Java Virtual Machine – JVM). Máy ảo Java đơn giản là một ứng dụng có nhiều phiên bản cho nhiều hệ điều hành và kiến trúc máy tính khác nhau. Khi 102 chạy ứng dụng Java, JVM sẽ thông dịch bytecode của ứng dụng thành mã máy phù hợp với hệ máy mình chạy. Bằng cách này, ứng dụng Java có thề chạy được trên nhiều hệ máy khác nhau mà không cần biên dịch lại – đúng như khẩu hiệu của Java “write once, run anywhere”. Ngoài ra nhờ biên dịch thành bytecode thay vì mã máy, nên Java còn có thể: - Quản lý biến “động”: Các biến có thể được khởi tạo ngay trong lúc chạy để đáp ứng đúng nhu cầu của ứng dụng, loại bỏ nhu cầu quản lý con trỏ phức tạp như trong C. Đi kèm với tính năng này là việc quản lý lỗi linh hoạt với exception – developer dễ dàng kiểm soát tình huống khi có lỗi xảy ra, giúp ứng dụng ổn định hơn. - Hỗ trợ generic: Kiểu của biến có thể được xác định khi chạy ứng dụng thay vì phải xác định từ trước. - Dynamic typing: Cho phép một biến có thể mang nhiều kiểu dữ liệu khác nhau. Tính năng này sẽ được tích hợp vào phiên bản Java tiếp theo (Java 7). - Garbage collection: Java tự động giải phóng bộ nhớ thuộc về các đối tượng không dùng đến nên developer không cần phải quan tâm đến việc quản lý đối tượng; từ đó loại bỏ hiện tượng rò rỉ bộ nhớ. - JIT (Just in time) optimization: Các đoạn code tương tự nhau sẽ được phát hiện ngay trong lúc thực thi ứng dụng và chỉ cần được biên dịch một lần, giảm thời gian thực thi. - Dễ dàng bảo đảm các yêu cầu về bảo mật hơn: · Mọi lời gọi hàm, mọi tham chiếu đều có thể được kiểm tra tính hợp lệ. 103 · Biến được quản lý tự động nên không bị sai kiểu và luôn được khởi tạo · Các phương thức và biến trong lớp được “giấu đi” qua encapsulation chỉ có thể được gọi bởi các lớp hợp lệ. · Mọi thao tác trên hệ thống của người dùng đều có thể được kiểm soát vì phải thông qua JVM và sự đồng ý của người dùng. 13 Phát triển về mặt công nghệ Java hiện là một ngôn ngữ mở với nhiều cộng đồng tham gia phát triển nhiều khía cạnh khác nhau. Nhờ đó, ngoài bộ thư viện chuẩn Java còn có rất nhiều framework và thư viện khác do cộng đồng phát triển phục vụ nhiều mục đích khác nhau. Một số thư viện thậm chí còn hỗ trợ tính năng của các ngôn ngữ khác như JaQue cho phép sử dụng LINQ (một tính năng vừa có trong .NET 3.0). Nhờ các thư viện này developer có điểm xuất phát tốt hơn khi bắt đầu với Java. 25 Khuyết điểm của Java Tuy là một ngôn ngữ tốt nhưng Java không tránh khỏi có khuyết điểm: - Hỗ trợ generics chưa hoàn chỉnh: vì phải tương thích với các thư viện hỗ trợ tính năng này trước Java 5, tất cả generics trong Java đều có kiểu “object” khi chạy nên ứng dụng không thể biết được kiểu dữ liệu ban đầu từ biến generic. - Không hỗ trợ số không âm (unsigned): Ứng dụng sẽ gặp khó khăn khi xử lý dữ liệu số được truyền qua mạng (với các giao thức truyền dữ liệu nhị phân). Tuy nhiên trong web service, dữ liệu truyền đi chủ yếu có dạng XML với thông tin được định kiểu rõ ràng và thường không sử dụng số không âm. - Tính toán dấu chấm động không hoàn chỉnh: Đôi khi các phép tính số thập phân 104 trong Java cho kết quả không hoàn toàn chính xác. - Hiệu năng không cao: Vì phải qua bước thông dịch trung gian nên tốc độ của Java chưa bằng các ngôn ngữ chạy trực tiếp như C++(Prechelt 1999). Sun hiện vẫn đang cố cải thiện tình hình này. 26 Kết luận về Java Dù chưa hoàn hảo nhưng các khiếm khuyết trên không ảnh hưởng nhiều lắm tới việc dùng Java làm công cụ phát triển LBS. Java vẫn là một lựa chọn tốt. Tuy việc phát triển trên Java tương đối không thuận tiện so với nền tảng .NET của Microsoft (designer không hoàn thiện, giao diện phức tạp, debug đòi hỏi máy có cấu hình mạnh vì phải chạy thêm máy ảo Java…) nhưng Java được sự hỗ trợ tốt hơn từ các công cụ của hãng thứ ba (như Visual Paradigm chỉ chủ yếu phục vụ cho Java với nhiều tính năng vượt trội hơn các ngôn ngữ khác). Ngoài ra, Java không ràng buộc hệ thống với một hệ điều hành cố định như .NET bị ràng buộc với Windows (trong khi Mono - .NET cho các hệ thống *nix vẫn chưa hoàn chỉnh). 27 Các ngôn ngữ khác có thể dùng để triển khai web service 14 ASP.NET .NET giống với Java ở điểm cùng là ngôn ngữ được thông dịch và .NET web service có thể hoạt động trên Linux nhờ Mono. Tuy nhiên .NET web service trên Mono không thể sử dụng tất cả các tính năng hỗ trợ như Precompiled Website, Webparts API, Web Service Enhancements… Cũng như mọi sản phầm khác của Microsoft, việc phát triển web service với SOAP trên môi trường .NET khá nhẹ nhàng, chỉ cần đánh dấu một số thuộc tính là web method tương tự Java, tuy nhiên .NET đôi khi có vấn đề với các kiểu dữ liệu gửi / nhận phức 105 tạp, đòi hỏi người dùng phải tự chuyển dữ liệu về dạng thích hợp. 15 PHP PHP là ngôn ngữ có thê hoạt động trên nhiều platform và có tính tùy biến cao. PHP thường được dùng trong LAMP stack cùng với Apache và MySQL như một giải pháp triển khai hosting ít tốn kém nhưng hiệu quả. PHP có nhiều module có thể bật / tắt tùy theo nhu cầu sử dụng. Các module của PHP đảm nhận khá nhiều tác vụ khác nhau từ nén file tới xử lý XML; trong số các module của PHP hiển nhiên cũng có các module về web service như SOAP vả XML-RPC. Web service với SOAP trong PHP cũng được triển khai bằng cách thêm header SOAP vào response của trang. PHP cho phép người dùng tùy biến nội dung SOAP được gửi / nhận chỉ với vài hàm đơn giản; tuy nhiên nếu sử dụng không cần thận có thể tạo ra lỗi. Có thể thấy mô hình web service trong PHP không tách biệt xử lý với dữ liệu như Java. Ngoài ra, các biến trong PHP có kiểu động (dynamic typing), một biến vào một thời điểm có thể có nhiều kiểu khác nhau nên các hàm SOAP khó phân biệt được vào một lúc cụ thể, biến đó có chứa đúng dạng dữ liệu đang cần truyền hay không, dẫn tới việc debug khó khăn. 16 Ruby on Rails Ruby on Rails, thường được viết tắt thành RoR là framework lập trình theo phương pháp Agile của ngôn ngữ Ruby. Ruby dùng mô hình MVC để tổ chức ứng dụng và scaffolding để tự xây dựng một số model và view, tiết kiệm công sức cho nhà phát triển. Ban đầu Ruby hỗ trợ web service với SOAP nhưng về sau đã được thay thế bằng REST. Scaffolding là điểm mạnh nhưng cũng chính là điểm yếu của Ruby, nó chỉ hiệu quả với những cầu trúc dữ liệu đơn giản; tính đúng đắn của các cấu trúc dữ liệu được tạo ra 106 không được đảm bảo (vì developer khó kiểm soát được). Từ đó đòi hỏi khá nhiều test để đảm bảo ứng dụng hoạt động đúng trong mọi trường hợp. Ngoài ra, lập trình trên Ruby cũng khá khác với các ngôn ngữ như Java hay C nên dễ gây bỡ ngỡ cho developer. 28 Cơ sở dữ liệu 28 Giới thiệu MySQL MySQL là hệ quản trị cơ sở dữ liệu quan hệ (relational database management system – RDBMS) được quản lý bởi công ty Thụy Điển MySQL AB, nay thuộc sự quản lý của Sun Microsystem (cũng là công ty đã phát triển Java). MySQL có thể chạy trên nhiều hệ điều hành khác nhau, có khả năng mở rộng cao và trên thực tế được dùng bởi Facebook, Wikipedia và You tube. MySQL có thư viện hỗ trợ truy xuất cho hầu hết các ngôn ngữ hiện nay. MySQL miễn phí và có chính sách bản quyền khá thoáng: GPL hoặc giấy phép khác khi được khách hàng yêu cầu. 29 MySQL spatial extension MySQL có hỗ trợ hạn chế một số thành phần dữ liệu địa lý được đề ra bởi Open Geospatial Consortium (xem 3.1.1) trong OpenGIS® Simple Features Specifications For SQL(Open geospatial consortium 1999). Các cột dữ liệu trong MySQL có thể mang một trong các kiểu dữ liệu địa lý được đề cập trong chuẩn nói trên. Hệ thống các kiểu dữ liệu này gồm: 107 Hình 30 Các đối lớp tượng trong MySQL GIS extenstion Các kiểu có màu nhạt là các kiểu trừu tượng, không thể tạo bằng các hàm khởi

Các file đính kèm theo tài liệu này:

  • pdfLBS.pdf
Tài liệu liên quan