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

sinh source code theo giao diện tự động

111 225 0

Đ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

Định dạng
Số trang 111
Dung lượng 1,47 MB

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

Nội dung

Bookmark not defined.. Bookmark not defined.. Bookmark not defined.. Bookmark not defined.. Bookmark not defined.. T ng Windows application và Web application ASP.NET bao g m Web Forms

Trang 1

TP HCM, Tháng 1/2006

Trang 2

H U

Nhi m v c a lu n v n này là cung c p nh ng gi i pháp khác nhau và ch n m t

gi i pháp đ hi n th c ng d ng cho phép ng i dùng thi t k giao di n web b ng ngôn ng ASP.NET, Laszlo và sinh mã ngu n t đ ng cho trang Code-behind Trong lu n v n này, chúng tôi s trình bày nh ng ph n chính sau:

Ch ng 1 Yêu c u th c ti n c a vi c xây d ng m t ng d ng sinh mã ngu n t

đ ng theo giao di n

Ch ng 2 Các ki n th c c s ph c v cho ng d ng Nh ng hi u bi t v ngôn

ng l p trình ASP.NET r t c n thi t trong vi c xây d ng ng d ng Ngoài ra, chúng tôi còn trình bày mt ngôn ng l p trình web m i là Laszlo, d ki n s làm

h ng phát tri n t ng lai cho ng d ng

Ch ng 3 Trình bày chi tit các gi i pháp kh thi đ c dùng đ xây d ng ng

d ng, bao g m s d ng m u qui đ nh s n và k thu t CodeDOM

Ch ng 4 Trình bày chi tit thi t k và cài đ t ch ng trình sinh mã ngu n t

đ ng theo giao di n, các k t qu đ t đ c

Ch ng 5 ánh giá k t qu đ t đ c c a ch ng trình so v i m c tiêu ban đ u và

h ng phát tri n c a đ tài này

Trang 3

H U

có th hoàn thành t t lu n v n này, chúng tôi đã đ c s h ng d n, ch b o

c a quý th y cô khoa Công Ngh Thông Tin tr ng i H c Dân l p K Thu t Công Ngh , đ c bi t là th y Lê Trung Hi u Chúng tôi c ng r t c m n công ty Tân Thiên Niên K đã t o m i đi u ki n t t nh t giúp đ chúng tôi trong quá trình

th c hi n lu n v n Chúng tôi c ng g i l i c m n chân thành đ n anh H Nguy n

Lê Hoàng Duy, nhân viên công ty Tân Thiên Niên K, vì s quan tâm h ng d n

c a anh trong th i gian chúng tôi th c hi n đ tài này

Trang 4

H U

M C L C

Ch ng 1 Error! Bookmark not defined.

PHÁT BI U V N Error! Bookmark not defined.

1.1 Ti p c n đ tài Error! Bookmark not defined 1.2 N i dung đ tài Error! Bookmark not defined.

Ch ng 2 Error! Bookmark not defined.

C S KI N TH C Error! Bookmark not defined.

2.1 Áp d ng l p trình h ng đ i t ng trên môi tr ng NET Error! Bookmark not

defined

2.2 Ngôn ng l p trình web ASP.NET Error! Bookmark not defined.

2.1.1 Gi i thi u Error! Bookmark not defined.

2.1.1.1 C u trúc ASP.NET Error! Bookmark not defined.

2.1.1.2 Các thành ph n c b n c a ASP.NET Error! Bookmark not defined.

2.1.1.3 Chu kì s ng c a trang Error! Bookmark not defined.

2.1.2 Ho t đ ng Error! Bookmark not defined.

2.2.3 Các chu n trong ASP.NET Error! Bookmark not defined.

2.3 Ngôn ng l p trình web laszlo Error! Bookmark not defined.

C u trúc c a OpenLaszlo: Error! Bookmark not defined.

2.3.1 OpenLaszlo Compiler Error! Bookmark not defined.

2.3.2 OpenLaszlo Servlet Error! Bookmark not defined.

2.3.3 OpenLaszlo Runtime Framework Library Error! Bookmark not defined.

Ch ng 3 Error! Bookmark not defined.

CÁC GI I PHÁP HI N TH C NG D NG Error! Bookmark not defined.

3.1 S d ng các m u qui đ nh s n đ sinh mã ngu n (template) Error! Bookmark

not defined

3.1.1 Gi i thi u Error! Bookmark not defined.

3.1.2 S d ng gi i pháp cho ng d ng Error! Bookmark not defined.

Trang 5

H U

3.1.3 ánh giá gi i pháp Error! Bookmark not defined.

3.2 Dùng k thu t CodeDOM đ sinh mã ngu n Error! Bookmark not defined.

3.2.1 Gi i thi u Error! Bookmark not defined.

3.2.2 S d ng CodeDOM Error! Bookmark not defined.

3.2.3 ánh giá gi i pháp Error! Bookmark not defined.

3.3 Ch n gi i pháp sinh mã ngu n t đ ng Error! Bookmark not defined 3.4 K thu t ph i màu các controls dùng Cascading Style Sheets (CSS) Error!

Bookmark not defined

3.5 Trình duy t Web trong ng d ng Error! Bookmark not defined.

