Tải bản đầy đủ (.pdf) (83 trang)

Xây dựng hệ thống phân phối nội dung số cho nền tảng androido

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.47 MB, 83 trang )

LỜI CẢM ƠN
Lời đầu tiên, Em xin chân thành cảm ơn trường đại học công nghệ thông tin
và truyền thông, đại học Thái Nguyên đã tạo điều kiện thuận lợi cho phép em thực
hiện bài đồ án tốt nghiệp này.
Đặc biệt, Em xin chân thành cảm ơn tới Tiến Sĩ Nguyễn Toàn Thắng đã rất
tận tình hướng dẫn, chỉ bảo em trong suốt thời gian thực hiện đề tài vừa qua.
Em cũng xin chân thành cảm ơn tất cả các Thầy, các Cô trong Trường đã
tận tình giảng dạy, trang bị cho chúng em những kiến thức cần thiết, quý báu trong
những năm tháng học tập tại Trường.
Mặc dù em đã cố gắng, nhưng với trình độ còn hạn chế, trong quá trình làm
đồ án tốt nghiệp không tránh khỏi những thiếu sót. Em hy vọng sẽ nhận được
những ý kiến nhận xét, góp ý của các thầy cô giáo và các bạn về bài đồ án của em
để bài đồ án được hoàn thiện hơn.
Em xin trân trọng cảm ơn!

1


LỜI CAM ĐOAN
Em tên là: Tạ Huy Triệu – sinh viên lớp MMT-K10A, ngành truyền thông
và mạng máy tính, khoa công nghệ thông tin, trường Đại học Công Nghệ Thông
Tin và Truyền Thông - Đại học Thái Nguyên, khóa 2011-2016.
Em xin cam đoan đã thực hiện quá trình làm đồ án một cách khoa học,
chính xác và trung thực.
Toàn bộ kết quả của quá trình làm đồ án là thành quả của quá trình học tập,
nghiên cứu của em, dưới sự hướng dẫn của Tiến sỹ Nguyễn Toàn Thắng. Nội dung
trong đồ án nếu có tham khảo, sử dụng tài liệu thông tin từ một số nguồn khác đều
được trích dẫn trong phần tài liệu tham khảo.
Em xin chịu trách nhiệm toàn bộ trước bài báo cáo của mình!

2




MỤC LỤC
LỜI CẢM ƠN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
LỜI CAM ĐOAN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
MỤC LỤC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
DANH MỤC BẢNG BIỂU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
DANH MỤC HÌNH ẢNH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
TỔNG QUAN ĐỀ TÀI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
CHƯƠNG I: CƠ SỞ LÝ THUYẾT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.1 Khảo sát . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Công nghệ xây dựng server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.3 Công nghệ phát triển ứng dụng android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.1 Giới thiệu chung về hệ điều hành android . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.2 Kiến trúc của android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3.3 Công nghệ phát triển ứng dụng android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4 Công nghệ xây dựng web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.5 Công nghệ giao tiếp giữa ứng dụng android và web server. . . . . . . . . . . . . . . 20
CHƯƠNG II: PHÂN TÍCH THIẾT KẾ HỆ THỐNG . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1 Yêu cầu hệ thống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2 Triển khai hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Các thành phần hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Phân tích thiết kế hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.1 Biểu đồ UC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.2.2 Đặc tả UC người dùng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2.3 Đặc tả UC Admin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.2.4 Đặc tả UC Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.2.5 Biểu đồ lớp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2.6 Thiết kế dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3



CHƯƠNG III XÂY DỰNG HỆ THỐNG. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1 Xây dựng web server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.1 Tạo lớp kết nối tới SQLServer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.1.2 Xây dựng web service. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.1.3 Xây dựng web client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.1.4 Xây dựng hàm nén dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2 Xây dựng ứng dụng client trên android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.1 Tạo lớp kết nối và truyền dữ liệu với server. . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.2.2 Tạo hàm giải nén dữ liệu nhận được từ server . . . . . . . . . . . . . . . . . . . . . . . 49
3.2.3 Xây dựng ứng dụng android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
CHƯƠNG IV : ỨNG DỤNG DEMO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.1 Web server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2 Ứng dụng client trên android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.3 Ứng dụng web client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
KẾT LUẬN. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
TÀI LIỆU THAM KHẢO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4


