DANH MỤC TỪ VIẾT TẮTAPI Application Programming Interface Giao diện lập trình ứng dụng CDMA Code Division Multiple Access Một công nghệ trong hệ thống thông tin di động GPRS Genera
Trang 1
TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
THÔNG TIN HÀNG HÓA BẰNG MÃ VẠCH
TỪ SMARTPHONE
Thuộc nhóm ngành khoa học: Khoa học máy tính
Sinh viên thực hiện: Bùi Cao Tú Giới Tính: Nam
Trang 2TRƯỜNG ĐẠI HỌC MỞ THÀNH PHỐ HỒ CHÍ MINH
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
THÔNG TIN HÀNG HÓA BẰNG MÃ VẠCH
TỪ SMARTPHONE
Thuộc nhóm ngành khoa học: Khoa học máy tính
Sinh viên thực hiện: Bùi Cao Tú Giới Tính: Nam
Trang 3MỤC LỤC
MỞ ĐẦU 1
1 Hiện trạng 1
2 Lý do chọn đề tài 1
3 Mục tiêu đề tài 2
4 Phương pháp nghiên cứu 2
5 Đối tượng nghiên cứu 2
6 Phạm vi nghiên cứu 2
7 Đóng góp của đề tài 2
Chương 1 CƠ SỞ LÝ THUYẾT 4
1.1 Nền Tảng Android 4
1.2 Webservice 16
1.3 XML 27
1.4 Mã vạch và thư viện Zxing 41
Chương 2 THIẾT KẾ HỆ THỐNG 45
2.1 Thiết kế 45
2.2 Thiết kế giao diện 51
2.3 Các chức năng của hệ thống 57
2.4 Ứng dụng android : 57
2.5 Xác định tác nhân và ca sử dụng 57
Chương 3 KẾT LUẬN 58
3.1 Đánh giá ứng dụng và hệ thống 58
3.2 Ứng dụng giúp giải quyết được các vấn đề 58
3.3 Kế hoạch đề xuất triển khai hệ thống vào thực tiễn 59
TÀI LIỆU THAM KHẢO 6161
PHỤ LỤC 62
Trang 4MỤC LỤC HÌNH ẢNH VÀ BẢNG BIỂU
Hình 1.1 Nhân Linux trên Android 6
Hình 1.2 Thư viện lâp trình ứng dụng trên Android 6
Hình 1.3 Khung ứng dụng 7
Hình 1.4 Các ứng dụng trên Android 8
Hình 1.5 Vòng đời của một hoạt động 10
Hình 2.1 Mô hình tổng thể hoạt động của hệ thống 45
Hình 2.2 Mô hình hoạt động phía web Server 46
Hình 2.3 Sơ đồ CSDL 47
Hình 2.4 Sơ đồ hoạt động ứng dụng phía client 50
Hình 2.5 Giao diện trang chủ website 51
Hình 2.6 Giao diện phân biệt hàng giả 52
Hình 2.7 Giao diện chính của chương trình 53
Hình 2.8 Giao diện hiển thị quét mã vạch 54
Hình 2.9 Giao diện hiển thị thông tin sản phẩm nhận được từ server 54
Hình 2.10 Giao diện xem thông tin sản phẩm tab Giới thiệu(Introduce) 55
Hình 2.11 Giao diện xem thông tin sản phẩm tab thông tin chi tiết (Details) 55
Hình 2.12 Giao diện tab xem thông cảnh báo hay phân biệt thật giả 56
Hình 2.13 Giao diện chính About 56
Trang 5DANH MỤC TỪ VIẾT TẮT
API Application Programming
Interface Giao diện lập trình ứng dụng
CDMA Code Division Multiple Access Một công nghệ trong hệ thống
thông tin di động
GPRS General Packet Radio Service Gói dịch vụ vô tuyến tổng hợp
J2SE Java 2 Standard Edition Là đặc tả và cũng là nền tảng
thực thi cho các ứng dụng Java
MIDP Mobile Information Device
Wi-Fi Wireless Fidelity Hệ thống mạng không dây
XML Extensible Markup Language Ngôn ngữ đánh dấu mở rộng
DDMS Dalvik Debug Monitor Service Chương trình gỡ rối Android
SOAP Simple Object Access Protocol
WSDL Web Service Description
Language
Trang 6BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC MỞ TP.HCM
THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI
1 Thông tin chung:
- Tên đề tài: XÂY DỰNG HỆ THỐNG TRUY XUẤT THÔNG TIN HÀNG HÓA
- Sinh viên thực hiện: Bùi Cao Tú
- Người hướng dẫn: Tiến sĩ Lê Xuân Trường
2 Mục tiêu đề tài:
Xây dựng một hệ thống truy xuất thông tin hàng hóa thông qua barcode bằng smartphone theo mô hình ứng dụng client – web server
3 Tính mới và sáng tạo:
Lập trình ứng dụng Android sử dụng mã vạch và giao thức truyền tải XML
4 Kết quả nghiên cứu:
Xây dựng được hệ thống truy xuất thông tin hàng hóa theo mô hình client-server như sau :
Webservices cho phép lưu trữ và truy xuất thông tin hàng hóa qua máy tính và qua yêu cầu từ smartphone
Ứng dụng Android truy xuất thông tin hàng hóa qua mã vạch
5 Đóng góp về mặt kinh tế - xã hội,giáo dục và đào tạo, an ninh, quốc phòng và khả năng áp dụng của đề tài:
Góp phần phát triển đất nước, phát triển xã hội
Góp 1 phần rất lớn trong công cuộc chống hàng giả, hàng nhái, hàng kém chất lượng đang rất phổ biến và đầy cam go hiện nay
Đề tài có khả năng áp dụng cao vì triển khai dễ dàng, chi phí thấp, có giá trị thực tiễn cao, rất cấp thiết vì hiện nay số lượng hàng hóa quá nhiều khiến người tiêu dùng không thể biết hay tìm hiểu hết thông tin các loại hàng hóa mà mình muốn mua, hiện tại chưa có một hệ thống nào có thể
Trang 7cung cấp tất cả thông tin về các loại hàng hóa một cách dễ dàng, nhanh chóng, đầy đủ và chính xác như vậy
6.Công bố khoa học của sinh viên từ kết quả nghiên cứu của đề tài (ghi rõ
tên tạp chí nếu có) hoặc nhận xét, đánh giá của cơ sở đã áp dụng các kết quả nghiên cứu (nếu có):
Ngày 24 tháng 4 năm 2013
Sinh viên chịu trách nhiệm chính
thực hiện đề tài
(ký, họ và tên)
Nhận xét của người hướng dẫn về những đóng góp khoa học của sinh viên
thực hiện đề tài (phần này do người hướng dẫn ghi):
Trang 8BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC MỞ TP.HCM
THÔNG TIN VỀ SINH VIÊN CHỊU TRÁCH NHIỆM CHÍNH THỰC HIỆN ĐỀ TÀI
I SƠ LƯỢC VỀ SINH VIÊN:
Họ và tên: Bùi Cao Tú
Sinh ngày: 03 tháng 02 năm 1991
Nơi sinh: Nha Trang
Lớp: TH09A3 Khóa: 2009
Khoa: Công nghệ thông tin
Địa chỉ liên hệ: E1502 4S, Đường số 17, Khu phố 4, Hiệp Bình Chánh, Thủ Đức Điện thoại: 01255234040 Email: buicaotu@gmail.com
II QUÁ TRÌNH HỌC TẬP (kê khai thành tích của sinh viên từ năm thứ 1 đến năm đang học):
Trang 10và phát triển kinh tế (OECD) cho biết năm 2007, giá trị hàng giả được mua bán trên toàn cầu đã lên tới 250 tỷ USD Con số này lớn hơn rất nhiều so với hoạt động của thế giới ngầm, như buôn vũ khí hay buôn người, thậm chí đánh bại cả vận chuyển thuốc phiện
Phòng Thương mại Quốc tế (ICC) ước tính giá trị của hàng giả năm 2008 là 650
tỷ USD Lượng thuế thất thoát và chi phí an sinh xã hội đội thêm 125 tỷ USD, chỉ riêng tại các nước phát triển Số việc làm bị cắt giảm vì hàng giả cũng lên tới 2,5 triệu Năm 2015, ICC ước tính giá trị hàng giả trên toàn thế giới sẽ vượt 1.700 tỷ USD, tương đương 2% GDP toàn cầu
Nguyên nhân chủ là do tâm lý người tiêu dùng thích hàng hiệu, và thiếu hiểu biết
về thông tin các sản phẩm mình mua để có thể đánh giá phân biệt các loại hàng hóa
mà họ mua
Mặc dù thời gian vừa qua, các cơ quan Nhà nước đã liên tục đưa ra những biện pháp xử lý, cũng như chính sách để ngăn chặn tình trạng hàng giả, hàng nhái trên thị trường Tuy nhiên, từ đầu năm đến nay, số lượng hàng hóa vi phạm vẫn ngày càng gia tăng Các mặt hàng này cũng trở nên tinh vi và khó phát hiện hơn
Nguyên nhân phần lớn là do người tiêu dùng thiếu thông tin cần thiết về sản phẩm mình mua, chọn nhầm hàng giả hàng nhái mà vẫn không biêt Hiện vẫn chưa hề có một công trình nghiên cứu khoa học nào áp dụng công nghệ thông tin để giải quyết vấn đề này
2 Lý do chọn đề tài
Cùng với sự phát triển mạnh của công nghệ thông tin và các thiết bị di động hiện nay Việc truy xuất thông tin vô cùng nhanh chóng và dễ dàng Ý tưởng xây dựng được hệ thống có khả năng truy xuất nhanh thông tin hàng triệu loại hàng hóa mà
Trang 11người tiêu dùng không thể có khả năng tự nhớ hết được Giúp người tiêu dùng có khả năng nhận biết được mọi thông tin chính xác và cần thiết của sản phẩm mà họ muốn từ chính nhà cung cấp, ngoài ra qua những thông tin họ có thể phân biệt được hàng giả hàng nhái, các cảnh báo từ nhà sản xuất về vấn đề này để họ chú ý hơn Giúp giải quyết được một nguyên nhân chính yếu của vấn đề hàng giả hàng nhái
3 Mục tiêu đề tài
Xây dựng một hệ thống truy xuất thông tin hàng hóa từ mã vạch bằng smartphone góp phần ngăn chặn tình trạng hàng giả hàng nhái
4 Phương pháp nghiên cứu
Xây dựng hệ thống theo mô hình Client – Server truyền tải thông tin qua XML
Tìm hiểu công nghệ Barcode, truyền tải XML
Lập trình ứng dụng Client ( Android )
Xây dựng Website (ASP.NET)
5 Đối tượng nghiên cứu
Lập trình ứng dụng Client trên Android
a) Đóng góp cho kinh tế - xã hội:
Góp phần ngăn chặn nạn hàng giả đang hoành hành hiện nay
Trang 123
Bằng cách cung cấp những thông tin hàng hóa cho người tiêu dùng, góp phần phòng chống hàng giả, giảm gánh nặng của việc phát hiện và thu hồi hàng giả cho cục quản lý thị trường đang rất thiếu nhân lực vì lượng hàng giả hàng nhái tràn lan
Bảo vệ lợi ích cũng như sức khỏe, tính mạng của người tiêu dùng
Tiết kiệm chi phí cho các biện pháp chống hàng giả thông thường như tem chống giả tuy lại kém hiệu quả (có trường hợp làm giả lại dấu hiệu nhận biết hàng giả) vì nếu có các dấu hiệu nhận diện hàng giả mà khách hàng không biết những thông tin đó cũng không thể nào phân biệt được
b) Về mặt kỹ thuật:
Xây dựng hệ thống truy xuất thông tin hàng hóa qua mã vạch theo mô hình ứng dụng Client – Web Server có sử dụng công nghệ mã vạch, XML, lập trình ứng dụng web, lập trình ứng dụng Android
Trang 13Chương 1 CƠ SỞ LÝ THUYẾT
Chương này nói về các cơ sở lý thuyết để xây dựng hệ thống truy xuất thông tin hàng hóa bằng mã vạch từ smartphone Gồm các thông tin chính về nền tảng Android, Webservices, XML, Mã vạch và thư viện Zxing
1.1 Nền Tảng Android
Phần này giới thiệu về nền tảng Android, khái niệm, các đặc điểm của nền tảng Android Tiếp đến là đi sâu trình bày về kiến trúc và giới thiệu bộ công cụ lập trình cho Android
1.1.1 Khái niệm
Android là một hệ thống, một hệ điều hành dựa trên Java và chạy trên nhân linux 2.6 Nó được phát triển bởi Liên minh thiết bị cầm tay mở (Open Handset Alliance), với phương châm mang lại phong cách sử dụng Internet mới và mở cho điện thoại di động
Android cung cấp một tập hợp đầy đủ các phần mềm cho thiết bị di động bao gồm: hệ điều hành, các khung ứng dụng và các ứng dụng cơ bản
1.1.2 Đặc điểm
a Tính mở
Android được xây dựng từ dưới đi lên cho phép người phát triển tạo các ứng dụng di động hấp dẫn với đầy đủ các điểm mạnh của các thiết bị cầm tay hiện có Android hoàn toàn mở, một ứng dụng có thể gọi tới bất kể một chức năng lõi của điện thoại như tạo cuộc gọi, gửi tin nhắn hay sử dụng máy ảnh, cho phép người phát triển tạo phong phú hơn, liên kết hơn các tính năng cho người dùng Android được xây dựng trên nhân Linux mở Thêm nữa, nó sử dụng một máy ảo mà đã được tối ưu hóa bộ nhớ và phần cứng với môi trường di động Android mà một
mã nguồn mở, nó có thể được mở rộng để kết hợp tự do giữa các công nghệ nổi trội
Trang 145
b Tính ngang bằng của các ứng dụng
Với Android, không có sự khác nhau giữa các ứng dụng điện thoại cơ bản với ứng dụng của bên thứ ba Chúng được xây dựng để truy cập như nhau tới một loạt các ứng dụng và dịch vụ của điện thoại Với các thiết bị được xây dựng trên nền tảng Android, người dùng có thể đáp ứng đầy đủ các nhu cầu mà họ thích Chúng
ta có thể đổi màn hình nền, kiểu gọi điện thoại, hay bất kể ứng dụng nào Chúng
ta thậm chí có thể hướng dẫn điện thoại chỉ xem những ảnh mình thích
c Phá vỡ rào cản phát triển ứng dụng
Android phá vỡ rào cản để tạo ứng dụng mới và cải tiến Một người phát triển
có thể kết hợp thông tin từ trang web với dữ liệu trên điện thoại cá nhân – chẳng hạn như danh bạ, lịch hay vị trí trên bản đồ – để cung cấp chính xác hơn cho người khác Với Android, người phát triển có thể xây dựng một ứng dụng mà cho phép người dùng xem vị trí của những người bạn và thông báo khi họ đang ở vị trí lân cận Tất cả được lập trình dễ dàng thông qua sự hỗ trợ của MapView và dịch
vụ định vị toàn cầu GPS
d Dễ dàng và nhanh chóng xây dựng ứng dụng
Android cung cấp bộ thư viện giao diện lập trình ứng dụng đồ sộ và các công
cụ để viết các ứng dụng phức tạp Android còn bao gồm một bộ công cụ đầy đủ giúp cho việc phát triển trở nên dễ dàng
1.1.3 Kiến trúc của nền tảng Android
Trang 15Hình 1.1 Nhân Linux trên Android
Android sử dụng nhân Linux 2.6 làm nhân cho các dịch vụ hệ thống như bảo mật, quản lý bộ nhớ, quản lý tiến trình (xử lý tiến trình, đa luồng), ngăn xếp mạng
và trình điều khiển thiết bị (giao tiếp USB, giao tiếp hồng ngoại, không đây, v.v…) Nhân Linux này cũng có vai trò như một lớp trừu tượng giữa phần cứng
và phần mềm
1.1.5 Thư viện và các giao diện lập trình ứng dụng
Android có một thư viện khá phong phú cung cấp sẵn để người lập trình có thể
sử dụng Hình 2 là sơ đồ tóm tắt về hệ thống thư viện này
Hình 1.2 Thư viện lâp trình ứng dụng trên Android
Trang 16 Hệ thống thư viện C: một dẫn xuất của hệ thống thư viện C chuẩn cho những thiết
bị nhúng trên nền Linux
Thư viện đa phương tiện: sử dụng nhân mở PacketVideo, hỗ trợ nhiều định dạng
âm thanh, hình ảnh và cả video, bao gồm Mpeg4, H264, MP3, ACC, AMR, JPG và PNG
Surface manager: quản lý việc truy cập tới các hệ thống hiển thị con và việc kết hợp của các lớp đồ họa 2 chiều, 3 chiều từ nhiều ứng dụng
Thư viện cơ sở Web: một máy trình duyệt web hiện đại tận dụng sức mạnh của trình duyệt Android, cho phép nhúng cửa sổ duyệt web cho ứng dụng
SGL (Scalable Graphics Library): cỗ máy đồ họa 2D của Android
Thư viện 3D: được cài đặt trên dựa trên API của OpenGL ES 1.0; thư viện bao gồm cả bộ cảm nhận gia tốc phần cứng 3D, tối ưu hóa các phần mềm 3D
FreeType: thư viện font chữ ảnh nhị phân và véc tơ
SQLite: là thư viện truy xuất cơ sở dữ liệu nhỏ, mạnh, có sẵn trong mọi ứng dụng Android
Trang 17đơn giản hóa việc sử dụng lại các thành phần, mỗi ứng dụng có thể cho phép các ứng dụng khác khả năng sử dụng các thành phần này
Dưới đây là tất cả các ứng dụng của hệ thống và các dịch vụ:
Tập hợp phong phú của các Views sử dụng để xây dựng các ứng dụng, bao gồm các list, các grid, các text box, các button và thậm chí nhúng cả trình duyệt web
Content Providers cho phép các ứng dụng truy xuất dữ liệu từ ứng dụng khác
Resource Manager cung cấp truy cập tới tài nguyên không phải mã nguồn như là các tập tin lưu các xâu, tập tin đồ họa, hay tập tin bố cục giao diện
Notification Manager cho phép các ứng dụng hiển thị các thông báo trên thanh trạng thái
Activity Manager quản lý vòng đời của các ứng dụng (từ khi chúng sinh ra, được thực thi, chuyển sang trạng thái chờ, gọi thực thi lại và kết thúc)
Trang 189
Các thành phần này không nhất thiết phải có mặt đầy đủ trong ứng dụng Chúng ta có thể xem các thành phần nào được sử dụng trong ứng dụng bằng việc xem khai báo trong file AndroidManifest.xml
1.1.10 Hoạt động (Activity)
a Khái niệm
Một hoạt động là một giao diện người dùng trực quan mà người dùng có thể thực hiện trên đó mỗi khi được kích hoạt Một ứng dụng có thể có nhiều hoạt động và chúng có thể gọi đến nhau chuyển giữa các hoạt động với nhau Mỗi activity là một dẫn xuất của lớp android.app.Activity
Mỗi hoạt động có một cửa sổ để vẽ lên Thông thường cửa sổ này phủ đầy màn hình, ngoài ra nó cũng có thể có thêm các cửa sổ con khác như là hộp thoại…Nội dung của cửa sổ của hoạt động được cung cấp bởi một hệ thống cấp bậc các View (là đối tượng của lớp Views)
b Vòng đời của hoạt động
Các hoạt động trong hệ thống được quản lý bởi một cấu trúc dữ liệu ngăn xếp Khi có một hoạt động được khởi tạo, nó được đẩy vào trong ngăn xếp, chuyển sang trạng thái thực thi và hoạt trộng trước đó sẽ chuyển sang trạng thái chờ Hoạt động này chỉ trở lại trang thái kích hoạt khi mà hoạt động vừa khởi tạo kết thúc việc thực thi
Một hoạt động có ba trạng thái chủ yếu đó là:
Nếu hoạt động được hiển thị ngoài cùng của màn hình (hoạt động này nằm trên đỉnh ngăn xếp hoạt động), nó ở trong trạng thái thực thi
Khi bị chiếm mất quyền điều khiển nhưng vẫn được hiển thị trên màn hình thì một hoạt động sẽ chuyển sang trạng thái tạm dừng Các thông tin về trạng thái và các
dữ liệu mà hoạt động đang sử dụng vẫn được lưu giữ (bởi chương trình quản lý của
hệ thống) nhưng khi hệ thống rơi vào trạng thái thiếu bộ nhớ thì những thông tin trên có thể bị giải phóng
Khi một hoạt động đang ở trạng thái dừng hoặc tạm dừng, hệ thống có thể xóa bỏ hoạt động khỏi bộ nhớ thông qua việc yêu cầu hoạt động này kết thúc
Trang 19Biểu đồ sau mô tả trạng thái trong vòng đời của một hoạt động
Hình 1.5 Vòng đời của một hoạt động
Trang 2011
Vòng đời của một hoạt động có thể được thể hiện trong những quá trình sau:
Toàn bộ thời gian sống của một hoạt động bắt đầu từ lời gọi đầu tiên tới phương thức onCreate (Bundle) tới lời gọi phương thức onDestroy() Trong quá trình này, một hoạt động sẽ khởi tạo lại tất cả các tài nguyên cần sử dụng trong phương thức onCreate() và giải phóng chúng khi phương thức onDestroy() được thực thi
Thời gian sống có thể nhìn thấy của một hoạt động bắt đầu từ lời gọi tới phương thức onStart(), cho tới khi phương thức onStop() của nó được thực thi Toàn bộ các tài nguyên đang được sử dụng bởi hoạt động vẫn tiếp tục được lưu giữ, người dùng có thể thấy giao diện nhưng không tương tác được với hoạt động do trong qua trình này hoạt động không ở trạng thái chạy tiền cảnh
Thời gian sống tiền cảnh của một hoạt động là quá trình bắt dầu từ khi có lời gọi tới phương thức onResume() và kết thúc bằng lời gọi tới phương thức onPause() Trong thời gian này, hoạt động chạy ở tiền cảnh và có thể tương tác với người dùng
1.1.11 Dịch vụ
a Khái niệm
Một dịch vụ (service) là các đoạn mã được thực thi ngầm bởi hệ thống mà người sử dụng không thấy được Ví dụ như một chương trình chơi nhạc chạy ngầm mặc dù đang xem hình ảnh
b Vòng đời của một dịch vụ
Vòng đời của một dịch vụ được hiểu là quá trình hoạt động từ khi nó được tạo
ra cho tới khi bị loại khỏi hệ thống Có hai cách thức để một dịch vụ có thể được chạy trong hệ thống:
Khi hệ thống có lời gọi tới phương thức Context.startService() Trong trường hợp này, dịch vụ sẽ được thực hiện liên tục cho tới khi hệ thống gọi phương thức Context.stopService()
Khi các ứng dụng gọi phương thức Context.bindService() để tạo kết nối với dịch vụ (dịch vụ sẽ được khởi tạo nếu tại thời điểm đó nó đang không hoạt động) Ứng dụng sẽ nhận được một đối tượng IBinder do dịch
vụ trả lại để có thể gọi các phương thức Callback phù hợp để truy cập tới
Trang 21các trạng thái của dịch vụ Nếu do lời gọi Context.bindService() mà dịch
vụ được khởi tạo thì nó sẽ được thực thi cho tới khi nào kết nối trên (tức là đối tượng IBinder) vẫn còn tồn tại
1.1.12 Bộ nhận quảng bá (Broadcast receivers)
Bộ nhận quảng bá không có giao diện Tuy nhiên, chúng có thể khởi động một hoạt động để đáp lại thông tin mà nó nhận được, hay chúng có thể sử dụng NotificationManager để thông báo người dùng biết Các thông báo có thể được sự chú ý của người dùng theo các cách các nhau như là sáng màn hình, rung thiết bị, bật âm thanh nào đấy…
1.1.13 Content provider
Các ứng dụng có thể lưu trữ dữ liệu của mình trong các tập tin hoặc sử dụng
cơ sở dữ liệu SQLite sẵn có v.v… Content Provider có chức năng cung cấp một tập hợp các phương thức cho phép một ứng dụng có thể lưu trữ và lấy dữ liệu được quản lý bởi content provider đó
Content Provider là một đặc trưng riêng của Android, nhờ đó mà các ứng dụng
có thể chia sẻ dữ liệu với nhau một cách dễ dàng
1.1.14 Các thành phần kích hoạt (các Intent)
Content provider được kích hoạt khi chúng được gọi từ một ContentResolver
Ba thành phần khác (hoạt động, dịch vụ và bộ nhận quảng bá) được kích hoạt bởi thông điệp không đồng bộ từ các intent Một intent là một đối tượng có kiểu Intent chứa nội dung của thông điệp Với các hoạt động và dịch vụ, nó gọi tên hành động được yêu cầu và xác định URI của dữ liệu tác động tới ở giữa Ví dụ, nó có thể truyền tải một yêu cầu cho một hoạt động hiển thị một ảnh cho người dùng hay
Trang 2213
cho phép người dùng sửa văn bản Với bộ nhận quảng bá, đối tượng Intent gọi tên của hành động được thông báo Ví dụ, bộ nhận quảng bá có thể thông báo các phần nó quan tâm là nút chụp ảnh đã được bấm
Có vài phương thức cho việc kích hoạt mỗi thành phần:
Một hoạt động được khởi chạy thông qua một đối tượng Intent Context.startActivity() hay Activity.startActivityForResult() Hoạt động đáp lại có thể theo dõi intent được tạo ra đó bằng phương thức getIntent() và cập nhật thông qua phương thức setIntent(Intent) Android gọi phương thức onNewIntent() để bỏ qua các intent đến trước nó
Một hoạt động thường bắt đầu hoạt động khác Nếu nó muốn trả lại kết quả hoạt động nó đã khởi chạy, nó sẽ gọi phương thức startActivityForResult() thay cho phương thức startActivity()
Một dịch vụ được bắt đầu thông qua một đối tượng Intent là Context.startService() Android gọi phương thức onStart() của dịch vụ và thông qua đối tượng Intent của nó
Tương tự, một intent có thể thông qua Context.bindService() để thiết lập một kết nối liên tục giữa các thành phần và dịch vụ đích Dịch vụ nhận đối tượng Intent qua lời gọi onBind() (nếu dịch vụ chưa được chạy, bindService() có thể chọn bắt đầu nó)
Một ứng dụng có thể khởi tạo một quảng bá thông qua đối tượng Intent bằng phương thức như Context.setBroadcast(), Context.setOrderedBroadcast() và Context.sendStickyBroadcast() Android chuyển những intent tới tất cả các bộ nhận quảng bá nào quan tâm bằng việc gọi phương thức onReceive() của nó
1.1.15 Ngắt một thành phần
Một hoạt động có thể bị ngắt thông qua việc gọi phương thức finish() Một hoạt động có thể tắt một hoạt động khác (hoạt động đó được khởi động với lời gọi startActivityForResult()) bằng việc gọi finishActivity()
Để ngắt một dịch vụ chúng ta có thể sử dụng phương thức stopSelf(), hoặc bằng cách gọi Context.stopService()
Trang 231.1.16 Tập tin khai báo (manifest)
Trước khi có thể khởi chạy một ứng dụng thành phần, nó phải xem ứng dụng bao gồm những thành phần nào Thêm nữa, các ứng dụng khai báo các thành phần của nó trong một tập tin khai báo để đóng gói lại vào trong gói Android (tập tin apk chứa các mã nguồn, tập tin và tài nguyên)
Tập tin này có cấu trúc của tập tin XML và luôn có tên là AndroidManifest.xml trong mọi ứng dụng Nó làm một số thứ như thêm và khai báo các thành phần của ứng dụng, tên các thư viện ứng dụng cần liên kết tới (ngoài thư viện chuẩn của Android) và xác định các quyền cho ứng dụng
Tuy nhiên, nhiệm vụ chính của tập tin khai báo là khai báo các thành phần của ứng dụng Một hoạt động có thể được khai báo như sau:
Thuộc tính “name” của phần tử <activity> là tên các lớp con lớp Activity đã được cài đặt, thuộc tính “icon” và “label” trỏ đến tập tin tài nguyên chứa biểu tượng và nhãn được hiển thị cho người dùng
Các thành phần khác được khai báo theo cách tương tự: <service> dịch vụ,
<receiver> bộ nhận quảng bá và <provider> content provider Các hoạt động, dịch
vụ và content provider có thể cùng được khai báo trong tập tin khai báo hoặc có thể được tạo tự động trong mã (như đối tượng BroadcastReceiver) và được đăng
ký với hệ thống bằng cách gọi Context.registerReceiver()
1.1.17 Bộ lọc Intent
Một đối tượng Intent có thể có tên rõ ràng trong thành phần đích Nếu có, Android sẽ tìm thành phần đó (dựa trên khai báo trong tập tin khai báo) và kích hoạt nó Nhưng nếu đích có tên không rõ ràng, Android phải xác định thành phần nào thích hợp nhất để đáp lại intent Nó thực hiện so sánh đối tượng Intent với bộ lọc intent trong các đích có khả năng Một thành phần của bộ lọc intent cho Android biết loại intent thành phần nào cần xử lý Giống các thông tin cơ bản, chúng được khai trong tập tin khai báo Đây là một ví dụ để thêm hai bộ lọc intent cho một hoạt động
Bộ lọc đầu tiên – là sự kết hợp của hành động “android.intent.action.Main” và danh mục “android.intent.category.LAUNCHER” – là một ví dụ phổ biến Nó
Trang 2415
đánh dấu lại một Intent và mô tả lại cho bộ khởi chạy ứng dụng, đặt vào trong danh mục các ứng dụng trên điện thoại Nói theo cách khác, hoạt động làm lối vào cho ứng dụng sẽ được khởi chạy, người dùng sẽ thấy khi chọn khởi chạy ứng dụng
Bộ lọc thứ hai được khai báo để hoạt động có thể thực thi trên một kiểu dữ liệu đặc biệt
Một thành phần có thể có bao nhiêu số bộ lọc intent tùy thích, mỗi một cái lại được khai báo khác nhau cho các khả năng Nếu nó không có một bộ lọc nào, nó
có thể được được kích hoạt bởi các intent khác gọi đến
Để tạo và đăng ký một bộ nhận quảng bá trong mã nguồn, bộ lọc intent tạo thẳng một đối tượng giống đối tượng IntentFilter Tất cả các bộ lọc khác đều được cài đặt trong tập tin khai báo
1.1.18 Công cụ hỗ trợ lập trình Android
Bộ công cụ phát triển phần mềm Android SDK gồm nhiều công cụ trợ giúp cho việc phát triển ứng dụng di động trên nền tảng Android Thành phần quan trọng nhất của bộ công cụ này là trình giả lập Android và bộ plug-in phát triển ứng dụng Android trên Eclipse ADT, bên cạnh đó bộ SDK cũng bao gồm các công cụ khác cho việc gỡ rối, đóng gói và cài đặt ứng dụng trên trình giả lập và trên thiết bị
Trình giả lập Android: Thực chất đây là một chương trình mô phỏng một thiết
bị di động ảo trên máy tính Chúng ta có thể sử dụng bộ giả lập này để thiết kế gỡ rối và kiểm tra ứng dụng của mình như trên thiết bị trước khi đưa chương trình vào thiết bị thật
Android Development Tools Plugin (cho Eclipse) viết tắt là ADT, Plugin này
hỗ trợ cho việc tạo và gỡ rối các ứng dụng và sử dụng môi trường phát triển tích hợp Eclipse trở nên dễ dàng hơn
Trình gỡ rối Dalvik Debug Monitor Service (DDMS): giúp quản lý các tiến trình trong bộ giả lập hoặc thiết bị và trợ giúp việc gỡ rối ứng dụng Có thể sử dụng công cụ này để hủy các tiến trình, chọn một tiến trình cụ thể để gỡ rối, sinh
Trang 25các dữ liệu truy vết, xem bộ nhớ heap và thông tin về các luồng, chụp ảnh màn hình của trình giả lập
Android Debug Bridge (adb): Công cụ này cho phép cài đặt các tập tin apk trên bộ giả lập hoặc thiết bị, đồng thời hỗ trợ truy cập hai đối tượng này từ cửa sổ dòng lệnh
Android Asset Packaging Tool (aapt): Công cụ để tạo tập tin apk chứa các mã nhị phân và tài nguyên của một ứng dụng Android
sqlite3: Đây là công cụ để truy cập các tập tin dữ liệu SQLite được tạo ra và sử dụng bởi một ứng dụng Android
dx: Đây là công cụ biên dịch các tập tin class thành mã bytecode chạy trên máy ảo Dalvik (lưu trữ dưới dạng tập tin dex)
mksdcard: Giúp tạo một tập tin ảnh lưu trữ dữ liệu mà ta có thể sử dụng trên
bộ giả lập, để mô phỏng sự có mặt của một thẻ nhớ ngoài (như thẻ SD)
Android Virtual Devices (AVD): Cho phép chúng ta có thể tạo cấu hình thiết
bị ảo, mô phỏng các đặc điểm của bộ giả lập Android Với mỗi cấu hình, ta có thể xác định nền tảng cho nó chạy, tùy chỉnh phần cứng hay giao diện sử dụng Mỗi tùy chỉnh của AVD sẽ như một thiết bị độc lập với dữ liệu lưu trữ của nó, thẻ nhớ
SD, v.v…
1.2 Webservice
Dịch vụ Web (Web Service) được coi là một công nghệ mang đến cuộc cách mạng trong cách thức hoạt động của các dịch vụ B2B (Business to Business) và B2C (Business to Customer) Giá trị cơ bản của dịch vụ Web dựa trên việc cung cấp các phương thức theo chuẩn trong việc truy nhập đối với hệ thống đóng gói và hệ thống kế thừa Các phần mềm được viết bởi những ngôn ngữ lập trình khác nhau và chạy trên những nền tảng khác nhau có thể sử dụng dịch vụ Web để chuyển đổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên trong một máy tính Tuy nhiên, công nghệ xây dựng dịch vụ Web không nhất thiết phải là các công nghệ mới, nó có thể kết hợp với các công nghệ đã có như XML, SOAP, WSDL, UDDI… Với sự phát triển và lớn mạnh của Internet, dịch vụ Web thật sự là một công nghệ đáng được quan
Trang 2617
tâm để giảm chi phí và độ phức tạp trong tích hợp và phát triển hệ thống Chúng ta sẽ xem xét các dịch vụ Web từ mức khái niệm đến cách thức xây dựng
1.2.1 Giới thiệu công nghệ
Theo định nghĩa của W3C (World Wide Web Consortium), dịch vụ Web là một
hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sự gắn kết của nó được mô tả bằng XML Dịch vụ Web là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu Một dịch vụ Web được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ
mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ dịch vụ Web khác Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng và doanh nghiệp và bản thân
nó được thực thi trên server
Trước hết, có thể nói rằng ứng dụng cơ bản của Dịch vụ Web là tích hợp các hệ thống và là một trong những hoạt động chính khi phát triển hệ thống Trong hệ thống này, các ứng dụng cần được tích hợp với cơ sở dữ liệu (CSDL) và các ứng dụng khác, người sử dụng sẽ giao tiếp với CSDL để tiến hành phân tích và lấy dữ liệu Trong thời gian gần đây, việc phát triển mạnh mẽ của thương mại điện tử và B2B cũng đòi hỏi các hệ thống phải có khả năng tích hợp với CSDL của các đối tác kinh doanh (nghĩa là tương tác với hệ thống bên ngoài – bên cạnh tương tác với các thành phần bên trong của hệ thống trong doanh nghiệp)
Dưới đây, chúng ta sẽ xem qua những khái niệm và cách thức cơ bản nhất để xây dựng một dịch vụ Web trong tích hợp và phát triển hệ thống
1.2.2 Đặc điểm của Dịch vụ Web
a Đặc điểm
Dịch vụ Web cho phép client và server tương tác được với nhau ngay cả trong những môi trường khác nhau Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này
Trang 27Phần lớn kĩ thuật của Dịch vụ Web được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận, ví dụ như XML
Một Dịch vụ Web bao gồm có nhiều mô-đun và có thể công bố lên mạng Internet
Là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cả doanh nghiệp, khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua mạng Internet
Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server Nó
có thể được triển khai bởi một phần mềm ứng dụng phía server
Ngày nay dịch vụ Web đang rất phát triển, những lĩnh vực trong cuộc sống có thể áp dụng và tích hợp dịch vụ Web là khá rộng lớn như dịch vụ chọn lọc và phân loại tin tức (hệ thống thư viện có kết nối đến web portal để tìm kiếm các thông tin cần thiết); ứng dụng cho các dịch vụ du lịch (cung cấp giá vé, thông tin về địa điểm…), các đại lý bán hàng qua mạng, thông tin thương mại như giá cả, tỷ giá hối đoái, đấu giá qua mạng…hay dịch vụ giao dịch trực tuyến (cho cả B2B và B2C) như đặt vé máy bay, thông tin thuê xe…
Các ứng dụng có tích hợp dịch vụ Web đã không còn là xa lạ, đặc biệt trong điều kiện thương mại điện tử đang bùng nổ và phát triển không ngừng cùng với sự lớn mạnh của Internet Bất kì một lĩnh vực nào trong cuộc sống cũng có thể tích hợp với dịch vụ Web, đây là cách thức kinh doanh và làm việc có hiệu quả bởi thời đại ngày nay là thời đại của truyền thông và trao đổi thông tin qua mạng
b Ưu và nhược điểm
Nâng cao khả năng tái sử dụng
Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình/chức năng nghiệp vụ đóng gói trong giao diện dịch vụ Web
Trang 28Nhược điểm:
Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Dịch vụ Web, giao diện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức cho việc vận hành
Có quá nhiều chuẩn cho dịch vụ Web khiến người dùng khó nắm bắt
Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật
Kiến trúc của Dịch vụ Web
Dịch vụ Web gồm có 3 chuẩn chính: SOAP (Simple Object Access Protocol), WSDL (Web Service Description Language) và UDDI (Universal Description, Discovery, and Integration) Hình 1 mô tả chồng giao thức của dịch vụ Web, trong đó UDDI được sử dụng để đăng ký và khám phá dịch vụ Web đã được miêu
tả cụ thể trong WSDL Giao tác UDDI sử dụng SOAP để nói chuyện với UDDI server, sau đó các ứng dụng SOAP yêu cầu một dịch vụ Web Các thông điệp SOAP được gửi đi chính xác bởi HTTP và TCP/IP
1.2.3 Chồng giao thức của dịch vụ Web
Chồng giao thức dịch vụ Web là tập hợp các giao thức mạng máy tính được sử dụng để định nghĩa, xác định vị trí, thi hành và tạo nên dịch vụ Web tương tác với những ứng dụng hay dịch vụ khác Chồng giao thức này có 4 thành phần chính:
Dịch vụ vận chuyển (Service Transport): có nhiệm vụ truyền thông điệp giữa các ứng dụng mạng, bao gồm những giao thức như HTTP, SMTP, FTP, JSM và gần đây nhất là giao thức thay đổi khổi mở rộng (Blocks Extensible Exchange Protocol- BEEP)
Thông điệp XML: có nhiệm vụ giải mã các thông điệp theo định dạng XML
để có thể hiểu được ở mức ứng dụng tương tác với người dùng Hiện tại, những giao thức thực hiện nhiệm vụ này là XML-RPC, SOAP và REST
Trang 29Mô tả dịch vụ: được sử dụng để miêu tả các giao diện chung cho một dịch vụ Web cụ thể WSDL thường được sử dụng cho mục đích này, nó là một ngôn ngữ
mô tả giao tiếp và thực thi dựa trên XML Dịch vụ Web sẽ sử dụng ngôn ngữ này
để truyền tham số và các loại dữ liệu cho các thao tác và chức năng mà dịch vụ Web cung cấp
Khám phá dịch vụ: tập trung dịch vụ vào trong một nơi được đăng ký, từ đó giúp một dịch vụ Web có thể dễ dàng khám phá ra những dịch vụ nào đã có trên mạng, tốt hơn trong việc tìm kiếm những dịch vụ khác để tương tác Một dịch vụ Web cũng phải tiến hành đăng ký để các dịch vụ khác có thể truy cập và giao tiếp Hiện tại, UDDI API thường được sử dụng để thực hiện công việc này
Trong đó, tầng giao thức tương tác dịch vụ (Service Communication Protocol) với công nghệ chuẩn là SOAP SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, cho phép người dùng triệu gọi một dịch vụ từ xa thông qua một thông điệp XML Ngoài ra, để các dịch vụ có tính an toàn, toàn vẹn
và bảo mật thông tin, trong kiến trúc dịch vụ Web, chúng ta có thêm các tầng Policy, Security, Transaction, Management
1.2.4 Các thành phần của Dịch vụ Web
a XML – eXtensible Markup Language
Là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu B2B Về hình thức, XML hoàn toàn có cấu trúc thẻ giống như ngôn ngữ HTML nhưng HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại định nghĩa những thành phần đó chứa cái gì Với XML, các thẻ có thể được lập trình viên tự tạo ra trên mỗi trang web và được chọn là định dạng thông điệp chuẩn bởi tính phổ biến và hiệu quả mã nguồn mở
Do dịch vụ Web là sự kết hợp của nhiều thành phần khác nhau nên nó sử dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp XML là công cụ chính để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây dựng một dịch vụ Web, tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML Khi đó, các thông tin mã hóa sẽ hoàn toàn phù hợp với các thông tin theo chuẩn của SOAP hoặc XML-RPC và có thể tương tác với nhau trong một thể thống nhất
Trang 3021
b WSDL – Web Service Description Language
WSDL định nghĩa cách mô tả dịch vụ Web theo cú pháp tổng quát của XML, bao gồm các thông tin:
WSDL thường được sử dụng kết hợp với XML schema và SOAP để cung cấp dịch vụ Web qua Internet Một client khi kết nối tới dịch vụ Web có thể đọc WSDL để xác định những chức năng sẵn có trên server Sau đó, client có thể sử dụng SOAP để lấy ra chức năng chính xác có trong WSDL
c Universal Description, Discovery, and Integration (UDDI)
Để có thể sử dụng các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách sử dụng và biết được đối tượng nào cung cấp dịch vụ UDDI định nghĩa một số thành phần cho biết các thông tin này, cho phép các client truy tìm và nhận những thông tin được yêu cầu khi sử dụng dịch vụ Web
Cấu trúc UDDI :
Trang trắng – White pages: chứa thông tin liên hệ và các định dạng chính yếu của dịch vụ Web, chẳng hạn tên giao dịch, địa chỉ, thông tin nhận dạng… Những thông tin này cho phép các đối tượng khác xác định được dịch vụ
Trang 31 Trang vàng – Yellow pages: chứa thông tin mô tả dịch vụ Web theo những loại khác nhau Những thông tin này cho phép các đối tượng thấy được dịch vụ Web theo từng loại với nó
Trang xanh – Green pages: chứa thông tin kỹ thuật mô tả các hành vi và các chức năng của dịch vụ Web
Loại dịch vụ – tModel: chứa các thông tin về loại dịch vụ được sử dụng Những thông tin về dịch vụ Web được sử dụng và công bố lên mạng sử dụng giao thức này Nó sẽ kích hoạt các ứng dụng để tìm kiếm thông tin của dịch vụ Web khác nhằm xác định xem dịch vụ nào sẽ cần đến nó
d SOAP – Simple Object Access Protocol
Chúng ta đã hiểu cơ bản dịch vụ Web như thế nào nhưng vẫn còn một vấn đề khá quan trọng Đó là làm thế nào để truy xuất dịch vụ khi đã tìm thấy? Câu trả lời là các dịch vụ Web có thể truy xuất bằng một giao thức là Simple Object Access Protocol – SOAP Nói cách khác chúng ta có thể truy xuất đến UDDI registry bằng các lệnh gọi hoàn toàn theo định dạng của SOAP
SOAP là một giao thức giao tiếp có cấu trúc như XML Nó được xem là cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn ngữ
và các hệ điều hành khác nhau SOAP là giao thức thay đổi các thông điệp dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP
Một client sẽ gửi thông điệp yêu cầu tới server và ngay lập tức server sẽ gửi những thông điệp trả lời tới client Cả SMTP và HTTP đều là những giao thức
ở lớp ứng dụng của SOAP nhưng HTTP được sử dụng và chấp nhận rộng rãi hơn bởi ngày nay nó có thể làm việc rất tốt với cơ sở hạ tầng Internet
Cấu trúc một thông điệp theo dạng SOAP
Thông điệp theo định dạng SOAP là một văn bản XML bình thường bao gồm các phần tử sau:
Phần tử gốc – envelop: phần tử bao trùm nội dung thông điệp, khai báo văn bản XML như là một thông điệp SOAP
Phần tử đầu trang – header: chứa các thông tin tiêu đề cho trang, phần tử này không bắt buộc khai báo trong văn bản Header còn có thể mang những dữ
Trang 32Kiểu truyền thông: Có 2 kiểu truyền thông
Remote procedure call (RPC): cho phép gọi hàm hoặc thủ tục qua mạng Kiểu này được khai thác bởi nhiều dịch vụ Web
Document: được biết đến như kiểu hướng thông điệp, nó cung cấp giao tiếp
ở mức trừu tượng thấp, khó hiểu và yêu cầu lập trình viên mất công sức hơn Hai kiểu truyền thông này cung cấp các định dạng thông điệp, tham số, lời gọi đến các API khác nhau nên việc sử dụng chúng tùy thuộc vào thời gian và sự phù hợp với dịch vụ Web cần xây dựng
Cấu trúc dữ liệu: Cung cấp những định dạng và khái niệm cơ bản giống như trong các ngôn ngữ lập trình khác như kiểu dữ liệu (int, string, date…) hay những kiều phức tạp hơn như struct, array, vector… Định nghĩa cấu trúc dữ liệu SOAP được đặt trong namespace SOAP-ENC
Mã hóa: Giả sử service rquester và service provider được phát triển trong Java, khi đó mã hóa SOAP là làm thế nào chuyển đổi từ cấu trúc dữ liệu Java sang SOAP XML và ngược lại, bởi vì định dạng cho Web Service chính là XML Bất kỳ một môi trường thực thi SOAP nào cũng phải có một bảng chứa thông tin ánh xạ nhằm chuyển đổi từ ngôn ngữ Java sang XML và từ XML sang Java – bảng đó được gọi là SOAPMappingRegistry Nếu một kiểu dữ liệu được sử dụng dưới một dạng mã hóa thì sẽ có một ánh xạ tồn tại trong bộ đăng ký của môi trường thực thi SOAP đó
Trang 331.2.5 An toàn cho dịch vụ Web
Dịch vụ Web liên kết và tương tác với các ứng dụng qua Internet, chính vì vậy bảo mật là một vấn đề được quan tâm khi các công ty tiến tới kết hợp ứng dụng với một dịch vụ Web Việc đảm bảo an toàn cho dịch vụ Web là một vấn đề quan trọng, đặc biệt đối với những dịch vụ liên quan đến trao đổi tiền tệ, thông tin từ thị trường chứng khoán hay dịch vụ bán hàng qua mạng (liên quan đến trả tiền bằng tài khoản và có yêu cầu thông tin cá nhân của người dùng)
Trước khi có WS-Security (bảo mật cho dịch vụ Web) thì ý nghĩa thông thường của an toàn dịch vụ Web là bảo mật kênh truyền dữ liệu Hiện nay, nó được thực hiện cho những SOAP/HTTP dựa trên cơ chế truyền thông điệp bằng cách sử dụng giao thức HTTPS Không chỉ là an toàn ở mức truyền thông điệp, HTTPS còn cung cấp sự an toàn tới toàn bộ gói dữ liệu HTTP
Mặc dù HTTPS không bao gồm tất cả các khía cạnh trong chuẩn an toàn chung cho dịch vụ Web nhưng nó đã cung cấp một lớp bảo mật khá đầy đủ với định danh, chứng thực, tính toàn vẹn thông điệp hay độ tin cậy
1.2.6 Đảm bảo an toàn cho dịch vụ Web:
Khái niệm về WS-Security: đây là một chuẩn an toàn bao trùm cho SOAP, nó được dùng khi muốn xây dựng những dịch vụ Web toàn vẹn và tin cậy Toàn vẹn
có nghĩa là khi có một giao dịch hay khi truyền thông tin, hệ thống và thông tin sẽ không bị chặn, giao dịch sẽ không bị mất cũng như không thể có người lấy cắp được dữ liệu trên đường truyền WS-security được thiết kế mang tính mở nhằm hướng tới những mô hình an toàn khác bao gồm PKI, Kerberos và SSL Nó cũng đưa ra nhiều hỗ trợ cho các cơ chế an toàn khác, nhiều khuôn dạng chữ ký và công nghệ mã hóa, đảm bảo sự an toàn, toàn vẹn thông điệp và tính tin cậy của thông điệp
Tính toàn vẹn tạo ra một chữ ký số hóa XML dựa trên nội dung của thông điệp Nếu dữ liệu bị thay đổi bất hợp pháp, nó sẽ không còn thích hợp với chữ ký
số hóa XML đó Chữ ký này được tạo ra dựa trên khóa mà người gửi thông điệp tạo ra, do đó người nhận chỉ nhận thông điệp khi có chữ ký sử dụng và nội dung phù hợp Ngược lại sẽ có một thông báo lỗi Việc chứng thực được thực hiện giữa
Trang 34 Giai đoạn triển khai: công bố định nghĩa dịch vụ, xây dựng WSDL và triển khai
mã thực thi của dịch vụ Web Triển khai dịch vụ Web tới một ứng dụng phía server, sau đó sẽ công bố dịch vụ Web trên mạng Internet để các client có thể nhìn thấy Sử dụng UDDI registry để công bố lên mạng
Giai đoạn tiến hành: tìm kiếm và gọi thực thi dịch vụ Web bởi những người dùng muốn sử dụng dịch vụ
Quản lý: Quản lý và quản trị dịch vụ, duy trì sự ổn định của dịch vụ, cập nhật thông tin mới, sửa lỗi khi nó xảy ra…
Để xây dựng một dịch vụ Web, chúng ta cần hiểu được những việc phải làm và nên bắt đầu từ đâu Có 3 cách tiếp cận chủ yếu để xây dựng nên một dịch vụ Web,
có thể từ một ứng dụng đã có (bottom-up); từ một định nghĩa dịch vụ, WSDL để phát sinh một ứng dụng mới (top-down) hoặc có thể từ một nhóm các dịch vụ Web hiện có, kết hợp lại với nhau để tạo nên các chức năng mới hoặc mở rộng thêm chức năng
Qui trình xây dựng một dịch vụ Web bao gồm các bước sau:
Định nghĩa và xây dựng các chức năng, các dịch vụ mà dịch vụ sẽ cung cấp (sử dụng ngôn ngữ Java chẳng hạn)
Tạo WSDL cho dịch vụ
Xây dựng SOAP server
Trang 35 Đăng ký WSDL với UDDI registry để cho phép các client có thể tìm thấy và truy xuất
Client nhận file WSDL và từ đó xây dựng SOAP client để có thể kết nối với SOAP server
Xây dựng ứng dụng phía client (chẳng hạn sử dụng Java) và sau đó gọi thực hiện dịch vụ thông qua việc kết nối tới SOAP server
Lựa chọn một ngôn ngữ, xây dựng các tiến trình nghiệp vụ và chúng ta bắt đầu tạo nên một dịch vụ Web như ý muốn Sau đó là cung cấp dịch vụ Web này trên Internet
Tích hợp dịch vụ Web theo chuẩn
Để có thể thành công với dịch vụ Web chúng ta phải quan tâm đến khá nhiều vấn
đề, bao gồm việc triển khai, giám sát và tích hợp hệ thống Doanh nghiệp không những phải phát triển một ứng dụng dịch vụ Web mới mà còn phải tích hợp các ứng dụng nghiệp vụ phụ trợ của họ trong kiến trúc Dịch vụ Web Cùng với việc triển khai và tích hợp, những nhà kinh doanh và những người sử dụng kỹ thuật cũng cần có khả năng giám sát, triển khai toàn diện để đảm bảo hoạt động kinh doanh hiệu quả và tin cậy
Giám sát (monitoring): Cần hỗ trợ ở cả mức công cụ và cơ sở hạ tầng để giám sát các dịch vụ Web chạy như thế nào qua toàn bộ mạng, từ một chi nhánh con của một công ty trên mạng tới các chi nhánh khác trong công ty hay giao tiếp với doanh nghiệp khác Kết hợp thông báo theo sự kiện với các lỗi trong luồng nghiệp
vụ cho những người dùng không có kinh nghiệm giám sát dịch vụ Web và các dịch vụ kế thừa khác
Xác định đường đi dữ liệu (Data routing): Việc thiết lập đường đi của dữ liệu giữa những thành phần của dịch vụ Web hướng tới tối đa hóa khả năng sử dụng lại Nếu coi một thành phần (component) là một đối tượng thì mỗi thể hiện (instance) của nó sẽ không quan tâm đến các thể hiện khác của cùng thành phần
đó Những thể hiện của cùng một thành phần có thể dễ dàng được sử dụng lại trong các ứng dụng phân tán khác bởi vì chúng hoàn toàn độc lập và không phụ thuộc lẫn nhau
Triển khai (Deployment): Triển khai các dịch vụ Web có khả năng nâng cấp, điều khiển và cấu hình các thành phần từ xa thông qua mạng phân tán
Trang 3627
Quản lý (Management): Có thể xây dựng theo kiến trúc P2P (Peer-to-Peer) Các hoạt động chính như thực thi các thành phần, định tuyến dữ liệu, xử lý luồng công việc và chuyển đổi dữ liệu được thực hiện tại các điểm cuối của mạng Server sẽ tập trung giải quyết các hoạt động khác như quản lý, điều khiển sự kiện, chứng thực bảo mật và quản trị
Cấu hình và quản lý phiên bản (Configuration and version management): Sử dụng các công cụ linh hoạt để quản lý các phiên bản khác nhau của dịch vụ Web, cho phép các phiên bản được nâng cấp và điều khiển từ một công cụ quản lý tập trung Kết hợp giữa ứng dụng và mạng giúp các kỹ sư triển khai có thể điều khiển các thành phần chạy trên nền tảng hệ thống phần cứng cụ thể bên trong mạng
Bảo mật (Security): các chuẩn mở như HTTP, XML, SOAP, WSDL và chuẩn bảo mật JSM được sử dụng rộng rãi khiến chúng trở thành lý tưởng để xây dựng các ứng dụng web Đầu tiên, dịch vụ Web sử dụng những công nghệ này giống như firewall, SSL và các chứng nhận số Dịch vụ Web thế hệ sau này sẽ kết hợp với những công nghệ có khả năng bảo mật cao hơn, giống như mã hóa XML và chứng nhận số XML
Như vậy, với một dịch vụ Web, việc giao tiếp và truyền nhận dữ liệu trở nên
dễ dàng và hiệu quả hơn, đồng thời đem lại chi phí thấp hơn và tăng cường những khả năng giao tiếp thời gian thực, kết nối với mọi người trên khắp thế giới Bản chất của nền tảng công nghệ này là kiến trúc hướng dịch vụ và sự phát triển của dịch vụ Web có tương lai rất khả quan
1.3 XML
XML, hoặc Extensible Markup Language (ngôn ngữ đánh dấu mở rộng), là một ngôn ngữ đánh dấu mà bạn có thể sử dụng để tạo ra thẻ riêng của mình Nó được tạo nên bởi W3C nhằm khắc phục những hạn chế của HTML - ngôn ngữ đánh dấu siêu văn bản, là cơ sở của mọi trang Web Giống như HTML, XML cũng được dựa trên SGML – Standard Generalized Markup Language
Trang 37Một ví dụ đơn giản về xml: Dữ liệu được chứa trong child element và attribute
<Note to="Irshad"> //XML attribute
<from>Farhan</from> //XML child element
<heading>Test Application</heading>
<body>Don't forget me this weekend!</body>
</Note>
1.3.1 Mục tiêu ra đời và lợi ích khi sử dụng XML
a Mục tiêu ra đời của XML
Ngày nay, XML đang trở thành một chuẩn chung cho việc trao đổi dữ liệu cho những ứng dụng chạy trên môi trường Internet Vì XML cho phép người dùng có thể tự định nghĩa các thẻ (tag) - những thẻ này làm cho tài liệu XML đa dạng hơn những ngôn ngữ thông thường như HTML Như vậy mục tiêu đặt ra cho sự ra đời XML là : Đầu tiên nó sẽ tương thích với SGML, và dễ dàng viết những chương trình để xử lý cho những tài liệu XML Kế tiếp, những tài liệu XML rõ ràng, dễ đọc, dễ dàng tạo lập Và điều quan trọng là nó được hỗ trợ trong nhiều ứng dụng Nói tóm lại, XML dễ dàng chia sẻ thông tin qua những định dạng khác nhau thông qua môi trường web XML được thiết kế để cho mọi người đều có thể sử dụng được
b Lợi ích khi sử dụng XML
Sau đây là một số lợi ích khi sử dụng XML:
XML được dùng để trao đổi dữ liệu
XML có thể tách rời dữ liệu, sử dụng XML, dữ liệu được chứa trong các tập tin XML riêng biệt
XML có thể mô tả thông tin của những đối tượng phức tạp mà cơ sở dữ liệu quan hệ không thể giải quyết được
XML có thể dùng để chuyển đổi dữ liệu giữa các hệ thống không tương thích
XML dùng để chia sẻ dữ liệu với những tập tin văn bản đơn giản dễ hiểu