3.5.1 Gi i thi u Error! Bookmark not defined.

3.5.2 ng d ng ActiveX Control vào ng d ng VS.NET Error! Bookmark not defined.

3.5.3 Hi n th c trong ng d ng Error! Bookmark not defined.

Ch ng 4 Error! Bookmark not defined.

THI T K VÀ CÀI T CH NG TRÌNH Error! Bookmark not defined.

4.1 Mô hình use case Error! Bookmark not defined 4.2 c t Use case: Error! Bookmark not defined.

4.2.1 Use case Start up: Error! Bookmark not defined.

4.2.2 Use case Add Diagram Error! Bookmark not defined.

4.2.3 Use case Add Connection Error! Bookmark not defined.

4.2.4 Use case Edit Connection Error! Bookmark not defined.

4.2.5 Use case Rename Connection Error! Bookmark not defined.

4.2.6 Use case Publish Error! Bookmark not defined.

4.2.7 Use case Browse Page (Publish page) Error! Bookmark not defined.

4.2.8 Use case Add Form Control Error! Bookmark not defined.

4.2.9 Use case Add Builder Control Error! Bookmark not defined.

4.2.10 Use case Add File Error! Bookmark not defined.

4.2.11 Use case Generate Code Error! Bookmark not defined.

4.3 S đ l p Error! Bookmark not defined.

4.3.1 Package Project Error! Bookmark not defined.

4.3.2 Package MainTab Error! Bookmark not defined.

Trang 6

H U

4.3.3 Package Controls Error! Bookmark not defined.

4.3.4 Package CCGWizardClasses Error! Bookmark not defined.

4.4 S đ thành ph n Error! Bookmark not defined 4.5 Thi t k màn hình giao di n Error! Bookmark not defined.

4.5.1 Màn hình chính: Error! Bookmark not defined.

4.5.1.1 Command Area Error! Bookmark not defined.

4.5.1.2 ProjectExplorer Error! Bookmark not defined.

4.5.1 3 PropertyGrid Error! Bookmark not defined.

4.5.1.4 ToolBox Error! Bookmark not defined.

4.5.1.5 Design Area Error! Bookmark not defined.

4.5.1.6 Message explorer Error! Bookmark not defined.

4.5.1.7 Language editor Error! Bookmark not defined.

4.5.2 Ph n giao di n wizard databinding: Error! Bookmark not defined.

Ch ng 5 Error! Bookmark not defined.

ÁNH GIÁ VÀ H NG PHÁT TRI N Error! Bookmark not defined.

5.1 ánh giá k t qu đ t đ c Error! Bookmark not defined 5.2 i chi u v i m c tiêu đ ra Error! Bookmark not defined 5.3 H ng phát tri n Error! Bookmark not defined.

Trang 7

Lnh v c công nghi p ph n m m n c ta đang phát tri n nhanh chóng i u này

đ t ra m t nhu c u to l n trong vi c xây d ng nh ng ng d ng có ch t l ng cao, cung c p nh ng s n ph m ph n m m nh m đáp ng k p th i nhu c u th c ti n

Nh ng ng d ng có qui mô l n, đ c phát tri n trong th i gian dài s đòi h i r t nhi u th i gian và công s c c a các l p trình viên khi hi n th c i u này d d n

đ n nh ng sai sót trong quá trình xây d ng và phát tri n ng d ng Ngoài ra,

l ng mã ngu n quá l n gây nên tình tr ng khó qu n lý, r t khó kh n khi c n xem

l i mã ngu n đ ki m tra, s a l i…

Nh v y, v n đ đ t ra là b ng cách nào gi m b t s v t v cho các l p trình viên khi vi t mã ngu n b ng tay, đ ng th i mã ngu n ph i rõ ràng, tuân theo m t chu n

nh t đ nh đ d đ c, d hi u, thu n ti n cho vi c ki m tra, ch nh s a

Ý t ng xây d ng m t ph n m m cho phép ng i dùng ch c n thi t k giao di n

và mã ngun đ c phát sinh t đ ng xu t phát t nh ng yêu c u thi t th c nói trên

1.2 N i dung đ tài

Hi n nay đã có m t s ph n m m h tr ng i dùng thi t k giao di n tr c quan

và t đ ng sinh mã ngu n nh : Microsoft Visual Studio NET, CodeCharge Studio, và ph n m m mã ngu n m nh SharpDevelop

Trong lu n v n này chúng tôi đ c p đ n các ph ng pháp xây d ng ng d ng cho phép ng i dùng thi t k giao di n web và phát sinh mã ngu n t đ ng

Trang 8

d ng Ngoài ra c ng trình bày chi ti t các gi i pháp k thu t sinh mã ngu n t

đ ng cùng m t s k thu t b tr , phân tích nh ng thu n l i và h n ch c a t ng

k thu t khi áp d ng vào ch ng trình Trong lu n v n này chúng tôi s d ng k thu t dùng m u (Template) và dùng CodeDOM đ sinh mã ngu n cho trang ASP.NET Chúng tôi s xây d ng m t ch ng trình cho phép ng i s d ng thi t

