Công nghệ mới của Microsoft tích hợp thư viện script phía client với nền tảng phía server của ASP.NET 2.0, hứa hẹn cung cấp nền tảng phát triển toàn diện hơn và đơn giản hoá việc phát triển ứng dụng web kiểu Ajax.
Công nghệ mới của Microsoft tích hợp thư viện script phía client với nền tảng phát triển phía server của ASP.NET 2.0, cho phép phát triển ứng dụng web thế hệ mới theo kiểu Ajax.
Sau khi được Jesse James Garret "khai sinh" với bài viết nổi tiếng "Ajax: Giải pháp mới cho ứng dụng web" ("Ajax: A New Approach to Web Applications", Adaptive Path, tháng 2/2005), Ajax trở nên nổi đình nổi đám trong thế giới web và ngày càng xuất hiện nhiều website "kiểu Ajax" như Google Maps, A9.com và Flickr. (Công nghệ Ajax cho phép tạo nên những ứng dụng web có giao diện phong phú và có thể truy xuất dữ liệu từ server để cập nhật một phần nội dung trang web hiện hành mà không phải nạp lại toàn bộ trang như ở các website truyền thống. Tham khảo bài "Kỹ thuật lập trình Ajax" - TGVT A 12/2005, tr.124)
Microsoft cũng có những ứng dụng web kiểu Ajax như MSN Virtual Earth
(http://www.virtualearth.com) và Start.com. Thật ra, Microsoft đã tham gia cuộc chơi Ajax khá sớm. Tất cả các thành phần Ajax - DHTML, JScript và XMLHTTP đã có trong Internet Explorer 5 và Outlook Web Access đã dùng các kỹ thuật này từ năm 1998. Trước khi Ajax trở nên phổ biến, Microsoft đã sử dụng kỹ thuật Script
Callbacks có phương thức làm việc tương tự Ajax (nhưng tính năng hạn chế hơn) trong quá trình phát triển ASP.NET 2.0.
Nắm bắt xu thế Ajax, tại PDC 2005 (Professional Developer Conference - hội thảo thường niên dành cho các nhà phát triển chuyên nghiệp) Microsoft đã công bố dự án Atlas đầy tham vọng, hứa hẹn cung cấp một nền tảng toàn diện hơn và đơn giản hoá việc phát triển ứng dụng web kiểu Ajax.
Mục tiêu đầu tiên của Atlas nhằm hỗ trợ phát triển phía máy khách (client), cung cấp các tính năng:
• Thư viện API hướng đối tượng bổ sung cho JavaScript.
• Tương thích trình duyệt tự động (hỗ trợ ứng dụng chạy với nhiều trình duyệt). • Thư viện API và các thành phần hỗ trợ tính năng giao diện người dùng (UI) phong phú.
• Phát triển client kiểu khai báo (XML script) nhằm đơn giản hoá mã lệnh chương trình.
Mục tiêu thứ hai của Atlas nhằm kết hợp việc phát triển phía client với việc phát triển phía server. Thay vì chú trọng toàn bộ chương trình phía client hoặc phía server, Atlas cung cấp hỗ trợ cho cả hai, cho phép xử lý tác vụ ở nơi có ý nghĩa nhất. Phía máy chủ (server), ASP.NET có các tính năng sau phục vụ cho ứng dụng Atlas: • Dịch vụ web có khả năng kết hợp với ứng dụng Atlas.
• Các điều khiển (web server control) sinh mã client cần thiết cho ứng dụng Atlas.
Ở dạng đơn giản nhất, ứng dụng web sử dụng thư viện script của Atlas phía client gọi một dịch vụ hay ứng dụng trên máy chủ web. Nhưng với ứng dụng web phức tạp hơn, bạn sẽ phải cần đến thành phần phía server của Atlas. Không đơn thuần là thư viện Ajax bổ sung cho ASP.NET, Atlas được thiết kế để trở thành nền tảng phát triển hoàn chỉnh từ client, server đến truyền thông giữa client và server. Ngoài ra, Atlas còn cung cấp nền tảng ứng dụng - cho phép nhà phát triển "lắp ráp" các thành phần có sẵn để tạo ứng dụng.
Thành phần client
Ở phía client, Atlas cung cấp Client Script Framework có thể xem là mở rộng của JavaScript, hỗ trợ phát triển hướng đối tượng, tương thích đa trình duyệt, giao tiếp với dịch vụ web và các tính năng giao diện người dùng phong phú. Microsoft hứa hẹn Atlas Client Script Framework sẽ làm việc với tất cả trình duyệt và với web server bất kỳ. Nó không yêu cầu bất kỳ cài đặt nào phía client.
Thư viện script phía client của Atlas là tập các file JavaScript (.js), gồm các thành phần sau:
• Nhân (Script Core): bổ sung đặc tính hướng đối tượng cho JavaScript (như lớp, interface, kế thừa, xử lý sự kiện, kiểu dữ liệu...). Đây là có thể xem là .NET CLR thu nhỏ ở phía client.
• Thư viện lớp cơ bản (Base Class Library): cung cấp các lớp và cấu trúc cơ bản được dùng trong phát triển .NET Framework (như StringBuilder, Debug,
Event...); cung cấp thư viện API xử lý mã client dạng khai báo (XML). Lớp này còn cung cấp hỗ trợ XMLHTTP với WebRequest và WebResponse, cho phép gọi WebMethod ở các file .asmx và .aspx hay dịch vụ web bất kỳ.
• Lớp mô hình thành phần và khung giao diện (Component Model và UI
Framework): định nghĩa các thành phần, cơ chế liên kết các thành phần với nhau và các phương thức thực thi. Phần UI Framework xác định các kiểu thành phần giao diện cùng với hành vi (như kéo-thả).
• Các điều khiển và thành phần (Controls & Components): tập các thành phần xây dựng sẵn và các điều khiển dùng cho phát triển phía client như Timer (bộ định thời), Counter (bộ đếm), các điều khiển form thông thường, điều khiển gắn với dữ liệu (ListView) hay điều khiển bản đồ (dựa trên Virtual Earth).
• Lớp tương thích trình duyệt (Browser Compatibility): xử lý tương thích với các trình duyệt (hiện tại, Atlas có thể chạy trên IE, Safari và Firefox).
Thành phần server
dịch vụ web ASP.NET và các điều khiển server. Các thành phần server này làm việc kết hợp với thư viện client của Atlas.
• Điều khiển server (Atlas Server Controls): thực hiện sinh mã client (mã lệnh JavaScript và mã khai báo XML) có những đặc tính Atlas. Các điều khiển server của Atlas tương tự như các điều khiển server của ASP.NET, có ích cho người có kinh nghiệm phát triển phía server. Ngoài các điều khiển thông thường như nút lệnh, ô text, ô chọn, liên kết... còn có những điều khiển Atlas đặc biệt để xử lý những hành vi ở client như rê và nhấn chuột... Tất cả những điều khiển này sẽ được tích hợp vào Visual Studio để cho phép làm việc ở màn hình thiết kế giống như các điều khiển server của ASP.NET.
• Cầu nối dịch vụ web (Web Services Bridge): cho phép mã client liên lạc (2 chiều: gửi và nhận dữ liệu) với dịch vụ web kiểu .asmx của ASP.NET (cũng như WebMethod được định nghĩa trên trang .aspx) và .svc của Indigo (công nghệ SOA mới nhất dự kiến ra mắt cùng với Windows Longhorn trong năm 2006) hay dịch vụ web bất kỳ.
• Cầu nối dịch vụ ứng dụng (Application Services Bridge): sử dụng Web Services Bridge để cung cấp những những dịch vụ ứng dụng ASP.NET như xác thực hay truy cập và cập nhật dữ liệu.
Thành phần client và server và mã khai báo
Mã khai báo là đặc tính thú vị của Atlas. Điều khiển server tạo ra mã khai báo và gửi đến client trong định dạng XML. Atlas Client Framework sẽ phân tích khai báo này để sinh mã lệnh (thể hiện và hành vi của trang) ngay tại trình duyệt (client) lúc thực thi. Phương thức này nhằm tránh việc tạo hàng đống mã lệnh JavaScript rồi nhúng vào trang trước khi gửi đi từ server. Bằng cách thực hiện việc này ở phía client, kích thước trang có thể giữ khá nhỏ và người phát triển không cần phải bận tâm đến những đặc trưng của từng trình duyệt ở client. Microsoft dường như chú trọng đến kiểu lập trình khai báo này, tuy nhiên bạn vẫn có thể thực hiện kiểu mã lệnh JavaScript trực tiếp, nhưng lưu ý những tính năng hướng đối tượng hạn chế của JavaScript.
HIỆN THỰC
Atlas vẫn còn trong quá trình phát triển. Microsoft dự kiến sẽ ra mắt Atlas trong năm 2006 này như là thành phần bổ sung cho ASP.NET 2.0 và nó sẽ được tích hợp với Visual Studio 2005.
Tuy nhiên, ngay từ bây giờ bạn đã có thể làm quen với Atlas. Microsoft hiện đã có cung cấp file ASPNETAtlas.vsi để cài đặt dự án Atlas mẫu (Atlas Web Site Template, http://msdn.microsoft.com/asp.net/info/future/atlastemplate/) trên Visual Studio 2005 (http://msdn.microsoft.com/vstudio/) hay Visual Web
Developer Express (http://msdn.microsoft.com/vstudio/express/vwd/). Dự án này có đủ mọi thứ cần thiết cho dự án web kiểu Atlas, bao gồm thư viện Atlas. Hiện cũng đã có một số ứng dụng Atlas mẫu, bạn có thể tham khảo ở webblog của Nikhil Kothari (http://www.nikhilk.net) - kiến trúc sư phần mềm của Microsoft, người đã thuyết trình về Atlas tại PDC 2005. Bạn cũng có thể dễ dàng tìm thấy nhiều mẫu ứng dụng Atlas khác trên Internet.
Ngoài ra, hiện cũng có những giải pháp khác cho phép phát triển ứng dụng kiểu Ajax với ASP.NET 1.0 hay 2.0 như My Ajax.Net của Jason Diamon
(http://jason.diamond.name/weblog/category/my-ajax-dot-net/) và Ajax.NET của
Michael Schwarz (http://ajax.schwarz-interactive.de/csharpsample/).
Một trong những điểm mấu chốt của ứng dụng kiểu Ajax đó là giảm thiểu việc truyền thông giữa client và server. Vấn đề cần cân nhắc là gửi-nhận thông tin gì và tác vụ nào xử lý ở đâu? Việc này liên quan đến mô hình phát triển đặt trọng
tâm phía server hay client.
Trong mô hình phát triển đặt trọng tâm phía client, ban đầu server gửi đến client thông tin khai báo "cách trình bày" cùng "cách thức ứng xử" của giao diện người dùng. Khai báo giao diện này thực thi ở client để xử lý hành vi tương tác của người dùng, gửi dữ liệu đến server và nhận dữ liệu (không phải mã HTML) đáp trả, và dùng dữ liệu này để sinh thể hiện và nội dung. Server đưa các tài nguyên
khác đến giao diện người dùng thông qua các dịch vụ.
Mô hình này cho phép thực hiện hiệu quả các tình huống từ tính toán đến dữ liệu động ở client. Mô hình này cũng cho phép xử lý tức thời những hành vi của người dùng và có khả năng thực hiện những hiệu ứng thị giác như kéo-thả. Cái giá của giải pháp này gồm công sức viết mã lệnh client không nhỏ và việc chuyển luận lý giao diện từ server sang client dẫn đến yêu cầu xây dựng và học
sử dụng các công cụ mới, mô hình thiết kế mới...
Trong mô hình phát triển đặt trọng tâm phía server, server sẽ gửi mã HTML đến client thay vì dữ liệu thuần tuý. Việc xử lý phía client đơn giản hơn nhiều, chủ yếu chịu trách nhiệm gửi yêu cầu rồi nhận mã HTML đáp trả và đặt vào đúng chỗ trong trang. Hầu hết việc xử lý tương tác và giao diện đều nằm ở server. Trong khi một số người thích "đường lối" mới, nhưng một số người khác lại thích mô hình phát triển phía server quen thuộc. Có những tính năng bạn vẫn có thể thực hiện theo mô hình phát triển truyền thống, nhưng những tính năng như tương tác giao diện người dùng phải cần đến nền tảng phát triển kiểu Atlas - cho phép cân đối giữa mô hình client phong phú với mô hình phía server hiện hữu.
Tham khảo:
- http://atlas.asp.net/
Google biến ứng dụng online thành offline
Các ứng dụng web sẽ như thế nào nếu bạn không kết nối được Internet? Mục đích của API Gears mà Google đưa ra là để biến dữ liệu trực tuyến luôn sẵn có mọi lúc, mọi nơi.
Các ứng dụng web sẽ như thế nào nếu bạn không kết nối được Internet? Mục đích của API Gears mà Google đưa ra là để biến dữ liệu trực tuyến luôn sẵn có mọi lúc, mọi nơi. Nếu dùng ứng dụng web, bạn sẽ vấp phải một trở ngại chung: khi không nối mạng (offline) thì bạn không thể lấy được dữ liệu. Nhưng một số ứng dụng đang xoay chuyển vấn đề này.
Zimbra, ứng dụng e-mail nguồn mở, đã bổ sung bản offline tên là Zimbra Desktop từ hồi tháng 3 vừa qua. Mozilla cũng cho biết Firefox 3 sẽ hỗ trợ bộ nhớ đệm (caching) cho phép các ứng dụng web chạy offline. Và mô hình (framework) ứng dụng Ajax cho nền tảng để bàn của Adobe gọi là AIR sẽ có các tính năng hỗ trợ cho dữ liệu offline. Nhưng Google đã thực hiện một thay đổi lớn nhất cho đến nay về vấn đề này bằng Gears API mà hãng công bố vào tháng 5.
Google tung ra Gears kèm với ứng dụng đầu tiên để áp dụng, đó là một phiên bản Google Reader mới cho bạn đọc tin RSS offline. Các công ty khác cũng bắt đầu sử dụng framework Gears; ứng dụng đầu tiên mà chúng tôi tìm thấy được là công cụ Remember the Milk để theo dõi khối lượng công việc trực tuyến
(rememberthemilk.com).
Cả Google Reader và Remember the Milk đều đưa ra phương thức hỗ trợ offline đơn giản như nhau. Bạn chỉ việc nhấn vào một biểu tượng mũi tên màu xanh lá trên thanh công cụ ở đầu màn hình để tải về hoặc đệm dữ liệu mà bạn cần làm việc offline. Một khi đã đồng bộ dữ liệu, bạn có thể ngắt kết nối và vẫn tiếp tục làm việc, thậm chí nếu bạn đóng và mở lại trình duyệt. Khi có kết nối trở lại, bạn nhấn vào biểu tượng mũi tên màu xanh dương ở cùng vị trí cũ và những thay đổi của bạn ánh xạ lại vào bản trực tuyến.
Reader chạy với Gears hoạt động khá tốt mặc
dù hỗ trợ offline của nó còn một chút thô sơ, cơ bản. Các bản tin văn bản như của Engadget hay của Techcrunch dĩ nhiên là chạy tốt nhất nhưng có lẽ bạn cũng muốn Reader đồng bộ cả hình ảnh vào tin và tăng số tin đồng bộ để đọc offline. Vẫn còn lỗi nhỏ là nếu bạn đang online và nhấn vào nút offline thì bạn sẽ bị trả lại về ngay tin đầu tiên đang đọc và bất kỳ hình ảnh nào có trên trang tin đó đều bị mất.
Milk cũng gặp vấn đề tương tự. Xóa một tác vụ ở chế độ offline thì bạn không có cách nào để phục hồi lại tác vụ đó mặc dù bạn có thể dễ dàng undo hành động đó ở chế độ online.
Dù sao đi nữa, khi chạy offline với một ứng dụng Gears thì bạn nên lên kế hoạch sử dụng. Bạn đừng hy vọng có thể bắt đầu công việc trong Reader mà không có kết nối ban đầu. Với những ứng dụng Gears hiện thời bạn cần kết nối ban đầu và chuyển tất cả chúng sang chế độ offline trước khi ngắt kết nối. Đây có thể là tùy chọn tốt để đồng bộ tự động bất cứ khi nào bạn online.
Hỗ trợ offline không đem đến mọi thứ mà bạn muốn trong
Nhấn vào biểu tượng màu xanh lá nhỏ, ứng dụng Gears sẽ đệm dữ liệu để làm việc offline.
Google Reader, tiêu biểu là sẽ không có bất kỳ hình ảnh nào trong tin.
Tương lai ứng dụng offline
Dù vậy, những ứng dụng dựa trên Gears cũng đã phác họa được tương lai. Chắc chắn là Gears hỗ trợ cho Reader nhưng nếu hỗ trợ cho cả Gmail hay Google Calendar thì có thể là điều rất tuyệt hay không? Và với Docs and Spreadsheet hay các ứng dụng khác
trong bộ Google Apps thì sao?
Hỗ trợ chạy offline sẽ là bước chính trong việc phát triển các ứng dụng chạy trên trình duyệt và những ứng dụng này sẽ rất có khả năng thay thế các ứng dụng để bàn. Thêm
vào hỗ trợ offline cho Gmail hay Docs and Spreadsheet sẽ không phải là điều dễ dàng vì một lý do, dữ liệu có thể sẽ phải di chuyển nhiều. Làm việc cẩn thận nhất thiết phải đồng bộ dữ liệu để những gì có trên máy tính cũng nên có trên mạng. Nhưng một điều
chắc chắn là hỗ trợ ứng dụng offline đang dần dần xuất hiện.
Trong khi đó, nhiều ứng dụng nhỏ trên nền web 2.0 như là Remember the Milk sẽ tận dụng từ hỗ trợ offline. Các bộ công cụ như là Dojo Offline (dojotoolkit.org/offline) đang nở rộ, thuận tiện hơn cho các nhà phát triển xây dựng ứng dụng Gears. Và khi Firefox 3.0 hỗ trợ đệm dữ liệu offline ở mức sâu hơn thì tình huống này chắc chắn được cải
thiện.