Mashup là khái niệm ra đời từ trào lưu Web 2.0. Cho đến giờ, định nghĩa về
Mashup vẫn còn là vấn đề tranh cãi và hiện tại vẫn chưa có định nghĩa thống nhất chung về Mashup [28].
Theo Wikipedia, Mashup là một ứng dụng Web được tạo ra bằng cách kết hợp dữliệu từ nhiều nguồn khác nhau. Tuy nhiên, định nghĩa này chưa đầy đủ vì thành phần tham gia kết hợp không chỉ là dữ liệu mà còn là xử lý hay giao diện thể hiện [28].
19 trang |
Chia sẻ: vietpd | Lượt xem: 1634 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Mashup và một số vấn đề liên quan đến widget, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
11
Chương 2
Mashup và một số vấn đề liên quan đến widget
Tóm tắt:
Nội dung chương này cung cấp định nghĩa, sự phân loại, kiến trúc ứng
dụng Mashup nhằm làm rõ vai trò của widget được sử dụng khi tổng hợp
Mashup. Các vấn đề liên quan đến việc biểu diễn widget, khả năng phối hợp
widget cũng được trình bày ở chương này.
2.1 Mashup
2.1.1 Khái niệm về Mashup
Mashup là khái niệm ra đời từ trào lưu Web 2.0. Cho đến giờ, định nghĩa về
Mashup vẫn còn là vấn đề tranh cãi và hiện tại vẫn chưa có định nghĩa thống nhất
chung về Mashup [28].
Theo Wikipedia, Mashup là một ứng dụng Web được tạo ra bằng cách kết hợp dữ
liệu từ nhiều nguồn khác nhau. Tuy nhiên, định nghĩa này chưa đầy đủ vì thành phần
tham gia kết hợp không chỉ là dữ liệu mà còn là xử lý hay giao diện thể hiện [28].
Giusy Di Lorenzo xem Mashup là một hướng tiếp cận phát triển ứng dụng dựa
trên sự tổng hợp dịch vụ đã có sẵn để tạo ra dịch vụ mới [19]. Dịch vụ ở đây có thể là
dịch vụ nghiệp vụ, dịch vụ dữ liệu, dịch vụ giao diện (UI Services).
Agnes Koschmider đã cung cấp một định nghĩa tổng quát và đầy đủ hơn về
Mashup: Mashup là một ứng dụng web được tạo ra bằng cách kết hợp các tài nguyên
trong các website khác (third-party Website) để tạo ra tài nguyên mới [28]. Định
nghĩa này đã tổng quát hóa các thành phần được dùng để Mashup, một cách cụ thể,
các tài nguyên này có thể là nội dung (data), xử lý (application functionality) hoặc
giao diện (presentation). Các tài nguyên có thể được cung cấp với nhiều dạng khác
nhau (RSS, Atom, HTML, Web API…).
12
Một trong những ứng dụng đầu tiên và kinh điển về Mashup là website
www.Housingmaps.com (Hình 2-1). Ứng dụng này được phát triển vào 04/2005 bởi
Paul Rademacher, một lập trình viên độc lập và hiện là lập nhân viên của Google.
Housingmaps.com kết hợp dữ liệu về nhà ở, căn hộ, phòng cho thuê… từ website rao
vặt Craigslist ( và hiển thị trực quan lên Google Map.
Hình 2-1: Ứng dụng Mashup đầu tiên: Housingmaps.com
Housingmaps.com thể hiện rõ đặc trưng của Web 2.0 là cá nhân hóa thông tin
theo nhu cầu sử dụng. Khi phát triển Housingmaps.com, Paul Rademacher đã sử
dụng kỹ thuật Crawler để rút trích các thông tin cần thiết trên Craigslist; sau đó tùy
biến lại các đoạn mã javascript của Google để thể hiện lên bản đồ (thời điểm
Housingmaps.com xây dựng, Google chưa công bố Google Map API [57]). Một số ví
dụ khác về Mashup chẳng hạn, một nhà lập trình có thể tạo website chia sẻ ảnh và
video của riêng mình khi kết hợp hai dịch vụ YouTube và Flickr, hoặc trộn dữ liệu về
tình trạng giao thông với Google Maps để lập bản đồ các điểm thường xuyên tắc
đường trong khu vực…
Tóm lại, Mashup đã trao cho người dùng cuối khả năng tự xây dựng các ứng dụng
tình huống (situational application) giải quyết tức thời và nhanh chóng các yêu cầu
nghiệp vụ phát sinh chỉ liên quan đến cá nhân họ (individual & ad-hoc business
problem - Volker Hoyer [30]).
13
Volker Hoyer đã trình bày tổng quan các đặc trưng tiêu biểu của ứng dụng
Mashup [50], bao gồm:
Thời gian phát triển ứng dụng: Mashup có thể được xây dựng trong một
khoảng thời gian rất ngắn: vài ngày, vài giờ, thậm chí vài phút.
Chu kỳ sống: ứng dụng thường chỉ được sử dụng trong một khoảng thời gian
ngắn.
Loại ứng dụng: ứng dụng có chức năng đơn giản, phục vụ cho một số trường
hợp sử dụng hoặc tình huống cụ thể (situational application).
Yêu cầu chức năng: các yêu cầu thường thay đổi nhanh chóng và liên tục, ứng
dụng có thể dễ dàng điều chỉnh đáp ứng sự thay đổi này .
Yêu cầu phi chức năng: các yêu cầu về khả năng chịu tải (scalability), bảo trì
(maintainability) rất ít được đặt nặng.
Quy trình phát triển: không dựa trên một quy trình hay một phương pháp luận
phát triển cụ thể nào. Tất cả chủ yếu dựa trên các giải pháp, công cụ được
cung cấp sẵn để tạo ra các ứng dụng vừa đủ sử dụng (good enough
application) và đáp ứng ngay nhu cầu tình huống của người dùng.
Quản lý ứng dụng: các ứng dụng được phát triển riêng rẽ, rời rạc, chủ yếu dựa
vào sở thích cá nhân người sử dụng và ít chịu sự quản lý.
Mức độ tích hợp: sử dụng các giải pháp tích hợp các thành phần thể hiện hay
giao diện người dùng (presentation integration).
Người phát triển ứng dụng: chủ yếu là người dùng cuối với sự hỗ trợ đầy đủ
của các công cụ.
Người dùng mục tiêu của ứng dụng: chủ yếu là cá nhân đơn lẻ hoặc nhóm
người dùng nhỏ.
Tính đến ngày 1/5/2010, www.programmableWeb.com là website cung cấp Web
API, Mashup lớn nhất hiện nay, với khoảng 4783 ứng dụng Mashup (xem thống kê
trong Hình 2-2). Trung bình mỗi ngày có thêm khoảng 2 đến 3 ứng dụng Web
Mashup mới được tổng hợp. Kết quả thống kê từ Hình 2-2 cho thấy loại ứng dụng
Mashup phổ biến nhất hiện nay là bản đồ (35%), tiếp theo là các ứng dụng Mashup
ảnh (10%), video (9%) ..
14
Hình 2-2: Bảng thống kê các dạng ứng dụng Mashup dựa trên mức độ phổ biến
(ProgrammableWeb.com)
2.1.2 Phân loại Mashup
Agnes Koschmider đã cung cấp các tiêu chí phân loại Mashup dựa trên 4 khía
cạnh [28]:
WHAT: loại thông tin tổng hợp Mashup, bao gồm Mashup trên dữ liệu (Data
Mashup), Mashup thành phần thể hiện (Presentation Mashup), Mashup chức
năng xử lý (Functionality Mashup).
WHERE: phân hệ (client, server) mà tại đó việc tích hợp được thực hiện.
HOW: các thức xây dựng Mashup.
FOR WHOM: Mashup tạo ra phục vụ cho đối tượng người dùng nào.
Chi tiết về mỗi loại Mashup sẽ được trình bày trong phụ lục A.
2.1.3 Công cụ xây dựng Mashup
Hiện nay, đã có khá nhiều công cụ hỗ trợ tạo Mashup (Mashup Framework),
chẳng hạn như Microsoft Popfly dành cho người không chuyên dựa trên nền tảng
Silverlight, người dùng thông thường có thể tạo lập các dịch vụ online tương đối
phức tạp nhưng lại không cần am hiểu về HTML, XTML, CSS, AJAX... Tất cả
những gì người dùng phải làm là kéo - thả nội dung từ nguồn này sang nguồn kia.
Yahoo Pipes là một trong những công cụ mashup đầu tiên trên thế giới. Do đó, nó
hướng đến những người có đôi chút kiến thức về kỹ thuật.
15
Agnes Koschmider đã thống kê một số công cụ Mashup và phân loại dựa trên
chức năng mà mỗi công cụ cung cấp [28]. Các công cụ được ông chọn để khảo sát,
phân tích chủ yếu là các công cụ tiêu biểu được phát triển bởi các nhà phát triển lớn;
kết quả khảo sát được trình bày trong Bảng 2-1.
P
re
se
nt
at
io
n
D
at
a
F
un
ct
io
na
lit
y
E
xt
ra
ct
io
n
F
lo
w
C
on
su
m
er
E
nt
er
pr
is
e
Apatar x x x
Data Mashup x x x x
Dapper x x x
DERI Pipes x x x
Grazr x x x
IBM Infosphere Mashup Hub x x x
Intel Mash Maker x x x
JackBe Presto x x x x
Microsoft Popfly x x x x
OpenKapow x x x x
Procession x x x x
RssBus x x x x
Serena Mashup Suite x x x x
TIBCO PageBus x x x
Yahoo Pipes x x x
Bảng 2-1: Bảng thống kê và phân loại Mashup Framework dựa theo chức năng
Kết quả khảo sát từ Bảng 2-1 cũng cho thấy hiện nay các công cụ hỗ trợ phát triển
Mashup với giao diện thể hiện đối với người dùng cuối (Presentation Mashup) vẫn
còn hạn chế. Phần lớn công cụ tập trung hỗ trợ các kỹ thuật thu thập và tổng hợp dữ
liệu phục vụ Mashup (Data Mashup).
16
2.1.4 Kiến trúc công cụ xây dựng Mashup
Widget Assembly Layer
Query Widget Pie Chart Widget Map Widget Web Clipping Widget
Event Bus
Widget Layer
Query Widget Pie Chart Widget Map Widget Web Clipping Widget
Data Mashup Layer
Data Mashup
Source Access Layer
SOAP
Adaptor
Semi-structured HTML
Web Page Adaptor
Other Data Source
Adaptors (REST,
DB, files …)
Web
Clipping
Adaptor
SOAP
Services
Web
Application
Web
Application
Hình 2-3: Mô hình Kiến trúc Mashup Framework [5]
Trong mô hình biểu diễn kiến trúc trong Hình 2-3, Javier López đã phân chia các
thành phần trong hệ thống dựa trên vai trò hoạt động, có 4 thành phần chính:
Source Access Layer: là tầng truy cập dữ liệu dựa trên các API mà Web
Resources cung cấp. Ví dụ : Web Service, HTML...
Data Mashup Layer: dữ liệu do tầng Source Access Layer cung cấp có thể
không theo định dạng phù hợp cho việc sử dụng. Do đó, nó có thể được xử lý
tiếp qua một quy trình biến đổi nhằm tạo ra dữ liệu kết quả với định dạng
mong muốn và phù hợp với xử lý của các thành phần khác.
Widget Layer: là tầng cung cấp các Widget có vai trò hiển thị nội dung dữ
liệu từ các tầng bên dưới cung cấp.
Widget Assembly Layer: cung cấp giao diện đồ họa cho phép kết hợp
(wiring) các widget với nhau để tạo ra một ứng dụng web hoàn chỉnh.
17
Hình 2-4: Hai tiến trình chính khi tổng hợp Mashup: Piping và Wiring [35]
Trong Hình 2-4, Volker Hoyer đã trình bày 2 tiến trình chủ yếu khi phát triển ứng
dụng Mashup [35], bao gồm:
Piping: là tiến trình xử lý, tổng hợp thông tin và nạp nội dung kết quả
lên widget.
Wiring: là quá trình phối hợp hoạt động, truyền dữ liệu giữa các widget
để tạo giao diện ứng dụng theo nhu cầu.
2.1.5 Các bài toán cần nghiên cứu khi phát triển ứng dụng Mashup
Từ mô hình các thành phần trong kiến trúc Mashup Framework (Hình 2-3), để
xây dựng ứng dụng Mashup, ta cần giải quyết các vấn đề được trình bày trong phần
dưới đây.
2.1.5.1 Rút trích thông tin trên Web (Web Data Extraction)
Đặc trưng của Mashup là thông tin có thể lấy từ nhiều nguồn khác nhau với nhiều
định dạng khác nhau, chẳng hạn Web Feed (đối với các thông tin được cập nhật
thường xuyên: Blog, tin tức), dữ liệu dạng bảng (tập tin CSV – Comma Seperated
Value, bảng tính – Spreadsheet), dữ liệu XHTML, hoặc nội dung đa phương tiện
(ảnh, video…).
18
Để đơn giản hóa việc truy cập dữ liệu, nhà phát triển website sẽ cung cấp thông
tin thông qua Web API (Giusy Di Lorenzo [29]). Web API giúp cho quá trình truy
cập và sử dụng dữ liệu thuận tiện, che giấu sự phức tạp trong cách thức tổ chức lưu
trữ dữ liệu bên dưới. Web API thường cung cấp dữ liệu thông qua các giao thức
chuẩn: REST/SOAP Web Services, Ajax (Asynchronous Javascript + XML), XML
RPC (Remote Procedure Call).
Tuy nhiên, thách thức lớn hiện nay là phần lớn nội dung đều được lấy dưới dạng
Web Feeds (RSS, Atom), phần lớn các ứng dụng chưa hỗ trợ Web API cung cấp
thông tin. Do đó, một số kỹ thuật đã được đề xuất để khắc phục: web page clipping
(I-know [8], Internet Scrapbook [9], C3W [10]), rút trích dữ liệu dựa theo cấu trúc
HTML (typed data - Marmite [11], Mash Maker [7]), phát sinh web services để rút
trích nội dung từ các web application chưa hỗ trợ API: Hao Han [2], Pollock [12],
H2W [13], Kapow Web Data Services (www.strikeiron.com). Các kỹ thuật này còn
được gọi là Mashup Enabler.
Hình 2-5: Vai trò của Mashup Enabler trong các hệ thống Mashup 1
1 Kapowtech JavaOne 2007 (
19
Mashup Enabler có vai trò đóng gói (wrapping) dữ liệu từ các nguồn bên ngoài
(HTML, Web Service, ...) và cung cấp cho thành phần thể hiện (Widget) dưới dạng
microformat (RSS, ATOM) hay Web Service.
Chúng tôi đã khảo sát và phân loại các nguồn dữ liệu có thể được dùng để tổng
hợp Mashup. Chi tiết về các nguồn dữ liệu kèm theo ví dụ được trình bày trong Bảng
2-2.
Nguồn dữ liệu Ví dụ
Web Feed RSS Atom
Web Service SOAP RESTful WCF …
File
Text CSV
Spreadsheet
(Excel)
…
Relational Database Access MySQL DB2 Oracle …
Nested Data XML JSON …
Web Clipping HTML Markup (Fragment of Html, CSS, Javascript, ..)
Bảng 2-2: Các nguồn dữ liệu được dùng khi tổng hợp Mashup
2.1.5.2 Tích hợp dữ liệu từ nhiều nguồn khác nhau
Vấn đề này có thể tận dụng thành tựu từ các hướng tiếp cận trong lĩnh vực tích
hợp dữ liệu (Data Integration), một ngành nghiên cứu trưởng thành và phát triển.
Giusy Di Lorenzo và các cộng sự đã thực hiện cuộc khảo sát các công cụ Mashup
tiêu biểu nhất hiện nay (Damia, Yahoo Pipes, Popfly, Google Mashup Editor, Apatar,
Intel Mash Maker …). Trên cơ sở đó, ông đã trình bày, phân tích toàn diện các vấn
đề, khía cạnh khác nhau liên quan đến quá trình tích hợp dữ liệu phục vụ Mashup
[29]. Chi tiết về các vấn đề liên quan đến quá trình tích hợp dữ liệu được trình bày
trong Phụ lục B.
Khảo sát cũng cho thấy phần lớn Mashup Framework hiện nay đều kết hợp dữ
liệu dựa trên mô hình data-flow (Yahoo! Pipes, Apatar, JackBe Presto, Serena
Mashup Suite, IBM Damia[31], SpiderCharlotte [21]...).
20
2.1.5.3 Thể hiện nội dung lên các thành phần thể hiện (widget)
Widget là thành phần có vai trò thể hiện dữ liệu tổng hợp được đến người dùng,
đồng thời cung cấp một số cơ chế để người dùng tương tác, phối hợp hoạt động giữa
các widget (Javier López[5], Rama Gurram[19], Volker Hoyer[35]).
Để xây dựng widget, ta có thể dựa vào sự hỗ trợ của các widget Platform đã mô tả
trong Bảng 1-1.
Ngoài việc cung cấp đặc tả, Platform còn cung cấp hệ thống các API cần thiết
(chẳng hạn API hỗ trợ các xử lý bất đồng bộ - Ajax) giúp cho việc phát triển widget
thuận lợi và dễ dàng hơn.
2.1.5.4 Biểu diễn sự phối hợp hoạt động, tương tác giữa các widget
Dựa trên việc khảo sát các công trình và Framework đề xuất hỗ trợ tổng hợp
widget hiện nay: Javier López[5], Jin Yu[14][24], Rama Gurram[19], Rui Guo[22],
Sohei Ikeda[25], IBM iWidget [26], Google Gadget[37], OpenAjax widget[38], ta
nhận thấy tương tác giữa các widget chủ yếu dựa trên sự kiện (event) với mục tiêu
đồng bộ hóa nội dung thể hiện giữa các widget trên toàn giao diện Mashup (Mashup
Canvas). Chẳng hạn khi người dùng chọn 1 dòng trong danh sách địa chỉ trên widget
A, widget B sẽ hiển thị vị trí được chọn tương ứng lên bản đồ.
Một số đề xuất cung cấp đặc tả widget kèm theo biểu diễn phối hợp bao gồm:
Sohei Ikeda[25], Jin Yu[14], IBM iWidget [26]), các đề xuất còn lại chủ yếu cung
cấp thư viện hỗ trợ phối hợp (Rui Guo[22], Google Gadget[27], OpenAjax widget
[38]).
2.1.5.5 Cơ chế liên lạc trên hệ khách giữa các widget
Mashup là kết quả của sự phối hợp giữa nhiều widget với nhau trên Mashup. Quá
trình tương tác chủ yếu xảy ra tại trình duyệt, trong đó mỗi widget chịu trách nhiệm
thể hiện thông tin từ những nguồn khác nhau.
Điều này dẫn đến khả năng một số widget từ những nguồn không đáng tin cậy có
thể truy cập các thông tin nhạy cảm hoặc thay đổi nội dung trong widget khác. Kỹ
thuật tấn công thường được sử dụng là Frame Phishing. Kỹ thuật này sử dụng mã
21
kịch bản script để thay đổi thuộc tính src của một iframe (mỗi iframe được xem như
một cửa sổ trình duyệt) và điều hướng nó đến các website giả mạo (phishing site).
Để hạn chế kiểu tấn công này, các trình duyệt sử dụng chính sách bảo mật Same
Origin Policy (SOP): nội dung tài liệu (DOM document) hoặc mã script trong nguồn
này không thể truy cập nội dung tài liệu hoặc mã script từ nguồn khác [34]. SOP sẽ
hạn chế khả năng liên lạc giữa các widget do mỗi widget đều thể hiện nội dung từ các
nguồn khác nhau.
Hiện nay, nhiều kỹ thuật đã được đề xuất hỗ trợ vượt qua hạn chế của SOP, chẳng
hạn sử dụng thẻ Module [45], Subspace[46], URL fragment identifier [27][47],
MashupOS [43][44], OpenAjax widget [38]…
2.2 Các thành phần trong đặc tả widget và sự phối hợp widget
2.2.1 Công nghệ phát triển widget
Widget là thành phần thể hiện giao diện, do đó nó có thể được xây dựng dựa trên
các chuẩn Web: HTML, CSS (mô tả giao diện) và Javascript (xử lý), hoặc các công
nghệ Plug-in trình duyệt: Flash, Silverlight, JavaFX…
Nếu được xây dựng dựa trên các chuẩn Web, widget có thể tận dụng được sức
mạnh, khả năng và sự đa dạng của rất nhiều thư viện Javascript có sẵn hiện nay
(Google Map, Yahoo UI, Dojo, JQuery, Prototype, jMaki…).
Việc mở rộng widget để bổ sung khả năng tương tác như các ứng dụng RIA (Rich
Internet Application) cũng không gặp nhiều khó khăn vì đa số các công nghệ hiện
nay đều cung cấp các kỹ thuật chuyên biệt để tương tác với Javascript. Chẳng hạn
Silverlight cung cấp HTML Bridge, Flash cung cấp ExternalInterface API… để
tương tác với các thành phần trong nội dung trình duyệt.
22
2.2.2 Mô hình biểu diễn widget
Dựa trên khảo sát mô hình đặc tả widget trong các widget Platform hiện nay
(Bảng 1-1), mô hình biểu diễn widget (widget Model) bao gồm các thành phần: thông
tin mô tả widget, tham số cấu hình, ngôn ngữ thể hiện, giao thức truy cập dữ liệu
riêng tư, mã kịch bản xử lý trên hệ khác, kiểu định dạng thể hiện, nội dung widget.
Sau đây, chúng tôi sẽ trình bày chi tiết ý nghĩa, công dụng của các thành phần
này.
2.2.2.1 Thông tin mô tả widget
Thành phần thông tin mô tả widget (widget Description) khai báo các mô tả
chung về widget, chẳng hạn: widget Name, unique ID, Author, Author Email,
Description, Version, Key, Tags, Screenshot, Thumbnail..
Thông tin này được sử dụng bởi các công cụ Mashup Framework phục vụ cho
việc quản lý, phân loại widget, hoặc cung cấp cho người dùng widget các mô tả, chỉ
dẫn trong quá trình sử dụng.
2.2.2.2 Tham số cấu hình
Thành phần tham số cấu hình (User Preference hay User Configuration
Parameter) định nghĩa các tham số cấu hình hoạt động của widget. Các tham số này
thường được cung cấp cho người dùng, được lưu trữ và nạp lại qua mỗi lần sử dụng.
Tùy theo công dụng, mỗi dạng widget sẽ cung cấp các tham số cấu hình khác nhau.
Ví dụ: widget hỗ trợ đọc Web Feed có tham số là Feed URL xác định địa chỉ
RSS hoặc Atom cần truy cập. widget thể hiện dữ liệu có hỗ trợ cơ chế phân trang có 2
tham số cấu hình là Feed URL, Page Size xác định địa chỉ RSS và số phần tử hiển
thị trên mỗi trang.
Đa số các nhà cung cấp widget (widget Platform) đều tự đưa ra đặc tả tham số cấu
hình của riêng nó (Netvibes, Google Gadget, Springwidget, Yourminis, IBM
iWidget, W3C…) do HTML không cung cấp các thẻ mô tả thành phần này.
23
Ví dụ: widget hiển thị nội dung Web Feed theo đặc tả Netvibes có tham số cấu
hình được mô tả như sau:
<preference name=“url” type=“text” label=“URL”
defaultValue=>
<preference
name=“limit” type=“range”
label=“Number of items to display” defaultValue=“10” step=“1”
min=“1” max=“25”/>
Giao diện kết quả từ biểu diễn trên được minh họa trong Hình 2-6. Trong đặc tả này,
mỗi thẻ preference định nghĩa một tham số và tùy thuộc vào giá trị thuộc tính type
sẽ kết xuất giao diện nhập liệu tương ứng. Danh sách các kiểu dữ liệu mà tham số cấu
hình sử dụng theo đặc tả Netvibes được trình bày trong Bảng 2-3.
Hình 2-6: Giao diện User Preferences kết quả với đặc tả trong ví dụ trên
(Nguồn: Netvibes.com)
Giá trị
thuộc tính type
Mô tả
text Kết xuất là một TextBox
Boolean Kết xuất là một CheckBox
Hidden Không kết xuất, dùng để truyền các tham số ẩn hoặc khởi tạo giá trị
Range Kết xuất là một HTML ListBox, trong đó mỗi phần tử (thẻ )
là một con số.
List Kết xuất là một HTML ListBox
Password Kết xuất là một TextBox để nhập Password
Bảng 2-3: Các kiểu dữ liệu tham số cấu hình được hỗ trợ bởi Netvibes
24
Các nhà cung cấp widget khác chẳng hạn Google, cũng cung cấp đặc tả biểu diễn
thành phần tham số cấu hình hoạt động. Tuy nhiên, đa số đều mô tả tham số dựa trên
kiểu dữ liệu cơ sở (chuỗi, số, kiểu luận lý…) và khi sử dụng sẽ nhờ đến Framework
Engine chuyển đổi thành giao diện đồ họa cung cấp cho người dùng.
2.2.2.3 Ngôn ngữ thể hiện
Một số widget Platform bổ sung một số biểu diễn cho phép tạo widget đa ngôn
ngữ: Google Gadget1, Yahoo widget, W3C 2, OpenAjax widget…
Cơ chế thực hiện đa ngôn ngữ của Google Gadget được thực hiện như sau:
Các chuỗi nội dung cần đa ngôn ngữ trong widget sẽ được phân tách khỏi nội
dung và khai báo trong các tập tin _.xml.
Ví dụ: Nội dung tập tin khai báo các chuỗi thể hiện tiếng Anh được mô tả như
sau:
Hello World.
Color
Red
Green
Blue
Gray
Nội dung tập tin khai báo các chuỗi thể hiện tiếng Tây Ban Nha:
Hola Mundo.
Color
Rojo
Verde
Azul
Gris
Mỗi chuỗi trong các tập tin được tạo từ 2 thành phần: khóa định danh cho chuỗi
(thuộc tính name) được dùng chung trong nhiều tập tin ngôn ngữ và chuỗi đã được
1
2
25
phiên dịch theo địa phương. Sau khi tạo xong các tập