k web tr c quan b ng cách kéo th control vào màn hình thi t k , mã HTML và Code-behind s do ch ng trình t đ ng phát sinh Ch ng trình h tr t ng tác

v i c s d li u B t kì th i đi m nào ng i dùng c ng có th t o k t n i đ n c

s d li u và thao tác trên d li u

Trang 9

2.1 Áp d ng l p trình h ng đ i t ng trên môi tr ng NET

L p trình h ng đ i t ng là khái ni m r t quen thu c đ i v i ng i l p trình và

đ c s d ng r ng rãi do nh ng u đi m c a nó tìm hi u k h n v khái ni m này, chúng tôi đã đính kèm tài li u có trình bày chi ti t v n đ này Trong ph m vi

lu n v n chúng tôi ch đ c p m t s đi m khác bi t c a l p trình h ng đ i t ng trên môi tr ng NET

c đi m 1: Trong NET không có hàm hu nh ng khi khai báo m t ph ng th c

gi ng nh hàm hu ví d ~Employee() thì v n h p l Th t ra v b n ch t thì cách khai báo nh v y có ý ngh a hoàn toàn khác nhau trong 2 ngôn ng :

+ trong C++, đó là hàm hu

+ trong C#, đó là mt cách đ dùng ph ng th c System.Object.Finalize() mà s

đ c g i khi b ph n nh t rác t đ ng s p hu đ i t ng

c đi m 2 M t l p cha trong NET là l p s đ c các l p khác th a k , l p này

đ c nh n bi t b i t khóa virtual ho c abstract:

+ t khóa virtual đ ch m t l p mà b n đ c phép tao m t đ i t ng c a nó + t khóa abstract là m t l p tr u t ng mà không th đ c kh I t o

VD: l p cha Employee() va hai l p k th a là FullTimeEmp() và PartTimeEmp()

N u dung virtual thì b n v n có th t o đ i t ng c a Employee() nh ng trên th c

t b t k nhân viên nào c ng thu c FullTimeEmp() ho c PartTimeEmp() Do đó

d ng n vi c kh i t o này, b n dùng t khoá abstract

Trang 10

H U

c đi m 3: Không còn dùng t khoá friend, và thay vào đó là internal đ c p

quy n truy xu t cho các l p trong cùng ch ng trình hi n hành

c đi m 4: T khoá base đ g i hàm d ng c a l p cha:

private int m_HoursOfWork=0;

public PartTimeEmp(String sName,int h) : base(sName)

{

m_HoursOfWork=h;

} }

2.2 Ngôn ng l p trình web ASP.NET

2.1.1 Gi i thi u

ASP.NET không ch là phiên b n k ti p c a ASP (Active Server Page), nó đ a ra

mô hình phát trin web th ng nh t bao g m nhi u d ch v h tr đ ng i l p trình xây d ng nh ng ng d ng web m nh ASP.NET cung c p b th vi n g m

nhi u l p đ c thi t k đ x lý các yêu c u HTTP (HTTP request) Ngoài b th

vi n này, ASP.NET còn bao g m nhi u thành ph n IIS dùng đ qu n lý các yêu

c u đó

Trang 11

H U

S tách bi t mã ngu n và HTML V i ASP.NET, ta có th hoàn toàn tách bi t

gi a vi c thi t k và x lý các s ki n i u này giúp m t nhóm phát tri n web

g m các nhà l p trình và nh ng nhà thi t k d dàng k t h p v i nhau th t hi u

qu

ASP.NET là ngôn ng h ng đ i t ng M i yêu c u (request) g i t i ng d ng

ASP.NET đ u đ c m t l p (hi n th c interface IHttpHandler) x lý i u này giúp d dàng m r ng khi mu n phát tri n thêm

T n d ng đ c các d ch v h tr b i môi tr ng NET Môi tr ng NET

Framework cung c p s n nh ng th vi n đ s d ng cho ng d ng web

Qu n lý tr ng thái Cung c p gi i pháp qu n lý tr ng thái c a session và ng d ng

Ch ng h n nh thông tin tr ng thái có th đ c gi trong b nh ho c l u tr trong c s d li u Nó c ng có th đ c chia s qua các web-form Nh ng thông tin này có th đ c ph c h i, th m chí ngay c khi máy ch b h n g hay b ng t

k t n i

C p nh t các t p tin trong khi máy ch v n đang ch y Nh ng thành ph n trong

ng d ng v n có th đ c c p nh t trong khi máy ch đang tr c tuy n và các máy khách đang k t n i đ n Framework s s d ng nh ng t p tin m i ngay khi chúng

đ c sao chép vào ng d ng Nh ng t p tin c v n còn đ c l u gi trong b nh cho đ n khi nh ng máy khách k t thúc

Nh ng t p tin c u hình d ng XML Các thi t l p c u hình trong ASP.NET đ u

đ c l u d ng các t p tin XML r t d đ c và s a cho phù h p Ngoài ra ta có th chép nh ng t p tin này cùng v i các t p tin khác c a ng d ng vào máy ch khác

Trang 12

Hình 1 C u trúc Visual Studio NET

Gi i thích c u trúc Visual Studio NET

T ng Common Language Runtime (CLR) CLR có nhi m v t i và th c thi mã

