Địa chỉ URL chính xác phụ thuộc vào câu hình của server, thông thường nó được xây dựng tương tự như: http:/Nocathost:8080/ps-3.3.3/path to your directory Laszlo source file UAL Applicat
Trang 1MỤC LỤC
GIỚI THIỆU 2-5 se: 1
TIM HIEU CONG NGHE OPENLASZLO 3
PHAN I - TONG QUAN 4
Chuong 1 Téng quan vé OpenLaszlo 5
1.1 Giới thiỆU -.- HH9 HH H11 g1 ng ng crờc 5
1.2 Nội dung ¿ — 5
Chương 2 Sơ lược về ngôn ngữ sees 20
2.1 Téng quan về cú pháp và ngữ nghĩa .- 21
2.2 Các đối tượng và các thuộc tính -sccscscsscrse¿ 25
2.3 Các sự kiện và các phương thức -s «<< <ssses+ 26
2.4 Các ràng DUỘC ác sc nh nh HH HH nen 28
2.5 Truy cập, ánh xạ và liên kết dữ liệu - 29
2.6 Liên kết cdc tag va script trong các chương trình LZX 31
2.7 Biên dịch và thực thi .- 6< Ssssvxsgxereeresesezee 33-
Chương 3 Những hiểu biết cơ bản về L.aszlo 34
Chương 4 OpenL.aszlo cho Designer 5-5 s5 cs- 39
1 Tổng N00 a 39
2 Tương tác liên tiếp thay vi refresh lại trang 40
3 Các qui trình thiết KẾ .-2- se ceEEvEEteExeEEtrerrrsrred 40
4 How Does It LOOK? . - 2: S2 SE x3 gkEseseesrd 41
5 Sử dụng các nguỗn tài nguyên . 2-cccczvocceccreere 42
6 Các file resource dự a trên Vectơ và Bitmap 42
ri 42
PHAN II - CAC THANH PHAN CO BAN CUA OPENLASZLO 42
Chương 5 Các thành phần cơ bản của Laszlo 42
5.1 Giới thiệu các componenIi - 6s sexsecsesrsss 44
5.2, VIEW COITIDOTI€TI - + (s3 S2 SE SE ExEeEEEEsErEsersersree 46
5.3 Adnimation compOn€TI( . s 5s se veEsexexsssscss 53
5.4 Rich text COMpONMENL ccccsessssssscsesesesssetecececvasestacseeees 54
5.5 Drawing C09905 0 TT 061155 00005500 ket 55
PHAN III -LOP VA LAP TRINH HUONG DOI TUONG 58
Chương 6 Các lớp và lập trình hướng đối tượng « 58
6.1 Giới thiệu về lớp và lập trình hướng đối tượng 59
6.2 CAC [ỚP, c1 HH1 1111111151111 eEesrerrec 61
6.3 Các phương thức, sự kiện, handler và các thuộc tính 68
6.4 Mở rộng các ÏỚp - ca SS 12 SH Hs can set 81
Chương 7 Các delegate và các ràng buộc .s« 88
7,1 Các deÏegaf - cá s cv TH HH n HT ng ng gen xe 88
7.2 Cac constraint c1 go ng ng 92
Chương 8 Tích hợp trình dUYỆT .o s5 so sSssSesesssssese 98
8.1 Giới thiệu về lớp và lập trình hướng đối tượng 98
xe 2o 98
Trang 2
8.3 Các phương thức, sự kiện, handler va các thuộc tính 98
8.4 Mở rộng các lớp . «<< 100
§.5 Giới thiệu về lớp và lập trình hướng đôi tượng 100 6.Ố Các ÏỚP - LH HH TH TH TH HC HH cư 101 6.7 Các phương thức, sự kiện, handler và các thuộc tính 102
8.8 Mở rộng các lớp na 104
8.9 Cac phương thức, su kién, handler va các thuộc tính 105 8.10 Mở rộng CAC Opa ee ececssssesceseesessesesseseesscsesseessesessssenes 105 PHAN IV —- DATA VA DATA BINDING 106 Chương 9 Data, XML, và XPatÌh 5-5 e<s<sssse 107 9.1 Data trong LZX LH HH ng 04 K4 107 9.2 XMLL, là BÌ? Ác HH HH TH HH ngu 107 L4 1n" 109 Chương 10 Truy cập và liên kết dữ liệu - .s-cs 111 10.1 Tổng quan về liên kết dữ liệu -s-czsz=cs¿ 111 10.2 Dataset va Data node trong OpenLaszlo 112 10.3 Cac cach dé include đữ liệu -2csczecczseres 114
10.4 Pham vi dataset ccccccccsscsssscscecscccsscserscescessceaseens 116
10.4 AJAXX APPI ST 111161110101 0n HH ngu 117 10.5 Các dữ liệu kiểu DatapoInf€r sccccs se sec 118 10.6 Truy cập đữ liệu -.- Server 119 10.7 Liên kết đơn giản 2-cstccxtvcrxevEExevrrrerre 120 10.8 Ánh xạ các dafapOiTẨ€T co csvcreerierrerriee 120 10.9 Xử lý đữ liệu Sàn HH HH TH Hye 121 10.10 Data rep]iCafiOH ó <5 5S + 3c vs vn crkre 123
Chương 11 Xây dựng các ứng dụng hướng dữ liệu 127
11.1 Truy vân đữ liệu sàn sex 127
11.2 Cập nhật các dafaset - nung srke 129
11.3 Làm việc với các datapointer .-. -cscccscsea 129 11.4 Làm việc với các ÏỚp 2< s cv rescs 130 11.4 Làm việc với một datasOUTCe . .- 5 cscesssx 130 PHẢN V - ĐIÊU CHỈNH VÀ KIỂM TRA VIỆC THỰC THI 132 Chương 12 Xây dựng các ứng dụng hướng dữ liệu 133 12.1 Ðo thời giani - - G scH ng gen rrerse 133 12.2 Thực thị JaVaSCrIp . 5-5 ca cx an xvv evexsee 133 12.3 Tối ưu thời gian khởi động . - 5c csc<ccs, 136 12.4 Tối ưu thời QIAN CHạy án tH HH neo 137 12.5 Kích thước ứng dụng . cccccvsrrece 139 12.6 Các lớp nội tuyến c2 EEkEEEtrreereerrcee 140 12.7 Quản lý bộ nhớ cecctetrerEEcrrrree 142 12.8 Điều chỉnh bằng tay các ràng buộc và các thuộc tính 142 PHAN VI - TÍCH HỢP SERVER 144 Chương 13 Cookie va session “ ° 145
13.1 Sử dụng các €OOKI€ sen Sen rereree 145 13.2 Proxying request và Tesponse headers 145 13.3 Chu trình sông của một yêu cầu dữ liệu 145
Trang 3
Chương 16 Gỡ lỗi 175 16.1 Sử dụng trình gỡ lỗi - 5 sccecevzzeeree 180 16.2 Cấu hình trình gỡ lỗi scczzsecrzsea 181
- 16.3 Logging toi Server cecccssssssssssssscssscsceesseescteees 181
16.4 Định dang xuat .ccccccsssscssesssscssssssssesssecseecereseeesess 182 16.5 Quản lý các thuộc tính đối tượng 182
16.6 Tracing và Backtracing -. cccccercee 182 16.7 Tìm kiếm các "memory leaks” -«« s «+ 182
17.1 Tổng quan se xev2EEESEEEEvEEEEitEEerrrreerre 185 17.2 Including Ïzunit cormponent «se: 185 17.3 Viét CAC test CASE escscscsssssssssesscstecsescessecssseesssecsssecen 185 17.4 Các kỹ thuật cải tiến - 0s cccccccrevrecreccceee 186 17.5 Chaining f€SS 5 cành nrsvcessee 189
PHÂN TÍCH NHIỆM VỤ
THIET KE UNG DUNG
KÉT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIẺN -s-eea
PHỤ LỤC
Trang 4Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
eee
GIOI THIEU
1 Giới thiệu chung
- Ngày nay, tin học ứng dụng đã trở thành một mảng không thể thiếu trong cuộc sông và trong xã hội Nó giúp ích rất nhiều cho công việc hàng ngày
và là công cụ hữu dụng cho con người
-_ Cùng với sự phát triển của nó là các công nghệ ra đời nhằm đáp ứng nhu
câu không chỉ riêng của cá nhân ai mà cho toàn thể Các công nghệ này là
công cụ chính cho việc phát triển các ứng dụng tin học Vì vậy, các công nghệ này không thể thiếu đi tính “mở” Ngày càng có nhiều người quan tâm đến vẫn đề cùng nhau xây dựng và phát triển các chuẩn ngôn ngữ chung để tiến tới xây dựng những sản phâm hùng mạnh phục vụ lợi ích chung cho Con người
- Luan van này giới thiệu về một trong những công nghệ - OpenLaszlo và xây dựng ứng dụng trên nền OpenLaszlo
vào giai đoạn mới Mà một trong những điều kiện tiên quyết là vấn đề bane quyên phần mềm Tuy nhiên, không phải bất cứ cá nhân hay tổ chức nhỏ
nào có thể đủ lực để đáp ứng được điều đó Như vậy không có nghĩa là họ
sẽ hoàn toàn không được sử dụng các tiện ích như họ muôn OpenLaszlo ra
đời là một công cụ có thể giúp họ giải quyết được một số vướng mắc này
Đã có một số các webapplication giong như các ứng dụng Office cho phép
chúng ta có thể thực hiện các tác vụ giông như trong bộ Office thật sự của Microsoft
- _ Trong luận văn nay, vi đây là công nghệ mới nên luận văn thiên về việc tìm hiểu công nghệ và một ứng dụng nhỏ thể hiện đặc điểm nỗi bật nhất của OpenLaszlo là xây dựng các ứng dụng giống như các ứng dụng để bàn
trước đó Bên cạnh đó, luận văn còn xây dựng một site thông tin mái ấm
nhà mở Đây là một site cho phép người dùng có thể xem các thông tin về
các hoạt động liên quan đến hệ thống các trung tâm, mái ấm trong thành
phố Hồ Chí Minh
3 Nhu cầu thực tiễn
- Vé mat céng nghệ, nhu cầu thực tiễn của công nghệ này là rất lớn như đã trình bày Nó có thể giúp chúng ta có thể được sử dụng các ứng dụng mà bắt buộc phải có bản quyền nhưng không phải ai cũng có tiền để mua các
———ễ
Trang l
Trang 5Trang 2
Trang 6Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
—_——_ờ——mmmmm—>ananaaaaaơaơơơaaaơơaơơơơơơơơaaaaaaaaaaơơơơn
TÌM HIẾU CÔNG NGHỆ OPENLASZLO
Trang 7
Đỗ Thị Khánh Tâm - 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
PHAN I: TONG QUAN
Chương 1 Tổng quan vé OpenLaszlo
1 Giới thiệu
2 Tóm tắt về Client và Server
3 Cấu trúc củaLaszlo Server
4 Cấu trúc Laszlo Client
5 Dòng đữ liệu của một ứng dụng OpenLaszlo dựa trên OpenLaszlo
5 Truy cập, ánh xạ và liên kết dữ liêu
6 Lién két cdc tag va script trong các chương trình LZX
7 Biên dịch và thực thi Chương 3 Hiểu biết cơ bản về OpenLaszlo Chuong 4 OpenLaszlo cho Designer
1 Téng quan
2 Tuong tac lién tiép thay vi refresh lai trang
3 Các qui trình thiết kế
4 How Does It Look?
5 Sử dụng các nguồn tài nguyên
6 Các file resource dự a trên Vectơ và Bitmap
7 Fonts
8 Hướng dẫn thiết kế các OpenLaszlo Component
Trang 8Ngày nay, trong mọi lĩnh vực của cuộc sống con người ta càng hướng tới
những gì gần gũi, tiện lợi và đơn giản hơn Công nghệ thông tin cũng không nằm ngoài mục đích này
Các công nghệ liên tục thay đổi và cũng liên tục ra đời các công nghệ mới tạo nên một môi trường công nghệ kỹ thuật phong phú trợ giúp đắc lực các nhà quản trị và người sử dụng
Ajax (Asynchronous JavaScript + XML) được tạo ra bởi Jesss James Garrett
của Adaptive Path Một số thành phần của Ajax đã được mô tả trước đây là
Dynamic HTML và việc kịch bản hóa từ xa Về mặt công nghệ, Ajax đưa ra
các biểu thức cho các tiềm năng chưa thực hiện được trong các công nghệ trình duyệt web trước đây Google và một số tổ chức chính khác đã sử dụng Ajax để xây dựng những gì có tính chất cộng đồng được mong đợi giống như những gì
mà một ứng dụng web có thể thực hiện Một số lượng lớn các kỹ thuật được sắp xếp để lấp đầy những thiếu sót với sự phong phú hơn, thông minh hơn hoặc về mặt cải tiến các client Ajax cho phép thực hiện điều này tốt hơn, thông minh hơn mà chỉ sử dụng các kỹ thuật đã được cài đặt trên số lượng lớn
các máy tính hiện đại
Ajax - OpenLaszlo có thể nói là một công nghệ khá mới, đặc biệt là ở Việt
Nam nhưng nó được sử dụng ngày càng phổ biến vì khả năng tương tác cao,
làm cho các ứng web gần với ứng dụng để bàn hơn
Một đặc điểm nữa cho thấy Ajax — OpenLaszlo ngày càng được ứng dụng rộng rãi là nó độc lập với hệ điều hành (không phụ thuộc nền), xứ lý dữ liệu XML, str dung cdc Javascript
Do đó, để sử dụng được kỹ thuật này, bạn cần có kiến thức căn bản về Java và
JavaScript cùng với XML, các kiến thức về lập trình hướng đối tượng Và nếu bạn đã có kỹ năng thiết kế đồ họa thì thật là tuyệt vì bạn có thể bằng lòng với
những gi ma Ajax — OpenLaszlo cé thé trợ giúp và đáp ứng nhu cầu của bạn Vậy tại sao chúng ta không thử tìm hiểu về Ajax — OpenLaszlo Nó rất thú vị
Dé giúp bạn bắt đầu làm quen và có kiến thức tong quan vé OpenLaszlo va bước đầu có các thao tác và kỹ năng đơn giản dé viét code trong OpenLaszlo, chúng tôi xin giới thiệu một số hiểu biết cơ bản về OpenLaszlo, lam thé nao dé thiết lập cũng như môi trường làm việc của ứng dụng Laszlo
1.2 Nội dung
1.2.1 Laszlo là gì?
OpenLaszlo là một platform nguồn mở dùng để tạo ứng dụng web không cần
cài đặt và có giao diện của ứng dụng phần mềm máy tính để bàn
Trang 5
Trang 9
Đỗ Thị Khánh Tam—02DHTH196 — Vị Thị Hồng Hải - 02DHTH065
- Chương trình OpenLaszlo được viết bởi ngôn ngữ XML cùng với JavaScript
và biên dịch rõ ràng ra Flash và trong tương lai không xa là DHIML OpenLaszlo APIs cung cấp hoạt hình (animation), cách bố trí (layout), đóng kết dữ liệu (data biding), giao tiếp server (server communication) và khai báo giao diện người dùng (UI) Một ứng dụng OpenLaszlo có thê nhỏ với một file source đơn lẻ hoặc cũng có thể đại diện cho nhiều file mà các le này định nghĩa các lớp và thư viện dùng lại được
- OpenLaszlo được viết chạy một lần ở bất cứ nơi đâu Một ứng dụng OpenLaszlo phát triển trên một máy chạy trên tất cả các trình duyệt web hàng đầu trên tất cả các hệ điều hành may tinh dé ban hang dau
1.2.2 Lam thé nao dé cai dat Laszlo?
1.2.2.1 Phat trién ing dung Laszlo — Tom tat qui trình triển khai
chương trình
- Chu trinh phat triển chương trình sẽ khác nhau một it tùy thuộc vào mô hình triển khai ứng dụng của bạn là proxied hay SOLO Việc triển khai các ứng dụng theo mô hình proxied thì dùng trong trường hợp đơn giản
- _ Qui trình triển khai một ứng dụng OpenLaszlo có thể được tổng quát như sau:
o Khoi déng OpenLaszlo Server
o_ Sử dụng một trình soạn thảo, viết code chương trình, lưu dưới dạng file
mở rộng là lzx
Đặt file này vào trong thư mục tương ứng
Biên dịch ứng dụng
Debug (gỡ lỗi) và hiệu chỉnh chương trình
Lặp lại các bước trên (2-5) cho đến khi chương trình chính xác
o_ Triển khai ứng dụng
- _ Mỗi bước trong những bước trên được mô tả cụ thể bên đưới
e _ Khởi động OpenLaszlo Server
- Cách để khởi động OpenLaszlo Server (OLS) phụ thuộc vào hệ điều hành và
cách nó được cài đặt như thê nào Trên Window, thông thường bạn khởi động
OLS từ thanh Start menu Trên Mac OS X, việc thiết lập mặc định đặt biểu tượng của OpenLaszlo Server trên desktop Nếu bạn chưa cài đặt OpenLaszlo
http:/www.openlaszlo.ore/oldownload
e Tao mot file chuong trinh
- Vi cac file LZX 1a cac tai ligu dang XML, bạn có thê sử dụng bất kỳ một trình soạn thảo XML nào để tạo và hiệu chỉnh nguồn Các tên file phải có đuôi tận cùng là Ìzx
e Dat file vao thu mục thích hợp
- Dé bién dich chuong trinh béi OpenLaszlo Server, cac file phải được đặt trong
các thư mục con của đường dẫn sau:
- _ Đối với Windows:
c:\Program Files\Laszlo Presentation Server 3.3.3\jakarta-tomcat-
3.0.24\webapps\jps-3 3 3\
SST
Trang 6
Trang 10
Đỗ Thị Khánh Tâm -02DHTHI% _ Vi Thị Hồng Hải - 02DHTH065
.=.aaana—mxxxs>mmmmmmmaanaarasazdZ sẵẳễs.sœzaaœœơ ‹œơơmmmmz>zzxsss>>s>zrzrzsninunm=ễễnnzzWxợW:ợợWợớợưn
-_ Đối với MacOS
Macintosh HD:/Applications/Laszlo Presentation Server 3.3.3/jakarta-tomcat-
5.0.24/webapps/lps-3.3.3:
- Th6éng thudng ba sé tao một thư mục với một tên chẳng hạn như my-apps trong nơi mà các chương trình được đặt để phát triển Bạn có thể xếp các thư mục con lồng vào nhau, như:
my- apps/practice/samples
với điều kiện là chúng ở dưới đường dẫn đúng tới OpenL.aszlo Server (Ips)
e _ Biên dịch chương trình
- _ Có hai kỹ thuật khác biệt cho việc biên dịch ứng dụng:
o_ Bạn có thể tải ứng dụng đó vào trong một trình duyệt web, OpenLaszlo Server biên dịch nó một cách tự động khi chương trình được sử dụng lần đầu tiên và bất kỳ thời điểm nào khi nó thay đổi Hoặc:
o Bạn có thể gọi một trình biên dịch độc lập tách biệt
- - Cách đơn giản nhất và thông dụng nhất để biên dịch các ứng dụng, đặc biệt là khi bạn khai thác lần đầu tiên OpenLaszlo là hãy để OpenLaszlo Server điều khiển nó Cả hai kỹ thuật đều được mô tả chỉ tiết dưới đây
> Bién dich bang cach tai ứng dụng vào trong một trình duyệt web
- _ Để chạy chương trình của bạn, đơn giản là hãy tải nó vào trong trình duyệt của bạn Địa chỉ URL chính xác phụ thuộc vào câu hình của server, thông thường
nó được xây dựng tương tự như:
http:/Nocathost:8080/ps-3.3.3/path to your directory
Laszlo source file UAL Application display area
Encoding: gzip; Size orofile
- OpenLaszlo Server kiém tra cac file nguồn xem cú pháp có hợp lệ hay không,
biên dịch chúng và lưu trữ thực thi, tạo ra ứng dụng một cách ngay lập tức có thé thấy được trong trình duyệt
> Sử dụng trình biên dịch độc lập lzc
- Trinh bién dich độc lập được gọi là lzc Nó được định vị trong
$LPS_HOME/WEB-INF/Ips/server/bin/lzc
- _ Dưới đây là các lựa chọn săn có cho việc biên dịch:
-D<name>=<value>: Thiết lập thuộc tính tên/biến với một giá trị
-D<name>: Short for -Dname=true
Trang 7
Trang 11
Đỗ Thị Khánh Tâm —- 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
—_—————nssasanaanmnaaaann
v: Ghi lại thông tin tiễn hành tới thiết bị xuất chuẩn
mcache on|off: Bật/tắt bộ đệm media (truyền thông) Mặc định là tắt onerror [throw|warn]: Hoạt động đảm nhiệm các lỗi biên dịch Mặc định
là cảnh báo
-help: Các danh sách của tất cả các lựa chọn
flush-script-cache: Không bỏ bộ đệm script trước khi biên dịch
Các lựa chọn cho việc xuất (output options):
runtime=[swf6|swf7|swf8]: Biên địch thành swf6, swf7, swf8
dir outputdir: Thư mục xuất , -g | debug: Thém thong tin viéc sita 16i vao trong đối tượng xuất ra -p | profile: Thém théng tin hiện trạng vào đối tượng xuất ra
Các lựa chọn cho việc ghi (logging options):
-I<loglevel>: Mức độ logging
-l<loggerName>=<loglevel>: Mire d6 logging level
-Ip file: Cac file thuéc tinh Log4j
log logfile: Chi dinh file log
schema: Ghi giản đồ tới thiết bị xuất chuẩn
o_ ~script: Ghi JavaScript tới thiết bị xuất chuẩn
Sửa lỗi và hiệu chỉnh chương trình Nếu Sever dò tìm ra lỗi mà lỗi này ngăn cản việc biên dịch, các thông điệp lỗi
sẽ được hiển thị trên trình duyệt
nternet Explorer:
File Edit View Favortes Tools Help
aridross 4) http:/flocathost :6080/ips-3.,3/my-anps/button.lax
The application could not be compiled due to the following errors:
button.tzx:1-1: Content is not allowed in prolog Some text editors may insert a Byte-Order Mark (the sequence of characters
UxEFBBEF) at the start of your source file without your knowledge Please remove any non-whitespace characters before the start of
2 first '<' character
- Néu no do tim ra 16i non-critical (không tới hạn) hoặc các cấu trúc đáng ngờ ngăn cản việc biên dịch, các thông điệp cảnh báo sẽ được hiển thị trên trình duyệt ở bên dưới ứng dụng của bạn (bạn có thé cuộn xuống để xem cảnh báo:
e Lap
- Sau khi bạn thay đổi nguồn (source), cách đơn giản là nhấn vào nút Refresh trên trình duyệt OpenLaszlo Server sẽ tự động kiểm tra lại source về cú pháp sau đó biên dịch lại, lưu trữ lại và hiển thị ứng dụng trên trình duyệt
Trang 12Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
- _ Tài liệu này giải thích làm thế nào để triển khai các ứng dụng OpenLaszlo với OpenLaszlo Server
- Một ứng dụng OpenLaszlo là một tập các file LZX và các file art có ích đi kèm, các file dữ liệu mà được sử dụng bởi ứng dụng đó
-_ OpenLaszlo Server là một tập 100% các lớp thuần túy Java (theo một số file cấu hình) mà có thê được sử dụng để triển khai và phát triển các ứng dụng bên
trong Java servlet containers/application server Tài liệu này sẽ xem xét lại một
cách chỉ tiết và sau đó sẽ đi tới giải thích làm thế nào để triển khai các ứng dụng OpenLaszlo với OpenLaszlo Server
- _ Khi một OpenLaszlo đã được phát triển (theo kiểu proxied), đành cho những người sử dụng hơn là những nhà phát triển để truy cập nó, nó phải được triển khai Các ứng dụng OpenLaszlo đã được trién khai bén trong Java servlet container/application server N6 bao gôm các bước sau:
o_ Phát triển một ứng dung Laszlo
o_ Lựa chọn, cài đặt và câu hình một bộ chứa đựng servelet cho việc triển khai
o Tạo một ứng dụng web bao gồm ứng dụng OpenLaszlo và phần mềm OpenLaszlo Server
o Cau hinh OpenLaszlo Server
o_ Giám sat hoạt động OpenLaszlo Server
e Phát triển một ứng dụng Laszlo
- _ Để phát triển một ứng dụng trong OpenLaszlo, bạn phải cài đặt OpenLaszlo
Server trên máy phát triển của bạn OpenLaszlo Server xuất hiện ở hai dạng phân bố sau:
e LPS (dạng chuẩn)
- _ Tích gộp Jakarta Tomcat Servlet Container
- Gồm một bộ lưu trữ ứng dụng web Java (WAR) mà được cấu hình trước cho cac tng dung OpenLaszlo
- _ Một số các yêu cầu trong các bước cài đặt đơn giản
« OpenLaszlo Core
- Gồm một lưu trữ ứng dụng web Java (WAR) mà được cấu hình trước cho các
ứng dụng OpenL aszlo
- - Các yêu câu như bạn phải có một bộ Java servlet container hoặc máy dịch vụ
ứng dụng hỗ trợ ít nhất sự dinh dang Java servlet 2.3
- - Thiết lập tương tự có thể được sử dụng cho cả việc phát triển và triển khai một
ứng dụng OpenLaszlo Tùy chọn, bạn có thể sử dụng một thiết lập riêng cho việc triển khai các ứng dung OpenLaszlo cua ban
Trang 13
Đỗ Thị Khánh Tâm - 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
thường là một servlet container Thông thường, OpenLaszlo Server yêu cầu servlet container/application server hỗ trợ phiên bản xác định ít nhất là từ 2.3 OpenL.aszlo Server thường kèm với Jakarta Tomcat Servlet container (được sử dụng để triển khai các ứng dụng OpenLaszlo) Laszlo không xác nhận bất kỳ
các servlet container nào
Khi bạn chọn lựa và cài đặt một servlet container, bạn có thể điều chỉnh một số thuộc tính cấu hình mặc định của chúng Cụ thể, bạn cần cau hình mặc định công TCP/IP và hình thức bảo mật (SSL/https) Bạn có thể cần thiết lập cấu hình JVM của confainer giống như ban đầu và cực đại hóa kích thước heap,
mặc định và cực đại hoa so thread
Thiết lập kích thước bộ nhớ Java (heap)
Bạn có thể thiết lập các kích thước cho heap thông qua lựa chọn từ dòng lệnh -Xmx và -Xms, chẳng hạn như:
Webapp là một số các gói giống như là các file đơn lẻ mà được gọi là các file lưu trữ ứng dụng web (WAR)
Sự phân tán LPS (chuẩn) cùng với OpenLaszlo-được nhúng thư mục webapp
đã cài đặt trước trong Tomcat Thư mục ứng dụng web là:
SINSTALLDIR/Server/Ips-3.3.3 webapp nay bao gồm các ứng dụng mẫu Laszlo, ví dụ như các file LZX, các
hướng dẫn và tài liệu Sự phân tán LPS Core thường đi kèm với một bản sao
Laszlo nhúng webapp cho bạn cài đặt vào trong servlet container của bạn Thư mục của phiên bản webapp này là:
ŠINSTALLDIWNIps-3.3 3
Tên của webapp là một phần của địa chỉ URL sử dụng để truy cập các ứng
dụng Laszlo của bạn Chúng ta sẽ sử dụng chuỗi Swebapp bên dưới để chỉ ra tên của ứng dụng triển khai web
———_————=ễ SSSI
Trang 10
Trang 14
Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
Tạo các ứng dụng web nhúng OpenLaszlo
Để tạo một ứng dụng OpenLaszlo nhúng webapp, đơn giản là bạn tạo mới một thư mục va copy vào trong thư mục WEB-INF từ Ips-3.3.3 webapp Trên một
hệ thống UNIX, thyc hién:
mkdir myappep -r 8LPS-WEBAPPDIR/WEB-INF myappcp -r $LPS-
WEBAPPDIR/ps myapp
Ở đây, $LPS-WEBAPPDIR là đường dẫn để copy ứng dụng web Ips-3.3.3 Đối với phân bố LPS (chuẩn), $LPS-WEBAPPDIR là $IN STALLDIR/Server/Ips- 3.3.3, |
Để đặt các ứng dung Laszlo cua ban bén trong myapp, copy cdc file LZX (.1zx)
và các thành phần liên quan art cho (các) ứng dụng Laszlo của bạn bên trong thư mục myapp
Đề triển khai webapp, hãy xem những chỉ dẫn của servlet container sau
Ghi chi: chi:
Chú ý rằng Ips-3.3.3 webapp được gói với LP§ đã được cầu hình trước đó cho việc phát triển, không phải triển khai Trước khi triển khai các ứng dụng của bạn, bạn sẽ cần cầu hình lại OpenLaszlo cho việc triển khai, được giải thích trong đoạn tiếp theo
Tạo OpenLaszlo Server cơ bản nhất OpenLaszlo Server hình thành với một số thành phần Của nó, chăng hạn như
tài liệu và các ví dụ, bạn có thể cần hoặc muốn để triển khai với ứng dụng OpenLaszlo của bạn Để tạo một cấu hình triển khai nhỏ nhất: (dành cho LPS
Ban con co thé remove:
0 Ips-3.1/Ips/utils khi nó bao gồm trình xem xét mã nguồn jsp và một số tiện ích không cần thiết khác
1.2.2.4 Cấu hình OpenLaszlo Server
OpenLaszlo Server được định nghĩa trước cho việc sử dụng với tư cách là nền
tảng phát triển Có một số các thiết lập có thê cấu hình mà làm ảnh hưởng việc
thực thi và bảo mật mà sẽ được thiết lập một cách đúng đắn khi các ứng dụng
OpenLaszlo duoc triển khai Bạn có thể thấy ví dụ cấu hình triển khai đơn giản trong thư mục SWEBAPP/WEB-INF/Ipsconñg- deploy
Các file được sử dụng để cầu hình OpenLaszlo Server là:
SWEBAPP/WEB-INF/web.xml - Cấu hình các ứng dụng Java
]——_ —-
Trang 11
Trang 15Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
$WEBAPP/WEB-INF/Ips/config/Ips.properties — Cac thuédc tinh cấu hình
OpenLaszlo Server
$WEBAPP/WEB-INF/Ips/confg/Ips.xml — Cấu hình các file log Server và
các bộ lọc cho các yêu cầu đữ liệu và các tác vụ người dùng
$WEBAPP/WEB-INF/ips/config/Izusers.xml —- Dữ liệu người sử dung cho
viéc mac dinh OpenLaszlo Server security servlet
$WEBAPP/WEB- INF/Ips/config/crossdomain xml — File vi du Sample Cross Domain Policy cho cac tng dung ma cần truy cập HTTPS chạy thực Việc thay đổi các thiết lập trong bất kỳ file nào thuộc những file trên đòi hỏi ứng dụng web OpenLaszlo phải khởi động lại
WEB-INF/web.xml
Eile này được sử dụng để cấu hình webapp
web.xml phải chứa một khai báo servlet sử dụng lớp:
Còn có một số thiết lập khác mà bạn có thể thực hiện ở đây có ảnh hưởng tới
hệ thống chứng nhận sử dụng tính năng kết nối liên tục của OpenLaszlo
Server
WEB- -INF/ips/config/Ips properties
Eile này chứa nhiêu thiết lập mà ảnh hưởng tới hoạt động của LPS
Request types
Thông thường khi bạn triển khai một ứng dụng web bạn muốn vô hiệu hóa các loại yêu câu nào đó OpenLaszlo Server hỗ trợ nhiều nhiều loại yêu cầu được
biểu thị thông qua câu truy vân ?lzx có trong một URL Ban cé thé dinh dang
kiểu yêu cầu mặc định cho các URL mà không cần định dạng ?lzx thông qua thuộc tính defaultRequestType
Bảng các loại yêu cầu
LPS Response when
allowRequestXML ?lzt=xml XML cho nguồn ứng
dung LZX
TT
Trang 12
Trang 16D6 Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
LZX đã biên dịch application
allowRequestSOURCE ?Izt=source Trình bao bọc HTML
?lzt=debug cho mã nguôn LZX
allowRequestLOG ?Izt=log Đáp ứng với bản ghi chi
tiết hiện hành (log)
allowRequestERRORCOUNT ?zt=errorcount Lay số lỗi LPS
ị khi được thiệt lập
allowRequestGC ?lzt=ge Thực thi bộ thu dọn rác
se Lựa chọn phụ thuộc trình quản lý biên dịch
- - Thuộc tính này có 3 giá tri:
o_ Always: Biên dịch một ứng dụng LZX theo mỗi yêu cầu
o Check: Bién dịch một ứng dụng LZX nêu nó hoặc bất kỳ các file source nào của chỉnh nó hoặc các thành phần của nó thay đổi khi ứng dụng ở lần biên địch cuối cùng
o_ Never: Biên dịch ứng dụng LZX chỉ nếu không có phiên bản nào được lưu trữ Kết quả này làm cho server thực thi cao nhất nhưng nó đòi hỏi
server phải khởi động lại khi có bất kỳ một ứng dụng nào thay đổi
- _ Thông thường, các sự triển khai mà các file nguồn LZX là cố định sẽ sử dụng
giá trị never Đối với các triển khai mà các file source LZX và các thành phần
của nó có thể thay đổi, bạn phải sử dụng giá trị check Nếu bạn chọn gia tri
eS
Trang 13
Trang 17
Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
never để cập nhật ứng dụng, bạn phải đưa ra chuỗi yêu cầu lzrecompile=true tại phần kết thúc của yêu câu cho ứng dụng Bạn còn có thể cần cung cấp mật
mã quản trị theo với chọn lựa này
> Bộ đệm trình biên dịch kịch bản OpenLaszlo Server
- _ Server duy trì một bộ nhớ lưu trữ của các phân đoạn kịch bản được biên dịch Thông thường, giá trị mặc định để đáp ứng là 100 Trường hợp hiếm thấy là khi ứng dụng Laszlo được triển khai thì sẽ được hiệu chỉnh, biên dịch lại
thường xuyên hoặc phát sinh ra một cách tự động thông qua một yêu cầu tiền
xử lý, bạn có thể muốn làm tăng kích thước của bộ nhớ đệm này
Các thư mục bộ đệm OpenLaszlo Server
- Mac dinh, LPS sẽ đặt chính bộ nhớ đệm của nó bên trong thư mục WEB-INFO của các ứng dụng web Đó là: $INSTALLDIR/Ips-3.3.3/WEB-
INE/Ips/work/cache
‹ _ Cấu hình các bộ đệm Compiler, Media, và Data Cache
- _ Server sử dụng một số bộ đệm mà được lưu trữ thông qua một thuật toán chuẩn LRU (Least Recently Used — Lan str dung gan day nhất) Mỗi bộ nhớ đệm có thể được cấu hình phụ thuộc vào và mỗi một có thể được thiết lập để sử dụng chỉ đĩa hoặc bộ nhớ cộng với không gian đĩa thêm vào Các bộ nhớ đệm là:
ị
Cache Name Use | Compiler cache Applications
Media media runtime media | Data data runtime XML data |
name.disk.size Kích thước lớn nhất (tính theo -1 có nghĩa là thiết lập; 0
ị byte) cho đĩa đệm nghĩa là disabled
name.mem.size Kích thước lớn nhất (tính theo Giống như trên nhưng 0 có
ị byte) cho bộ đệm RAM nghĩa là cho phép 0 items
name.mem.item.max Kích thước lớn nhất (tính tho
ị byte) cho một mục trong bộ
ị nhớ
name.disk.load | Mac dinh 1a 0.75
name.disk.mapsize ‘Dung lugng anh xa ban dau |
Trang 18và dung lượng hiện tại, dung lượng sẽ được xấp xỉ gấp đôi bằng cách gọi phương thức rehash()
- Theo tiêu chuẩn, hệ số nạp mặc định (.75) đưa ra một sự cân bằng giữa giá trị thời gian và giá trị không gian để đạt được sự kết hợp tốt nhất Các giá trị cao hơn sẽ giảm không gian overhead nhưng làm tăng giá trị lookup (được phản
ánh trong hầu hết các lớp hoạt động của HashMap, bao gồm ca get() va put())
Số lượng các thực thể mong đợi trong ánh xạ và chính hệ số nạp của nó sẽ được đưa vào trong một tài khoản khi thiết lập dung lượng ban đầu Nếu dung lượng ban đầu lớn hơn con số lớn nhất của các thực thé chia cho hệ số nạp thì không có hoạt động rehash() nào xây ra
©e WEB-INE/Ips/config/Ips.xml
- File lps.xml file chứa các lựa chọn cấu hình cho:
o Việc định dạng một chế độ bảo mật “white-list/black-list? cho LPS
back-end data/media requests
o Cho phép/ngan can viéc ma héa nội dung gzip dựa trên user-agent
- Cho phéep/ngan can các kết nối liên tục dự trên user-agent Phân tử gốc của Ips.xm1 là <Ips-configuratino> và chỉ tồn tại hai tag:
©_ <optlon>
0 <application>
- Bat ky mét thé <option> nào bên dưới thẻ Slps-configuration> thì được mặc định là toàn cục Lựa chọn mặc định này có thể được ghi đè lên (overriden) bằng việc sử dụng thẻ <application>
-_ Thẻ <option> có một thuộc tính gọi là name mà lấy một trong các giá trị sau:
© content-encoding-user-agent: Xác định các tác nhân người sử dụng nào được cho phép/ngăn cản việc mã hóa nội dung
0 proxy-security-urls: white-list/black-list của việc cho phép/ngăn cản yêu
Trang 19
Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
- Hoăc chỉ cho phép các yêu cầu để tìm nạp đữ liệu (fetch data) từ
laszlosystems.com hoặc foobar.com domain:
- _ Một tập hợp các thẻ <option> có thể được đặt trong thẻ <application>, mà nó
sẽ override lựa chọn mặc định cho một đường dẫn ứng dụng Thẻ
<application> sẽ lấy một trong hai thuộc tính sau:
o Path: pathname của ứng dụng
o_ Pattern: Một biểu thức thông dụng để so khớp một đường dẫn ứng dụng
- _ Cả đường dẫn và mẫu có liên hệ với tên ứng dụng web
- Dé so khớp đường dẫn ứng dụng /exapmles/dataimage.lzx va chỉ cho phép yêu cầu URL mà cho bất kỳ một thư mục nào dưới i image.com va adobe.com:
- Ban con co thé sir dung mét biéu thtrc thông thường để so khớp với một tập các đường dẫn ứng dụng bằng việc sử dụng thuộc tinh partten:
- _ OpenLaszlo Server sử dụng các quyết định sau đây để quyết định bộ lọc nào sẽ được thêm vào ứng dụng:
o Do la thuộc tính path ứng dụng được so khớp và nội dung lựa chọn so
khớp của chính nó
©_ Đó là thuộc tính patfern ứng dụng được so khớp và nội dung lựa chọn so khớp của chính nó
©_ Đó là lựa chọn toàn cục được so khớp
o_ Cho phép các yêu cau
e _ Cấu hình LPS logging
- OpenLaszlo Server cung cấp một kỹ thuật cho phép cấu hình cao và việc ghi
có hiệu suất cao mà bạn có thể sử dụng để gỡ lỗi và giám sát các hoạt động server
- Server str dung g6i nỗi tiếng Log4j cho việc ghi chép chỉ tiết về hoạt động Bạn
có thể cầu hình việc ghi chép LPS bằng việc hiệu chỉnh các thành phần của log4j: việc cấu hình các tag trong file cấu hình Ips.xml Vi tri mac định cho file log là bên trong thư mục WEB-INE của các ứng dụng web tại §webapp/WEB- INF/Ips/work/logs/Ips.log
- _ Bạn có thể thay đổi đường dẫn này bằng việc sử dụng một tham số “File” trong
bộ Ips appender, vi du:
<appender name="Ips" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="Ips.log"/>
<! other settings here >
</appender>
- Ban cé thé hiéu chinh téng sé việc logging đã thực hiện bằng việc thay đổi độ
ưu tiên của logger từ thông tin để gỡ lỗi Các thiết lập mặc định sẽ lưu 5 bản sao lưu các file log với mỗi kích thước tối đa là 10 Mbytes Bạn có thể thay đổi chúng bằng cách sử dụng tham số MaxBackupIndex và MaxFileSize trong bộ lps appender Ví dụ sau sẽ lưu giữ 20 file log sao lưu với một kích thước tôi đa
là SMBytes:
<appender name="Ips" class="org.apache.log4j.RollingFileA ppender">
<param name="MaxBackupIndex" value="20"'/>
ễừỄnẶ
Trang 16
Trang 20Đỗ Thị Khánh Tâm - 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
N
»
<param name="MaxFileSize" value="5MB"/>
<! other settings here >
</appender>
servlet container sẽ duy trì việc log của chính nó
Sự cấu hình mặc định mà vận chuyến với OpenL.aszlo Server còn bao gồm một
bộ định tên logger, org openlaszlo.exceptions Server sẽ log các ngoại lệ bất ngờ tới logger này Trong suốt quá trình tiến triển, bộ logger này sẽ được hiểu trái lại như mức WARN hoặc ERROR nhưng hầu hết các khai triển sẽ chú thích nó ra ngaòi trừ khi chúng được gỡ lỗi
Cau hình Runtime log
Việc logging có thể được cầu hình trong suốt thời gian chạy thực với kiểu yêu cầu lzt=logconfg Yêu cầu bởi chính nó trả về cấu hình log4j cua server Ban
có thể sửa đối và yêu cầu OpenLaszlo Server đọc lại các lựa chọn cầu hình mơi của bạn bằng việc cho qua một tham số truy vấn lzt=logconfig&reread= 1 Server luôn luôn sem trong file log4j.xml trước tiên trong thư mục cầu hình của server trước khi kiểm tra cho phần tử <log4i: configuration> trong Ips.xml Bạn có, thê thông qua một cấu hình XML mới tới server bằng việc gửi sử dụng tham số xml:
(Persistent Connection Manager)
Cau hình WEB-INF/Ips/config-deploy sample deployment
Ngang hang voi thu muc config trong WEB-INF/Ips Ở đó có một thư mục có
tên là config- deploy mà chứa một ví dụ câu hình OpenLaszlo cho các mục đích
triển khai Để sử dụng thư mục này, đơn giản là bạn hãy xóa, di chuyển hoặc đổi tên thư mục config ra xa và sao chép, đổi tên config-deploy thanh config Bạn sẽ phải xem xét lại cấu hình cho phù hợp với nhu câu của bạn Tắt nhiên là phải khởi động (lai) OpenLaszlo Server
1.2.2.5 Bảo mật
OpenLaszlo Server và các ứng dụng OpenLaszlo thừa hưởng sự bảo mật của
bộ container trong/từ cái chúng được triên khai Nếu bạn thích để các ứng dụng OpenLaszlo đáp ứng thông qua truyền tải HTTPS an toàn, bạn cần cho phép đặc điểm này trong servlet container của bạn
Với một sô các ngoại lệ, các ứng dụng Laszlo làm việc tương tự nhau khi đáp ứng thực hiện thông qua HTTPS Hai ngoại lệ đó là:
EE EEE
Trang 17
Trang 21truyền tải an toàn từ bất kỳ một back-end nào tới server)
Chi ÿ:
Các ứng dụng OpenLaszlo cung cấp thông qua HTTP (không bảo mật) mà thực
thi trong Macromedia Flash 7 có thê đòi hỏi cấu hình server thêm vào để truy cập dữ liệu chạy thực và media thông qua sự bảo mật HTTPS Theo tài liệu
Macromedia, bạn cần cung cấp một file chính sách cross-domain mà cho phép như là đữ liệu tới dữ liệu từ xa của bạn OpenLaszlo cung cấp một ví dụ file chính sách cross-domain ($WEBAPP/WEB-INF/Ips/config/crossdomain.xml)
mà khi sao chép tới thư mục gôc của front-most server mà đáp ứng ứng dụng OpenLaszlo, sé cho phép HTTPS truy cập từ các ứng dụng mà được tải thông qua giao thức HTTTP (không an toàn) từ bất kỳ server nào
Nếu bạn đang chạy OpenLaszlo Server bên trong một servlet container và servlet container có thể truy cập chính xác, thì sau đó file crossdomain.xml sẽ được đặt trong ứng dụng web ROOT của container Nếu bạn đặt trước container của bạn với một server khác, chăng hạn như Apache, file này cần
được đặt trong thư mục gốc của server (ROOT) Vi du, với Apache, thu muc này là thư mục DocumentRoot của Apache (hoặc là gốc của thư mục máy ảo
Apache cho máy chủ host mà đáp ứng ứng dụng
Preventing denial of service (DOS) attacks
Cấu hình của servlet container (hoặc front-side server) của bạn có thể ảnh hưởng tới sự bảo mật của LPS Để ngăn cản các sự tấn công DOS (denial-of-
service ), bạn có thể cấu hình kích thước lớn nhất của một tông thé yêu cầu
HTTP, kích thước lớn nhất của các header yêu cầu HTTP, sô lớn nhất các
header trong một yêu cầu và kích thước lớn nhất của dòng yêu cầu thiết lập (url
hay chuỗi kết nối)
Tính dễ đọc của các file nguồn
OpenLaszlo Source Viewer di kém OpenLaszlo Server, cho phép bat kỳ người nào với các truy cập internet để đọc bất kỳ file XML nào, bao gồm các tai nguyên tới bất kỳ chương trình lzx nào, trong thư mục LPS bằng việc sử dụng một ' câu truy vẫn như: http://localhost:8080/Ips/Ips/utils/viewer/viewer.jsp?file=/examples/tag-
definition.Ìzx
Để ngăn ngừa điều này, dịch chuyên hoặc đổi tên của thư mục viewer từ
Ips/Ips/utils va thiét lap allowRequestSOURCE=false in the file
Ngoài ra, chú ý rằng source code của các img dung của bạn có thể được tạo ra
trực quan thông qua danh mục context (“nhân phải”)
ee
Trang 18
Trang 22Nếu mật mã quản trị đã được câu hình trong file lps.properties, thì sau đó bạn
sẽ cần đến pasxord để sử dụng console
1.2.2.7 Khả năng tương thích trình duyệt Các trình duyệt khác nhau biến đổi theo sự hễ trợ của chúng cho các lựa chọn chang hạn như các lựa chọn truy van http va nén gzip Bảng bên dưới tông kết
sự hiểu biết về khả năng tiềm tàng của trình duyệt tại thời điểm này Như đã giải thích trong WEB-INF/Ips/confñg/Ipz.xml, file Ips.xml được câu hình với nén regexp mà địn dạng những trình duyệt này bằng cách so khớp trên chính chuỗi người sử dụng-tác nhân
Older Safaris, See Ips.xml Everything but Mac IE5.2,
2.2.2.10 Cac sd liệu thông kê Bạn có thể sử dụng yêu cầu lzt=stat tới các số liệu thống kê kiểm tra server Bạn cần xác nhận rang bạn có kiểu Tequesf trong được nhúng trong
Ips.properties Kiểu stat request sẽ trả về XML việc thể hiện các cấu hình
server thông thường, server tải trong khoảng 1/5/15 phút và thong trin vé SỐ lượng dữ liệu đơn nhất và các địa chỉ truyền thông url Chú ý rằng các yêu cầu
quản trị không bao gồm trong các con sô sau:
Load Server kiểm tra các load sau:
Các ứng dụng: cục bộ hoặc trên server cho các truy vấn ứng dung LZX
o_ Media: Tải trên server cho các truy van media, chang han nhu mp3, gif
o Dit ligu:Tai trên server cho truy vần dữ liệu
được yêu cầu Bạn có thé bat tat chi tiét url tại chế độ chạy thực bởi việc sử
dụng các tham số chuỗi truy vấn durÌ= [0|1] và murl=[0|I] cho đữ liệu và các địa chỉ url media một cách tách biệt.
Trang 23Đỗ Thị Khánh Tâm - 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
CHƯƠNG 2: NHỮNG SƠ LƯỢC VẺ NGÔN NGỮ
- LZX là một sự định hướng đối tượng, ngôn ngữ dựa trên nén tag ma no str
dung cú pháp XML và JavaScript để tạo ra các lớp trình diễn của các ứng dụng
dồi dào trên Internet Thông thường, những ứng dụng này sẽ được biên dịch bởi trình biên dịch OpenLaszlo Chúng có thê được triển khai giống như là những file độc lập hoặc chúng có thể được cung cấp bởi OpenLaszlo Server Định dạng của ngôn ngữ bao gồm cả hai tập hợp các tag XML và tập hợp JavaScript APIs
- Ngôn ngữ LZX được thiết kế để sử dụng các cấu trúc quen thuộc và các qui ước đặt tên thông thường, bởi vậy, đối với các nhà phát triển Web kinh nghiệm
có thể dễ dàng học và kết hợp, tô chức vào bên trong các môi trường lập trình của họ Tại cùng một thời điểm đưa vào những khái niệm mới và những khả năng mà có thể tạo ra giao diện người dùng với tính dễ thay đổi hơn và thuận lợi hơn trong các ứng dụng web so với bất kỳ công nghệ nào khác
- Một chương trình LZX thực thi /økes place trên một đối tượng có thể thấy
được thì được gọi là canvas (bức vẽ) mà nó được dựa trên một bit của vùng màn hình thực Trên các canvas, các box (bao) tự quản lý được gọi là các view (khung nhìn) tương tác Các view này có thể được sắp xếp lồng một cách logic
và trực quan và có nhiều các thuộc tính lập trình bao gôm size (kích thước), posilon (vị trí), background color (mau nén), opacity (tính mờ đục),
clickability (tính có thể nhấn được), stretchability (tính có thể co giãn được) v.v Các view này có thể được sử dụng để chứa các nguồn tài nguyên chang
hạn như một: hình ảnh hoặc một video và nó còn có thể được bound động tới
bất kỳ một tập hợp dữ liệu định dạng XML nào Các thuộc tính của bất kỳ một
view nào có thể được thiết lập để trở thành các chức năng của các thuộc tính của các view hoặc các view khác và bất kỳ thuộc tính nào có thể thấy được của một khung nhìn nào đó có thể được hoạt ảnh — đó là tập hợp biến đổi thời gian
- Hệ thống khung nhìn LZX tương tự so với các hệ thống khung nhìn khác theo
rất nhiều cách nhưng chính việc thực thi biding dữ liệu, các ràng buộc thuộc
tính và hoạt hình thì phân biệt nó với các kỹ thuật UI khác
- _ Thông thường, các chương trình LZX chứa cả hai cấu trúc có tính thủ tục và
khai báo và các ngôn ngữ theo rất nhiều qui ước đặt tên từ CSS Các chương trình được viết trong L⁄ZX có cùng một hình thức, trên chuẩn không nhất định,
tới các ứng dụng DHTML với JavaScript được nhúng trong đó Các chương
trình LZX được dựa trên các khái niệm khác nhau, tuy nhiên, từ cùng các ứng dụng DHTML/JavaScript mà được phiên dịch và được dịch hoặc “được thực
thi” boi trình duyệt web Các chương trình LZX, trong sự tương phản, được
biên dịch trên server và được tải về giỗng như các mã byte cho máy đích
- - Trong việc thực thi hiện hành hoặc trén nén Laszlo, các chương trình LZX
được biên dịch trong OpenLaszlo Server và được tải về giông như là các file
chuyên động Flash (các file dang swf) và được thực thi trên trình Flash mà
eee
Trang 20
Trang 24nó tới Flash Trong trường hợp đặc biệt, LZX không dựa vào mô hình đối
tượng Flash
Tương tự, vì các chương trình LZX được biên dịch bởi OpenLaszlo Server, sử
dụng JavaScript trong các chương trình LZX thì khác biệt khó nhận thấy từ chính việc sử dụng trong các ứng dụng web truyền thống mà trong đó JavaScript được sử dụng để thực hiện những thứ khác nhau như kết nối với trình duyệt hoặc sinh ra các trang HTML Những chức năng đó cơ bản là không thích hợp với các ứng dụng LZX Do vậy, mặc dù ngôn ngữ thiết kế thì truyền thống hơn, các mô hình lập trình là mới
Chương này tổng kết những cơ bản và đổi mới trong LZX Ở đây chỉ có tính chất tông quát, không phải là hướng dẫn Sau khi đọc xong bạn sẽ thấy tốt hơn
để quyết định học ngôn ngữ này như thể nào Phụ thuộc vào căn bản của bạn
và kinh nghiệm của bạn, bạn có thể xác định rằng bạn cần để học nhiều hơn về XML hoặc lập trìh hướng đối tượng trước khi dùng đễ LZX
2.1 Tổng quan về cú pháp và ngữ nghĩa
Trong LZX, các thẻ XML được sử dụng để tạo ra các đối tượng JavaScript và
JavaScript được sử dụng bên trong các chương trình LZX để vận dụng các đối tượng được tạo ra bởi các tag Trong hầu hết các trường hợp, bất kỳ một điều
gì mà có thể được thực hiện bởi các tag thi đều có thé được thực hiện trong JavaScript và ngược lại Tuy nhiên, sự tương đương này không phải lúc nào cũng vậy và hơn nữa đây là một kỹ thuật luôn luôn hầu như là mạnh hơn so với
kỹ thuật khác trong bất kỳ hoàn cảnh nào
LZX hoàn toàn giữ vững cấu trúc XML va JavaScript
Trong các phần sau sẽ đề cập tới hai loại cú pháp LZX và cách để hai loại cú pháp này cùng được sử dụng trong các chương trình LZX thông thường
hóa đữ liệu XML được thiết kế để thực hiện lưu trữ đữ liệu và phát hành trên
các Website không chỉ dễ dàng quản lý hơn mà còn có thể trình bày đẹp mắt
hơn XML cho phép những người phát triển Web định nghĩa nội dung của các tài liệu bằng cách tạo đuôi mở rộng theo ý người sử dụng, không giống như
HTML, (Hypertext Makup Language) được khóa thành một tập các đuôi mở
TRUONG HÔI -
Trang 25
Đỗ Thị Khánh Tâm ~ 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
rộng theo một chuẩn công nghiệp (mặc dù Microsoft và Nescape có tạo cho
riêng mình) XML mượn các đặc điểm từ SGML, bao gồm tạo một nhu cầu
khai báo tài liệu, định nghĩa những gì mà khách hàng được hỗ trợ khi nhận tài liệu này
Hầu hết các chức năng của LZX được thực hiện trong các thẻ (tag) XML (XML là một ngôn ngữ tổng quát dùng để định nghĩa dữ liệu thông qua các thẻ) Bản thân các chương trình LZX là các tài liệu XML hợp lệ; các chương trình LZX mà không phải là XML hợp lệ thì sẽ không được biên dịch Thứ hai,
các chương trình LZX chỉ có tác dụng trên dữ liệu được gói gọn trong XML
Điểm quan trọng nhất của XML là cho phép dễ dàng xử lý, chuyên tải và trao
đổi dữ liệu giữa rất nhiều ứng dụng và tài liệu ngừi dùng với các định dạng khác nhau Trong XML đữ liệu và định dạng được lưu ở dạng text và có thé dé dàng cấu hình cũng như thay đổi chúng bằng các trình soạn thảo thông thường
XML đã được chuẩn hóa nên mọi người đều có thê hiểu và đễ sử dụng
Trong XML, bạn có thể tùy biến ngôn ngữ định dạng, là một trong những khả năng mạnh nhất của XML Không chỉ có thể tạo ra một tập ngôn ngữ con dựa
vào XML mà còn có thể mở rộng chúng -
Dữ liệu trong XML là đữ liệu mô tả, có cấu trúc và tích hợp XML cho phép
các phan tir thé tích hợp với nhau tạo nên một cấu trúc đữ liệu phân cấp hoàn chỉnh
Nếu bạn hiểu các thuộc tính và các thẻ được thể hiện như thế nào trong XML, bạn sẽ được yên tâm với các khái niệm của các root (các gốc) và các node (các nút), và hiểu được cơ chế làm việc lồng thì bạn có thể biết đủ để bắt đầu với
LZX
Một sự khác biệt nữa giữa XML và JavaScript là trong XML kiểu tên thường
là chữ thường (“string”, “number”), trong khi trong JavaScript chúng là chữ hoa (“String”, “Number”) Các kiểu tên trong XML được sử dụng trong
<attribute name="foo" type="string"/>; chúng là chữ thường cho việc tương thích với lược đồ mô tả các kiểu đữ liệu XML
XML va HTML
Sau đây là một số khác biệt giữa HTML và XML:
Trường hợp chính: <b> khác với <B> (<b> tổn tại trong LZX giống như một
thẻ cho việc định dạng các text đậm trong một thành phần <text> <B> không tồn tại.)
Các giá trị thuộc tính phải được đặt giữa dấu “ hoặc * <view width=100> là không hợp lệ trong XML; sử dụng <view width=”100”> hoặc <view width =
Trang 26Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
<canvas xlmns="http://www.laszlosystems.com/2003/05/zx"> </canvas>
Hoặc không: <cawvas> </canvas>
Nếu không có namespace, trình biên dịch mặc định namespace là (http://www.laszlosystems.com/2003/05/1zx")
Ghi chu:
Một namespace có cùng một cú pháp giống như một URL nhưng nó không
phải là một URL; chúng thực sự có các giá trị id duy nhất có thứ bậc Trong ví
dụ ở trên, đó là, namespace không chỉ rõ bất kỳ cái nào theo cách đặc biệt trên website Laszlo System (nếu bạn click vào nó bạn sẽ gặp lỗi 404)
JavaScript
JavaScript là một ngôn ngữ đầu tiên viết trên Nescape bởi Brendan Eich cho tập đoàn trên trình duyệt Nescape 2.0 Nó ngay lập tức thành công và được chấp nhận rộng rãi trong các trình duyệt và nó duy trì chính giá trị nổi bật giỗng như một chuẩn, European Computer Manufacturers Association (ECMA) hệ thống hóa ngôn ngữ giống như ECMAScript và hiện tại duy trì điều khiển chính sự phát triển của nó Mặc dù có nhiều sự khác biệt khó nhận thấy giữa bất kỳ sự bổ xung nào của JavaScript và ngôn ngữ chính thức định
dạng bởi nhóm các chuẩn, theo cách dùng thông thường các giới hạn
JavaScript và ECMAScript thường được sử dụng có thể thay thế cho nhau
Trong khi có lẽ một lượng nhỏ lại chính xác hơn để nói rằng “ECMAScript” cé
liên quan đến ngôn ngữ thuần túy trong khi “JavaScript” có nghĩa là cả ngôn
ngữ và các thư viện liên kết mà có sẵn trong hầu hết các trình duyệt
Để viết mã LZX hợp lý, bạn sẽ cần biết những bộ phận của JavaScript:
o_ Các cấu trúc điều khiển cơ bản (for, while, )
o_ Mô hình đối tượng
o_ Việc định kiểu đữ liệu khong chat ché ("loose" data typing)
©_ Xác định phạm vi, đó là một loạt các namespace trong chương trình Việc phụ thuộc vào kỹ thuật nền của bản, bạn có thể tìm thấy các khía cạnh tương tự nào đó của LZX hoặc sự khác biệt Ví dụ, nếu bạn có kinh nghiệm với Java nhưng không phải là JavaScript, bạn sẽ cần có kiến thức về các sự khác
biệt chính trong các ngôn ngữ, cụ thể với việc quan tâm đến định kiểu dữ liệu,
mô hình đối tượng và phạm vi hoặc namespace của các biến
Giống như các ngôn ngữ được kịch bản hóa khác như Perl và Python, Javascript là một ngôn ngữ định kiểu lỏng léo — bạn có thể khai báo một biến
mà không cần xác định kiểu của chính biến đó Điều này tạo cho việc xác định
các nguyên mẫu một cách nhanh chóng và người ta có thé cho rang code dé đọc hơn, nhưng nó chỉ làm cho nó có thể thực hiện được cho các lỗi định kiểu
dữ liệu để đi đến các lỗi không dò tìm được
Phương pháp của JavaScript tới việc lập trình hướng đối tượng là thiếu chính xác Chúng không có các gói hoặc những cái chung, chẳng hạn như có thể có
hoặc không tồn tại các lớp hoàn thành (fïnalize classes) Cuối cùng, hành vi của các biến toàn cục và cục bộ trong JavaScript thì đôi khi làm ngạc nhiên đối với các nhà lập trình Java
mm
Trang 23
Trang 27
Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
- Ngược lại, nếu bạn là một nhà lập trình JavaScript kinh nghiệm, bạn phải
“không hiểu” các giả định không chắc chắn nào đó, cụ thể với các chức năng
và các thư viện và còn có cả việc phân biệt dạng chữ Hơn nữa, LZX có mô
hình lập trình hướng đối tượng hoàn hảo hơn so với mô hình đơn giản trong JavaScript Đó là, LZX có các lớp và tính thừa kế
e Cú pháp “.”
- LZX tận dụng cú pháp “dot” (dấu chấm) để biểu thị các mối quan hệ giữa các
đối tượng và các thành viên của chúng Ví dụ: this.that
Khi đọc bằng JavaScript, this chuyển đến một đối tượng và that chuyển đến một thuộc tính của đối tượng, nơi một thuộc tính có thể nói rằng là một phương
thức
- _ LZX tạo cho rất nhiều cách để định rõ các thuộc tính của và các phương thức bên trong các đối tượng hoặc các lớp Ví dụ, các đoạn code sau đây (tạo ra một view được đặt tên là myview và thiết lập màu nên của nó là màu đỏ) là tương
đương:
- JavaScript:
myview = new LzView;
myview.setAttribute (bgcolor, red);
XML tag:
<view name="myview" bgcolor="red"/>
Va trong cả hai trường hợp màu nên của myview có thê được truy cập bởi code sau đó cũng giống như myview bgcolor Do vay, qui ước “dot” cung cấp cách thuận tiện của việc tham chiếu đến các đối tượng bất chấp chúng có hình thành
thực sự như thể nào hay không, đó là bởi các thẻ khai báo hoặc các mã thủ tục
hay không
e Phân biệt dạng chữ:
- _ Sự phân biệt dạng chữ của LZX phụ thuộc vào mục đích về cái gì khi bạn biên
dịch Các ứng dụng biên dịch cho swf6 không phân biệt dạng chữ Ví dụ, nếu
bạn đặt tên biến cục bộ là date, bạn không thể gọi cấu trúc Date trong JavaScript giống như là một đối tượng mới Date()
- _ §Wf7 là mặc định; các ứng dụng biên địch cho swf7 và swf8 thì hoàn toàn phân biệt dạng chữ Điều này có nghĩa là bất cứ lúc nào bạn sử dụng một biến nó phải được ở trong nếu trong đó nó đã được định nghĩa
- Các ứng dụng mà làm việc trong swf6 có thê không làm việc trong swf7 và ngược lại :
- _ Do vậy tốt nhất để tránh việc sử dụng trùng tên thì nên đặt các tên giống nhau
chỉ khác nhau 6 chit in hoa
e LZX DTD va Schema
- Một lược đồ XML xác định tập hợp các tag LZX và có thể được sử dụng để
cấu hình một trình soạn thảo DTD thì có sẵn cho ai muốn tìm hiểu, mặc dù nó
không có gì cần thiết cho bạn quan tâm đối với các mục đích của việc lập trình
- Lược đồ LZX được sử dụng bởi trình biên dịch OpenLaszlo để đảm bảo rằng các chương trình LZX là đúng đắn chính thức Ví dụ, lược đồ xác định những
Trang 24
Trang 28Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
thuộc tính nào có thể được bao gộp trong một thẻ mở <view> Nếu chương trình của bạn có chứa một thẻ <view> mà bao gồm một thuộc tính không được
định nghĩa bởi lược đồ thì nó sẽ đưa ra một cảnh báo khi biên dịch
LZX cho phép bạn định nghĩa chính những thẻ của bạn Người dùng định nghĩa các thẻ mà không được đưa vào trong lược đồ có sẵn tới trình soạn thảo của bạn, mặc dù chúng được sử dụng trong lược đồ nội tại mà trình biên dịch
sử dụng đề kiểm tra sự hợp lệ của chương trình đó
2.2 Các đối tượng và các thuộc tính
LZX kết hợp chặt chẽ các khái niệm lập trình hướng đối tượng chuẩn của tính
kế thừa, tính bao đóng và tính đa hình Thông thường, một tag trong chương trình OpenLaszlo tương ứng với một đối tượng mà là thể hiện của một lớp
hoặc tên của nó Ví dụ, thẻ <view> tương ứng với đối tượng LzView
LZX có thể được mô tả giống như một ngôn ngữ khai báo chuẩn cơ bản cho
việc vận dụng các đối tượng trực quan (JavaScript) được gọi là các view
(khung nhìn), ở đó các tiêu chuẩn được biểu diễn giống như các ràng buộc về mặt giá trị của các thuộc tính của các đối tượng đó
Đoạn sau tổng quát về một vài mặt chính của ngôn ngữ hướng đối tượng LZX Các đối tượng
Một đối tượng là một kiểu dữ liệu mà có chứa các thành phần tách rời được đặt ten của đữ liệu Việc phụ thuộc vào trong một ngữ cảnh, một mốc được đặt tên
có thể được gọi là một thuộc tính hoặc một đặc trưng của đối tượng Ví dụ, mỗi đối tượng view có 49 đặc trưng, chẳng hạn như chiều cao, chiều rộng, vị trí
ngang, vị trí dọc, Các giá trị thường được chỉ định tới các đặc trưng của các
đối tượng khi các đối tượng được tạo ra; các đặc trưng đó bạn không cần thiết lập định đạng đã được xác nhận các gía trị mặc định
Bạn có thể tạo ra nhiều kiểu khác nhau của các đối tượng L⁄ZX bằng việc sử dụng thẻ <class> Mỗi một lớp mới bạn tao ra phải được đặt cho một tên va tén của một lớp đó chính là à “phần mở rộng.” Các đối tượng được tạo ra gần đây
sẽ thừa kế tất cả các thuộc tính của các lớp bạn mở rộng, cộng thêm bắt kỳ một
thuộc tính nào thêm vào mà bạn định nghĩa Ví dụ:
<class name="myview" extends="view"/>
Trong trường hợp này bạn đã định nghĩa một kiểu đối tượng mới được gọi là myview mà nó có tất cả các thuộc tính của view
Các thuộc tính
Trong LZX, từ “thuộc tính” có hai liên kết nhưng khó nhận thấy được các ý nghĩa khác biệt, một thuộc cú pháp và một thuộc về ngữ nghĩa Trong XML, những gì thuộc cú pháp, có cảm giác, một đặc điểm là một giá trị được đặt tên
có liên kết với một phần tử XML và định dạng trong thẻ mở của các phần tử
Trang 29Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
Demeanor là một đặc điểm của thẻ boss Ý nghĩa của “thuộc tính” này sẽ được thêm vào bắt cứ bối cảnh khi nào là cấu trúc của XML Chú ý rằng giá trị chỉ định tới một đặc điểm được kèm theo trong các đánh dấu trích dẫn đôi
Vì các thẻ LZX tương ứng với các lớp JavaScript, “attribute” đảm nhận thêm vào ngữ nghĩa weigth của thuộc tính của một đối tượng JavaScript Ví đụ:
<view height="20" width="30"/>
Điều này là nguyên nhân sự tạo thành của một đối tượng view với các gia tri
định dạng cho các đặc điểm là height và width
Thẻ <attribute> có thể được sử dụng để thiết lập các JavaScript attribute của
<class name="froboz" extends="view">
<attribute name="whatnot" value="17">
</class>
Các thuộc tính có thể được thiết lập bằng các giá trị được chỉ định, trong các thẻ LZX Nó còn có thể thiết lập các giá trị thuộc tính trong script sử dụng
phương thức setAttribute() Thêm vào đó, các giá trị của các thuộc tính này có
thể được đọc hoặc được “lấy” trong script (nhưng không phải trong các thẻ) sử
Trong các chương trình LZX, các sự kiện không được phổ biến nhưng chúng
được truyền thông điểm điểm sử dung cac delegate (các con trỏ chức năng cơ bản) mà được tham chiếu khi các sự kiện xảy ra Sự bổ xung này làm tăng tính linh hoạt và làm giảm hiện tượng overhead khi sử dụng các sự kiện
Các views có khoảng 24 sự kiện được định nghĩa, bằng việc lập danh sách trên thực thê cho <view> trong LZX Reference Manual Nhiéu trong các sự kiện này mà đực đề cập đến với các dữ liệu nhập user, ví dụ onblur, onclick,
onkeydown tương tự như các chương trình được viết bằng JavaScript Các sự kiện khác, chẳng hạn như onheight và on opacity thuộc về các đặc điểm có thể
nhìn thấy được của view Cuối cùng, sự kiện oninit và onconstructer được liên kết tới việc tạo ra các thể hiện của các đối tượng view Tương tự, các đối tượng
mmaanggsnẵửnznnnẵẳơờợợớtẵẵẽzxssmmmmmmxemœeaeaạaaẽa-an-nờợợớợớợớợý:ợ(ẳớẳớẳớẳớŒ
Trang 26
Trang 30tính và gửi sự kiện được gọi “on” cộng với thuộc tính (property) Khi một view
thay đổi chính vị trí x của nó (horizontal), nó sẽ gửi sự kiện onx với giá trị mới cho thuộc tính x của nó Điều này có nghĩa là thêm vào các sự kiện đã được định nghĩa hệ thống, có tồn tại một sự kiện cho mỗi thuộc tính mà bạn định
nghĩa
- - Khi một sự kiện xảy ra, điều khiển được chuyên tới các event-handler có liên quan (nếu một cái được định nghĩa) Các sự kiện có thể được gửi với một đối
số đơn mà thường là bộ thông tin về các thuộc tính thay đổi
- O trong phan nay chung ta ban đến một sự kiện được thực thi như thế nào
trong LZX và cấu trúc của sự kiện tham gia vào thiết kế chương trình như thế
- Trong JavaScript, tir khéa nay được sử dụng để tham chiếu đến đối tượng
thông qua chức năng được invoke của nó
e_ Các điều khiển — Handler
- Một handler giống như là một phương thức Nhưng trái lại với một phương
thức được viện dẫn bởi chính tên của nó, một handler phải được liên kết với
một sự kiện đặc biệt Kịch bản handler sẽ được thực thi khi tham chiếu đến
view nhận được một sự kiện với tên này Ví dụ:
<handler name="onclick"/>
- Khi một view được click lên trên, sự kiện onclick sẽ gây ra việc thực thi handler() Các handler điều khiển sự kiện thường được nhận biết trong một thẻ mở:
Trang 31Đỗ Thị Khánh Tâm - 02DHTH196 Vị Thị Hồng Hải - 02DHTH065
o Các phương thức "On init" mà được gọi khi đối tượng cha của chúng
‘duoc tạo ra
o Cac handler ma dugc goi khi đối tượng cha của chúng nhận một sự kiện xác định
o_ Các phương thức được đặt tên mà được gọi ra một cách rõ ràng bởi các
phương thức khác
- - Chú ý rằng bạn có thể định nghĩa một phương thức sử dụng cú pháp qui ước của JavaScript, nhưng trong LZX cách thích hợp hơn để định nghĩa một phương thức là sử dụng thẻ <method>
- _ Mặt nữa, trong LZX, không giống như các hệ thống hướng đối tượng khác, bạn
có thể override (ghi đè lên) một phương thức theo một thể hiện của đối
tượng.Also note that in LZX, unlike many other object oriented systems, you can override a method in an instance of an object
2.4 Các ràng buộc
- - Trong LZX, một ràng buộc là một thuộc tinh (attribute) mà các giá trị của nó là một chức năng của các giá trị thuộc tính khác Cú pháp cho việc việt code một ràng buộc la: $when {expression}
Ở đây
.o_.$ là một dấu hiệu biểu thị một ràng buộc
o_ W5en là một tùy chọn chỉ thị trình biên dịch: immediately (ngay lập tức), once (một lần), hoặc always (luôn luôn) $always{expression} có thể được viết gọn lại thành $ {expression}
o {and } 1a dau hiéu phân ranh giới biểu thức được đánh giá
o_ exprøssion là một biểu thức JavaScript
- _ Bất cứ khi nào giá trị của một thuộc tính thay đổi, sự kiện “on” của nó sẽ được sinh ra Bởi vì một ràng buộc là một thuộc tính mà những giá trị của nó phụ
thuộc vào những giá rị của một hoặc nhiều các giá trị thuộc tính khác, giá trị của ràng buộc được tính toán lại bất cứ khi nào nó nhận sự kiện “on” cho các
thuộc tính mà nó phụ thuộc vào đó Ví dụ:
<VieW name= “some View”
width= "§{someAttribute+ someOtherAttribute}"
- />
Giá trị của someview.width được tính toán lại bất cứ khi nào một sự kiện onsomeAttrribute hoặc onsomeOtherAttribute xảy ra
e _ Các hệ thống phân cấp view và từ vựng
-_ Một ứng dụng LZX được biểu diễn băng một hệ thống các đối tượng, thường
là các đối tượng trực quan, tất cả những cái mà được chứa trong một đối tượng đơn lẻ được gọi là Canvas Như đã từng nói, các chương trình LZX là các tài liệu XML, Canvas là phần tử gốc Một ví dụ chương trình LZX đơn giản nhất:
<canvas⁄>
Trang 28
Trang 32
Đỗ Thị Khánh Tâm - 02DHTH196 Vi Thi Hồng Hải - 02DHTH065
- _ Chương trình này biên dịch và thực thi, nhưng không có giá trị xuất ra Bằng
một đối tượng trực quan đơn giản nhất trong View, một chương trình LZX nhỏ
- Doan code nay dinh nghia m6t cach r6 rang mt hé théng 3 d6i tuong Ching
ta có thể làm cho mối quan hệ trực quan của chúng rõ ràng hơn bằng cách tạo
cho canvas và view các kích thước và màu nên
- _ Trong trường hợp đpn giản này, hệ thống ngôn ngữ trong code tương ứng với
hệ thống trực quan trong canvas Trên thực tế, một đối tượng <text> là một thể hiện của lớp nhận được từ <view> Thông thường, chương trình LZX có cấu
trúc lặp lại: canvas có chứa các view và các view lại chứa các view khác, Các lớp được sử dụng để tái tạo một bản sao các nhóm view, các thành phần
chăng hạn như các nút nhắn, cửa số, các trường nhập vào và các con trượt là các ví dụ của các lớp xây dựng từ view
- LZX cung cấp rất nhiều cách dé đơn giản hóa các mối quan hệ giữa các lớp
- _ Tuy nhiên, mỗi quan hệ giữa hệ thống nguyên ban trong code và hệ thống trực quan trong canvas không phải luôn luôn giống như ví dụ trên Trong trường
hợp đặc biệt, về mặt ngữ nghĩa của việc biding dữ liệu hùng mạnh của LZX
làm cho nó có thể đối với một thẻ đơn <view> trong text nhằm tạo ra một số
lượng bất kỳ các thê hiện của các đối tượng view Trong trường hợp thành
công, nó trở nên rất quan trọng để có cách nói chính xác về các mối quan hệ phức tạp giữa các đối tượng
e Phạm vi từ vựng
- Trong LZX, các khái niệm về không gian tên cục bộ và toàn thể hoặc phạm vi
đều giống nhau trong JavaScript
- Trong JavaScript, tất cả các biến đều là toàn cục trừ khi chúng được di trước
bởi từ khóa var:
a = 7; // Định nghĩa một biễn a toàn cục Và:
var a = 7// Định nghĩa môt biến a cục bộ -_ Cú pháp này có nghĩa, ví dụ, một sự chỉ định trong một sự định nghĩa phương
thức có thê thiết lập một thể hiện của biến toàn cục
ƒor(a=0; a<n; a++);
- - Tạo ra một biến toàn cục có tên là a, hoặc thay đổi giá trị của biến nếu nó đã
tồn tại rồi
for (var a = 0; a <n; a++);
- Trong LZX, tên biến là cục bộ và thuéc tinh id 1a toàn cục:
- - Các chức năng được tạo ra sử dụng thẻ <script> có thể được truy cập từ bất kỳ nơi nào trong chương trình
Trang 29
Trang 33
Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
2.5 Truy cập, thao tác và đóng kết dữ liệu
LZX được thiết kế để tạo ra tính dễ dàng trong việc viết các chương trình hướng dữ liệu trong đó các giá trị của các nguồn tài nguyên dữ liệu xác định diện mạo và các hoạt động của một chương trình Điều này thực hiện thông qua các thẻ và APIs mà nó cho phép bạn truy cập dữ liệu thông qua giao thức
HITTP, thao tác dữ liệu XML trong bộ nhớ và đáng kể nữa là đóng kết hệ
thống đữ liệu tới hệ thống view
Truy cập dữ liệu Các chương trình LZX% vận dụng dữ liệu định dạng XML, nó có thé:
Nhung trong các text chương trình
Đọc từ một tài nguyên khi chương trình đang được biên dịch
Đọc từ một tài nguyên khi chương trình đang thực thi
Các tài nguyên XML được lưu trữ bằng các đối tượng được gọi là dataset Thẻ
<dataset> có các thuộc tính cho phép bạn để, ví dụ điều khiển việc lưu trữ (caching) trên client và server, bao gồm hoặc không bao gồm các header, queue requests, Cac déi tượng được tạo ra bởi <dataset> được gọi là
LzDatasets Các phương thức trong LzDatasets cho phép bạn get và set các
chuỗi truy vấn, các tham số,
Thao tác trên dữ liệu
LZX tận dụng các datapointers (là các đối tượng mà biểu diễn pointer - node
trong dataset) dé dinh vi va van dụng nội dung Các datapointer hỗ trợ một tập
con của Xpath (là một chuẩn định dạng W3C cho việc nhận biết các đường dẫn
path của tài liệu XML hoặc là trong case của XML, dataset) Xpath su dung một ký hiệu tương tự như hệ thống hệ thống file UNIX để tham chiếu đến các node trong dataset Các datapointer có thê được chứa sử dụng cả các lời gọi thủ
tục chăng hạn như setselectNext() và bằng việc thực thi một yêu cầu Xpath sử dung setPath()
Vì nó kết hợp chặt chế việc so khớp nền phức tạp, ký hiệu Xpath thì vô cùng ngắn gọn và hùng mạnh Một biểu thức Xpath đơn có thể thể hiện một số lượng lớn bất kỳ các phần tử XML Bằng việc sử dụng các phương thức chẳng hạn như addNode(), setNodeName(), setXpath(), selectParent() ban cé thể xây dung va thao tác các câu tric XML
Đóng kết dữ liệu LZX cung cấp cách duy nhất để trộn bất kỳ hệ thống dữ liệu định dạng bất kỳ
nào với bất kỳ hệ thống hiển thị nào; khả năng này được gọi là bao đóng dữ liệu Nó được hiện thực theo một cách mà ngữ cảnh dữ liệu của một hệ thống con trong hệ thống cấp bậc hiển thị là hoàn toàn phụ thuộc vào ngữ cảnh dữ
liệu của chính cha của nó Hơn nữa, nó có thể chỉ dẫn hệ thống dé tao ra bit bất
kỳ của hệ thống phân cấp view để hiển thị mỗi phần tử trong một tập dữ liệu được chọn lựa
Cách này được thực hiện bởi việc đóng kết các view thành các datapointer
Một datapath là một trường hợp đặc biệt của datapointer mà nó kết hợp một cách rõ ràng hệ phân cấp dữ liệu tới hệ phân cấp view, ví dụ:
Trang 30
Trang 34Đỗ Thị Khánh Tâm - 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
<view name="bob" datapath="testdata:/*">
Ở đây, testdata tham chiếu đến một dataset đã định nghĩa trước đó trong
2.6 Liên kết các tag va cac script trong các chương trình Laszlo
Giống như trong các phiên bản được đề cập trước đó, một cách trực quan rằng tất cả các chương trình LZX đều có chứa cả các thẻ (tag) và các kịch bản
(script) Các thẻ được sử đụng có tính khai báo, đó là để rõ ràng trong việc xác định một loạt các bước Mặc dù hai loại code này tùy tiện trộn lẫn trong LZX,
ví dụ, script có thể xuất hiện trong các tag — mỗi cú pháp cục bộ hóa lưu giữ
toàn bộ nó
Trong code LZX, các chú thích được biểu diễn: </ XA⁄4L comment >
Trong khi JavaScript, các chú thích được biểu diễn như sau: /⁄ JavaScript comment
Vì các phần khai báo va thủ tục của một chương trình có thê trộn lẫn vào nhau,
vì vậy đòi hỏi bạn phải có một chút khéo léo để nhận ra chúng trong một chương trình Đoạn sau giải thích làm thế nào vào tại sao để tận dụng hai loại
nay cua LZX
Lam thế nào để liên kết các tag và các script?
Hãy bắt đầu bằng sự khác biệt giữa những cái gì là qui định cho phép thuộc cú
pháp và cái gì là có ý nghĩa
Qui định cho phép
Tat ca cac chuong trinh LZX đều là các file XML được đánh dấu Điều đó có nghĩa là tất cả các phần của một chương trình, bao gồm các JavaScript được nhúng phải tuân theo các tiêu chuẩn XML Do đó nơi mà JavaScript sử dụng các ký tự có nghĩa trong XML, chẳng hạn như dấu <, bạn phải đảm bảo răng các ký tự đó không đảo lộn bộ phân tích cú pháp XML Bạn có thể thực hiện
điều này theo hai cách
© Bởi việc tránh các ký tự phân định với một tham chiếu thực thể (ví dụ, tham chiếu thực thể cho dấu < là &Ìt; ;)
° Bằng việc sử dụng XML CDATA để xác định một khối đữ liệu đặc tính
Đây là sự tổng gợp các tiêu chuẩn cho việc đảm bảo rằng XML khong sai sót
trong JavaScript
và mặt có ý nghĩa
Mặc dù trộn lẫn các tập hợp tiêu chuẩn của hai ngôn ngữ khác biệt trong một ngôn ngữ để làm cho dễ bị nhằm lẫn nhưng nó khá dễ dàng nhận biết cấu trúc của một chương trình LZX như thế nào và loại code nàoở đó Có một vài ngữ cảnh trong các mã script có thể xuất hiện trong các chương trình LZX Sau khi
bạn học được cách để nhận biết các context này bạn sẽ không cảm thấy lúng
túng về các cú pháp thêm vào:
Bmaaaannnnnnnnnnnnnnnnnznzzaasxsaassss=s==>>>œœ>aaan -ờợớờợợaợgớợtteœ=
Trang 31
Trang 35Đỗ Thị Khánh Tam — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
Giữa một thẻ mở <script> và một thẻ đĩng </script>
Giữa một thẻ mở và đĩng <method> và </method>
Với dấu nháy kép nằm về phía bên phải của một câu lệnh chỉ định giá trị của một câu lệnh chỉ định nào đĩ, như oninit=”script expression”
Khi nào sử dụng các tag và khi nào sử dụng các script?
Tắt cả những gì mà bạn cĩ thể thực hiện được trong LZX thi cĩ thể được thực hiện hoặc là các thẻ XML hoặc là JavaScript APIs, và việc kiểm sốt địi hỏi sự
phát triên một sự nhận thức tỉnh tường để quyết định như thế nào và khi nào
mỗi lần sử dụng Bạn sẽ tìm, thơng thường là các thẻ là tốt nhất cho sự tính
tốn mà cĩ thể thực hiện tại thời gian biên địch (compile-time) — chẳng hạn
như cách bồ trí của canvas và script thì tốt nhất tại thời điểm thực thi — ching hạn như việc đáp ứng dữ liệu nhập vào của user Nhưng để cho bạn cĩ thể sử dung bat ky thong tin nao thi ban can phải hiểu được những gì được thực hiện tại thời điểm biên dịch và những gì được thực thực hiện tại thời điểm thực thi
Trong trường hợp khác, cĩ một tập hợp các tiêu chuẩn rõ ràng là khi sử dụng các tag ngược lại với khi sử dụng các script Tuy nhiên, chúng thiết kế dựa
trên các nền chung tới tất cả các các chương trình LZX một cách đồng đều
LZX là một ngơn ngữ đầu tiên cho việc vận dụng các đối tượng trực quan gọi
là các view Vì vậy câu hỏi khi nào sử dụng các tag đối với script thì thường
yêu cầu theo một ngữ cảnh của việc tạo các view và việc vận dụng các thuộc
tính của chúng Script cĩ thê được sử dụng cho các thứ khác, chẳng hạn như
các function (hàm) tồn Cục nhưng trong cách trình bày của chúng cần phải rõ
ràng Các phần phân biệt tế nhị phải được thực hiện với sự vận dụng các view
và cá thuộc tính của chúng
Ví dụ, một ràng buộc hai chiều đơn giản phải thể hiện các mối quan hệ giữa
các view địi hỏi bạn phải thực hiện khoảng 30 dịng code Hầu hết các ràng buộc về thời gian thì tốt hơn cho việc giải quyết lập trình Nhưng khơng phải lúc nào cũng vậy
Một số nguyên tắc xác định phương pháp tốt nhất để phát triển LZX:
o_ Sử dụng các tag khi đĩ là lựa chọn duy nhất
o_ Sử dụng JavaScript khi đĩ là lựa chọn duy nhất
ò_ Nếu một số thứ cĩ thể được thực hiện với hoặc các tag hoặc script thì sử dụng tag (trừ khi cĩ lý đo nào tốt hơn để khơng thực hiện)
Mỗi nguyên tắc được mơ tả ngắn gọn bên dưới
> Sử dụng các tag khi đĩ là lựa chọn duy nhất
Ví dụ, nút gốc (và thẻ đĩng) của mọi chương trình LZX là <canvas> Mọi chương trình LZX sẽ bắt đầu với thẻ <canvas> và kết thúc với thẻ đĩng
</canvas>; khơng cĩ cấu trúc khác nào sử dung script Tương tự, khơng cĩ
script nao tương đương cho các tag <splash>, <method>, <attribute>,
<Tresource>, <font> và một số các tag khác nữa Hơn nữa, trong các định nghĩa
tag nào đĩ cĩ các thuộc tính nào đĩ mà khơng chỉ được thiết lập trong tag
> Sử dụng JavaScript khi đĩ là lựa chọn duy nhất
Trang 32
Trang 36
Đỗ Thị Khánh Tâm - 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
- _ Có một số JavaScript APIs mà thực hiện các chức năng mà không thể sử dụng
cac tag Vi du, LzDelegate, LzEvnet, LzParam va cac thuộc tinh APIs tương tự
khác hoạt động không thể sử dụng các tap được Tương tự, có các thuộc tính nào đó của các đối tượng mà chỉ có thể được tham chiếu bởi script, thậm chí
đối với các đối tượng mà được tạo ra với các tag Vi du: <view
name="franklin">
- Có một thuộc tính, ranklin.subview, mà có thé được truy cập bởi script, nd
không thể thiết lập hoặc truy cập thuộc tính trong tag
> Nêu có thể thực hiện được với cả hai tag và script, hãy sử dụng tag
- Trong số lượng lớn các trường hợp mà có thê thực hiện một số thứ sử dụng hoặc tag hoặc view, thông thường tôt hơn là ta nên sử dụng các tag
-_ Khi bạn sử dụng cú pháp tag, bạn có thể hoàn toàn tự nhiên tạo ra các hệ thống phân cấp lồng các view con, định nghĩa các thuộc tính bằng các ràng buộc và sắp xép code theo cách mà giúp bạn khái niệm hóa việc sắp xếp các view trên canvas Dé đạt được bất kỳ một kết quả nào trong những kết quả trên hoàn toàn trong JavaScript sẽ là một vấn đề không lồ và phủ nhận nhiều thuận lợi của ngôn ngữ
> Trừ khi không có lựa chọn nào tốt hơn
- _ Đôi khi nó tốt hơn dé viết các code dạng thủ tục thay vì viết code dạng tường minh Điều này có thể trở nên cần thiết, ví dụ để thực thi tối ưu: các hệ thống
ép tăng đôi khi có thể trở thành giới hạn CPU Tại các thời điểm khác nhau, các code hướng thủ tục có thể làm cho các hành vi của chương trình của bạn dễ
hiểu hơn: các hệ thống view dựa trên các tiêu chuẩn phức tạp đôi khi trở nên khó hiểu
- _ Giống như trong các ngôn ngữ kịch bản khác chăng hạn Perl và Python, các
chương trình LZX thực thi theo một trật tự tuyến tính
- Thẻ <splash> cho phép bạn sử dụng canvas để hiễn thị thông tin trong khi
chương trình đang được thiết lập
——- ằằ
Trang 33
Trang 37Đỗ Thị Khánh Tâm - 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
a
CHUONG 3: NHUNG HIEU BIET CO BAN VE LASZLO
3.1 Cấu trúc OpenLaszlo
3.1.1 Các kiểu triển khai
- _ Các ứng dụng OpenLaszlo có thê được tạo sẵn trên web hoặc được triển khai theo một trong 2 cách sau :
o Proxied : The OpenLaszlo Server chạy trên máy của bạn và
= Compiles cdc chuong trinh nguén khi cần thiết và gửi các binary có
thê tổng hợp được để thực thi trén client
" Proxies tương tác giữa client and các servers khác trên Internet, thực
thi việc xử lý đữ liệu khi cần thiết
o SOLO : Ban cé thé sit dung trình biên dịch OpenLaszlo để "precompile" các chương trình và tạo ra binary sẵn có trên sever của bạn Khi thực thi trên client, trình ứng dụng sẽ liên hệ với các server khác ngay lập tức, không có sự điều chỉnh của OpenLaszlo Server Điều này được gọi là serverless hoặc Standalon OpenLaszlo Output deployment
- _ Trong các chương tiếp theo sẽ giải thích một cách chỉ tiết sự khác nhau giữa
các trình ứng dụng proxied và SOLO Thông thường là :
o_ Các trình ứng dụng Proxied có thể thực hiện được một vài thứ mà các
trình ứng dụng SOLO không làm được, nhưng chúng có một vấn đề là
sự rắc rối trong việc triển khai và thực thi cham
o Cac trinh img dung SOLO thi dé trién khai và thực thi tốt hơn
- Trong nhiều trường hợp bạn không cần quyết định mô hình triển khai nào để
sử đụng cho đến khi bạn sẵn sang dé trién khai và sự chọn lựa mặc nhiên
thường là non- proxied Hãy nhớ rằng khi bạn triển khai các trình ứng dụng của bạn một cách cô định, the run-time capabilities of OpenLaszlo Server (chang
hạn như việc chuyển mã và người quản lý kết nối liên tục) sẽ không có giá trị
(available)
3.1.2 Client va Server
- OpenLaszlo Server 1a mét trinh ứng dung Java ma no thuc thi trong J2EE
servlet container OpenLaszlo Server có thê truyền với back end servers và các nguồn đữ liệu sử dụng nhiều giao thức Các ứng dụng OpenLaszlo đã được viết
trong LZX được biên dịch bởi OpenLaszlo Server và được dùng như các
bytecode tới một plug in mà nó thực thi trong web browser của client Điều
nay c6é nghia la front end Méi trường hỗ trợ chạy thực là Flash 7 hoặc cao hơn, Windows, Pocket PC, Mac OS, Linux, and Solaris, và rất nhiều platform cho mobile OpenLaszlo Server đưa ra bytecode trong file định dạng SWE được công nhận bởi Macromedia Flash player (version 7 and cao hơn) Tuy nhiên, không có cái gì trong cấu trúc OpenLaszlo mà ràng buộc tới Flash Trong tương lai, OpenLaszlo có thê hỗ trợ cho các client chạy thực khác khi
chúng trở nên phô biến hơn
Trang 34
Trang 38Đỗ Thị Khánh Tâm - 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
o Trong OpenLaszlo, client có nghĩa là một ứng dụng thực thi trong web browser của user và server có nghĩa là OpenLaszlo Server (kết nối với các server khác) LZX client and OpenLaszlo Server kết nối thông qua HTTP; OpenLaszlo Server gửi bytecode (mã byte) và ứng dụng LZX thì gửi XML,
o Tất cả các đặc điểm nền OpenLaszlo, bao gồm việc sắp xếp media và notifiication (thông báo), được chuyển thông qua HTTP hoặc HTTPS Do đó các ứng dụng dựa trên nền OpenLaszlo vẫn lưu giữ được tính tương thích với các chuẩn tập đoàn tường lửa Có khả năng trong các ứng dụng công cộng trên
Hình 1 1 Cau trite Laszlo Client-Server
3.1 3 Cau tric Laszlo Server
- OpenLaszlo Server thực thi trong môi trường chuẩn J2EE hoặc Java servlet
container running JRE 1.4 or higher Cac ứng dung OpenLaszlo co thé chay
trên bất kỳ một hệ điều hành nào mà nó hỗ trợ Windows, Solaris, Linux and
Mac OS X server environments
- OpenLaszlo Server bao gồm 5 hệ thống con : Interface Compiler, Media
Transcoder, Data Manager, Persistent Connection Manager, Cache
Trang 35
Trang 39Hinh Laszlo Server Architecture
e Trinh bién dich giao dién
- Trinh bién dich giao điện bao gồm một LZX Tag Compiler (trình biên dịch LZX tag) và một Script Compiler (trình biên dịch Script) Ngoài ra, Interface Compiler còn liên hệ với Media Compiler (trình biên dịch truyền thông media)
và Data Manager (bộ quản lý dữ liệu) để biên dịch các nguồn dữ liệu và media
ma duge baked in vao trong ứng dụng
- Các trình biên dịch LZX tag và script chuyển đổi các tag và JavaScrip mô tả
ứng dụng LZX thành các bytecode có thể thực thi được (swƒ) cho việc truyền
tới môi trường OpenLaszlo client Code này được đặt vào trong bộ đệm, từ đó
nó được gửi tới client Dựa vào việc trình ứng dụng được invoke như thé nào,
nó được truyền hoặc là file swf hoặc giống như một file HTML với một đối tượng swf được nhúng vào
- _ Trình chuyển mã truyền thông (Media Transcoder) : sẽ chuyên đổi một cách đầy
đủ một loạt các media assets (những gì thuộc media) thành một định dạng đơn
lẻ cho việc dịch bởi máy dịch client đích của OpenLaszlo Điều này cho phép một trình ứng dung OpenLaszlo thể hiện các kiểu media hễ trợ trong theo một cách thống nhất trên một canvas đơn, không ngắt quãng các ứng dụng có nhiều
bộ trợ giúp hoặc các phần mềm bố xung lại
- _ Bộ chuyển mã trun gian sẽ tự động chuyển mã theo các định dạng medlia sau: JPEG, GIF, PNG, MP3, TrueType, and SWF (chỉ dành cho art/animation) e_ Trình quản lý đữ liệu: bao gồm một trình biên dịch đữ liệu mà nó chuyển đổi toàn bộ đữ liệu thành một định dạng binary nén có thể đọc được bởi các trình ứng dụng OpenLaszlo và một loạt các bộ kết nối dữ liệu mà cho phép các trình
ứng dụng truy vấn dữ liệu thông qua XML/HTTP Các ứng dụng OpenLaszlo
có thể giao tiếp thông qua mạng với các file dựa trên databases, XML Web
Services, and Web-server based files hoặc có thê thực thi được
Trang 36
Trang 40
Đỗ Thị Khánh Tâm — 02DHTH196 Vi Thị Hồng Hải - 02DHTH065
e_ Trình quản lý kết nối liên tục: Persistent Connection Manager điều khiển việc
chứng nhận và việc truyền thông thời gian thực cho các ứng dụng OpenLaszlo
khi các ứng dụng này đòi hỏi Nó cung cấp việc truyền thông điệp thời gian thực và các thông báo hoặc đây dữ liệu thông qua HTTP
- Đặc điểm này chỉ có tính tạm thời Nó làm việc theo giới hạn phụ thuộc vào
trạng thái năng suất và nó tốt cho việc phát triển
e Bộ đệm: Bộ đệm có chứa hầu hết các phiên bản đã được biên dịch của bất kỳ
một ứng dụng nào Lần đầu tiên khi một ứng dụng OpenLaszlo được yêu cầu,
nó sẽ được biên dịch và file SWFE tổng hợp sẽ được gửi tới client Một bản sao
sẽ được lưu trên server, bởi vậy, trong những yêu cầu sau này sẽ không đòi hỏi
phải chờ đợi lâu cho việc biên dịch
3.1.4 Laszlo Client Architecture — C4u tric Laszlo Client
- Cu tric cia Laszlo client bao gam OpenLaszlo Runtime Library (ORL), mét thư viện trung tâm (core library) biên dịch vào trong mọi ứng dụng mà cung cấp các dịch vụ thực thi (chẳng hạn như timer và một chức năng không tác dụng) và một bộ diễn tá để cung cấp sự hiển thị các hình ảnh đồ họa 2D và sound playback Không có lớp nào trong các lớp này phụ thuộc vào các dịch vụ Flash hoặc sử dụng mô hình đối tượng Flash Trình Flash chỉ được sử dụng giống như là máy hiển thị
(FLASH VIRTUAL MACHINE
Hình 1.3 Cấu trúc Laszlo Client
- Khi img dung nay dang được thực thi, thậm chí khi bạn nghĩ rằng nó “không thực hiện bất cứ cái gì”, nó sẽ lưu giữ một kết nối tới server và tất cả các sự cần thiết cho việc thực thi một ứng dụng L⁄ZX thực sự được tải xuống
- _ Có 4 thành phần chính trong ORL: Event System, Data Loader/Binder, Layout
và hệ Animation, mét tap hop các dịch vụ ứng dụng
e Hệ thống sự kiện: Sự kiện hệ thống sẽ phi nhận và quản lý các sự kiện ứng
dụng chẳng hạn như user click chuột hoặc đữ liệu được day ra Thanh phan nay
Trang 37