Tải bản đầy đủ (.doc) (93 trang)

nghiên cứu và phát triển game trên trình duyệt web với silverlight

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 (3 MB, 93 trang )

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
HẦU NGUYỄN THÀNH NAM – TRẦN DUY QUANG
NGHIÊN CỨU VÀ PHÁT TRIỂN GAME
TRÊN TRÌNH DUYỆT WEB
VỚI SILVERLIGHT
KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT
TP.HCM, 2009
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
BỘ MÔN CÔNG NGHỆ PHẦN MỀM
HẦU NGUYỄN THÀNH NAM 0512222
TRẦN DUY QUANG 0512275
NGHIÊN CỨU VÀ PHÁT TRIỂN GAME
TRÊN TRÌNH DUYỆT WEB
VỚI SILVERLIGHT
KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT
GIÁO VIÊN HƯỚNG DẪN
TS. TRẦN MINH TRIẾT
NIÊN KHÓA 2005 – 2009
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………


………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
Khóa luận đáp ứng yêu cầu của LV cử nhân tin học.
Tp HCM, ngày…… tháng…… năm 2009
Giáo viên hướng dẫn
i
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
Khóa luận đáp ứng yêu cầu của LV cử nhân tin học.
Tp HCM, ngày…… tháng…… năm 2009
Giáo viên phản biện
ii

LỜI CÁM ƠN
Chúng em xin chân thành cảm ơn Khoa Công Nghệ Thông Tin, trường Đại Học
Khoa Học Tự Nhiên Tp HCM đã tạo điều kiện tốt cho chúng em thực hiện đề tài tốt
nghiệp này.
Chúng em xin chân thành cảm ơn Thầy Trần Minh Triết, người đã tận tình hướng
dẫn, chỉ bảo chúng em trong suốt thời gian thực hiện đề tài.
Chúng em cũng xin gửi lời cảm ơn sâu sắc đến quý Thầy Cô trong Khoa đã tận tình
giảng dạy, trang bị cho chúng em những kiến thức quí báu trong những năm học
vừa qua.
Chúng em xin gửi lòng biết ơn sâu sắc đến Ba, Mẹ, các anh chị và bạn bè đã ủng
hộ, giúp đỡ và động viên chúng em trong những lúc khó khăn cũng như trong suốt
thời gian học tập và nghiên cứu.
Mặc dù chúng em đã cố gắng hoàn thành luận văn trong phạm vi và khả năng cho
phép, nhưng chắc chắn sẽ không tránh khỏi những thiếu sót, kính mong sự cảm
thông và tận tình chỉ bảo của quý Thầy Cô và các bạn.
Nhóm thực hiện
Hầu Nguyễn Thành Nam & Trần Duy Quang
iii
ĐỀ CƯƠNG CHI TIẾT
Tên đề tài: Nghiên cứu và phát triển game trên trình duyệt web với Silverlight
Giáo viên hướng dẫn: TS. Trần Minh Triết
Thời gian thực hiện: từ ngày 02/01/2009 đến ngày 07/07/2009
Sinh viên thực hiện:
Hầu Nguyễn Thành Nam (0512222) – Trần Duy Quang (0512275)
Loại đề tài: Tìm hiểu công nghệ và xây dựng ứng dụng
Nội dung đề tài:
Đây là đề tài thuộc về hướng tìm hiểu công nghệ và phát triển ứng dụng. Đề tài
bao gồm các phần sau:
Khảo sát các đặc điểm thường gặp của 1 số game online trên nền web, như
Ikariam, Travian, Evony, Second World, Battle, TribalWars…