ngu n CLR có nhi m v qu n lý mã ngu n t i th i đi m th c thi, đ ng th i đ m

b o s b o m t Tóm t i, qu n lý mã ngu n là m t y u t c b n c a CLR Mã ngu n đ n CLR g i là mã ngu n đ c qu n lý, ng c l i mã ngu n không đ n CLR g i là mã ngu n không đ c qu n lý

T ng Base Classes NET Framework cung c p r t nhi u b th vi n, bao g m các

l p c s (Base Classes) , nh nh ng l p thao tác v m ng, nh ng l p làm vi c

v i d li u, … T t c nh ng b th vi n này đ c Services Framework cung c p,

và nó n m v trí ngay trên CLR (Xem hình v )

T ng ADO.NET ADO.NET là mô hình Microsoft’s ActiveX Data Object (ADO)

ADO.NET không đ n gi n là vi c chuy n t mô hình ADO qua môi tr ng NET,

mà nó hoàn toàn là mt mô hình m i dùng đ truy c p và x lý d li u

Trang 13

H U

ADO.NET đ c bi t dùng đ phát tri n nh ng ng d ng web Có th nh n th y

đi u này qua hai y u t sau:

• Disconnected Datasets Trong ADO.NET, hu h t vi c x lý d li u đ c th c

hi n bên ngoài k t n i đang m (open connection)

• Trao đ i d li u d dàng d ng XML Datasets có th đ c chuy n thành đ nh

d ng ph bi n trên Web là XML

T ng Windows application và Web application ASP.NET bao g m Web Forms

và Web Services ASP.NET đ c xây d ng t nhi u Web Forms v i các control

c a nó t o nên giao di n cho trang web Nh ng control này đ c khai báo trong trang aspx d i d ng th HTML Web Services cung c p gi i pháp k t n i nhi u

ng d ng khác nhau thông qua internet

T ng Common Language Specification Nh ng đ c tính c a môi tr ng NET là

s h p nh t c a nh ng ngôn ng l p trình khác nhau đ t đ c đi u đó, có m t

s lu t đ c áp d ng và m i ngôn ng ph i tuân theo các lu t trên Common Language Specification là mt t p h p bao g m các qui lu t và nh ng ràng bu c

mà m i ngôn ng ph i tuân theo

Nh ng ngôn ng t ng thích v i NET: VB.NET, C#, Managed C++ và JScript.NET

Trang 14

b t k ngôn ng nào, dùng b t k component model nào, và ch y trên m i h đi u hành đ u có th truy c p XML Web services

Các đ án ng d ng Web ASP.NET và s tri n khai (ASP.Net Web Application Projects and Deloyment):

Khi b n t o m t đ án ng d ng Web, nó có t o m t file Web.config ch a các

đ nh d ng và nh ng chuy n đ i c a các file c u hình NET Trong ASP.NET, file

c u hình cho phép b n thi t l p các thi p l p xác đ nh c a đ án cho vi c b o m t,

nh ng tùy ch n biên d ch, x lý l i, …

Web Forms và ASP.NET Page Framework

Web Forms cho phép ng i l p trình xây d ng m t cách m nh m nh ng trang Web trên n n Forms Khi t o nh ng trang này, b o có th dùng ASP.NET server controls nh ng thành ph n UI chung, và l p trình chúng b ng nh ng tasks ph

bi n

B n có th t o các trang HTML và các trang Web Forms nh giao di n ng i dùng cho ng d ng c a mình Các trang HTML đ c phát sinh s d ng n i dung

t nh Trong khi đó, các trang Web Forms cho b n m t giao di n l p trình làm vi c

gi ng nh m t d ng Visual Basic, và giao di n đ c hi n th b i m t trình duy t Web hay thi t b Web khác

Trang 15

m t container cho controls M i trang có hai file: m t file aspx ch a các thành

ph n giao di n và m t file l p ch a mã ch y trang, đ c g i là code-behind

ng d ng Web truy xu t d li u:

H u h t các ng d ng Web ASP.NET th c hi n ít nh t m t s m c truy c p d

li u ASP.NET không truy xu t tr c ti p d li u Thay vào đó, nh ng ng d ng Web dùng b truy xu t d li u ADO.NET

ADO.NET h tr m t n n hoàn ch nh cho truy xu t và qu n lý d li u t nhi u ngu n, g m c các c s d li u và các file XML hay các stream ADO.NET có

b Providers – các l p cho phép b n k t n i ngu n d li u, th c thi câu l nh, và

đ c k t qu B n có th đ d li u vào dataset, mà khi không còn k t n i, nó v n

n m trong memory cache

C s h t ng ng d ng Web: S B o m t (Security), S Th c Thi (Performance), Theo V t (Tracing)

B o m t

B o m t làm m t ph n không th thi u trong ng d ng c a b n Nh ng ng d ng Web b ng đ nh ngh a cho phép ng i dùng truy c p đ n tài nguyên trung tâm – the Web Server – và thông qua nó, đn nhi u database servers Làm vi c v i

nh ng yêu c u b o m t, có hai khái ni m:

Authentication: xác nh n nh ng ng i dùng, nh ng ng i có quy n truy c p

Authorization: là ti n trình c a vi c ch p thu n hay t ch i truy c p đ n tài nguyên

