1. Trang chủ
  2. » Luận Văn - Báo Cáo

xây dựng site thông tin mái ấm - nhà mở khu vực tp.hcm trên nền open laszlo và ajax

205 321 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây dựng Site Thông Tin Mái Ấm - Nhà Mở Khu Vực TP.HCM Trên Nền Open Laszlo Và Ajax
Trường học Open Laszlo University
Chuyên ngành Information Technology
Thể loại Dự Án Tốt Nghiệp
Năm xuất bản 2023
Thành phố Ho Chi Minh City
Định dạng
Số trang 205
Dung lượng 11,65 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đị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 1

MỤ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 5

Trang 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 8

Ngà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 16

D6 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 18

và 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 21

truyề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 22

Nế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 24

nó 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 30

tí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 39

Hinh 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

Ngày đăng: 17/02/2014, 22:47

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w