Nghiên cứu các kĩ thuật phát triển ứng dụng web hỗ trợ multimedia và có tính
tương tác cao với công nghệ Silverlight.
Đề xuất các khái niệm và quy luật của một họ game online thuộc thể loại xây
dựng và chiến thuật trên nền web. Phát triển một game thuộc họ game đã đề
xuất với công nghệ silverlight. Game được xây dựng có khả năng tùy biến để
bổ sung/thay đổi các thông tin trong trò chơi (ví dụ như công trình, quân lính,
kỹ thuật…) và các tài nguyên hình ảnh tương ứng.
Xây dựng công cụ (game editor) thực hiện việc bổ sung / thay đổi các thông tin
trong trò chơi (ví dụ công trình, quân lính, kỹ thuật…) và các tài nguyên hình
ảnh tương ứng, ngoài ra với công cụ này có thể cho phép tạo ra các game có
cùng phong cách chơi, nguyên tắc xử lý, nhưng các thông tin trong trò chơi và
tài nguyên hình ảnh được thay đổi.
Kế hoạch thực hiện:
- 02/01/2009 đến 14/1/2009: Tìm hiểu về Rich Internet Application và công
iv
nghệ Silverlight. Tìm hiểu các game trên nền web hiện có.
- 15/1/2009 đến 1/2/2009: Phân tích các yêu cầu, vấn đề, giải pháp khi xây
dựng game trên nền web.
- 2/2/2009 đến 20/2/2009: Tìm hiểu và hoàn tất các yêu cầu về mặt kĩ thuật.
- 21/2/2009 đến 12/3/2009: Xây dựng khung chương trình cho game chơi trên
nền web.
- 13/3/2009 đến 25/3/2009: Hoàn thành các chức năng chính của chương trình.
- 26/3/2009 đến 10/4/2009: Nâng cấp, cải thiện hiệu suất tốc độ xử lý
- 11/4/2009 đến 6/5/2009: Xây dựng khung chương trình cho công cụ hiệu
chỉnh và phát sinh game.
- 7/5/2009 đến 22/5/2009: Hoàn thành các chức năng của công cụ phát sinh
game.
- 23/5/2009 đến 8/6/2009: Nâng cấp giao diện và tính tiện dụng công cụ.
- 9/6/2009 đến 30/6/2009: Hoàn thành toàn bộ chương trình dựa trên qui trình
và giải pháp đã xây dựng.

Xác nhận của GVHD Ngày 06 tháng 07 năm 2009
SV Thực hiện
v
MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN 1
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN 2
LỜI CÁM ƠN 3
ĐỀ CƯƠNG CHI TIẾT 4
MỤC LỤC 6
DANH MỤC HÌNH 10
Mở đầu 1
1.1. Tổng quan 1
1.1.1. Tổng quan về quá trình phát triển của các thế hệ video game 1
1.1.2. Tổng quan về game trên trình duyệt 2
1.2. Rich Internet Application - RIA 3
1.2.1. Tổng quan về RIA 3
1.2.2. RIA và các giải pháp 6
1.3. Mục tiêu của luận văn 12
1.4. Nội dung báo cáo khóa luận 14
Một số đặc điểm chính của game trên trình duyệt 15
1.5. Tổng quan 15
1.6. Phân tích các đặc điểm chung của game trên trình duyệt 15
1.6.1. Dựa trên văn bản 15
1.6.2. Tất cả xử lý hầu hết đều được thực hiện tại server 17
vi
1.6.3. Hạn chế xử lý tất cả các hành động đồng thời 18
1.6.4. Game được hỗ trợ đa ngôn ngữ 20
1.6.5. Game được xây dựng với cấu trúc rất linh động 20
1.7. Quy luật chung của dòng game thể loại xây dựng chiến thuật trên trình duyệt
web 21

1.7.1. Thế giới ảo 21
1.7.2. Khu xây dựng 22
1.7.3. Tài nguyên 23
1.7.4. Quân lính 24
1.7.5. Nâng cấp khả năng cho các đơn vị quân lính 25
1.7.6. Nâng cao năng suất khai thác các loại tài nguyên 26
1.7.7. Quan hệ ngoại giao và hệ thống liên minh 27
1.7.8. Vận chuyển hàng hóa và giao thương 28
1.7.9. Mở rộng lãnh thổ 28
Web game xây dựng MyIka 30
1.8. Thế giới game MyIka 30
1.9. Các loại tài nguyên 31
1.10. Thành phố 32
1.11. Các loại công trình 33
1.11.1. Loại công trình được định nghĩa sẵn 33
1.11.2. Loại công trình tạo ra tài nguyên 34
1.11.3. Loại công trình tạo ra các đơn vị lính 34
1.12. Quân lính 34
vii
1.13. Công nghệ 36
1.14. Liên minh và thuộc địa 36
1.15. Tin nhắn 37
1.16. Tấn công 37
Những vấn đề xử lý game tại client 38
1.17. Xử lý đồ họa và tương tác giao diện 38
1.17.1. Chuyển đổi qua lại giữa các màn hình giao diện trong game 38
1.17.2. Hiệu ứng chuyển trang trong ứng dụng nhiều trang trong game 41
1.17.3. Hỗ trợ giao diện đa ngôn ngữ trong game 43
1.17.4. Hiệu ứng xoay vòng dạng băng chuyền trong game 44
1.17.5. Các hiệu ứng với các đối tượng riêng lẻ trong game 45