đ i v i nh ng ng i dùng xác đ nh

Trang 16

B n có th thi t l p s th c thi ng d ng c a b n b ng vi c cache các trang và d

li u ASP.NET ch a m t cache xu t mà l u nh ng trang đ c yêu c u tr c đó

B ng vi c xác đ nh các thi t l p cache, b n có th ki m soát đ dài c a các trang

đ c cache và đ c làm t i

Theo v t

B i vì nh ng ng d ng Web ch y trên Server – th ng là m t server t xa Do đó, ASP.NET cho phép b n g p thông tin theo v t m t cách tr c ti p trong m t trang Web Forms

Ph ng th c

LoadViewState

Trang 17

ph c h i tr ng thái

X lý d li u tr v

(postback data)

X lý nh ng d li u đ c tr v t webform và c p nh t các giá tr property phù h p

tr c

Chú ý: Ch có nh ng control nào

b t s ki n thay đ i postback m i tham gia giai đo n này

Ph ng th c

RaisePostData_ ChangedEvent

X lý postback

X lý s ki n phía client t o postback và b t nh ng s ki n

t ng ng trên server

Chú ý: Ch có nh ng control nào

b t s ki n thay đ i postback m i tham gia giai đo n này

Trang 18

Save state

L u tr ng thái

Property ViewState c a m t control s t đ ng đ c l u thành

m t đ i t ng ki u chu i sau giai

đo n này i t ng chu i này s

đ c g i đ n cho client và đóng vai trò nh m t bi n n t ng

hi u qu , m t control có th override ph ng th c

SaveViewState đ ch nh s a property ViewState

Gi i phóng ngu n tài nguyên

Nh ng control nói chung đ u đ c

Trang 19

H U

Hình 2 Chu kì s ng c a m t ASP.NET request

Trong hình minh h a trên, ta th y ASP.NET bao g m nhi u thành ph n IIS dùng

đ qu n lý các request Trong đó có ISAPI DLL tên ASPNET_ISAPI.DLL và worker process tên ASPNET_WP.EXE ASP.NET cài đt các s đ trong IIS, đ chuy n các yêu c u trang ASPX, ASCX, ASHX, và ASMX cho ASPNET_ISAPI.DLL T đây, ASPNET_ISAPI.DLL chuy n request đ n ASPNET_WP.EXE, t i đây ASP.NET s t i các l p (class) c n thi t đ đáp ng request

Nguyên lý ho t đ ng c a các trang ASP.NET Web Form

Hình 3 C u trúc Web Forms Page và l p c s Page

Trang 20

Hình 4 Hai t p tin c a Web Form Page

L n đ u tiên m t ng i dùng duy t đ n trang aspx, ASP.NET t đ ng sinh ra m t file l p NET yêu c u trang, và biên d ch nó đ n m t file dll th hai L p đ c sinh ra cho trang aspx th a k t l p code-behind mà đã đ c biên d ch vào trong file dll c a đ án Khi m t ng i dùng yêu c u trang Web theo giao th c URL,

nh ng file dll ch y trên server và x lý đ ng xu t ra trang HTML

2.2.3 Các chu n trong ASP.NET

B t kì ngôn ng nào c ng đ u ph i đ a ra m t chu n chung cho ph n code c a mình, và ASP.NET c ng không ngo i l , c n ph i có m t chu n riêng nh m thu n

ti n trong vi c thông nh t code, đ a code trong ASP.NET tr nên trong sáng, d

hi u h n, thu n ti n trong vi c s a ch a, b o trì sau này ng th i đ a ng i l p trình Web lên b t chuyên nghi p h n, vì v y m t chu n ASP.NET là c n thi t đ a

ra Ch ng h n v chu n đ t tên, cách t ch c n i dung file, cách ghi chú thích trang nh th nào, cách đ t danh h i u cho các h ng, các bi n, các đ i t ng ra sao….Các chu n này s đ c trình bày chi ti t trong ph n tài li u đính kèm

Trang 21

H U

2.3 Ngôn ng l p trình web laszlo

Laszlo là mt n n ngôn ng l p trình Web đ c phát tri n b i h th ng Laszlo Nó là m t k thu t

m i, m c dù đã tri n khai t n m 2001, nh ng mãi

Laszlo đ c xây d ng cho phát tri n ng d ng web ng d ng laszlo đ c t o nên

d a trên v n b n t a text XML kèm JavaScript, h tr phát tri n các chu n h ng

đ i t ng, bi u di n d li u, giao di n thông minh và sinh đ ng

Phát tri n ng d ng tiên ti n: có kh n ng tích h p cao trong l p trình XML

Mô hình l p trình m nh m : v i nh ng th m r ng và th a k đ y đ các đ c

tính u vi t c a ngôn ng h ng đ i t ng

M c đ chu n hóa cao v i tính n ng này tuy công ngh laszlo phát tr i n m i cho

th h web hi n đ i nh ng đ i v i ng i l p trình s làm quen nhanh chóng d a trên các k n ng s n có v i HTML và JavaScript

Ph n này ch gi i thi u t ng quan v c u trúc c a Laszlo, ph n chi ti t s đ c trình bày trong tài li u đính kèm