DANH MỤC BẢNG BIỂU
Bảng 2.1: Mối quan hệ giữa tác nhân và UC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Bảng 2.2: Luồng sự kiện chính UC đăng nhập . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Bảng 2.3: Luồng sự kiện chính UC lấy danh sách tài nguyên. . . . . . . . . . . . . . . . . . . 31
Bảng 2.4: Luồng sự kiện chính UC quản lý thông tin người dùng . . . . . . . . . . . . . . 32
Bảng 2.5: Luồng sự kiện chính UC Quản lý tài nguyên . . . . . . . . . . . . . . . . . . . . . . . . 33
Bảng 2.6: Luồng sự kiện chính UC Quản lý người dùng . . . . . . . . . . . . . . . . . . . . . . . 34
Bảng 2.7: Luồng dữ liệu chính UC Quản lý thể loại . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Bảng 2.8: Luồng sự kiện chính UC quản lý Album . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Bảng 2.9: Luồng sự kiện chính UC quản lý tài nguyên. . . . . . . . . . . . . . . . . . . . . . . . . 37
Bảng 2.10: Luồng dữ liệu chính UC Quản lý album . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Bảng 2.11: Luồng sự kiện chính UC quản lý thông tin tác giả. . . . . . . . . . . . . . . . . . 39

5


DANH MỤC HÌNH ẢNH
Hình 1.1: Các ứng dụng phân phối nội dung âm thanh . . . . . . . . . . . . . . . . . . . . . . . . . 11
Hình 1.2: Mô hình web server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Hình 1.3: Cấu trúc stack hệ thống Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Hình 2.1: Biểu đồ triển khai hệ thống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Hình 2.2: Các thành phần của hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Hình 2.3: Biểu đồ UC người dùng. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Hình 2.4: Biểu đồ UC người quản trị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Hình 2.5: Biểu đồ UC tác giả. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Hình 2.6: Biểu đồ luồng trình tự UC đăng nhập. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Hình 2.7: Biểu đồ trình tự UC View Source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Hình 2.8: Biểu đồ trình tự UC quản lý thông tin người dùng . . . . . . . . . . . . . . . . . . . 32
Hình 2.9: Luồng sự kiện chính UC quản lý tài nguyên của admin . . . . . . . . . . . . . . 33
Hình 2.10: Luồng sự kiện chính UC quản lý người dùng. . . . . . . . . . . . . . . . . . . . . . . 34
Hình 2.11: Luồng sự kiện chính UC quản lý thể loại của admin. . . . . . . . . . . . . . . . 35
Hinh 2.12: Luồng sự kiện chính UC quản lý album của admin . . . . . . . . . . . . . . . . . 36
Hình 2.13: Biểu đồ trình tự UC quản lý tài nguyên của author . . . . . . . . . . . . . . . . . 37
Hình 2.14: Luồng sự kiện chính UC quản lý album của author. . . . . . . . . . . . . . . . . 38
Hình 2.15: Luồng sự kiện chính UC quản lý thông tin tác giả . . . . . . . . . . . . . . . . . . 39
Hình 2.16: Biểu đồ lớp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Hình 2.17: Biểu đồ thiết kế cơ sở dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Hình 3.1: Chọn SQLServer cần kết nối và cơ sở dữ liệu cần sử dụng. . . . . . . . . . . 43

Hình 3.2: Khởi tạo lớp kết nối sử dụng LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Hình 3.3: Các API server cung cấp cho Android client. . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 3.4 : Tạo website trên visual studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Hình 3.5: Các controller của hệ thống website . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

6


Hình 3.6: Các model của hệ thống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Hình 3.7: Các thư mục view của hệ thống website . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Hình 3.8: Sử dụng thư viện ICSharpCode.SharpZipLib.dll. . . . . . . . . . . . . . . . . . . . . 48
Hình 3.9: Lớp MyKsoap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Hình 3.10: Hàm giải nén dữ liệu trên ứng dụng client android . . . . . . . . . . . . . . . . . 50
Hình 3.11: Thiết kế giao diện ứng dụng client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Hình 4.1 : Hình ảnh web server cài đặt thành công . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Hình 4.2 : Form nhập dữ liệu mà web service tự tạo . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Hình 4.3: Giao diện chính ứng dụng client trên android. . . . . . . . . . . . . . . . . . . . . . . . 54
Hình 4.4: Danh sách các Singer, Album, Category. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Hình 4.5: Danh sách tài nguyên được theo những điều kiện khác nhau . . . . . . . . . 55
Hình 4.6: Cấu hình địa chỉ ip server cho ứng dụng client . . . . . . . . . . . . . . . . . . . . . . 56
Hình 4.7: Giao diện trang web của admin và author khi đăng nhập vào . . . . . . . . 57
Hình 4.8: Một số giao diện khác. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

7