1.18. Các vấn đề quá trình xử lý trong game tại client 49
1.18.1. Xây dựng game có cấu trúc linh động 49
1.18.2. Bảo mật thông tin tài khoản người dùng trong game 50
1.18.3. Tối ưu hóa trong xử lý hỗ trợ đa ngôn ngữ trong game 50
1.18.4. Tối ưu hóa trong quá trình nạp hình ảnh từ server 52
1.18.5. Truyền nhận dữ liệu giữa client và server 52
1.18.6. Lưu giữ trạng thái chương trình tại client 54
1.19. Âm thanh trong game 55
Một số vấn đề xử lý trong game tại Server 57
1.20. Một số vấn đề về xử lí 57
1.20.1. Serialize đối tượng trong WCF service 57
viii
1.20.2. Phương thức mở rộng cho các đối tượng dựng sẵn 58
1.21. Cách tổ chức dữ liệu 59
1.22. Mô hình sự kiện tại server 60
1.22.1. Mô hình xử lí sự kiện 60
1.22.2. Lưu trữ sự kiện trong cơ sở dữ liệu 61
1.22.3. Chương trình quản lí các bộ giám sát sự kiện 63
Kiến trúc hệ thống 64
1.23. Kiến trúc client 64
1.24. Kiến trúc server 64
1.25. Sơ đồ phối hợp client và server 66
1.26. Tổ chức dữ liệu 66
1.26.1. Cơ sở dữ liệu 66
1.26.2. Cấu hình và các prototype 70
1.27. GameEditor 73
Kết luận 75
1.28. Các kết quả đạt được 75
1.29. Hướng phát triển của đề tài 75
ix

DANH MỤC HÌNH
Hình 1.1. Cơ chế làm việc đồng bộ và bất đồng bộ 4
Hình 1.2. Mô hình xử lí AJAX 5
Hình 1.3. Nền tảng công nghệ RIA của Adobe 7
Hình 1.4. Sản phảm được xây dựng với Adobe AIR 8
Hình 1.5. Nền tảng công nghệ RIA của Java FX 9
Hình 1.6. Nền tảng công nghệ RIA của Silverlight 10
Hình 1.7. Kiến trúc chính của Silverlight 2 11
Hình 2.8. Giao diện chính của game Evony 16
Hình 2.9. Trạng thái chiến đấu trong game duels 16
Hình 2.10. Mô hình chuyển giao dữ liệu từ client sang server 17
Hình 2.11. Xây dựng trong game Tribalwars 19
Hình 2.12. Ví trị các thành phố thay đổi thông qua map mới 21
Hình 2.13. Bản đồ thế giới trong game Second Home 22
Hình 2.14. Vùng đất để xây dựng các loại nhà trong game travian 22
Hình 2.15. Hình ảnh thể hiện các mỏ tài nguyên của 1 tài khoản 23
Hình 2.16. Giao diện tạo lính bộ binh trong game Ikariam 24
Hình 2.17. Công trình kiểm lâm giúp tăng năng suất gỗ sau mỗi lần nâng cấp 27
Hình 2.18. Quan hệ ngoại giao 27
Hình 3.19. Hình ảnh trung tâm xây dựng với các khu xây dựng 30
Hình 3.20. Hình ành giao diện của 1 citytrong game 32
Hình 4.21 : Các loại theming shiny control 47
Hình 4.22 Hiệu ứng ảnh trong silverlight FX 48
x
Hình 5.23 : Mô hình xử lý Event 60
Hình 6.24 Kiến trúc client 64
Hình 6.25 Thành phần chứa các trang web 65
Hình 6.26 Thành phần quản lí các sự kiện 65
Hình 6.27 : Sơ đồ phối hợp client và server 66
Hình 6.28. Giao diện chính của game editor 73