Trang 22

The OpenLaszlo Compiler biên dch nh ng file ngu n LZX vào tro ng th vi n

th c thi cho m c tiêu môi tr ng th i gian ch y

Compiler h tr hai đ c tính sau:

XML UI Compilation

S di n t giao di n ng i dùng LZX là m t di n t khai báo XML c a m t giao

di n ng d ng Trình biên d ch chuy n đ i nh ng di n gi i XML này sang bytecode mà t o m t giao diên úng d ng khi ng d ng đ c th c thi

ECMAScript: Compilation

Các l p và các th hi n giao di n ng i dùng LZX đ c chú thích v i nh ng

ph ng th c và các s lý s ki n ECMAScript, t ng t DHTML Trình biên d ch chuy n đ i sang d ng bytecode

Media, data, và Font Compilation

Chuy n code PNG, JPG, GIF, SWF, MP3, và các file ch , sang các file đ i t ng

ng d ng

2.3.2 OpenLaszlo Servlet

Servlet h tr cho các thu c tính sau:

Media trancoding Chuy n mã m t d ng media vào trong m t t p mà trình ch y Flash 6 và Flash 7 có th hi n th

Data transcoding Chuy n mã các response d li u XML sang m t đ nh d ng nhi phân

Trang 23

Logging and Administration M t s qu n lý nh m ki m soát và khai báo giao di n

ng i dùng cho phép s ki m tra giao di n và v n b n c a tr ng thái server

2.3.3 OpenLaszlo Runtime Framework Library

The OpenLaszlo Runtime Framework Library bao gm các components c a giao

di n ng i dùng, data binding, và các d ch v m ng

Nó h tr các đ c đi m sau:

Components M t th vi n đ y ti n ích c a nh ng thành ph n giao di n ng i dùng, g m c nh ng thành ph n Web form và c u hình grid và cây, cho phép b n

Trang 25

M u qui đ nh s n là các t p tin v i n i dung là mã ngu n chu n c a m t trang

window form, trang web, user control… Mã ngu n này d ng m t ngôn ng nh t

đ nh (C#, VB.NET…) và g n nh là m t mã ngu n hoàn ch nh

Trong m t m u c n phân bi t n i dung t nh và n i dung đ ng

N i dung t nh là n i dung b t bi n Ngh a là b t kì m t đ i t ng nào cùng lo i (ch ng h n m t window form) c ng đ u ph i có n i dung này, vì v y nó đ c s

d ng cho t t c nh ng đ i t ng cùng lo i

N i dung đ ng là n i dung s thay đ i tùy thu c vào các giá tr mà ng i dùng

nh p vào N i dung này đ c đánh d u b ng m t chu i, g i là chu i đánh d u Các chu i đánh d u đ c thay th b ng n i dung đ c mô t b i ng i dùng trong

th i gian th c thi

hi u rõ cách s d ng m u đ sinh mã ngu n t đ ng, ta xét m t ví d c th

ây là m t m u window form (có l c b m t s dòng mã không có tác d ng minh h a), đ c Microsoft Visual Studio s d ng khi thêm m t window form m i vào C# project Các chui đánh d u trong m u đ c in đ m Thông tin chính xác

s thay th các chu i này và t o ra m t mã ngu n hoàn ch nh cho window form using System;

using System.Windows.Forms;

namespace [!output SAFE_NAMESPACE_NAME]

{

/// <summary>

Trang 26

private System.ComponentModel.Container components = null ; public [!output SAFE_CLASS_NAME]()

{

InitializeComponent();

} private void InitializeComponent() {

this Size = new System.Drawing.Size(300,300);

this Text = "[!output SAFE_CLASS_NAME]";

} }

}

Trong th i gian th c thi, ng d ng s l y thông tin g m tên c a namespace và tên

l p thay vào chu i đánh d u

this Size = new System.Drawing.Size(300,300);

this Text = "Samples";

} }

}

Trang 27

Sinh mã ngu n trang Code-behind

Nh cách trình bày bên trên, vic t o m t trang code-behind m i cho trang aspx khá đ n gi n, ch c n đ c t p tin m u lên và thay th b ng các giá tr mà ng i dùng nh p vào

Tuy nhiên, sau khi đã t o đ c m t trang code -behind m i, v n đ đ t ra là khi

mu n thêm các khai báo bi n, thêm ph ng th c, s ki n… t đ ng vào mã ngu n thì nên thêm vào v trí nào c a t p tin Gi i pháp lúc này là c n ph i chia mã ngu n thành nhi u ph n b ng các chu i đánh d u Khi mu n thêm m t y u t nào

đó vào mã ngu n, ta d a theo nh ng chu i đánh d u này đ xác đ n h v trí chính xác

//End Using Statements

//Forms Definition @1-D8FD3E8D

public class NewPage1Page : System.Web.UI.Page