TỔNG QUAN ĐỀ TÀI
Lý do chọn đề tài
Ngày nay thiết bị di động không chỉ là thiết bị đàm thoại thông thường mà
đang dần trở thành thiết bị thông minh để đáp ứng nhu cầu ngày càng cao của con

người. Sự phát triển của công nghệ, giá cả điện thoại cũng ngày càng rẻ hơn là các
yếu tố khiến điện thoại thông minh ngày càng trở nên phổ biến. Việc sử dụng điện
thoại di động để trao đổi, lưu trữ các tài nguyên số đang trở nên thông dụng. Vì
vậy mà các vấn đề liên quan đến bảo mật, bảo vệ các dữ liệu nội dung số trên
mạng như: mp3, video, ảnh, file văn bản, … ngày càng trở nên cấp thiết và quan
trọng.
Hiện nay, trên mạng có rất nhiều ứng dụng chia sẻ, phân phối nội dung số
khác nhau trên nền tảng android. Một số ứng dụng chia sẻ và phân phối như
ZingMp3, nhaccuatui,… đã thành công trong việc chia sẻ nội dung số trên nền
tảng android. Tuy nhiên việc bảo vệ những dữ liệu chia sẻ, phân phối này trên môi
trường mạng cũng như thiết bị là chưa có. Việc xây dựng một ứng dụng đáp ứng
được việc bảo vệ các tài nguyên số ngày trên môi trường mạng cũng như thiết bị là
cần thiết.
Vì vậy, với các vấn đề đưa ra ở trên, em đã đi đến việc tìm hiểu và thực
hiện đề tài: Xây dụng hệ thống phân phối nội dung số cho nền tảng android có
sử dụng các biện pháp bảo vệ dữ liệu trên môi trường mạng và thiết bị.
Ý tưởng xây dựng hệ thống
Với đề tài như trên hệ thống xây dụng gồm ba phần. Phần thứ nhất là server
dùng để quản lý lưu trữ các tài nguyên số, cung cấp các hàm chức năng kết nối và
giao tiếp với client, đồng thời tiến hành mã hóa các tài nguyên số thành một dạng
khác và gửi về cho client khi có yêu cầu. Thành phần thứ hai là client trên android
bao gồm các hàm kết nối tương ứng đến server, nhận dữ liệu, thao tác người dùng
sau đó gửi yêu cầu đến server, nhận dữ liệu từ server hiển thị thông tin cho người
8


dùng, đồng thời tải về các tài nguyên đã được mã hóa từ server khi có yêu cầu và
giải mã dữ liệu về dữ liệu gốc để người dùng sử dụng. Thành phần thứ ba là web
client bao gồm giao diện web trên một phần mềm web browser bất kỳ. Thành phần
này sẽ cung cấp các chức năng cho người quản trị và người quản lý nội dung các

chức năng để tương tác với cơ sở dữ liệu. Đây là thành phần quan trọng cho phép
người quản trị quản lý hệ thống với giao diện trực quan dễ thao tác, cho phép
người quản lý nội dung quản lý nội dung chia sẻ của mình đồng thời đăng tải
những nội dung cần chia sẻ trên một giao diện web thân thiện dễ sử dụng.
Với ý tưởng như trên hệ thống được xây dựng sẽ đảm bảo việc chia sẻ cũng
như quản lý của người có nhu cầu chia sẻ nội dung số của mình, nội dung chia sẻ
sẽ đến được với người dùng. Đồng thời hệ thống sẽ cho phép người dùng có thể
truy cập và xem những nội dung đã được chia sẻ theo đúng quyền hạn của mình.
Ngoài ra hệ thống sẽ giúp người quản trị đảm bảo việc hoạt động ổn định của hệ
thống. Thêm nữa hệ thống sẽ đáp ứng được việc dữ liệu truyền thông trên mạng
được bảo vệ, không bị đánh cắp bên cạnh đó dữ liệu trên thiết bị cũng được bảo
vệ.
Phạm vi đề tài
Trong phạm vi bài đồ án tốt nghiệp của mình em xin demo thực hiện xây
dựng hệ thống thực hiện việc phân phối một dạng tài nguyên số phổ biến hiện nay
là nội dung nhạc mp3, hình ảnh jpg và video mp4.
Mục tiêu của đề tài
Mục tiêu của đề tài là giải quyết các vấn đề sau:
+ Xây dựng web server và các dịch vụ cho web server
+ Xây dựng ứng dụng trên android sử dụng các dịch vụ được cung cấp từ
server.
+ Xây dụng web client sử dụng MVC
+ Nén các tệp tin tài nguyên trên server khi người cung cấp nội dung tải lên
server bằng web client.
9