Hình 6.29. Màn hình editor cho unit 74
xi
DANH MỤC BẢNG
Bảng 1-1. Danh sách các phiên bản ra đời của công nghệ silverlight 11
Bảng 1-2. Bảng so sánh các giải pháp RIA 12
Bảng 2-3. Bảng thể hiện sự phụ thuộc vào năng suất và số dân đưa vào các mỏ 24
Bảng 3-4. Bảng các tài nguyên và nhà khai thác tương ứng 31
Bảng 3-5 Bảng mô tả khả năng của bộ binh Người Ném Đá 35
Bảng 3-6 Bảng mô tà khả năng của thủy quân Ram-Ship 35
Bảng 3-7 Danh sách các loại lính 36
xii
TÓM TẮT KHÓA LUẬN
Sự bùng nổ của khoa học máy tính đã dẫn đến sự phát triển vượt bậc của game chơi
trên máy tính cả về số lượng lẫn chất lượng. Khi mạng máy tính ra đời đã làm xuất
hiện một thể loại game mới là game online. Có hai cách để chơi game online: tải về
bản cài đặt từ nhà sản xuất hoặc chơi thông qua trình duyệt web. Ưu điểm của game
chơi thông qua trình duyệt web là có thể được chơi ở bất cứ đâu miễn là có trình
duyệt và kết nối internet. Vì vậy, game chơi thông qua trình duyệt web đang trở nên
rất phổ biến hiện nay.
Nội dung của đề tài tập trung vào việc nghiên cứu và phát triển game trên trình
duyệt web với Silverlight. Silverlight là một công nghệ mới được Microsoft giới
thiệu vào năm 2007 cho phép xây dựng các ứng dụng chạy trên trình duyệt hỗ trợ
multimedia và tính tương tác cao. Sử dụng Silverlight để phát triển game, ta có thể
mang đến cho người dùng những trải nghiệm mới thú vị hơn so với khi chơi game
trên nền web cũ như các hiệu ứng về âm thanh, hoạt hình… Sau khi đã tìm hiểu các
vấn đề về kĩ thuật và giải pháp để phát triển game trên nền web, chúng em sẽ xây
dựng một game ứng dụng công nghệ Silverlight sau đó phát triển một công cụ cho
phép hiệu chỉnh dựa trên game đã có sẵn và từ đó phát sinh ra một game mới với
cùng phong cách và quy luật chơi.
Nội dung của khóa luận bao gồm:

Chương 1: Mở đầu
Chương 2: Game xây dựng, chiến thuật và đặc điểm của game trên trình duyệt
Chương 3: Mô tả game được phát triển MyIka
Chương 4: Các vấn đề xử lí tại client
Chương 5: Các vấn đề xử lí tại server
Chương 6: Kiến trúc hệ thống
Chương 7: Kết luận & hướng phát triển
xiii
Mở đầu

Nội dung của chương 1 trình bày tổng quan về quá trình phát triển
game nói chung và sự phát triển của game trên trình duyệt, qua đó giới
thiệu về công nghệ RIA được sử dụng để xây dựng game đồng thời nêu
lên mục tiêu, nội dung và ý nghĩa của đề tài.
1.1. Tổng quan
1.1.1. Tổng quan về quá trình phát triển của các thế hệ video game
Sự bùng nổ của khoa học máy tính dẫn đến sự phát triển vượt bậc của video game
như hiện nay. Video game phát triển qua 7 thời kỳ từ năm 1971 đến nay, tuy nhiên
đã manh nha phát triển từ thập niên 1950. Những năm 1970 của giai đoạn đầu phát
triển, video game được ứng dụng trên các hệ thống máy giả lập, hình ảnh thể hiện
chỉ dưới dạng văn bản, chưa có ứng dụng gì về đồ họa, cách thức chơi hầu hết các
game đều là theo lượt. Mãi đến những năm 1980, đây là thời kỳ phát triển mạnh của
thế hệ máy tính cùng với sự xuất hiện của các hãng máy tính nổi tiếng như Apple,
IBM…. Video game mới thực sự phát triển về khả năng đồ họa, thể loại, một số
game dưới dạng nhập vai đã xuất hiện. Cũng trong thời gian này game online cũng
bắt đầu hình thành.
Game online được biết nhiều thông qua cái tên MMORPG (Massively multiplayer
online role-playing game), là loại game nhập vai, với 1 số lượng lớn người dùng
cùng tương tác với nhau trong 1 thế giới ảo của game, có thể nói rằng “1 số lượng
lớn các máy client tương tác với nhau thông qua 1 máy chủ server”, tuy nhiên vẫn