{

//End Forms Definition

//Forms Objects @1-7DB1BCE4

protected System.Web.UI.WebControls.Literal Label1;

protected System.Web.UI.WebControls.Literal Label2;

//End Forms Objects

//Page_Load Event @1-55207E05

private void Page_Load( object sender, System.EventArgs e) {

//End Page_Load Event

Trang 28

}

//End Page_Load Event BeforeIsPostBack

//Page_Load Event tail @1-FCB6E20C

//End Page class tail

Trong đo n mã trên nh ng ta th y m i m t ph n đ c đánh d u b ng m t c p chu i ghi chú Ví d nh ph n khai báo các control trong giao di n (field) đ c đánh d u b ng m t c p chu i “Forms Objects” và “End Forms Objects” nh sau:

//Forms Objects @1-7DB1BCE4

protected System.Web.UI.WebControls.Literal Label1;

protected System.Web.UI.WebControls.Literal Label2;

//End Forms Objects

Nh v y d a vào c p chu i đánh d u mà ta có th thêm vào các khai báo bi n,

ph ng th c, s ki n… vào mã ngu n

Sinh mã ngu n cho trang aspx

ây là m u HTML c a trang aspx, ngôn ng C#, nh ng chu i đánh d u đ c in

đ m Khi t o m t trang aspx m i, nh ng chu i đánh d u s đ c thay b ng n i dung t ng ng

<%@ Page language="c#" Codebehind="$FILENAME$.cs"

AutoEventWireup="false" Inherits="$INHERITS$" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<html>

<head>

Trang 29

H U

<title>[!output SAFE_ITEM_NAME]</title>

<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0"> <meta name="CODE_LANGUAGE" Content="C#">

<meta name=vs_defaultClientScript content="[!output

DEFAULT_CLIENT_SCRIPT]">

<meta name=vs_targetSchema content="[!output

DEFAULT_TARGET_SCHEMA]">

</head>

<body MS_POSITIONING="[!output DEFAULT_HTML_LAYOUT]">

<form id="Form1" method="post" runat="server">

</form>

</body>

<html>

th là JavaScript hay VBScript

http://schemas.microsoft.com/inte llisense/ie3-2nav3-0

http://schemas.microsoft.com/inte llisense/ie5

http://schemas.microsoft.com/inte llisense/nav4-0.

Trang 30

B ng 2 Chu i đánh d u trang aspx m u

N u chú ý thì ta th y c u trúc m t t p tin aspx c ng g n gi ng nh c u trúc t p tin xml Do v y, thêm m t thành ph n nào đó (ch ng h n nh button) vào trang aspx

c ng gi ng nh thêm m t ph n t trong t p tin xml Nh ng ph n t này đ c bi u

di n b ng m t c p th (ví d nh <asp:button> </asp:button>) và ph i n m trong

c p <form> </form>

Vì th , sinh mã ngu n cho trang aspx có th x lý nh khi t o ra m t t p tin xml

có ch a nh ng ph n t là các thành ph n c a trang web (bao g m các web control, html control, data control…)

Trong ph n sinh mã ngu n trang Code-behind

Do n i dung các t p tin m u t nh nên ch áp d ng cho m t đ i t ng c th m t ngôn ng c th Vì v y, n u ng d ng h tr nhi u ngôn ng khác nhau, thì ph i

t o ra nh ng m u đ c vi t nh ng ngôn ng l p trình khác nhau cho cùng m t

lo i đ i t ng Ch ng h n nh đ sinh m t trang code-behind trang web

Trang 31

S d ng các chu i đánh d u trong mã ngu n làm cho mã ngu n r m rà, khó

mã ngu n cho ch ng trình M c đích c a công c này là làm gi m c c nh c c a

vi c vi t mã ngu n b ng tay cho các l p trình viên B ng cách s d ng namespace System.CodeDom đ c cung c p s n trong NET Framework, l p trình viên có th

t mình t o ra m t công c sinh mã ngu n t đ ng theo yêu c u riêng c a mình

Tóm t t khái ni m c u trúc cây d li u (Tree Data Structures)

C u trúc này đ c s d ng ph bi n khi bi u di n d li u M t cây bao g m nhi u

nút đ c liên k t v i nhau, t o ra m t c u trúc l u tr trong b nh

Hình minh h a c u trúc cây:

Trang 32

H U

Hình 5 C u trúc cây Nút g c:

Hình 6 C u trúc cây – Nút g c Nút con:

Hình 7 C u trúc cây – Nút con

Trang 33

H U

C u trúc cây là khái ni m quan tr ng đ c s d ng trong CodeDOM M i m t đ i

t ng trong mã ngu n đ c bi u di n nh m t nút c a cây