+ Giải nén tệp tin nhận được từ server trên android
+ Kết nối và truyền dữ liệu giữa client và server
Trong quá trình trình thực hiện còn nhiều thiếu sót, không thể tránh khỏi

những sai lầm trong phân tích thiết kế và những lỗi cài đặt chương trình. Vì vậy
em mong nhận được sự ủng hộ đóng góp ý kiến của các thầy cô để bài thực tập tốt
nghiệp của em được hoàn thiện hơn và em mong được lĩnh hội những kiến thức
hay bổ ích từ thầy cô.
Em xin chân trình cảm ơn!

10


CHƯƠNG I: CƠ SỞ LÝ THUYẾT
1.1 Khảo sát
Trên thị trường hiện nay tồn tại một số hệ thống phân phối nội dung số dạng
nội dung âm thanh mp3 như ZingMp3, nhaccuatui, v.v…
+ ZingMp3: ZingMp3 là một ứng dụng trên di động của một trong những
trang web chia sẻ nhạc trực tuyến lớn nhất Việt Nam. Đây là một ứng dụng rất
thành công với những ưu điểm nổi bật như: nội dung số phong phú, tốc độ nhanh,
dễ thực hiện và xử lý và quản lý nội dung dễ dàng
+ Nhaccuatui: Nhaccuatui cũng là một ứng dụng trên di động của một trang
web chia sẻ nhạc trực tuyến vào hạng nhất nhì Việt Nam. Đây là ứng dụng khá
thành công khi đem lại cho người dùng những thuận lợi trong việc sử dụng ứng
dụng như: đa dạng về nội dung, chia sẻ dễ dàng, quản lý đơn giản, xử lý nhanh, tốc
độ cao.

11


Hình 1.1: Các ứng dụng phân phối nội dung âm thanh
+ Tuy nhiên cả hai ứng dụng trên là nội dung số của ứng dụng này có thể
được thực thi trên ứng dụng còn lại, dữ liệu vẫn còn ở dạng nguyên gốc. Vấn đề về
việc bảo vệ dữ liệu trên từng thiết bị là chưa có. Nội dung số được truyền đi trên

mạng vẫn là nội dung gốc, không có một biện pháp bảo vệ dữ liệu vì vậy mà người
khác có thể bắt được các gói tin và có được dữ liệu gốc ban đầu.
+ Vì vậy một hệ thống mới cần được xây dựng để đáp ứng những yêu cầu
về việc đảm bảo dữ liệu truyền đi trên mạng không cho người thứ ba không có
quyền truy cập có thể hiểu nội dung bản tin, dữ liệu lưu trữ trên thiết bị cá nhân
cũng không thể thực hiện bởi một ứng dụng khác. Hệ thống mới cần đáp ứng các
12


yêu cầu cơ bản như:
Dữ liệu tài nguyên lưu trữ trên server phải được nén với một mã nhất định
nào đó mà chỉ web server và ứng dụng client có thể hiểu được.
Ứng dụng client và server phải được kết nối và truyền thông được với nhau.
Dữ liệu tài nguyên nhận được trên client phải được giải nén để có được dữ
liệu gốc ban đầu và hiển thị theo từng dạng dữ liệu cho người dùng.
1.2 Công nghệ xây dựng server
Web server là một dịch vụ công nghệ thông tin xử lý các yêu cầu thông qua
HTTP, các giao thức mạng cơ bản khác để phân phối thông tin trên world wide
web. Các chức năng chính của web server là để lưu trữ, xử lý và cung cấp các
trang web cho người dùng. Những dạng dữ liệu thường xuyên truyền tải giữa một
web server với một ứng dụng client là các trang tài liệu HTML có thể bao gồm
hình ảnh, kịch bản, file khác. Ứng dụng client có thể là một trình duyệt web, một
ứng dụng có thể đọc và truy xuất đến web server. Ứng dụng client truy cập đến
server bằng cách thực hiện một yêu cầu một tài nguyên nào đó trên server bằng
cách sử dụng HTTP, khi server nhận được yêu cầu sẽ thực hiện xử lý yêu cầu và
đáp ứng nội dung tài nguyên cần yêu cầu(nếu có) cho client.

13