còn hạn chế về khả năng tương tác và giao diện, do chủ yếu là văn bản (text-based)
trước năm 1987. Trong thời kì này các thiết bị game cầm tay cũng đã bắt đầu xuất
hiện với dòng máy của Nintendo.
1
Những năm 1990 là thời kỳ phát triển mạnh mẽ của video game trên máy tính.
Hàng loạt các game kinh điển ra đời như:
- Thể loại Real Time Stragegy (RTS): The Sims, Age of Empires, StarCraft,
Warcraft…,
- Thể loại Third Person Shooter (TPS): Grand Theft Auto III, Tom Clancy's
Splinter Cell, Enter the Matrix, Hitman…
Riêng về các game online có sự xuất hiện của UltimaOnline và EverQuest. Trong
thời gian này bắt đầu xuất hiện các game trên trình duyệt (Browser game) đơn giản
được plug in vào trình duyệt viết bằng Adobe Flash hay Java.
1.1.2. Tổng quan về game trên trình duyệt
Game trên trình duyệt là video game được chơi trực tiếp trên trình duyệt web. Khác
với các loại video game trên máy tính khác là nó không cần cài đặt phần mềm của
game trước khi chơi, đó là những loại game dựa trên các kĩ thuật client-side như
javascript hay các plugin vào trình duyệt như java hay Adobe Flash. Tuy vậy cũng
có một số game có dùng sử dụng các ngôn ngữ script để xử lý tại server.
Javascript – based game: Với sự phát triển của kĩ thuật Document Model
Object Level 2 vào năm 1990, dẫn đến sự phát triển các loại game chạy trên trình
duyệt mà không cần đến phần mềm thứ 3 plug-in vào. Những game này là sự kết
hợp giữa CSS, JavaScript, DOM HTML và DHTML. DHTML có thể tạo ra các
hiệu ứng hoạt hình (animation) trông như trong các game hành động. Sau này do có
tương tác nhiều giữa client và server nên kĩ thuật Ajax cũng được kết hợp để phát
triển các game loại hình này.
Plugin – based game: là các game cần 1 phần mềm thứ 3 plugin vào để có thể
chơi được. Ngoài các plugin nêu trên hiện nay còn có nhiều loại khác như:
Shockware, Unity và Silverlight, nên vấn đề đặt ra là sự tương thích trên trình
duyệt với các plug in này.

Server – side game: Hầu hết các game trên trình duyệt hiện nay đều dưới
2
dạng hình thức game này. Tất cả tính toán và xử lý trên server được thực hiện dưới
các ngôn ngữ script như: PHP, ASP, Ruby, Perl, Python và Java. Sau khi tính toán
server chỉ việc gửi kết quả trả về cho client dưới dạng HTML.
Đa số tất cả các game trên trình duyệt đều được viết trên nền tảng văn bản là chủ
yếu. Các game đơn thuần được tính toán trả về cho người chơi đa số là chữ, rất ít có
tương tác nhiều với game, giao diện rất đơn sơ, nên khi nhắc đến game trên trình
duyệt là ta thường nghĩ đến text-based game. Và đây cũng là 1 trong những mục
tiêu của luận văn này mà chúng em muốn làm cho game trên trình duyệt trở nên
sinh động hơn dưới sự hỗ trợ của công nghệ RIA tại Client và mọi xử lý đa phần
đều thông qua Server.
1.2. Rich Internet Application - RIA
1.2.1. Tổng quan về RIA
Đặt vấn đề
Như chúng ta đã biết, mô hình ứng dụng dựa trên web truyền thống theo kiến trúc
máy khách - chủ (client-server) với trình ứng dụng chạy trên máy tính của người
dùng thì mọi tác vụ xử lý thực hiện trên server, còn client chỉ có vai trò hiển thị nội
dung tĩnh (HTML). Hạn chế lớn nhất của kiến trúc này là mọi tương tác với ứng
dụng đều phải gởi yêu cầu dữ liệu đến server, server xử lý và phản hồi, phía client
nạp lại trang web với thông tin cập nhật – chu trình đồng bộ này làm cho các ứng
dụng web tương tác với người dùng chậm hơn nhiều so với các ứng dụng desktop
được cài đặt và chạy trên máy tính người dùng.
Giải pháp
Vấn đề đặt ra là cần chia sẻ quá trình xử lý trên server, giúp đồng bộ tương tác
client và server ngày càng nhanh hơn và đạt được đến ngưỡng xử lý của 1 ứng
dụng trên desktop.
3
“Java applet” là bước đi đầu tiên nhằm cải thiện tốc độ đáp ứng của các ứng dụng
web. Applet có khả năng thực hiện nhiều tác vụ phức tạp phía client nhưng ứng