Kh o sát mã ngu n (C#) quen thu c nh sau:

Trang 34

private System.Windows.Forms.Button button1;

private System.ComponentModel.Container components = null ;

private int _numOfStep;

{ return this _numOfStep;}

public virtual int NumOfStep

Trang 35

câu l nh là CodeStatement, khai báo các bi n c a l p là CodeMemeberField, …

C u trúc đ th CodeDOM có th đ c minh h a nh sau:

Trang 36

H U

Sinh mã ngu n trang Code-behind

sinh mã ngu n cho trang Code-behind, ta c n t o m t đ th CodeDOM và s

d ng hai namespace sau:

System.CodeDomđ nh ngh a các ki u (type) dùng đ trình bày c u trúc logic c a

mã ngu n, không ph thu c m t ngôn ng l p trình c th nào

System.CodeDom.Compiler đ c s d ng đ sinh ra mã ngu n t đ th CodeDOM và biên dch mã ngu n (h tr các ngôn ng C#, JScript, Vb.NET)

G c c a đ th CodeDOM là CodeCompileUnit, bi u di n cho m t project hay

m t assembly T t c m i thành ph n mã ngu n khác đ u ph i đ c liên k t v i nhau và có g c chung là CodeCompileUnit

Minh h a cách s d ng CodeDOM đ sinh mã ngu n:

CodeNamespace samplesNamespace = new CodeNamespace("SamplesNamespace");

//Nút con namespace đ c thêm vào g c

unit.Namespaces.Add(codeUsing);

unit.Namespaces.Add(samplesNamespace);

//Thêm l p vào namespace

Trang 37

//Thêm khai báo bi n vào l p

CodeMemberField button = new

CodeMemberField( typeof (System.Windows.Forms.Button), "button1");

//Thêm ph ng th c InitializeComponent vào l p

CodeMemberMethod initMethod = new CodeMemberMethod();

CodeDomProvider provider;

if (language == "CSHARP")

provider = new CSharpCodeProvider();

else if (language == "VBNET")

Trang 38

H U

provider = new VBCodeProvider();

StringWriter sw = new StringWriter();

ICodeGenerator generator= provider.CreateGenerator();

{ } }

Trang 39

H U

Inherits System.Windows.Forms.Form

Private button1 As System.Windows.Forms.Button

Public Sub New ()

D a vào c u trúc cây đ phát sinh mã ngu n, vì v y mã ngu n đ c sinh ra có

th b t kì m t ngôn ng nào (C#, VB.NET…) n u ngôn ng này có h tr đ c t CodeDOM

Các ch ng trình đ c t o ra, biên d ch và th c thi đ ng th i gian ch y

Cho phép bi u di n c u trúc mã ngu n trong b nh b ng mô hình các đ i t ng

đ c l p v i ngôn ng l p trình

Trong t ng lai, có th m ra kh n ng “d ch” mã ngu n đ c vi t b ng ngôn

ng này sang ngôn ng khác (Ch ng h n mã ngu n vi t b ng C# đ c “d ch” ra thành d ng vi t b ng VB.NET)

H n ch

Ch a h tr nh ng tr ng h p sau:

1

Trang 40

using MyAlias = MyNamespace.MyClass;

public void MyClass2 : MyAlias

Ngày đăng: 24/11/2014, 03:04

HÌNH ẢNH LIÊN QUAN

Hình 8 Kh o sát mã ngu n đ  t o đ  th  CodeDOM - sinh source code theo giao diện tự động
Hình 8 Kh o sát mã ngu n đ t o đ th CodeDOM (Trang 34)
Hình 8 C u trúc  đ  th  CodeDOM - sinh source code theo giao diện tự động
Hình 8 C u trúc đ th CodeDOM (Trang 35)
Hình 15 Use case Blank Project - sinh source code theo giao diện tự động
Hình 15 Use case Blank Project (Trang 51)
Hình 17 Use case Modify Connection - sinh source code theo giao diện tự động
Hình 17 Use case Modify Connection (Trang 52)
Hình 20 Use case Add Web Page - sinh source code theo giao diện tự động
Hình 20 Use case Add Web Page (Trang 53)
Hình 23 S   đ  l p qu n  lý c u hình c a project - sinh source code theo giao diện tự động
Hình 23 S đ l p qu n lý c u hình c a project (Trang 63)
Hình 24  S   đ  l p hi n th c c a s  Project Explorer - sinh source code theo giao diện tự động
Hình 24 S đ l p hi n th c c a s Project Explorer (Trang 65)
Hình 25 Package MainTab - sinh source code theo giao diện tự động
Hình 25 Package MainTab (Trang 67)
Hình 28  S  đ  l p c a k  thu t ph i màu s  d ng ki u CSS - sinh source code theo giao diện tự động
Hình 28 S đ l p c a k thu t ph i màu s d ng ki u CSS (Trang 70)
Hình 29  S  đ  wizard h  tr  ng i dùng - sinh source code theo giao diện tự động
Hình 29 S đ wizard h tr ng i dùng (Trang 71)
Hình 31  S  đ   l p dùng  CodeDOM đ  t o t p tin truy xu t c  s  d  li u - sinh source code theo giao diện tự động
Hình 31 S đ l p dùng CodeDOM đ t o t p tin truy xu t c s d li u (Trang 74)
Hình 32  S  đ  t ng tác gi a các l p  khi t o DataGridControl - sinh source code theo giao diện tự động
Hình 32 S đ t ng tác gi a các l p khi t o DataGridControl (Trang 75)
Hình 34 Giao di n chính c a ch ng trình - sinh source code theo giao diện tự động
Hình 34 Giao di n chính c a ch ng trình (Trang 77)
Hình 38 Design Area - sinh source code theo giao diện tự động
Hình 38 Design Area (Trang 81)
Hình này th  hi n s  tích h p gi a Laszlo và ASP.Net - sinh source code theo giao diện tự động
Hình n ày th hi n s tích h p gi a Laszlo và ASP.Net (Trang 103)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w