Mục tiêu của đề tài “Xây dựng hệ thống liên lạc điện tử giữa nhà trường vàgia đình trên các thiết bị sử dụng hệ điều hành Android” là nghiên cứu công nghệlập trình mới hiện nay, nghiên c
Trang 1LỜI CẢM ƠN
Sau một thời gian nghiên cứu và thực hiện đề tài “Xây dựng hệ thống liênlạc điện tử giữa nhà trường và gia đình trên các thiết bị sử dụng hệ điều hànhAndroid” đã cơ bản hoàn thành
Để đạt được kết quả này, em đã nỗ lực hết sức đồng thời cũng nhận được sựgiúp đỡ chỉ bảo tận tình của các thầy cô
Trước hết em xin gửi lời cảm ơn chân thành tới Bộ môn Mạng và TruyềnThông, Khoa Công Nghệ Thông Tin, Trường đại học Công Nghệ Thông Tin vàTruyền Thông và các thầy cô, đặc biệt là thầy giáo hướng dẫn Th.s: Đỗ VănToàn đã tận tình giúp đỡ, hướng dẫn em hoàn thành đồ án tốt nghiệp
Em cũng xin gửi lời cảm ơn tới các anh chị, các bạn trong cộng đồngAndroid Việt Nam đã đóng góp ý kiến, giúp đỡ em trong quá trình thực hiện đềtại
Đề tài đã hoàn thành với một kết quả nhất định, tuy nhiên vẫn không thểtránh khỏi sai sót Kính mong sự thông cảm và đóng góp ý kiến từ các thầy cô vàcác bạn
Em xin chân thành cảm ơn!
Thái Nguyên, tháng 6 năm 2012Sinh viên thực hiện
Triệu Anh Tú
Trang 2LỜI CAM ĐOAN
Tôi cam đoan toàn bộ nội dung đồ án là do tôi nghiên cứu Những kết quả,các số liệu và chương trình trong bài báo cáo mà tôi thực hiện đồ án “Xây dựng
hệ thống liên lạc điện tử giữa nhà trường và gia đình trên các thiết bị sử dụng hệđiều hành Android”, không sao chép bất kỳ nguồn nào khác Tôi hoàn toàn chịutrách nhiệm trước nhà trường về sự cam đoan này
Thái Nguyên, tháng 6 năm 2012 Người cam đoan
Triệu Anh Tú
Trang 3MỤC LỤC
LỜI CẢM ƠN 1
LỜI CAM ĐOAN 2
MỤC LỤC 3
LỜI NÓI ĐẦU 8
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 10
1.1 Tìm hiểu về hệ điều hành Android 10
1.1.1 Android là gì? 10
1.1.2 Tính năng mở của hệ điều hành Android 10
1.1.3 Các ứng dụng có thể tạo ra cho Android 10
1.1.4 Kiến trúc Android 11
1.1.5 Ứng dụng Android 15
1.1.6 Giao diện người dùng trong Android 20
1.2 Giới thiệu các tool hỗ trợ 25
1.2.1 Khái niệm về Web Service 25
1.2.2 Giới thiệu về mã JSON 26
CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 27
2.1 Lý do chọn đề tài 27
2.2 Đặc tả chương trình 27
2.2.1 Giới thiệu 27
2.2.2 Các chức năng chính 28
2.3 Tìm hiểu Web Service 29
2.3.1 Đặc điểm của Web Service 29
2.3.2 Ưu điểm và nhược điểm của Web Service 29
2.3.3 Kiến trúc Web Service 31
2.3.4 Hoạt động của Web Service 32
2.3.5 Các thành phần chính của Web Service 34
2.3.6 Sơ lược về mã JSON 40
2.4 Phân tích và thiết kế hệ thống 44
Trang 42.4.1 Mô tả bài toán 44
2.4.2 Giá trị sử dụng 44
2.34.3 Đặc tả sử dụng 44
2.4.4 Cấu trúc Use case 46
2.4.5 Biểu đồ trình tự 50
2.5 Phân tích và thiết kế cơ sở dữ liệu 52
CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG 56
3.1 Cài đặt ứng dụng 56
3.2 Giao diện chính 58
3.3 Các chức năng chính của ứng dụng 59
3.3.1 Đăng nhập 59
3.3.2 Lên lịch hoạt động 64
3.3.3 Nhận xét hoạt động 66
3.3.4 Gửi và nhận thông báo 67
KẾT LUẬN 70
TÀI LIỆU THAM KHẢO 71
Trang 5MỤC LỤC HÌNH ẢNH
Hình 1.1 Các thành phần chính của hệ điều hành Android 11
Hình 1.2 Vòng đời của một ứng dụng 15
Hình 1.3 Vòng đời của Activity 17
Hình 1.4 Một số phương thức của Activity 20
Hình 1.5 Biểu đồ phân cấp của View và ViewGroup 21
Hình 2.1.Các thành phần của Web Service 31
Hình 2.2.Kiến trúc của Web Service 32
Hình 2.3 Hoạt động của Web Service 32
Hình 2.4 Một Client truy xuất đến nhiều Web Service cùng lúc 34
Hình 2.5 Một Web Service có thể triệu tập đến các Web Service khác 34
Hình 2.6 Web service Endpoint 39
Hình 2.7 Biểu đồ Use-case 46
Hình 2.8 Hoạt động của hệ thống 49
Hình 2.9 Biểu đồ trạng thái chức năng đăng nhập 50
Hình 2.10 Biểu đồtuần tự đăng nhập hệ thống 50
Hình 2.11 Biểu đồ tuần tự hoạt động chức năng lên lịch 51
Hình 2.12 Tuần tự hoạt động chức năng nhận xét và thông báo 52
Hình 2.13 Mô hình cơ sơ dữ liệu 55
Hình 3.1 File DTAN.apk dùng cài đặt ứng dụng trên thiết bị thật 56
Hình 3.2 Yêu cầu xác nhận cài đặt 57
Hình 3.3 Quá trình cài đặt ứng dụng 58
Hình 3.4 Màn hính chính của ứng dụng 59
Hình 3.5 Thông báo đăng nhập thành công 60
Hình 3.6 Đăng nhập thất bại 61
Hình 3.7 Yêu cầu lựa chọn giáo viên hoặc phụ huynh 62
Hình 3.8 Màn hình sau khi đăng nhập của giáo viên 63
Hình 3.9 Màn hình sau khi đăng nhập của phụ huynh 64
Hình 3.10 Lên lịch hoạt động 65
Trang 6Hình 3.11 Giáo viên có thể xóa hoặc chỉnh sửa nội dung hoạt động 66
Hình 3.12 Nhận xét hoạt động 67
Hình 3.13 Gửi thông báo 68
Hình 3.14 Nhận được thông báo 69
Trang 7MỤC LỤC BẢNG
Bảng 2.1 Chuẩn hóa cơ sở dữ liệu 53
Bảng 2.2 Bảng teacher_account 54
Bảng 2.3 Bảng parent_account 54
Bảng 2.4 Bảng class 54
Bảng 2.5 Bảng schedule 55
Trang 8LỜI NÓI ĐẦU
Mạng điện thoại di động xuất hiện tại Việt Nam từ đầu những năm 1990 vàtheo thời gian số lượng các thuê bao cũng như các nhà cung cấp dịch vụ đi độngtại Việt Nam ngày càng tăng Do nhu cầu trao đổi thông tin ngày càng tăng vànhu cầu sử dụng sản phẩm công nghệ cao nhiều tính năng, cấu hình cao, chấtlượng tốt, kiểu dáng mẫu mà đẹp, phong phú nên nhà cung cấp phải luôn luôn cảithiện, nâng cao những sản phẩm của mình Do đó việc xây dựng các ứng dụngcho điện thoại di động đang là một ngành công nghiệp mới đầy tiềm năng và hứahẹn nhiều sự phát triển vượt bậc của ngành khoa học kĩ thuật
Cùng với sự phát triển của thị trường điện thoại di động là sự phát triểnmạnh mẽ của xu hướng lập trình phần mềm ứng dụng cho các thiết bị di động.Phần mềm, ứng dụng cho điện thoại di động hiện nay rất đa dạng và phong phútrên các hệ điều hành di động cũng phát triển mạnh mẽ và đang thay đổi từngngày Các hệ điều hành J2ME, Android, IOS, Hybrid, Web based MobileApplication đã có rất phát triển trên thị trường truyền thông di động, nhưng đáng
kể nhất chính là hệ điều hành Android ra đời với sự kế thừa những ưu việt củacác hệ điều hành ra đời trước và sự kết hợp của nhiều công nghệ tiên tiến nhấthiện nay, Android đã được phát triển bởi nhà phát triển công nghệ rất nổi tiếnghiện nay là Google Android đã nhanh chóng là đối thủ cạnh tranh mạnh mẽ vớicác hệ điều hành trước đó và đang là hệ điều hành di động của tương lai và đượcnhiều người ưa chuộng nhất
Mục tiêu của đề tài “Xây dựng hệ thống liên lạc điện tử giữa nhà trường vàgia đình trên các thiết bị sử dụng hệ điều hành Android” là nghiên cứu công nghệlập trình mới hiện nay, nghiên cứu về ngôn ngữ lập trình, môi trường làm việc,cách hoạt động và lập trình chương trình ứng dụng cho điện thoại di động
Để thực hiện điều đó em đã nghiên cứu về ngôn ngữ lập trình trên hệ điềuhành Android và em mong muốn sẽ xây dựng được một ứng dụng di động phục
vụ cho nhà trường và gia đình trao đổi thông tin thường xuyên của con em mìnhtrong quá trình học tập
Trang 9Những nội dung đề tài của em bao gồm 3 chương:
Chương 1: Cơ sở lý thuyết.
Chương 2: Phân tích và thiết kế hệ thống.
Chương 3: Xây dựng chương trình ứng dụng.
Do kiến thức, khả năng còn hạn chế và thời gian tìm hiểu ngắn nên trongbài báo cáo của em còn nhiều thiếu sót, em mong nhận được sự góp ý của cácthầy cô và các bạn để đề tài của em được đầy đủ và phong phú hơn Em xin chânthành cảm ơn!
Trang 10CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Tìm hiểu về hệ điều hành Android
1.1.1 Android là gì?
Android là một hệ thống điều hành, middleware và các ứng dụng di độngchủ chốt Các Android Software Development Kit (SDK) bây giờ đã có
Android là hệ điều hành trên điện thoại di động (và hiện nay là cả trên một
số đầu phát HD, HD player, TV) phát triển bơi Google và dựa trên nền tảngLinux Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java Sự
ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liênminh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm
và viễn thông nhằm mục đích tạo nên một chuẩn mở cho điện thoại di động trongtương lai
1.1.2 Tính năng mở của hệ điều hành Android
Android được xây dựng để cho phép các nhà phát triển để tạo ra các ứngdụng di động hấp dẫn tận dụng tất cả một chiếc điện thoại đã cung cấp Nó đượcxây dựng để được thực sự mở; ví dụ một ứng dụng có thể kêu gọi bất kỳ chứcnăng lõi của điện thoại như thực hiện cuộc gọi, gửi tin nhắn văn bản, hoặc bằngcách sử dụng máy ảnh, cho phép các nhà phát triển để tạo ra phong phú hơn vànhiều hơn nữa những kinh nghiệm cố kết cho mọi người Androi được xây dựngtrên Linux Kernel Hơn nữa, nó sử dụng một máy ảo tùy chỉnh được thiết kế đểtối ưu hóa bộ nhớ và tài nguyên phần cứng trong một môi trường di động.Android là mã nguồn mở, nó có thể được liberally mở rộng Nền tảng này sẽ tiếptục tiến triển như cộng đồng nhà phát triển công việc cùng nhau để xây dựng cácứng dụng di động sáng tạo
1.1.3 Các ứng dụng có thể tạo ra cho Android
Android không phân biệt giữa các ứng dụng lõi của điện thoại và các ứngdụng của bên thứ 3 Với các thiết bị xây dựng trên hệ điều hành Android, ngườidùng có thể hoàn toàn thích ứng với điện thoại đến lợi ích của họ Họ có thể traođổi trên màn hình của điện thoại, những phong cách của dialer, hoặc bất kỳ ứng
Trang 11dụng Họ thậm chí có thể hướng dẫn điện thoại của họ để sử dụng hình ảnh ưathích của họ xem các ứng dụng để xử lý xem tất cả các hình ảnh.
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như:
- Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọi điện(phone), quản lý danh bạ (Contacts), duyệt web (Browser), nhắn tin (SMS), lịchlàm việc (Calendar), đọc e-mail (Email-Client), bản đồ (Map), quay phim chụpảnh (camera)
- Các ứng dụng được cài thêm như các phần mềm chứng khoán (Stock), cáctrò chơi (Game), từ điển
Các chương trình có các đặc điểm là:
- Viết bằng Java, phần mở rộng là apk
Trang 12- Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine đượcdựng lên để phục vụ cho nó Nó có thể là một Active Program: Chương trình cógiao diện với người sử dụng hoặc là một background: chương trình chạy nền hay
là dịch vụ
- Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thờiđiểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứngdụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi Điều đó cótác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn
- Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyềnhạn khi sử dụng tài nguyên, cấu hình phần cứng và hệ thống
- Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành diđộng khác, Android cho phép một ứng dụng của bên thứ ba được phép chạy nền.Các ứng dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dụng quá5~10% công suất CPU, điều đó nhằm để tránh độc quyền trong việc sử dụngCPU
- Ứng dụng không có điểm vào cố định, không có phương thức main để bắtđầu
Application Framework
Tầng này xây dựng bộ công cụ, các phần tử ở mức cao để các lập trình viên
có thể nhanh chóng xây dựng ứng dụng Nó được viết bằng Java, có khả năng sửdụng chung để tiết kiệm tài nguyên
Giới thiệu một số thành phần của phần này:
Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng như
cung cấp công cụ điều khiển các Activity
Telephony Manager: Cung cấp công cụ để thực hiện việc liên lạc như gọi
điện thoại
XMPP Service: Cung cấp công cụ để liên lạc trong thời gian thực.
Location Manager: Cho phép xác định vị trí của điện thoại thoại dựa vào
hệ thống định vị toàn cầu GPS và Google Maps
Trang 13Window Manager: Quản lý việc xây dựng và hiển thị các giao diện người
dùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng
Notication Manager: Quản lý việc hiển thị các thông báo (như báo có tin
nhắn, có e-mail mới…)
Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng bao gồm
các file hình ảnh, âm thanh, layout, string (Những thành phần không được viếtbởi ngôn ngữ lập trình)
Libraries
Android bao gồm một bộ thư viện C/C++, được sử dụng bởi các thành phầnkhác nhau của hệ thống Android Những khả năng tiếp xúc với các nhà phát triểnthông qua các khuôn khổ ứng dụng Android Một số các thư viện lõi được liệt kêdưới đây:
System C library: một BSD-có nguồn gốc thực hiện các hệ thống thư viện
chuẩn C (LIBC), điều chỉnh cho nhúng dựa trên Linux các thiết bị
Media Libraries: dựa trên OpenCORE PacketVideo's, sự hỗ trợ các thư
viện phát lại và ghi âm của âm thanh và phổ biến nhiều định dạng video, cũngnhư các tập tin hình ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG,
và PNG
Surface Manager: Quản lý truy cập đến các hệ thống con hiển thị cũng
như các lớp đồ họa 2D, 3D từ tầng ứng dụng
LibWebCore: Thư viện được dùng để tạo nên thành phần webview trong
Android và có thể nhúng được vào nhiều ứng dụng
SGL: Thư viện hỗ trợ đồ hoạ 2D.
3D libraries: Thư viện đồ họa 3D.
SQLite: Một cơ sở dữ liệu nhỏ được dùng cho các thiết bị cầm tay có bộ
nhớ hạn chế SQLite không có quan hệ như các cơ sở dữ liệu khác
Android Runtime
Android bao gồm một tập hợp các thư viện cơ bản mà cung cấp hầu hết cácchức năng có sẵn trong các thư viện lõi của ngôn ngữ lập trình Java Tất cả cácứng dụng Android đều chạy trong tiến trình riêng Máy ảo Dalvik đã được viết để
Trang 14cho một thiết bị có thể chạy nhiều máy ảo hiệu quả Các VM Dalvik thực thi cáctập tin thực thi Dalvik (dex) Định dạng được tối ưu hóa cho bộ nhớ tối thiểu.
VM là dựa trên register-based, và chạy các lớp đã được biên dịch bởi một trìnhbiên dịch Java để chuyển đổi thành các định dạng dex Các VM Dalvik dựa vàonhân Linux cho các chức năng cơ bản như luồng và quản lý bộ nhớ thấp
Linux Kernel
Hệ điều hành Android được phát trển dựa trên hạt nhân linux, cụ thể là hạtnhân linux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này Tất cả mọihoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mức cấpthấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp vớiphần cứng (driver model), thực hiện bảo mật (security), quản lý tiến trình(process)
Tầng này có các thành phần chủ yếu:
Display Driver: Điều khiển việc hiển thị lên màn hình cũng như thu nhận
những điều khiển của người dùng lên màn hình (di chuyển, cảm ứng )
Camera Driver: Điều kiển hoạt động của camera, nhận luồng dữ liệu từ
camera trả về
Bluetooth Driver: Điều khiển thiết bị phát và thu sóng Bluetooth.
USB driver: Quản lý hoạt động của các cổng giao tiếp USB.
Keypad driver: Điều khiển bàn phím.
Wifi Driver: Chịu trách nhiệm về việc thu phát sóng wifi.
Audio Driver: Điều khiển các bộ thu phát âm thanh, giải mã các tính hiệu
dạng audio thành tín hiệu số và ngược lại
Binder IPC Driver: Chịu trách nhiệm về việc kết nối và liên lạc với mạng
vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyềnthông được thực hiện
M-System Driver: Quản lý việc đọc ghi lên các thiết bị nhớ như thẻ SD,
flash
Power Madagement: Giám sát việc tiêu thụ điện năng.
Trang 151.1.5 Ứng dụng Android
a) Vòng đời của một ứng dụng Android
Android có cơ chế quản lý các process theo chế độ ưu tiên Các process có
độ ưu tiên (priority) thấp sẽ bị Android giải phóng mà không hề cảnh báo nhằmđảm bảo tài nguyên
Foreground process: Là process của ứng dụng hiện thời đang được người
dùng tương tác
Visible process: Là process của ứng dụng mà activity đang hiển thị đối với
người dùng (onPaused() của activity được gọi)
Service process: Là Service đang running.
Background process: Là process của ứng dụng mà các activity của nó
không hiển thị với người dùng (onStoped() của activity được gọi)
Empty process: process không có bất cứ một thành phần nào active.
Theo chế độ ưu tiên thì khi cần tài nguyên, Android sẽ tự động kill process,trước tiên là các empty process
Trang 16b) Các khái niệm trong ứng dụng Android.
Một ứng dụng Android được xây dựng nên từ nhiều thành phần(component), để có thể tiếp cận với Android bạn cần hiểu được các componentnày Các component để xây dựng nên một ứng dụng Android được chia thành 4component chính: Activity, Service, Content Provider, Broadcast Receiver cùngvới 2 component khác là: Intent và Notification
Activity:
Được dùng để hiển thị một màn hình trong ứng dụng cho phép người dùngtương tác với ứng dụng Khi khởi động một ứng dụng Android nào đó thì bao giờcũng có một mainActivity được gọi, hiển thị màn hình giao diện của ứng dụngcho phép người dùng tương tác để làm một hành động nào đó, chẳng hạn nhưquay số điện thoại, chụp anh, xem một bản đồ
Mỗi activity được cho một cửa sổ, trong đó cho vẽ giao diện người dùngcủa nó Một ứng dụng bao gồm nhiều activity, thông thường trong một ứng dụng
sẽ có những activity được quy định như các activity “chính”, tức là hiển thị chongười dùng khi ứng dụng khởi chạy Mỗi activity sau đó có thể gọi activity khác
để thực hiện hành động khác nhau Mỗi một activity mới bắt đầu, các activitytrước đó được dừng lại, Android quản lý activity theo cơ chế stack
- Các trạng thái (state) của Activity:
Active (running): Activity đang hiển thị trên màn hình (foregound).
Paused: Activity vẫn hiển thị nhưng không thể tương tác.
Stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái
stop
Killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo
nguyên tắc ưu tiên Các Activity ở trạng thái Stop hoặc Pause cũng có thể bị giảiphóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàntoàn và phục hồi lại trạng thái trước đó
Trang 17- Vòng đời của Activity:
Hình 1.3 Vòng đời của Activity
Entire lifetime: từ phương thức onCreate() cho tới onDestroy().
Visible lifetime: từ phương thức onStart() cho tới onStop().
Foreground lifetime: từ phương thức onResume() cho tới onPause().
Khi xây dựng Activity cho ứng dụng cần phải viết lại (override) phươngthức onCreate() để thực hiện quá trình khởi tạo Còn các phương thức khác cócần viết lại hay không tùy thuộc vào yêu cầu lập trình của ứng dụng
Service:
Service là một ứng dụng component có thể thực hiện các hoạt động running trong background và không cung cấp một giao diện người dùng Mộtứng dụng component có thể bắt đầu một service và nó sẽ tiếp tục chạy trongbackground thậm chí nếu người dùng chuyển cho ứng dụng khác Ngoài ra, một
Trang 18long-dịch vụ có thể xử lý các giao long-dịch mạng, nghe nhạc, thực hiện các tập tin I/O,hoặc tương tác với một provider content, tất cả từ background.
Một service cơ bản có thể có hai hình thức:
- Started: service là “started” khi một component ứng dụng (như một
activity) bắt đầu bằng cách gọi startService() Khi bắt đầu, một service có thểchạy trên background vô thời hạn, ngay cả khi các thành phần đó bắt đầu bị pháhủy Thông thường, một service bắt đầu thực hiện một hoạt động đơn lẻ vàkhông trả lại kết quả cho người gọi
- Bound: service là “buond” khi một component ứng dụng liên kết cho nó
bằng cách gọi bindService() Một service ràng buộc cung cấp một giao diệnclient-server cho phép các component tương tác với các dịch vụ, gửi và các yêucầu, có được kết quả, và thậm chí làm như vậy qua quá trình giao tiếpInterProcess(IPC) Một service buond chỉ chạy miễn là ứng dụng componentkhác bị ràng buộc vào nó Nhiều thành phần có thể liên kết cho dịch vu cùng mộtlúc, nhưng khi tất cả chúng unbind, service này bị phá hủy
Tìm hiểu về Activity trong Android
Activity là một thành phần ứng dụng đó cung cấp một màn hình mà ngườidùng có thể tương tác để làm một cái gì đó, chẳng hạn như quay số điện thoại,chụp ảnh, gửi email, hoặc xem một bản đồ Mỗi activity được cho một cửa sổ,trong đó cho vẽ giao diện người dùng của nó Cửa sổ thường lấp đầy màn hình,nhưng có thể nhỏ hơn so với màn hình và nổi lên trên các cửa sổ khác
Một ứng dụng thường bao gồm nhiều activity được ràng buộc lỏng lẻo vớinhau Thông thường, một trong những activity trong một ứng dụng được quyđịnh như các activity "chính", được trình bày cho người dùng khi tung ra ứngdụng cho lần đầu tiên Mỗi activity sau đó có thể bắt đầu activity khác để thựchiện hành động khác nhau Mỗi lần một activity mới bắt đầu, các activity trước
đó được dừng lại, nhưng hệ thống các khu bảo vệ các activity trong một ngăn xếp(các "back stack") Khi một activity mới bắt đầu, nó được đẩy lên phía sau ngănxếp và việc chú trọng của người dùng Sự trở lại ngăn xếp tuân thủ các cơ bản
"last in, first out" cơ chế hàng đợi, do đó, khi người dùng được thực thi với các
Trang 19activity hiện tại và nhấn phím BACK, nó là popped khỏi đống (và phá hủy) các
hồ sơ activity trước đó (Sự trở lại ngăn xếp được thảo luận nhiều hơn trong côngviệc và sắp xếp lại tài liệu)
Để tạo ra một activity, bạn phải tạo một sub class của Activity Trong subclass của bạn, bạn cần cho thực thi method gọi hệ thống các cuộc gọi khi chuyểnđổi activity giữa các state khác nhau cho vòng đời của nó, chẳng hạn như khiactivity đang được tạo ra, dừng lại, nối lại, hoặc bị phá hủy Hai phương pháp gọilại quan trọng nhất là:
Create Activity
Bạn phải triển khai method này Hệ thống các cuộc gọi này khi tạo activitycủa bạn Trong thời hạn triển khai thực hiện của bạn, bạn nên khởi tạo các thànhphần thiết yếu của activity của bạn Quan trọng nhất, đây là nơi bạn phải gọisetContentView() để xác định việc layout cho giao diện người dùng của activity
Start Activity
Khi làm việc trong ứng dụng của riêng bạn, bạn thường sẽ cần cho đơn giản
là khởi động một activity được biết đến Bạn có thể làm như vậy bằng cách tạo ramột intent đó rõ ràng xác định activity bạn muốn bắt đầu, sử dụng tên lớp Ví dụ,đây là cách một activity bắt đầu activity khác có tên SignInActivity:
Intent intent = new Intent(this, SignInActivity.class);
startActivity(intent);
Đóng một Activity
Bạn có thể đóng một activity bằng cách gọi methos finish() của nó Bạn
cũng có thể đóng cửa một activity riêng biệt trước đó bạn đã bắt đầu bằng cách
gọi finishActivity().Ngoài ra trong Activity còn nhiều method khác.
Trang 20Hình 1.4 Một số phương thức của Activity
Quản lý vòng đời Activity
Quản lý vòng đời Activity của bạn bằng cách thực hiện gọi method là rấtquan trọng cho phát triển một ứng dụng mạnh mẽ và linh hoạt Vòng đời của mộtactivity trực tiếp bị ảnh hưởng bởi kết hợp nhiệm vụ của nó và back stack với cácactivity khác
Một hoạt động có thể tồn tại trong ba trạng thái cơ bản: Resumed, Paused
và Stopped
Một activity bị tạm dừng hoặc dừng lại, hệ thống có thể drop nó từ bộ nhớhoặc là bằng cách yêu cầu cho nó kết thúc (gọi method finish() của nó), hoặc đơngiản là giết chết quá trình của nó Khi hoạt động này được mở lại (sau khi đượcfinished hoặc chết), nó phải được tạo ra như trên
1.1.6 Giao diện người dùng trong Android
Trong một ứng dụng Android, giao diện người dùng được xây dựng bằngcách sử dụng View và ViewGroup đối tượng Có nhiều loại quan điểm và các
Trang 21nhóm view, mỗi một trong số đó là hậu duệ của lớp View View objects là cácđơn vị cơ bản của biểu hiện giao diện người dùng trên nền tảng Android Cácclass xem như là cơ sở phục vụ cho class con được gọi là “widget”, trong đócung cấp đầy đủ các đối tượng thực hiện giao diện, giống như các lĩnh vực vănbản và nút Class ViewGroup phục vụ như là cơ sở cho lớp con được gọi là
“layouts”, cung cấp các loại khác nhau của kiến trúc bố trí, như linear, tabular vàrelative
- Một View object là một cấu trúc dữ liệu có đặc tính lưu trữ các thông số
bố trí và nội dung cho một khu vực cụ thể hình chữ nhật của màn hình
- Một View object xử lý đo lường riêng của mình, bố trí, bản vẽ thay đổi tậptrung, di chuyển, và phím/tương tác cử chỉ cho khu vực hình chữ nhật của mànhình
Là một object trong giao diện người dùng, view cũng là một điểm tương táccho người sử dụng và nhận các sự kiện tương tác
a) Xem Hierarchy
Trên nền tảng Android, bạn xác định một hoạt động của giao diện ngườidùng bằng cách sử dụng một hệ thống phân cấp của View và ViewGroup, nhưtrong biểu đồ dưới đây:
Hình 1.5 Biểu đồ phân cấp của View và ViewGroup
Trang 22Cây này có thể được phân cấp đơn giản hay phức tạp như bạn cần nó được,
và bạn có thể xây dựng nó lên bằng cách sử dụng thiết lập Android của widgets
và layouts định sẵn, hoặc với Views tùy chỉnh mà bạn tạo ra cho mình
Để đính kèm với cây phân cấp xem màn hình cho rendering, hoạt động củabạn phải gọi setContentView() phương pháp và thông qua một tham chiếu đếnđối tượng button gốc
Hệ thống Android nhận được tập tin này và sử dụng nó để làm mất hiệu lực,
đo lường và vẽ cây
Nút gốc của các yêu cầu phân cấp cho nó vẽ các nút con - lần lượt, mỗi nútview là nhóm chịu trách nhiệm kêu gọi mỗi lần view nút con riêng của mình để
vẽ có thể yêu cầu một kích thước và vị trí trong nút gốc Nhưng đối tượngviewgroup có quyết định cuối cùng về nơi làm thế nào, có thể được cho mỗi nútcon
Android parses các yếu tố của cách bố trí của người thiết kế (từ phía trêncùng của cây phân cấp), instantiating việc xem và them chúng và parent(s)
Bởi vì đây là những trích ra trong trật tự, nếu có các yếu tố đó chồng chéonhau các vị trí, một lần cuối để được rút ra sẽ nằm trên đầu trang của nhữngngười khác trước đây để rút ra những không gian đó
b) Giao diện
Cách phổ biến nhất để xác định bố trí của bạn và thể hiện sự phân cấp view
là với một tập tin XML layout XML cung cấp một cơ cấu có thể đọc được cho
bố trí, giống như HTML Mỗi phần tử trong XML là cả một View hoặc đối tượngViewGroup (hoặc hậu duệ đó) Các đối tượng View là lá trong cây, ViewGroupđối tượng là các nhánh trong cây Tên của một phần tử XML là tương tự với lớp
học Java mà nó đại diện Vì vậy một yếu tố <textview> tạo ra một TextView trong UI của bạn, và một phần tử <linearlayout> tạo ra một LinearLayout
viewgroup Khi bạn tải một layout resource, hệ thống Android khởi chạy thờigian các đối tượng, tương ứng với các yếu tố trong cách bố trí của bạn Ví dụ,một bố trí dọc đơn giản với một lần xem văn bản và một nút sẽ như thế này:
Trang 23<? xml version = "1.0" encoding = "utf-8"?>
Widgets
Widget là một object View phục vụ như một giao diện để tương tác vớingười dùng Android cung cấp một tập các widgets thực hiện đầy đủ, giống nhưcác button, Checkbox, và text-entry, do đó bạn có thể nhanh chóng xây dựng
Trang 24giao diện người dùng của bạn Một số widgets được cung cấp bởi Android phứctạp hơn, giống như một date picker, clock, và zoom controls Nhưng nó khônggiới hạn trong các loại widgets được cung cấp bởi các nền tảng Android.
Nếu bạn muốn làm một cái gì thêm cho tùy biến và tạo ra các yếu tố củahành động của bạn, bạn có thể bằng cách xác định object view của riêng bạnhoặc bằng cách mở rộng và kết hợp các Widget hiện có
Menus
Menu đơn có một phần quan trọng của giao diện người dùng trong một ứngdụng Menus cung cấp một giao diện đáng tin cậy cho thấy rằng các chức năngứng dụng và cài đặt Trong trình đơn ứng dụng phổ biến nhất là tiết lộ bằng cáchbấm phím MENU trên thiết bị Tuy nhiên, bạn cũng có thể thêm Context Menus,
có thể hiển thị khi người sử dụng máy nhấn và nắm giữ phím trên một mục Thựcđơn cũng được hệ thống phân cấp cấu trúc bằng cách sử dụng một view, nhưngbạn không xác định cấu trúc này cho mình Thay vào đó, bạn xác định
onCreateOptionsMenu() hoặc onCreateContextMenu() gọi method cho hoạt
động của bạn và tuyên bố các mục mà bạn muốn bao gồm trong menu của bạn.Trong một thời gian thích hợp, Android sẽ tự động tạo ra hệ thống View phâncấp cần thiết cho menu, và rút ra mỗi trong mỗi menu items đó
Menu cũng xử lý các sự kiện riêng của nó, do đó không cần phải đăng ký sựkiện listeners trên các item trong menu của bạn Khi một item trong menu củabạn được chọn, onoptionsItemSelected() hoặc onOptionsItemSelected()onContextItemSelected() method onContextItemSelected() sẽ được gọi bằngframework Và cũng giống layout của bạn, bạn có tùy chọn để khai báo các menuitem cho bạn trong một tệp tin XML
Adapters
Thỉnh thoảng ta sẽ muốn populate một view group với một số thông tin màkhông thể hard-coded được, thay vào đó, bạn muốn bind để xem một nguồn dữliệu bên ngoài Để làm điều này, ta sử dụng một AdapterView xem như là viewgroup của bạn và View con được khởi tạo và populated với dữ liệu từ Adapter.Các đối tượng AdapterView là một implementation của ViewGroup xác định
Trang 25những view con của nó dựa trên một đối tượng Adapter nhất định Adapter cáchành vi như là chuyển phát nhanh giữa các nguồn dữ liệu của bạn (có lẽ là mộtmảng của chuỗi bên ngoài) và AdapterView, hiển thị nó trong đó Có một số hiệnthực của class Adapter, cho nhiệm vụ cụ thể, chẳng hạn như CursorAdapter việcđọc dữ liệu cơ sở dữ liệu từ một Cursor, hoặc một ArrayAdapter đọc từ mộtmảng tùy ý Để tìm hiểu thêm về cách sử dụng một adapter cho populate viewscủa bạn, hãy đọc đóng vào dữ liệu với AdapterView.
Styles and Themes
Nếu chúng ta không hài lòng với dáng vẻ của các widgets tiêu chuẩn Đểsửa đổi chúng, chúng ta có thể tạo một số style riêng và chủ đề
Một Style là một tập hợp của một hay nhiều thuộc tính định dạng mà bạn cóthể áp dụng như một đơn vị đến các yếu tố cá nhân trong layout của bạn Ví dụ,bạn có thể xác định một Style chỉ định một văn bản kích thước và màu sắc nhấtđịnh, sau đó áp dụng nó để chỉ các yếu tố View cụ thể
Một Theme là một tập hợp của một hay nhiều thuộc tính định dạng mà bạn
có thể áp dụng như một đơn vị đến tất cả các hoạt động trong một ứng dụng,hoặc chỉ hoạt động đơn lẻ Ví dụ, bạn có thể định nghĩa một theme mà bộ màusắc cụ thể cho khung cửa sổ và nền bảng, và đặt kích cỡ chữ và màu sắc cho cácmenu Theme này sau đó có thể được áp dụng cho các hoạt động cụ thể hoặc ứngdụng toàn bộ Styles and themes là nguồn tài nguyên
Android cung cấp một số kiểu mặc định và style and themes mà bạn có thể
sử dụng, hoặc bạn có thể phát triển riêng tài nguyên style and theme của bạn.Tìm hiểu thêm về cách sử dụng phong cách và chủ đề trong các ứng dụng Styles
và tài liệu đề
1.2 Giới thiệu các tool hỗ trợ
1.2.1 Khái niệm về Web Service.
Theo định nghĩa của W3C (World Wide Web Consortium), Web Service 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 ứngdụ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
Trang 26có thể xác định bằng địạ chỉ URL, thực hiện các chức năng và đưa ra các thôngtin 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ứcnă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 module độc lập cho hoạt động của kháchhàng và doanh nghiệp và bản thân nó được thực thi trên server
1.2.2 Giới thiệu về mã JSON
JSON hay còn gọi là JavaScript Object Notation, là một chuẩn dùng đểtruyền tải dữ liệu
JSON là cú pháp để lưu trữ và trao đổi thông tin văn bản Cũng giống nhưXML
JSON là nhỏ hơn so với XML, và nhanh hơn và dễ dàng hơn để phân tích(parse)
JSON sử dụng cú pháp JavaScript để mô tả đối tượng dữ liệu, nhưng JSON
là ngôn ngữ và nền tảng độc lập Trình phân tích cú pháp (parsers) JSON và cácthư viện JSON tồn tại cho nhiều ngôn ngữ lập trình khác nhau
Trang 27CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
2.1 Lý do chọn đề tài.
Trong xu thế phát triển của công nghệ hiện nay, và cùng theo đó là sự pháttriển, ra đời của các thiết bị smartphone tân tiến Việc tốc độ xử lý nhanh, bộ nhớSDCard lớn trên các máy điện thoai smartphone cho phép thực hiện các nhiệm
vụ trong công việc hay giải trí dần dần thay thế cho máy tính Các ứng dụng trênmôi trường mạng dần thay thế các ứng dụng chạy trên máy đơn, cục bộ Với sựlớn mạnh và phát triển vượt bậc trong những năm gần đây, hệ điều hành Android
đã cho thấy được thế mạnh của mình trong các thiết bị smartphone Các ứngdụng, phần mềm phát triển trên Android OS ngày càng nhiều, và mục đích củacác ứng dụng ngày càng đáp ứng được yêu cầu của người dung
Đồng thời, xuất phát từ ý tưởng xây dựng một ứng dụng chạy trên nền hệđiều hành Android giúp cho nhà trường và gia đình có thể liên lạc thường xuyên.Thông qua ứng dụng, các thông tin của các học sinh tại trường lớp có thể đượccập nhật thường xuyên tới phụ huynh một cách nhanh nhất, và phụ huynh cũng
có đưa ra những ý kiến tới giáo viên Vì vậy, em đã chọn đề tài “Xây dựng hệthống liên lạc điện tử giữa nhà trường và gia đình trên các thiết bị sử dụng hệđiều hành Android”
2.2 Đặc tả chương trình
2.2.1 Giới thiệu
Chương trình hỗ trợ các chức năng liên lạc giữa nhà trường và gia đìnhchạy trên các thiết bị sử dụng hệ điều hành Android Sau khi cài đặt chương trìnhlên thiết bị di động và đăng ký dịch vụ truy cập Internet từ thiết bị di động, ngườidung có thể sử dụng hầu hết các tiện ích tương tự hệ thống SMS mà không cần
có máy tính kết nối Internet Ngoài Android, chương trình còn sử dụng côngnghệ Web Service trong kết nối mạng để truy cập vào cơ sở dữ liệu Chươngtrình được thực hiện với mục tiêu mô phỏng lập trình trên thiết bị di độngAndroid, và có thể chạy tốt trên thiết bị di động Android thật sự Việc ứng dụng
Trang 28thực tế trên cơ sở dữ liệu của hệ thống thật là hướng mở rộng trong tương lai củachương trình.
2.2.2 Các chức năng chính.
a) Đăng nhập
Đối tượng sử dụng ứng dụng là giáo viên và gia phụ huynh học sinh
Khi người dùng khởi động ứng dụng Client, chương trình yêu cầu ngườidùng đăng nhập với tài khoản, mật khẩu để đăng nhập hệ thống
Nếu đăng nhập không hợp lệ người dùng phải nhập lại tài khoản, mật khẩu
để đăng nhập lại Nếu đăng nhập hợp lệ, người dùng có thể truy cập hệ thống và
sử dụng các chức năng khác của chương trình
b) Lên lịch hoạt động
Sau khi đăng nhập thành công, giáo viên có thể thực hiện lên lịch hoạt độngcho các học sinh trong lớp, giáo viên có thể lên lịch hoạt động cho tất cả học sinhhoặc lên lịch hoạt động riêng cho từng học sinh
Phụ huynh học sinh sau khi đăng nhập cũng có thể lên lịch cho con em củaminh, nhưng chỉ mang tính chất tham khảo đối với giáo viên, hoặc đó là những
đề xuất với giáo viên về hoạt động của con em mình
c) Nhận xét hoạt động
Hàng ngày giáo viên có thể nhận xét về các học sinh và các hoạt động màhọc sinh đã tham gia, thông qua đó giúp cho phụ huynh có thể nắm bắt được tìnhhình con em thường xuyên hơn Phụ huynh cũng có đưa ra ý kiến và để xuất vớigiáo viên về các hoạt động của con em mình
d) Gửi và nhận thông báo
Giáo viên và phụ huynh có thể liên lạc với nhau bằng cách gửi các thôngbáo Các thông báo này sẽ được tự động xóa sau khi được đọc và được phản hồilại
Trang 292.3 Tìm hiểu Web Service
2.3.1 Đặc điểm của Web Service.
- Web Service 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
- Phần lớn kỹ thuật của web service được xây dựng dựa trên mã nguồn mở
và được phát triển theo các chuẩn đã được công nhận
- 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ữnglĩ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ạngInternet
- Một ứng dụng được triển khai đều hoạt động theo mô hình client-server
- Web service có ứng dụng thực tế rộng rãi trong các lĩnh vực dịch vụ chọnlọc và phân loại tin tức, ứng dụng cho các dịch vụ du lịch, bán hang qua mạng, tỉgiá, chứng khoán, các dịch vụ giao dịch trực truyến như đặt vé máy bay, tàu xe
2.3.2 Ưu điểm và nhược điểm của Web Service
a) Ưu điểm:
Web service có nhiều ưu điểm hơn những mô hình ứng dụng phân tán rađời trước nó Ưu điểm này được cấu thành bởi chính những thành phần tạo nênweb service
- Khả năng vượt firewall:
Web service hoạt động trên nền giao thức HTTP nên cũng sử dụng luôncổng 80 dành cho web Đây là một ưu thế rất lớn của web service đối với cácphương thức gọi hàm từ xa (RPC) khác, với các hình thức cũ hơn, thường phảidung các port tự quy định dẫn đến không thể hoạt động ở một số tổ chức vì quảntrị mạng không cho phép vượt qua firewall Web service sử dụng port “well-known” 80, đây là port hầu như tất cả các firewall đều cho phép đi qua nên webservice có thể hoạt động ở mọi nơi
- Hoạt động trên đa môi trường:
Web service dựa trên nền công nghệ XML, tài liệu XML hiện nay được hỗtrở bởi tất cả các hệ điều hành, kể cả trên môi trường di động Do đó web service
Trang 30có thể hoạt động trên mọi môi trường, được hỗ trợ bởi hầu như mọi ngôn ngữ lậptrình Tuy nhiên, do truyền dữ liệu dưới dạng text nên độ trễ của web service sẽcao và chiếm dụng băng thông cũng nhiều hơn so với các hình thức tryền dữ liệunhị phân.
- 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 đa tồn tại bằng cách cho phép các tiếntrình/ chức năng nghiệp vụ đóng gói trong giao diện web service
- Tạo mối tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễdàng cho việc phát triển các hệ thống phân tán
- Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống
b) Nhược điểm
- Có quá nhiều chuẩn cho dịch vụ web khiến người dùng khó nắm bắt
- Cần quan tâm hơn nhiều về vấn đề bảo mật
- Các giao thức được thay đổi và nâng cấp, đòi hỏi ứng dụng của client phảiđược nâng cấp, thay đổi
Trang 312.3.3 Kiến trúc Web Service
Hình 2.1 Các thành phần của Web Service
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ệpgiữ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 ExtensibleExchange Protocol- BEEP)
- Thông điệp XML: có nhiệm vụ giải mã các thông điệp theo định dạngXML để 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
- Mô 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ônngữ 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
Trang 32dị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.
Hình 2.2 Kiến trúc của Web Service
Trong đó, tầng giao thức tương tác dịch vụ (Service CommunicationProtocol) với công nghệ chuẩn là SOAP SOAP là giao thức nằm giữa tầng vậnchuyể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ộtdị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 antoà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
2.3.4 Hoạt động của Web Service
Hình 2.3 Hoạt động của Web Service
Trang 33Một ứng dụng web service thường gồm 2 phần: client và server.
Client và server sẽ giao tiếp với nhau theo giao thức HTTP: ứng dụng client
sẽ gửi những lời gọi hàm đến server thông qua các gói tin HTTP request và kếtquả thực thi hàm sẽ được server hồi đáp thông qua các gói tin HTTP response
SOAP:
Các thông điệp sẽ được định dạng theo chuẩn giao thức SOAP (SimpleObject Access Protocol) Đây thực chất cũng chỉ là một ngôn ngữ được địnhnghĩa bên trên ngôn ngữ XML có sẵn
WSDL (Web Service Definaition Language):
Đây là file XML chứa các định nghĩa về các hàm trong Web Service tươngứng Các nhà phát triển ứng dụng sẽ phải dựa vào nội dung file này để biết WebService hỗ trợ những hàm này và nhận những tham số tương ứng, kết quả trả vềnhư thế nào
UDDI (Univeral Description Discovery and Integration):
Đây là công cụ giúp cho những nhà phát triển Web Service công bố nhữngthông tin về Web Service của mình cho cộng đồng các nhà phát triển ứng dụng.Người dung sẽ dựa vào những thông tin này để sử dụng Web Service trong ứngdụng riêng của mình tạo thành một hệ ứng dụng phân tán
Mối quan hệ giữa các thành phần SOAP,WSDL, UDDI có thể được mô tảnhư sau:
Một ứng dụng web service client cần sử dụng một Web Service được đặt tạimột nơi nào đó trên hệ thống mạng Trước tiên, client sẽ truy vấn đến các mẫu tinUDDI, có thể theo tên, loại hay một thông tin riêng biệt nào đó Khi xác địnhđược web service cần tìm, client có thể lấy thông tin về địa chỉ của tài liệu vớiWSDL của Web Service này dựa trên mẫu tin UDDI Tài liệu WSDL sẽ mô tảcách thức liên lạc với web service, định dạng của gói tin truy vấn và phản hồitheo cũng được mô tả bằng XML schema Dựa vào những thông tin này client cóthể tạo ra những gói tin SOAP tương ứng để liên lạc với server
Trang 34Ứng dụng Web Service có thể được cài đặt ở những mức độ cao hơn nhưnhững mô hình sau:
Hình 2.4 Một Client truy xuất đến nhiều Web Service cùng lúc
Hình 2.5 Một Web Service có thể triệu tập đến các Web Service khác
2.3.5 Các thành phần chính của Web Service
Web service dựa vào khá nhiều công nghệ bên dưới như HTTP, XML,SOAP… Mỗi công nghệ nêu trên đầu có phạm vi ứng dụng khá sâu rộng và đòihỏi nhiều thời gian tìm hiểu cũng như trình bày
SOAP (Simple Object Access Protocol)
SOAP là một giao thức đơn giản nhằm mục đích trao đổi thông tin trongmôi trường ứng dụng phân tán SOAP dựa trên nền công nghệ XML và bao gồm
Trang 35SOAP có thể được sử dụng kết hợp với các giao thức chuẩn khác nhưSMTP, HTTP/HTTPS, FPT… Tuy nhiên hiện nay chỉ mới có HTTP/HTTPSđược xem như giao thức chuẩn để trao đổi gói tin SOAP Việc sử dụng SOAPnhư một giao thức trao đổi dữ liệu chuẩn khiên web service có khả năng hoạtđộng trên nhiều môi trường lập trình khác nhau như Java, NET…
Gói tin SOAP:
Gói tin SOAP được gửi bên trong một gói tin HTTP request hoặc gói tinHTTP response
Gói tin SOAP gồm 4 phần chính:
+ Phần bì thư SOAP envelope: định nghĩa thông điệp chứa những gì, ai nên
xử lý thông điệp, thông điệp này bắt buộc phải xử lý hay mang tính tùy chọn.+ Luật mã hóa: quy định cách thức chuyển đổi thông tin, các kiểu dữ liệutrong ứng dụng
+ Phần SOAP PRC: mô tả những quy luật về cách thức gọi hàm từ xa cũngnhư cách thức phản hồi
+ Quy luật mô tả cách thức sử dụng gói tin SOAP với các protocol tầngdưới
Cấu trúc gói tin SOAP: một gói tin SOAP gồm một Envelope như một node
gốc trong văn bản XML, nút gốc này sẽ chứa node con Body và có thể có hoặckhông chứ node con Header
- SOAP Envelope:
Phần Envelope là node gốc của gói tin SOAP dưới dạng tài liệu XML.Phần Envelope có thể có hoặc không có phần Header nhưng chắc chắn phải chứaphần Body
Trong các gói tin SOAP thông thường, phần Envelope không mang nhiều ýnghĩa Nó chỉ đơn thuần báo hiệu sự bắt đầu của một gói tin và định nghĩa cácNameSpace cần thiết sẽ được sử dụng ở các phần sau
- SOAP Header:
Phần SOAP Header sẽ là node con đầu tiên của SOAP Header sẽ là nodecon đầu tiên của SOAP Envelope Phần Header thường là nơi được dùng để thêm
Trang 36các thông tin bổ sung phục vụ cho mục đích riêng của chương trình Các thôngtin thường được thêm vào phần Hearder là authentication, authorization, quản lýtransaction… Phần Header không bắt buộc phải có trong mọi gói tin SOAP.
Đây là một ví dụ hoàn chỉnh và đơn giản về việc sử dụng SOAP để gọi hàmGetAccount (int accNumber) với tham số truyền vào acc/number=1234 Gói tinSOAP được đặt trong gói tin HTTP Request có dạng như sau:
<?xml version= “1.0” encoding= “utf-8”?>
<soap:Envelope xmlns:xsi= http://www.w3.org/2001/XMLSchema-instancexmlns:xsd= http://www.w3.org/2001/XMLSchema