dụng Java (phía client) chạy chậm và làm việc không ổn định trên các hệ điều hành
khác nhau.
Tiếp theo, Netscape và Microsoft đưa ra “plug-in” và “ActiveX Control” mở rộng
trình duyệt web, cho phép bổ sung nhiều tính năng phía client. Thế nhưng, người
dùng tỏ ra do dự trong việc cài đặt các phần bổ sung này (bảo mật là một trong
nhiều lý do), và đến nay, ngoại trừ Flash Player và Java Runtime Environment
(JRE), không có thành phần bổ sung trình duyệt được cài đặt rộng rãi.
Sau đó, AJAX (Asynchronous JavaScript And XML) xuất hiện, cho phép việc trao
đổi giữa client và server diễn ra không theo quy trình đồng bộ thông thường mà là
làm việc theo cơ chế bất đồng bộ, tương tác giữa người dùng và ứng dụng web
không bị ngắt quãng bởi việc nạp lại trang web mỗi khi yêu cầu server xử lý, làm
giảm thiểu dữ liệu truyền tải qua lại trên đường truyền và gây khó chịu đối với
người sử dụng.
Hình 1.1. Cơ chế làm việc đồng bộ và bất đồng bộ
4
(Nguồn )
AJAX dựa trên những nền tảng sẵn có
(JavaScript, Document Object Model
Level 2, Cascading Style Sheets
(CSS) ) được hầu hết trình duyệt hỗ
trợ nên không yêu cầu cài đặt thêm
bất cứ gì ở client và các nhà phát triển
đều có thể dễ dàng vận dụng, AJAX
đã nhanh chóng thống lĩnh thế giới
Web 2.0 – thế hệ web tiện lợi hơn, có
tính tương tác cao hơn thế hệ web
trước đó.
Hình 1.2. Mô hình xử lí AJAX
(Nguồn )
AJAX đem đến cho người dùng những trải nghiệm mới mẻ về ứng dụng web, ít yêu

cầu nhấn chuột, đáp ứng nhanh hơn, có những hiệu ứng giao diện giống như ứng
dụng desktop kể cả thao tác “kéo thả”…. Những ứng dụng như Google Maps và
GMail tạo suy nghĩ có thể làm được mọi việc như những gì đã làm được trên ứng
dụng desktop. Sự thành công của những site như YouTube và Flickr làm cho người
dùng thêm kỳ vọng về nội dung đa phương tiện trên web. Một loạt công nghệ web
mới đã được đưa ra đáp ứng mong đợi này, hầu hết đều có thể làm việc với AJAX
hay như AJAX. Bên cạnh đó, AJAX cũng làm việc tốt với hình ảnh và video - mảng
nội dung đang ngày càng thịnh hành và được xem là xu hướng tương lai của web
nhưng lại là mảng không chuyên sâu của AJAX. Các công nghệ mới hứa hẹn tạo
nên thế hệ ứng dụng web có thể cạnh tranh với các ứng dụng desktop, cả về tính
năng lẫn giao diện người dùng và có khả năng chạy trên bất kỳ hệ thống nào.
Tuy nhiên với những ưu điểm nói trên thì Ajax cũng có những khuyết điểm riêng nó
như các vấn đề về bảo mật, bookmark và thích nghi với các trình duyệt.
 Dẫn đến sự ra đời của Rich Internet Application (RIA)
