• Thứ Tư, 11/06/2008 14:08 (GMT+7)

    RIA và những kẻ thách thức Ajax

    Những công nghệ mới hứa hẹn đem đến những trải nghiệm hấp dẫn hơn và có khả năng làm lu mờ ngôi sao hiện nay trên bầu trời Web 2.0.

    Web, nền tảng ban đầu chỉ nhằm mục đích phân phát tài liệu trực tuyến, giờ đây có vai trò quan trọng trong việc phân phối ứng dụng. Ứng dụng dựa trên web đem lại nhiều lợi ích như: giải phóng người dùng khỏi gánh nặng cấu hình phần mềm và quản lý các phiên bản cập nhật, cho phép họ truy cập ứng dụng và dữ liệu từ nhiều máy tính khác nhau; cho phép nhà cung cấp ứng dụng quản lý tập trung và tiết kiệm đáng kể chi phí triển khai.

    Hình 1. Tuy có những ứng dụng đồ họa ấn tượng như Google
    Maps, nhưng đây không phải là sở trường của Ajax.
    Mô hình ứng dụng trên nền web truyền thống theo kiến trúc máy khách-máy chủ (client-server) với trình ứng dụng chạy trên máy tính của người dùng thiết kế “nhỏ gọn” (thin client): 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à đáp trả, 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 chạp, chậm hơn nhiều so với các ứng dụng truyền thống (ứng dụng desktop) cài đặt và chạy trên máy tính người dùng.

    “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 “có tiếng” và làm việc không ổn định trên các hệ điều hành khác nhau – triết lý “viết một lần, chạy mọi nơi” vẫn chỉ là lý thuyết.

    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 nào được cài đặt rộng rãi.

    Hình 2. Nền tảng công nghệ RIA của Adobe.
    Rồi 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, 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ý gì đó. Dựa trên những nền tảng sẵn có (JavaScript, Document Object Model, XmlHttpRequest, Cascading Style Sheets) đượ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à hầu hết 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ệ (ứng dụng) 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).

    Ajax đem đến cho người dùng những trải nghiệm mới mẻ với ứng dụng web: ít yêu cầu “động tay” (nhấn), đá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ững gì làm được trên desktop) trên web, và sự thành công của những site như YouTube và Flickr làm cho người ta thêm kỳ vọng về nội dung đa phương tiện trên web - và 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 (và tốt hơn), và đặc biệt làm việc tốt với hình ảnh và video - mảng nội dung đang ngày càng “hot” và được cho là xu hướng tương lai của web nhưng lại là mảng “không chuyên” 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.

    NHỮNG CÁI TÊN ĐÁNG GỜM

    Các ứng dụng web mạnh cả về tính năng và giao diện người dùng được gọi với thuật ngữ RIA (Rich Internet Application, hay Rich Interactive Application với Microsoft). 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, có trước Ajax (được Jesse James Garrett giới thiệu đầu tiên trong tài liệu “Ajax: A new Approach to web Applications” vào tháng 2/2005), nhưng mãi đến gần đây mới được chú ý nhờ những cái tên đáng gờm mới xuất hiện: Flex và AIR của Adobe, Silverlight của Microsoft và JavaFX của Sun Microsystems.

    Flex và AIR của Adobe

    Cho đến hiện nay, Adobe Systems là "tay chơi" lớn nhất và trưởng thành nhất trong lĩnh vực RIA. Mua lại Macromedia cách đây hơn 3 năm (tháng 4/2005), Adobe được kế thừa gia sản để đ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. Flex dựa trên Flash, dùng ngôn ngữ khai báo dựa trên xml (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 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) (Hình 2).

    Ứ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 Integrated Runtime) là công nghệ triển khai để chạy các ứng dụng Flash/Flex và cả Ajax mà không cần trình duyệt, tương tự ClickOnce của Microsoft – công nghệ triển khai ứng dụng dựa trên Windows, nhưng AIR chạy trên cả Windows và Mac (phiên bản chạy trên Linux đang trong quá trình thử nghiệm).

    Hình 3
    Silverlight của Microsoft


    Silverlight (2.0) có thể xem là tập con của Windows Presentation Foundation (WPF), cũng sử dụng XAML (eXxtensible Application Markup Language) – ngôn ngữ khai báo dựa trên xml để định nghĩa giao diện người dùng (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 người dùng và có thể viết với mã lệnh “được quản lý” (managed code) dùng các ngôn ngữ .NET hay JavaScript và Python/Ruby (Hình 3).

    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.

    JavaFX của Sun Microsystems

    Hình 4. Toàn cảnh JavaFX.
    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: JavaFX Script và Java Mobile. JavaFX Script là ngôn ngữ khai báo không dựa trên xml giúp cấ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). JavaFX Mobile là hệ điều hành cho thiết bị di động được thiết kế để triển khai ứng dụng RIA trên các thiết bị này (Hình 4).

    Ở mức độ ít phổ biến hơn, còn có những cái tên đáng chú ý khác ngoài những cái tên “đáng gờm” kể trên: OpenLaszlo, Appcelerator, Curl, Google GWT, Mozilla Prism (cho phép chạy ứng dụng web trên desktop, tương tự Adobe AIR).

    HIỆN THỰC RIA

    Như đã đề cập ở phần đầu, hai thư viện bổ sung trình duyệt thực thi Flash và Java được cài đặt hầu như trên mọi máy tính (ước tính Flash hiện diện trên 95%, Java trên 85% máy tính trên toàn thế giới). Với hệ điều hành Windows ngự trị trên 90% máy tính và “vũ khí” Windows Updates, Microsoft cũng sẽ không khó khăn gì trong việc làm cho Silverlight trở nên phổ biến.

    Phát triể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ệ của mình, và xu hướng này được tiếp tục với Silverlight. Bạn có xây dựng ứng dụng Silverlight trong Visual Studio (hướng đến nhà phát triể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.

    Hình 5
    Một lợi ích quan trọng khác là Silverlight (2.0) hỗ trợ mã lệnh được quản lý của .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à lớp riêng. Với .NET CLR (Common Language Runtime) trong trình duyệt, mã lệnh được quản lý sẽ được biên dịch thành nhị phân trên client và chạy cực nhanh. Mã lệnh được quản lý có trong nhiều ngôn ngữ, ứng dụng Silverlight có thể viết bằng C#, VB, IronPython và IronRuby. Với khả năng hỗ trợ thêm nhiều ngôn ngữ nữa, Silverlight sẽ hấp dẫn nhiều nhà phát triển với nền tảng khác nhau (Hình 5).

    Adobe cung cấp 3 con đường khác nhau để tạo ứng dụng RIA. Tiện nhất, với HTML và JavaScript có thể phát triển ứng dụng RIA trực tiếp trong môi trường phát triển Dreamweaver CS3 sử dụng AIR SDK. Ứng dụng RIA có thể tạo trong Flash sau khi tải về một bản cập nhật cho Flash CS3 (Adobe có kế hoạch tích hợp sẵn trong phiên bản tương lai). Flash rất thích hợp cho việc xây dựng nội dung đa phương tiện hấp dẫn mà không nhất thiết làm phình to ứng dụng, đây là nơi Flex thể hiện vai trò của mình. Flex cung cấp hỗ trợ việc phát triển ứng dụng tốt hơn Flash, mặc dù vẫn dựa trên ActionScript cho phần luận lý ứng dụng. ActionScript là ngôn ngữ tuân theo đặc tả ECMAScript tương tự như JavaScript, hỗ trợ lập trình hướng đối tượng cơ bản. Flex Builder 3 cung cấp môi trường phát triển dựa trên Eclipse để xây dựng ứng dụng RIA dùng Flex 3 SDK (thư viện nguồn mở) và giao diện kéo-thả để tạo giao diện người dùng dựa trên MXML (Hình 5).

    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 (script) 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: 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; và 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 (Hình 6).

    Triển khai

    Việc xây dựng ứng dụng RIA chỉ là một phần của chặng đường, phần thứ hai là đưa ứng dụng đến người dùng và đảm bảo nó chạy đúng. Cả Flex, Silverlight và JavaFX đều không yêu cầu cài đặt bất cứ thành phần gì trên server, đây cũng là điểm chung của các giải pháp RIA.

    Hình 6
    Microsoft Silverlight và Adobe Flash đều là thư viện dựa trên trình duyệt với cách thức triển khai tương tự. Khi người dùng viếng thăm trang web có nhúng thành phần Flash hay Silverlight, nếu chưa cài đặt thư viện phù hợp, trang web sẽ hiển thị thông báo để người dùng tải về. Người dùng có thể chuyển đến website Microsoft hay Adobe và làm theo các hướng dẫn để tải về thư viện Silverlight hay Flash.

    Riêng các ứng dụng Adobe AIR lại được đóng gói thành file .AIR và được tải về chứ không nhúng trong trang web. Người dùng không cài AIR trên hệ thống sẽ “bị” hỏi dùng chương trình nào để chạy file này, vì vậy việc triển khai AIR sẽ yêu cầu hướng dẫn nhiều hơn để đảm bảo người dùng biết cách chạy ứng dụng AIR.

    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 1 trang web có các hướng dẫn để người dùng tải về và cài đặt JVM thủ công.

    THAY THẾ AJAX?

    Mặc dù có nhiều ứng dụng hấp dẫn nhưng Ajax có những hạn chế về bảo mật, tương thích trình duyệt, ghi dữ liệu cục bộ ... và nền tảng Ajax “thuần tuý” không hỗ trợ những tính năng đồ hoạ cao cấp (như “vector”) và video. Nhiều thư viện Ajax đã được phát triển (hiện có trên 200 thư viện được liệt kê tại AjaxPatterns.org) khắc phục những khiếm khuyết này, nhưng không nền tảng dựa trên Ajax nào (kể cả Yahoo! UI Library hay Dojo) có được những tính năng như Flex, Silverlight và JavaFX. Các giải pháp RIA không giới hạn trong giao diện người dùng, trình xử lý văn bản xây dựng trên Flex – BuzzWord là minh chứng về ứng dụng RIA hoàn chỉnh không thua kém ứng dụng Ajax nổi tiếng là Google Docs.

    Hình 7
    Tuy nhiên, các giải pháp RIA hiện tại vẫn chưa đủ sức thay thế hoàn toàn Ajax. Dưới đây là một số lý do:

    • Các giải pháp RIA đều yêu cầu cài đặt thư viện bổ sung trình duyệt, trong khi Ajax được hỗ trợ sẵn.

    • Các giải pháp RIA dựa trên Flash thường có dung lượng lớn hơn so với giải pháp dựa trên Ajax. Dung lượng tải về lớn sẽ làm chậm việc khởi chạy ứng dụng.

    • Không giống các giải pháp RIA (ngoại trừ Flex SDK và JavaFX Script), Ajax được xây dựng trên các chuẩn mở.

    • Flex, Silverlight và JavaFX đều dùng ngôn ngữ riêng, ngược lại Ajax dựa trên JavaScript quen thuộc với hầu hết các nhà phát triển web và sẵn sàng “hợp tác” với các công nghệ phổ biến khác như Ruby-on-Rails, PHP, Java và .NET.

    Thật may, các yếu tố hạn chế của Ajax và RIA nói chung không trùng nhau. Vì vậy Ajax và các công nghệ RIA có thể kết hợp để tạo nên ứng dụng mạnh như YouTube và SlideShare. Cả Adobe Flex (thông qua Flex-Ajax Bridge), Microsoft Silverligh và JavaFX đều cung cấp khả năng làm việc với Ajax.

      Flex Silverlight JavaFX
    Phiên bản mới nhất 3.0 2.0 Beta 1.0
    Công cụ phát triển (IDE) Flex Builder 3.0
    (Eclipse platform)
    Visual Studio 2008
    .NET Platform 3.5
    Silverlight Visual
    Studio 2008 Template
    Eclipse hay NetBean 6.01
    JavaFX plugin
    Chi phí cho công cụ phát triển  249-699 USD
    (Giải pháp nguồn mở thay thế: FlashDevelop, www.osflash.org)
    289-799 USD Miễn phí
    (nguồn mở)
    Ngôn ngữ MXML
    ActionScript
    XAML
    JavaScript
    (C#, VB.Net, ASP.Net)
    JavaFX Script
    Java
    Thư viện bổ sung trình duyệt (plug-in)  Adobe Flash Player 9 Silverlight 2.0 Beta Java Plugin with JavaFX extension
    Dung lượng tải về client (Windows) 1.1 MB
    (AIR Runtime: 11MB)
    4-6 MB 15MB

    Phương Uyên

    Từ khóa: Phương Uyên
    ID: A0805_124