Hình 1.2: Mô hình web server
Hiện nay có nhiều cách để xây dựng và chạy một web server được phân loại
bằng ngôn ngữ sử dụng, xử lý trên web server bao gồm:
+ Web server PHP sử dụng ngôn ngữ lập trình PHP để xử lý các yêu cầu từ
client và MySQL để lưu trữ cơ sở dữ liệu. Ưu điểm của web server PHP là: Sử
dụng ngôn ngữ lập trình PHP là một ngôn ngữ mã nguồn mở, rất phổ biến và dễ
dàng viết mã. Bên cạnh đó là sử dụng hệ quản trị cơ sở dữ liệu MySQL là một
quản trị cơ sở dữ liệu dễ quản lý, tốc độ xử lý cao và dễ dàng sử dụng. Tuy nhiên
còn một số những nhược điểm của Web server PHP như: PHP là một ngôn ngữ
dạng yếu và chỉ chạy được trên ứng dụng web. Hệ quản trị cơ sở dữ liệu MySQL
bảo mật chưa cao, quán trình phục hồi chậm chạp, không hỗ trợ truy vấn con và
các thủ tục lưu trữ, bẫy lỗi, …
+ Web server Java sử dụng ngôn ngữ java để xử lý các yêu cầu từ client và

14


Oracle Database để lưu trữ cơ sở dữ liệu. Ưu điểm của web server Java là: sử dụng
ngôn ngữ lập trình Java là một ngôn ngữ mã nguồn mở, rõ ràng và tách biệt, dễ
dàng viết mã, ngôn ngữ hướng đối tượng rõ ràng, nhiều thư viên hỗ trợ lập trình.
Hệ quản trị cơ sở dữ liệu sử dụng là Oracle Database là một hệ quản trị cơ sở dữ
liệu lớn, được tích hợp các công cụ quản trị, tính bảo mật cao và thời gian đáp ứng
nhanh. Ngoài những ưu điểm trên thì Web server Java cũng có những nhược điểm
như: ngôn ngữ lập trình java còn chập chạp, cần phải cấu hình nhiều để có thể
chạy tốt, hệ quản trị cơ sở dữ liệu Oracle chưa được phổ biến, phí bản quyền tương
đối cao, không tương thích với các công nghệ của Microsoft.
+ Web server .Net sử dụng ngôn ngữ lập trình C# để xử lý các yêu cầu từ
client và SQLServer để lưu trữ cơ sở dữ liệu. Ưu điểm của web sercer .Net là: sử
dụng ngôn ngữ lập trình C# là ngôn ngữ lập trình đơn giản hướng đối tượng, rõ
ràng, tách biệt, mạnh mẽ, dễ dàng viết mã, nhiều thư viện hỗ trợ lập trình. Hệ quản

trị cơ sở dữ liệu hay được sử dụng là SQLServer là một hệ quản trị cơ sở dữ liệu
lớn, mạnh mẽ, cấu trúc chặt chẽ, duy nhất, tính bảo mật cao, dễ dàng sử dụng. Web
server .Net còn có một số nhược điểm như: ngôn ngữ C# chỉ hỗ trợ trên môi
trường windown, SQLServer bảo mật cao nên phải cấu hình chính sác mới có thể
sử dụng.
Từ những ưu điểm và nhược điểm kể trên của ba cách xây dựng web server
em chọn cách xây dựng web server trên nền ASP.Net sử dụng ngôn ngữ lập trình
C# để viết mã và hệ quản trị cơ sở dữ liệu SQLServer 2005 để lưu trữ dữ liệu.
+ Để thực hiện các truy vấn cơ sở dữ liệu trong SQLServer để xử lý và gửi
phản hổi cho client em sử dụng cộng nghệ LINQ. LINQ (Language Integrated
Query) là một thư viện cung cấp cho ngôn ngữ lập trình C# và Visual Basi. Thư
viện này cung cấp khả năng truy vấn database ngay trên ngôn ngữ lập trình. Khi sử
dụng, LinQ sẽ mô phỏng lại cơ sở dữ liệu của bạn và lưu trong trương trình, sau đó
mỗi thực thể sẽ được xây dựng thành mỗi class như mô hình MVC, từ đó ta có thể
truy xuất database thông qua những class đó. LINQ có thể viết truy vấn cơ sở dữ
15


liệu cho rất nhiều các đối tượng, thực thể dữ liệu từ database. Công nghệ này giúp
giảm gánh nặng thao tác trên nhiều ngôn ngữ lập trình và cải thiện năng suất lập
trình. LINQ to SQL là một phiên bản hiện thực hóa của O/RM (object relational
mapping) có bên trong .NET Framework 3.5, nó cho phép mô hình hóa một cơ sở
dữ liệu dùng các lớp .NET. LINQ to SQL hỗ trợ đầy đủ transaction, view và các
stored procedure (SP). Nó cũng cung cấp một cách dễ dàng để thêm khả năng kiểm
tra tính hợp lệ của dữ liệu và các quy tắc vào trong mô hình dữ liệu của bạn.
1.3 Công nghệ phát triển ứng dụng android
1.3.1 Giới thiệu chung về hệ điều hành android
Android là một nền tảng mã nguồn mở toàn diện được thiết kế cho các thiết
bị di động. Nó là sự liên minh giữa ông lớn Google và Open Handset Alliance –
các tập đoàn sản xuất thiết bị cầm tay nổi tiếng như Intel, SamSung, Toshiba…