5
Các ứng dụng RIA mạnh cả về tính năng và giao diện người dùng. RIA được
Macromedia giới thiệu lần đầu tiên trong một tài liệu vào tháng 3/2002. Tuy ra đời
trước cả Ajax nhưng mãi đến gần đây mới được chú ý nhờ những cái tên nổi bật là
Flex và AIR của Adobe, Silverlight của Microsoft, JavaFX của Sun Microsystems.
1.2.2. RIA và các giải pháp
Định nghĩa
RIA là từ viết tắt của Rich Internet Application hay Rich Interaction Application
(theo định nghĩa của Microsoft). RIA là những ứng dụng web mang đặc tính và
chức năng của những ứng dụng desktop truyền thống. Các xử lý giao diện người
dùng sẽ được thực hiện tại máy client trong khi các xử lý liên quan đến dữ liệu sẽ
được thực thi trên server.
Các giải pháp
• Giải pháp Flash, Flex Và Air của Adobe
Adobe Systems là hãng lớn nhất và trưởng thành nhất trong lĩnh vực RIA. Mua lại
Macromedia cách đây 3 năm (tháng 4/2005), Adobe đi từ Shockwave đến Flash,

Flex và AIR (tên gọi ban đầu là Apollo).
Flash là công nghệ thể hiện nổi tiếng về khả năng xử lý đồ họa vector và ảnh động,
cho phép tạo nội dung đa phương tiện tương tác với người dùng thông qua
ActionScript, hầu hết các trang web hiện này đều sử dụng flash. Flex dựa trên
Flash, dùng ngôn ngữ khai báo dựa trên XML đó là MXML kết hợp với
ActionScript, cung cấp sự tách biệt giữa phần giao diện người dùng và phần luận lý
ứng dụng rõ ràng hơn so với Flash. Ứng dụng Flex được biên dịch thành file.swf và
chạy với Flash Player - chạy trên bất kỳ hệ thống nào hỗ trợ Flash, có khả năng
chạy trên cả thiết bị di động (với Flash Lite).
6
Hình 1.3. Nền tảng công nghệ RIA của Adobe
(Nguồn: )
Flash là công nghệ thể hiện nổi tiếng về khả năng xử lý đồ họa vector và ảnh động,
cho phép tạo nội dung đa phương tiện tương tác với người dùng thông qua
ActionScript, hầu hết các trang web hiện này đều sử dụng flash. Flex dựa trên
Flash, dùng ngôn ngữ khai báo dựa trên XML đó là MXML kết hợp với
ActionScript, cung cấp sự tách biệt giữa phần giao diện người dùng và phần luận lý
ứng dụng rõ ràng hơn so với Flash. Ứng dụng Flex được biên dịch thành file.swf và
chạy với Flash Player - chạy trên bất kỳ hệ thống nào hỗ trợ Flash, có khả năng
chạy trên cả thiết bị di động (với Flash Lite).
Ứng dụng Flash/Flex cũng có thể chạy trên desktop với thư viện thực thi AIR.
AIR (Adobe Intergrated Runtime) là công nghệ triển khai để chạy các ứng
dụng Flash/Flex và cả AJAX. Là một phần trong bộ công cụ phát triển, Adobe cũng
đưa ra AIR SDK. AIR SDK có đầy đủ các công cụ cần thiết.
để tạo nên những ứng dụng AIR. AIR chạy cả trên Windows và Mac (phiên bản
chạy trên Linux đang trong quá trình thử nghiệm).
7
Hình 1.4. Sản phảm được xây dựng với Adobe AIR
(Nguồn: )
• Giải Pháp Java FX của Sun

Với các công cụ như AWT, Swing, và Eclipse RCP. Gần đây, Javascript sử dụng
XMLHttpRequest để thay thế applets, Iframe. JavaFX (tên mã F3) được xây dựng
dựa trên nền tảng công nghệ Java, bao gồm 2 phần là JavaFX Script và Java
Mobile. JavaFX Script là ngôn ngữ khai báo không dựa trên XML giúp bớt đi gánh
nặng xây dựng giao diện người dùng vốn trước đây yêu cầu khá nhiều mã lệnh
Swing. JavaFX Script phải biên dịch thành Java byte code để chạy trên máy ảo Java
JVM. Trong khi đó JavaFX Mobile là hệ điều hành được thiết kế để triển khai ứng
dụng RIA trên các thiết bị di động.
Hỗ trợ về mặt phát triển của JavaFX khá khiêm tốn, chủ yếu gồm thư viện
OpenJFX cho NetBeans, cung cấp hỗ trợ cơ bản cho việc tạo và biên dịch mã lệnh
JavaFX. NetBeans hiện là môi trường phát triển tích hợp IDE duy nhất hỗ trợ
JavaFX. Có hai công cụ của hãng thứ ba hỗ trợ phần hiển thị trong JavaFX. Thứ
nhất là công cụ soạn thảo JavaFXPad cho phép viết mã lệnh JavaFX và nhìn thấy
kết quả hiển thị trong một cửa sổ xem trước, nhưng không cung cấp bất kỳ hỗ trợ
kéo-thả nào cho các phần tử trên màn hình. Thứ hai là công cụ đồ hoạ JFXBuilder
của ReportMill cung cấp giao diện kéo-thả cho việc xây dựng giao diện người dùng.
Là ngôn ngữ khai báo không dựa trên xml, mã lệnh JavaFX giống như sự trộn lẫn
giữa Java và CSS.
8
Hình 1.5. Nền tảng công nghệ RIA của Java FX
(Nguồn www.canoo.com/blog/index.php?s=pownce)
Mã lệnh JavaFX nhất thiết phải biên dịch thành Java byte code và chạy trên máy ảo
Java (JVM) như các Java applet thông thường, không yêu cầu thư viện bổ sung
trình duyệt nào khác. Miễn là hệ thống có JVM là có thể chạy JavaFX. Mac OS có
tích hợp sẵn JVM, vì vậy không cần tải về thêm bất kỳ thứ gì để chạy JavaFX trên
Mac. Trên các hệ thống Windows, cả Firefox và IE đều hiển thị thông báo nếu chưa
cài JVM. Firefox sau đó đưa ra một thư viện để giúp cài đặt JVM, còn IE chuyển
hướng đến một trang web có các hướng dẫn để người dùng tải về và cài đặt JVM
thủ công.
• Giải pháp WCF của Microsoft

Windows Presentation Foundation (WPF) sử dụng.NET framework 3.0 và 3.5.
WPF là một tập hợp các công cụ để xây dựng các ứng dụng RIA trên nền Windows.
WPF sử dụng ngôn ngữ đánh dấu XAML để xây dựng giao diện và ngôn ngữ lập
trình.NET.
Silverlight là tập con của WPF và cũng sử dụng XAML (eXtensible Application
Markup Language). XAML là ngôn ngữ khai báo dựa trên xml để định nghĩa giao
diện người dùng. XAML bao gồm đồ hoạ vector, hiệu ứng động và tương tác dữ
liệu trong giao diện. Các tác vụ xử lý phức tạp được tách khỏi định nghĩa giao diện
9
người dùng và có thể viết với mã lệnh được quản lý (managed code) bằng các ngôn
ngữ.NET, JavaScript, Python và Ruby.
Silverlight yêu cầu cài đặt thư viện bổ sung trình duyệt để thực thi phía client. Hiện
tại ứng dụng Silverlight có thể chạy với trình duyệt Internet Explorer và Firefox trên
Windows, Safari và Firefox trên Mac OS X, chưa hỗ trợ trình duyệt nào trên Linux
tuy nhiên hiện đã có dự án nguồn mở Moonlight cho phép chạy ứng dụng
Silverlight trên Linux. Hỗ trợ cho thiết bị di động, Microsoft có Silverlight for
Mobile chạy trên hệ điều hành Nokia S60 và Windows Mobile 6.

Hình 1.6. Nền tảng công nghệ RIA của Silverlight
(Nguồn:
Microsoft đã từ lâu nổi tiếng trong việc xây dựng các công cụ phát triển ngoại hạng
cho các công nghệ hiện đại, và xu hướng này được tiếp tục với Silverlight. Các nhà
phát triển có thể xây dựng ứng dụng Silverlight trong Visual Studio (hướng đến lập
trình viên) hay Expression Studio (hướng đến nhà thiết kế). Công cụ nào cũng có
trình soạn thảo XAML cho phép xây dựng giao diện người dùng phức tạp, nhưng
Expression Studio cung cấp các tính năng hoàn chỉnh hơn để tạo hình ảnh động và
hiệu ứng đồ họa. Ngược lại Visual Studio cung cấp các tính năng phát triển và bẫy
lỗi tiên tiến mà mọi nhà phát triển đều mong muốn. Một lợi ích quan trọng khác là
Silverlight 2.0 hỗ trợ mã lệnh được quản lý bởi.NET để viết luận lý ứng dụng, cho
phép sử dụng nền tảng phát triển mạnh hỗ trợ các khái niệm lập trình hướng đối

tượng như kế thừa và đa hình, và các tính năng ngôn ngữ tiên tiến như lớp chung và
10

×