Với mục tiêu là tăng tốc việc đổi mới trong di động và cung cấp cho người tiêu
dung nhiều tiện ích phong phú, ít tốn kém. Android chính là công cụ để làm điều
đó.
Android là một nền tảng mã nguồn mở, toàn bộ ngăn xếp từ các module cấp
thấp của Linux đến tất cả các thư viện gốc và tử các ứng dụng khung cho đến các
ứng dụng hoàn chỉnh là hoàn toàn mở.
Trong lịch sử phát triển, ban đầu Android thuộc sở hữu của công ty Android
Inc. Sau đó được Google mua lại vào năm 2005 và bắt đầu xây dựng Android
Platform. Cuối năm 2007 liên minh Open HandsetAlliance được thành lập và được
công bố, Android chính thức trở thành mã nguồn mở. Phiên bản đầu tiên được phát
hành vào tháng 11 năm 2007.
1.3.2 Kiến trúc của android

16


Hình

1.3: Cấu trúc stack hệ thống Android

17


a, Tầng ứng dụng
Đâ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 như: gọi điện
thoại (phone), quản lý danh bạ (contacts), duyệt web (browser), nhắn tin (sms),
lịch làm việc (calendar), đọc email (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 (stock), các trò 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.
+ Khi mỗi ứng dụng được chạy, nó có phiên bản Virtual Machine được
dự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 chạy một lúc, tuy nhiên, với mỗi ứng dụ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ằm phân định quyền
hạ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.
b, 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.
Gồm các thành phần:
18


+ 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ác công cụ điều khiển 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 dựa vào hệ
thống định vị toàn cầu GPS và Google Maps.

+ Window 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ó email mới….).
c, Library
Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều
thành phần khác nhau trong hệ thống Android. Điều này được thể hiện thông qua
nền tảng ứng dụng Android. Một số các thư viện cơ bản gồm:
+ Hệ thống thư viện C : triển khai BSD-derived có nguồn gốc từ các hệ
thống thư viện chuẩn C (libc), được sử dụng chỉ bởi hệ điều hành.
+ Media Libraries – Dựa trên gói Video OpenCORE; các thư viện hỗ trợ
phát và ghi âm của các định dạng âm thanh và video phổ biến, cũng như các file
hình ảnh tĩnh, bao gồm MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG
+ Surface Manager – Quản lý việc truy xuất vào hệ thống hiển thị
+ LibWebCore - Đây là thành phần để xem nội dung trên web, được
sử dụng để xây dựng phần mềm duyệt web (Android Browse) cũng như để các
ứng dụng khác có thể nhúng vào. Nó cực kỳ mạnh, hỗ trợ được nhiều công
nghệ mạnh mẽ như HTML5, JavaScript, CSS, DOM, AJAX..
+ SGL – Các cơ sở công cụ đồ họa 2D.
+ 3D libraries - Thực hiện dựa trên OpenGL ES 1.0 APIs; Thư viện sử dụng
hoặc là tăng tốc phần cứng 3D (nếu có) hoặc bao gồm tối ưu hóa phần mềm 3D.
19


+ SQLite - Hệ cơ sở dữ liệu để các ứng dụng có thể sử dụng
d, Android Runtime
Phần này chứa các thư viện mà một chương trình viết bằng ngôn ngữ Java
có thể hoạt động. Phần này có 2 bộ phận tương tự như mô hình chạy Java trên
máy tính thường. Thứ nhất là các thư viện lõi (Core Library) , chứa các lớp như
JAVA IO, Collections, File Access. Thứ hai là một máy ảo java (Dalvik

Virtual Machine) . Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng
dụng Java của hệ điều hành android không được chạy bằng JRE của Sun
(nay là Oracle) (JVM) mà là chạy bằng máy ảo Dalvik do Google phát triển.
e, 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ạt
nhâ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ọi
hoạt động của điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp
thấp ở lớp này bao gồm quản lý bộ nhớ (memory management), giao tiếp với
phầ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
20


mạng vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyền
thô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.

1.3.3 Công nghệ phát triển ứng dụng android
Hiện nay, trên thực tế tồn tại ba công nghệ phát triển ứng dụng cho hệ điều
hành android gồm: sử dụng java thuần túy để phát triển ứng dụng, sử dụng C++ để
phát triển ứng dụng game, sử dụng công nghệ Cross platform hoặc Hybrid để viết
ứng dựng từ một ngôn ngữ có thể chạy trên nhiều nền tảng hệ điều hành khách
nhau.
+ Sử dụng java thuần để phát triển ứng dụng android là công nghệ viết ứng
dụng cơ bản và được google khuyên sử dụng. Vì đây là nền tảng cơ bản của
android, việc biên dịch để thực thi ứng dụng trên hệ điều hành android đã được
tích hợp và tương thích trong các phần mềm lập trình. Đa số các ứng dụng trên
android hiện nay đều được viết từ nền tảng này. Ngoài ra nền tảng này còn được
google và các nhà phát triển ứng dụng liên tục cập nhật những bộ thư viện mới hỗ
trợ người lập trình rất tốt. Những phần mềm sử dụng nền tảng công nghệ này như:
Android Studio, Elclipse,…
+ Sử dụng C++ để phát triển ứng dụng game là công nghệ tận dụng tốc độ
xử lý nhanh và tối ưu bộ nhớ của ngôn ngữ C++ để phát triển các ứng dụng game.
Với công nghệ này người lập trình sẽ viết mã trên C++ sau đó sử dụng công cụ
NDK để chuyển đổi mã sang java để chạy trên hệ điều hành android.
+ Sử dụng công nghệ Cross platform hoặc Hybrid là một cách tiếp cận mới
cho các ứng dụng trên di động. Với công nghệ này, ứng dụng chỉ cần viết một lần
có thể chạy được trên nhiều hệ điều hành khác nhau. Công nghệ này sử dụng một
số ngôn ngữ như js (HTML5), C#(unity,xamarin) …
Cùng với sự tìm hiểu và những hiểu biết của mình về các công nghệ phát
21


triển ứng dụng cho android thì em lựa chọn công nghệ sử dụng java thuần để phát
triển ứng dụng trên android của đề tài. Vì đây là nền tảng được hỗ trợ rất nhiều từ
google nhất là từ khi phần mềm lập trình Android Studio của hãng được phát hành.
Bên cạnh đó thư viện hỗ trợ được viết bởi các hãng cũng khá phong phú và tiện

dụng. Tài liệu hướng dẫn sử dụng và học tập trên nền tảng này cũng rất nhiều.

22


1.4 Công nghệ xây dựng web
Hiện nay trên thị trường có rất nhiều công nghệ để xây dựng một trang web
từ đơn giản đến phức tạp nhất có thể kể đến như: sử dụng html và css thuần, sử
dụng php thuần, MVC, wordpress, ….
ASP.NET MVC là công nghệ sau ASP.NET Web Form cho phép ta phát
triển ứng web gồm ba thành phần chính: model, view và controller. Với ưu điểm
nổi bật là nhẹ hơn (lighweigt), dễ kiểm thử giao diện và thừa hưởng các tính năng
có sẵn của ASP.NET đã khiến cho công nghệ này ngày càng phát triển (hiện nay
đã đến phiên bản MVC 5.2). Về bản chất thì đây là phần mở rộng của namespace
System.Web được đặt trong namespace System.Web.Mvc.
Mô hình MVC giúp bạn tạo được các ứng dụng phân tách rạch ròi các khía
cạnh (logic về nhập liệu, logic xử lý tác vụ và logic về giao diện). Mô hình MVC
chỉ ra mỗi loại logic kể trên nên được thiếp lập ở đâu trên ứng dụng. Logic giao
diện (UI logic) thuộc về views. Logic nhập liệu (input logic) thuộc về controller.
Và logic tác vụ (Business logic – là logic xử lý thông tin, mục đích chính của ứng
dụng) thuộc về model. Sự phân chia này giúp bạn giảm bớt được sự phức tạp của
ứng dụng và chỉ tập trung vào mỗi khía cạnh cần được cài đặt ở mỗi thời điểm.
Mô hình MVC giúp thực hiện dự án một cách dể dàng và nhanh chóng,
trong lúc HTML designer thiết kế giao diện ở tần view thì hai lập trình viên còn lại
sẻ đảm nhận logic ở tầng controller và các tác vụ ở tầng model.
1.5 Công nghệ giao tiếp giữa ứng dụng android và web server
Đề tài thực hiện của em gồm hai thành phần chính là server và client trên
android vì vậy mà vấn đề làm sao để ứng dụng android có thể hiểu và giao tiếp qua
lại với web server là một trong những vẫn đề then chốt của đề tài. Công nghệ
thông dụng, phổ biến và dễ dàng để kết nối truyền thông giữa client và server là

HTTP (Hypertext Transfer Protocol). Đây là giao thức chạy trên nền web dùng để
truyền tải nội dung giữa web server và client. Cơ chế hoạt động chính của HTTP là
23


Requet và Response. Client gửi Request đến cho server, server xử lý và trả về
Response cho client. Giao thức này sẽ đảm bảo vấn đề kết nối của ứng dụng client
android với web server. Vấn đề làm sao để client và server hiểu nhau thì hiện nay
có một số công nghệ hỗ trợ vấn đề này như: JSON, SOAP, WSDL,
+ JSON: JSON (JavaScript Object Noattion) là một định dạng hoán vị dữ
liệu nhanh. Chúng dễ dàng cho chúng ta đọc và viết. Dễ dàng cho thiết bị phân tích
và phát sinh. Chúng là cơ sở dựa trên tập hợp của Ngôn Ngữ Lập Trình JavaScript,
tiêu chuẩn ECMA-262 phiên bản 3 - tháng 12 năm 1999. JSON là một định dạng
kiểu text mà hoàn toàn độc lập với các ngôn ngữ hoàn chỉnh, thuộc họ hàng với
các ngôn ngữ họ hàng C, gồm có C, C++, C#, Java, JavaScript, Perl, Python, và
nhiều ngôn ngữ khác. Những đặc tính đó đã tạo nên JSON một ngôn ngữ hoán vị
dữ liệu lý tưởng. JSON có định dạng đơn giản, dễ dàng sử dụng và truy vấn hơn
XML rất nhiều nên tính ứng dụng của nó hiện nay rất là phổ biến, theo tôi thì trong
tương lai tới trong các ứng dụng sẽ sử dụng nó là đa số. JSON được xây dựng trên
2 cấu trúc:
Là tập hợp của các cặp tên và giá trị name-value. Trong những ngôn ngữ
khác nhau, đây được nhận thấy như là một đối tượng (object), bản ghi (record), cấu
trúc (struct), từ điển (dictionary), bảng băm (hash table), danh sách khoá (keyed
list), hay mảng liên hợp.
Là một tập hợp các giá trị đã được sắp xếp. Trong hầu hết các ngôn ngữ, thì
được nhận thấy như là một mảng, véc tơ, tập hợp hay là một dãy sequence.
Đây là một cấu trúc dữ liệu phổ dụng. Hầu như tất cả các ngôn ngữ lập trình
hiện đại đều hổ trợ chúng trong một hình thức nào đó.
Ví dụ:
{

"username" : "trieudola",
"email" : "",
"website" : "trieudola.tk",
24


"title" : "Chia sẻ để cuộc sống tốt đẹp hơn"
}
+ SOAP: SOAP (Simple Object Access Protocol) là một tiêu chuẩn của
W3C, là giao thức sử dụng XML để định nghĩa dữ liệu dạng thuần văn bản (plain
text) thông qua HTTP. SOAP là cách mà Web Service sử dụng để truyền tải dữ
liệu. Vì dựa trên XML nên SOAP là một giao thức không phụ thuộc platform cũng
như bất kì ngôn ngữ lập trình nào. Một thông điệp SOAP được chia thành hai phần
là header và body. Phần header chỉ ra địa chỉ Web Service, host, Content-Type,
Content-Length tương tự như một thông điệp HTTP. Phần body chứa nội dung của
thông điện SOAP.
SOAP cung cấp một cơ chế đơn giản và gọn nhẹ cho việc trao đổi thông tin
có cấu trúc và định dạng giữa các thành phần trong một môi trường phân tán sử
dụng XML. SOAP được thiết kế dựa trên những chuẩn nhằm giảm chi phí tích hợp
các hệ thống phân tán xây dựng trên nhiều nền tảng khác nhau ở mức càng thấp
càng tốt.
Ví dụ:

xmlns:xsd=" />
xmlns:xsi=" />xmlns=" /><string>CS001 :Tùng Dương:5</string>
<string>CS002 :Cẩm Ly:4</string>
<string>CS003 :Miu Lê:5</string>
</ArrayOfString>
+ WSDL: WSDL (Web Services Description Language) là ngôn ngữ được

sử dụng để mô tả đầy đủ về Web Service theo chuẩn XML như các phương thức,
kiểu dữ liệu,… dựa trên XML schema.
Ví dụ: Một đoạn định nghĩa kiểu dữ liệu của WSDL cho phương thức
HelloWorld()
25


×