XÂY DỰNG VÀ PHÁT TRIỂN ỨNG DỤNG HỖ TRỢ SOẠN THẢO, BIÊN DỊCH VÀ THỰC THI CHƯƠNG TRÌNH TRÊN MÔI TRƯỜNG WEB
Trang 1KHÓA LU N T T NGHI P C NHÂN CNTT
TP HCM, 2011
Trang 2TR NG I H C KHOA H C T NHIÊN KHOA CÔNG NGH THÔNG TIN
KHÓA LU N T T NGHI P C NHÂN CNTT
PGS.TS TR N AN TH
KHÓA 2007 – 2011
Trang 3i
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
TP H Chí Minh, ngày … tháng …… n m 2011 Giáo viên h ng d n
Trang 4ii
NH N XÉT C A GIÁO VIÊN PH N BI N
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
……… Khóa lu n đáp ng yêu c u c a Khóa lu n c nhân CNTT
TP H Chí Minh, ngày … tháng …… n m 2011 Giáo viên ph n bi n
Trang 5iii
L I C M N
Chúng em xin chân thành c m n Khoa Công ngh Thông tin, tr ng i h c Khoa
h c T nhiên TP H Chí Minh đã t o đi u ki n cho chúng em th c hi n đ tài khóa
lu n t t nghi p này
Chúng em xin g i l i c m n sâu s c đ n PGS.TS Tr n an Th , ng i đã tr c
ti p h ng d n và t n tình ch b o chúng em trong su t th i gian th c hi n đ tài Th y
đã truy n đ t cho chúng em nhi u ki n th c quan tr ng, c ng nh nhi u ý t ng thú v ,
là ngu n đ ng l c đ chúng em th c hi n đ tài v i tinh th n làm vi c và nghiên c u khoa h c nghiêm túc
Chúng em xin chân thành c m n các Th y và các Cô trong Khoa đã cho chúng em
nh ng ki n th c quý báu trong su t th i gian khóa h c, cho chúng em m t n n t ng lý thuy t v ng ch c và nh ng k thu t c b n thi t y u c bi t chúng em mu n c m n
TS Tr n Minh Tri t, ng i đã giúp đ , gi i đáp các th c m c chúng em g p ph i trong quá trình th c hi n đ tài Chúng em c ng mu n mu n c m n Th y Nguy n ình
Kh ng, ng i đã giúp đ t i em r t nhi u trong quá trình tri n khai th nghi m đ tài Chúng con xin chân thành c m n b m , anh ch em và t t c ng i thân trong gia đình đã t o m i đi u ki n t t nh t, đ ng viên khích l chúng con trong quá trình h c
t p nói chung và quá trình làm khóa lu n t t nghi p nói riêng
Chúng tôi xin g i l i c m n đ n t t c các Th y Cô gi ng viên c a Khoa và b n bè trong và ngoài n c đã tham gia th nghi m s n ph m c a chúng tôi, h tr và đóng góp ý ki n đ chúng tôi hoàn thi n đ tài này
V i tinh th n làm vi c nghiêm túc, chúng em đã hoàn thành đ c m c tiêu đ ra ban đ u c a khóa lu n Tuy nhiên đây ch m i là nh ng b c th nghi m ban đ u, vì
Trang 6iv
th chúng em mong mu n nh n đ c s giúp đ , ch b o và góp ý c a các Th y Cô và
các b n đ không ng ng hoàn thi n c mô hình lý thuy t l n ng d ng
TP H Chí Minh, tháng 6 n m 2011
Trang 7v
Khoa Công Ngh Thông Tin
L p C nhân tài n ng
Tên Tài: Xây d ng và phát tri n ng d ng h tr so n th o, biên d ch và th c
thi ch ng trình trên môi tr ng Web
Tìm hi u công ngh và phát tri n ng d ng, c th là tìm hi u công ngh l p
trình Web đ xây d ng m t ng d ng Web theo yêu c u đ c t c a đ tài
Nghiên c u và t ng h p hi n tr ng các v n đ khoa h c liên quan đ n h ng
phát tri n c a đ tài đ làm c s xây d ng, phát tri n ng d ng theo yêu c u
c a đ tài
N i Dung Tài:
N i dung và yêu c u đ tài:
Nghiên c u và t ng k t hi n tr ng v các công c và môi tr ng h tr so n
th o mã ngu n, biên d ch và th c thi trên môi tr ng Web
Nghiên c u các công ngh l p trình Web, các h th ng th vi n l p trình Web, các h mã ngu n m cho phép phát tri n ng d ng Web theo giao di n thân thi n v i ng i dùng cu i
Tri n khai thi t k và cài đ t ng d ng d a trên các k t qu nghiên c u, đáp
ng đ c các nhu c u c b n trong ho t đ ng so n th o mã ngu n, biên d ch
Trang 8vi
và th c thi ch ng trình trên môi tr ng Web
Ph ng pháp th c hi n:
T n d ng các ngu n tham kh o trên Web, thông qua các trang báo đi n t ,
di n đàn c a các đ i ng phát tri n, các blog c a các l p trình viên bên c nh các tài li u chính th c nh sách và bài báo khoa h c
T n d ng các s n ph m có s n nh trình biên d ch, h đi u hành và các ph n
m m mã ngu n m
Luôn ghi chép và l u tr c n th n các tài li u phát sinh và các ki n th c thu
th p đ c trong quá trình th c hi n đ làm c s vi t báo cáo khóa lu n
K t qu khóa lu n:
ng d ng th nghi m cung c p d ch v h tr so n th o mã ngu n, biên d ch
và th c thi trên môi tr ng Web ng d ng th hi n các k t qu nghiên c u
c a đ tài và đ c tri n khai th nghi m tr c tuy n
Báo cáo t ng h p nghiên c u hi n tr ng v các công c và môi tr ng h tr
so n th o mã ngu n, biên d ch và th c thi, các công ngh và các th vi n l p trình Web t ng ng, mô hình thi t k và cài đ t ng d ng th nghi m cùng các h ng phát tri n ng d ng trong t ng lai
Trang 9Nhóm nghiên c u các chu n và các công ngh l p trình Web hi n đ i; tìm
ki m các công c và các gói mã ngu n m có th đáp ng các yêu c u c a đ tài; ch n l a các chu n và công ngh đ phát tri n ng d ng
28/02/2011 – 16/04/2011: Thi t k và ch nh s a thi t k
Nhóm ti n hành thi t k c th các thành ph n ch c n ng, các c ch giao
ti p, các k ch b n ho t đ ng c a ng d ng và giao di n c a ng d ng
07/03/2011 – 10/06/2011: Cài đ t và ch nh s a cài đ t
Nhóm ch n l a các gói mã ngu n m thích h p, ch nh s a theo yêu c u và
gi i h n đ tài, l p trình khung ng d ng, b sung các thành ph n còn thi u Nhóm th c hi n ki m th đ n v và ch nh s a các thành ph n
23/05/2011 – 30/06/2011: Tri n khai th nghi m và ti p nh n ph n h i
Nhóm tri n khai trang Web tr c tuy n, cung c p d ch v th nghi m; ti p
nh n các ph n h i và hoàn thi n ng d ng; ti n hành kh o sát ng i dùng v
m c đ hài lòng, các yêu c u b sung và các ý ki n đóng góp
25/04/2011 – 30/06/2011: T ng h p báo cáo
Nhóm t ng h p các nghiên c u đã th c hi n, các tài li u đã ghi chép trong
su t quá trình làm vi c; trình bày các k t qu thành b n báo cáo hoàn thi n Xác nh n c a GVHD
Trang 10viii
M C L C
L I C M N iii
C NG CHI TI T v
M C L C viii
DANH M C HÌNH xii
DANH M C B NG xiii
THU T NG VÀ CÁC T VI T T T xiv
CH NG 1 GI I THI U 1
1.1 Gi i thi u chung 1
1.2 Nhu c u xây d ng môi tr ng phát tri n tích h p trên Web 2
1.3 M c tiêu và gi i h n c a khóa lu n 3
1.4 Các b c ti n hành khóa lu n 3
1.5 Tiêu chí và h ng ti p c n c b n 4
1.6 K t qu khóa lu n 5
1.7 C u trúc c a báo cáo khóa lu n 5
CH NG 2 NGHIÊN C U KI N TH C N N T NG 7
2.1 L ch s các môi tr ng phát tri n tích h p 7
2.2 Các công ngh l p trình Web 10
2.2.1 D ch v Web v i ki n trúc REST 11
2.2.2 JavaScript 14
2.2.3 C ch Ajax và cú pháp JSON 15
2.2.4 HTML5 17
Trang 11ix
2.2.5 PHP 18
2.2.6 Khung phát tri n ng d ng 19
CH NG 3 KH O SÁT VÀ XÁC NH YÊU C U 21
3.1 Kh o sát hi n tr ng 21
3.2 Ch c n ng c a ng d ng 21
CH NG 4 THI T K H TH NG 27
4.1 Ki n trúc h th ng 27
4.1.1 Các thành ph n t i server 28
4.1.2 Các thành ph n t i client 29
4.1.3 Liên l c gi a client và server: d ch v Web REST 30
4.2 Thi t k h th ng 30
4.2.1 S đ l p 30
4.2.2 S đ tu n t 32
4.2.3 Giao ti p d ch v Web REST 35
4.3 Thi t k giao di n 41
CH NG 5 CÀI T VÀ TRI N KHAI H TH NG 44
5.1 Các thành ph n t i server 44
5.1.1 Web server 44
5.1.2 REST API 45
5.1.3 H th ng t p tin 46
5.1.4 Trình biên d ch, th c thi và các công c h tr 47
5.1.5 Qu n lý c u hình 47
Trang 12x
5.2 Các thành ph n t i client 48
5.2.1 jQuery 48
5.2.2 Trình so n th o mã ngu n Ace 48
5.2.3 Giao di n client 49
5.2.4 Nén mã ngu n 53
5.3 Tri n khai th nghi m tr c tuy n 54
CH NG 6 K T QU VÀ H NG PHÁT TRI N 58
6.1 K t qu khóa lu n 58
6.1.1 Ki n th c tìm hi u đ c 58
6.1.2 So sánh m c tiêu ban đ u và k t qu đ t đ c 59
6.1.3 ng d ng trong môi tr ng s ph m 60
6.2 H ng phát tri n 61
6.2.1 Các tính n ng b sung 61
6.2.2 V n đ b o m t 63
6.2.3 H p tác tr c tuy n 65
6.2.4 i n toán đám mây 69
PH L C 71
A.1 M t s th vi n khung JavaScript 71
A.2 M t s th vi n khung PHP 72
A.3 M t s trình so n th o mã ngu n trên Web 74
A.4 M t s công c t o t p tin qu n lý d án 75
A.5 Các thu t toán m u dùng trong tri n khai th nghi m 78
Trang 13xi
A.6 B ng câu h i kh o sát ng i dùng tham gia th nghi m 79A.7 H ng d n s d ng ng d ng th nghi m 84TÀI LI U THAM KH O 91
Trang 14xii
DANH M C HÌNH
Hình 4.1 Ki n trúc client – server t ng quan c a h th ng 28
Hình 4.2 S đ l p c a ki n trúc Web thu n túy 31
Hình 4.3 S đ tu n t m t s k ch b n ho t đ ng c a ng d ng 33
Hình 4.4 Giao di n t ng quan c a ng d ng 41
Hình 4.5 Giao di n c u hình ng d ng 42
Hình 4.6 Giao di n th c thi ng d ng đã biên d ch 42
Hình 5.1 Giao di n hoàn ch nh c a ng d ng 50
Hình 5.2 Thành ph n thanh th c đ n và công c c a ng d ng 50
Hình 5.3 Giao di n ng d ng ch đ so n th o toàn màn hình 51
Hình 5.4 Giao di n danh sách d án, th m c và t p tin cùng th c đ n ng c nh 51
Hình 5.5 Giao di n thông báo k t qu biên d ch 52
Hình 5.6 Giao di n báo l i biên d ch 52
Hình 5.7 Giao di n c u hình ng d ng 52
Hình 5.8 Giao di n dòng l nh 53
Hình 5.9 Giao di n th c thi ng d ng đã biên d ch 53
Hình 5.10 Trang ch gi i thi u h th ng trên server c a Khoa 55
Hình 5.11 ng d ng ch y trên ch đ Application c a trình duy t Chrome 56
Hình 5.12 ng d ng ch y trên máy tính b ng Blackberry Playbook 57
Trang 15xiii
DANH M C B NG
B ng 1.1 So sánh ng d ng desktop và ng d ng web 2
B ng 2.1 S liên h gi a kích th c mã ngu n, đ i ng phát tri n và công c s d ng 9
B ng 3.1 So sánh m t s s n ph m IDE ngôn ng C/C++ trên n n desktop 22
B ng 3.2 So sánh m t s s n ph m IDE trên n n Web 23
B ng 4.1 Các tài nguyên và ph ng th c t ng ng trong REST API c a ng d ng 37
B ng 6.1 So sánh s n ph m k t qu v i m c tiêu đ t ra ban đ u 59
Trang 16t ng tác cao t i client
2 CSS Cascading Style Sheets
Ngôn ng mô t cách th c trình bày
và hi n th c a các tài li u vi t b ng các ngôn ng đánh d u nh HTML
Model
Mô hình dùng đ bi u di n và t ng tác v i các đ i t ng trong các tài
c a World Wide Web
6 IDE Integrated Development
d a trên ngôn ng JavaScript
8 JVM Java Virtual Machine Máy o Java
9 MVC Model – View – M t m u ki n trúc ph n m m giúp
Trang 1711 REST Representational State
Transfer
M t ki n trúc ph n m m đ phát tri n các h th ng phân tán siêu
ph ng ti n, ph bi n trong các d ch
v Web
12 RPC Remote Procedure Call
M t c ch cho phép m t máy tính yêu c u m t máy tính khác th c thi
m t th t c v i các tham s đ c cung c p
13 SOAP Simple Object Access
Protocol
M t giao th c đ trao đ i d li u dùng trong các d ch v Web
14 URI Uniform Resource
Identifier
M t chu i kí t dùng đ đ nh danh các tài nguyên trên m ng Internet
Trang 18c v n không ng ng đ c c i thi n và chu n hóa Nh đó, các ng d ng trên Web ngày càng đ c b sung nhi u tính n ng mà tr c đây ch th c hi n đ c trên các ng
d ng truy n th ng trên desktop Bên c nh đó, các ng d ng trên Web có nhi u u đi m
n i tr i nh :
Nhanh chóng, m i lúc m i n i và không ph thu c thi t b : ng i dùng không
c n có các thi t b l u tr l n và các b vi x lý m nh, c ng không ph i cài đ t
ph n m m mà ch c n m t thi t b k t n i Internet là có th ti p c n v i các d ch
v ;
Chi phí gi m và đ tin c y cao: t t c các tài nguyên l u tr và x lý đ c qu n
lý t p trung, giúp cho quá trình v n hành, b o trì và b o m t d dàng h n;
Chia s , phân ph i và c ng tác: l u tr , x lý t p trung, không ph thu c thi t
b và không gian giúp cho các cá nhân có th h p tác làm vi c v i nhau d dàng
h n;
K t h p và phát tri n các ng d ng: các s n ph m trên Web đ c xây d ng
d i d ng các d ch v , cung c p các giao ti p phát tri n ng d ng (API), m ra
kh n ng xây d ng các ng d ng trên n n các d ch v này
B ng 1.1 trình bày tóm t t m t s k t qu so sánh gi a ng d ng desktop và ng
d ng Web
Trang 191.2 Nhu c u xây d ng môi tr ng phát tri n tích h p trên Web
V i các s n ph m môi tr ng phát tri n ph n m m tích h p, quá trình ti n lên Web
di n ra ch m h n, có l vì đây là m t s n ph m ph c t p h n, có th tr ng ng i dùng
nh h n các s n ph m ph thông k trên Các s n ph m hi n có trên Web ch h ng t i các ngôn ng hay n n t ng r t c th , còn h n ch nhi u tính n ng so v i Microsoft
Trang 21 Kh o sát chi ti t các yêu c u s n ph m: d a trên các kh o sát có s n và tr i
nghi m c a b n thân; ti n hành đánh giá đ u tiên c a t ng ch c n ng
Phân tích thi t k : l a ch n gi i pháp t i u, xây d ng ki n trúc, thi t k mô
hình l p, c s d li u và giao di n ng d ng
Cài đ t: l a ch n và tích h p các công c s n có; cài đ t b sung nh ng thành
ph n c n thi t
Tri n khai: tri n khai th nghi m và kh o sát ý ki n ph n h i t ng i dùng
Trong quá trình th c hi n, chúng tôi luôn ti n hành ghi chép và l u tr c n th n các tài li u phát sinh và các ki n th c thu th p đ c đ làm c s vi t báo cáo khóa lu n
1.5 Tiêu chí và h ng ti p c n c b n
Xuyên su t trong quá trình làm khóa lu n, chúng tôi luôn c g ng tuân th theo các quy t c sau:
T n d ng các chu n và công ngh phát tri n Web m i nh t: d ch v Web, c
ch Ajax, các công ngh l p trình Web tiên ti n HTML5 và CSS3;
T n d ng các thành ph n có s n nh trình biên d ch (gcc, NET Framework, Eclipse Platform), h đi u hành và các ph n m m mã ngu n m (nh trình so n
th o v n b n);
1 Thu t ng ti ng Anh: prototype
Trang 22h ng phát tri n ng d ng trong t ng lai
Xây d ng đ c ng d ng th nghi m cung c p d ch v h tr so n th o mã ngu n, biên d ch và th c thi trên môi tr ng Web ng d ng th hi n các k t
qu nghiên c u c a đ tài và đ c tri n khai th nghi m tr c tuy n
1.7 C u trúc c a báo cáo khóa lu n
N i dung chính c a báo cáo khóa lu n đ c trình bày t ch ng 2 đ n ch ng 7:
Ch ng 2: trình bày l ch s hình thành và so sánh các môi tr ng phát tri n tích
h p; xác đ nh và gi i h n các thành ph n mà khóa lu n tìm hi u và tri n khai; trình bày tiêu chí, h ng ti p c n và các b c ti n hành khóa lu n
Ch ng 3: kh o sát và xác đ nh các yêu c u c a h th ng c n xây d ng, nhìn t
quan đi m ng i dùng cu i, trong ph m vi gi i h n đã đ t ra
Ch ng 4: trình bày ki n trúc và các gi i pháp thi t k đ c ch n l a đ xây d ng
h th ng
Ch ng 5: trình bày các ph ng pháp cài đ t h th ng, m t s v n đ x lý; quá
trình tri n khai th nghi m h th ng
Trang 247
Trong ch ng này chúng tôi xin trình bày các ki n th c c b n mà chúng tôi đã nghiên c u Ph n đ u chúng tôi s gi i thi u l ch s hình thành c a các môi tr ng phát tri n tích h p, qua đó cho th y vai trò c a chúng và nhu c u s d ng các s n ph m
nh v y c a nh ng đ i ng phát tri n ph n m m Ph n th hai chúng tôi xin gi i thi u các ki n th c v l p trình Web hi n đ i – nh ng ki n th c c s đ chúng tôi có th xây d ng thành công ng d ng
th c s phát tri n m nh m Nh ng công c này không ch đ c dùng đ qu n lý h
th ng mà còn đ xây d ng ph n m m Su t m t th i gian dài sau đó, công vi c c a l p trình viên g n li n v i các công c giao di n dòng l nh [1]
Cùng v i s phát tri n và m c đ ph bi n nhanh chóng c a máy tính, yêu c u đ i
v i đ i ng phát tri n ph n m m không ng ng đ c nâng lên [2]:
Mã ngu n ph n m m ngày càng nhi u và ph c t p;
ng d ng m i ph i hoàn thành trong th i gian ng n;
1 Thu t ng ti ng Anh: punch card
Trang 258
Nhi u công c m i xu t hi n và không ng ng đ c c i ti n khi n l p trình viên
g p khó kh n trong vi c l a ch n công c phù h p;
L p trình viên ph i tham gia vào nhi u công đo n nh thi t k mã ngu n, xây
d ng b n m u, ki m tra và tích h p các đo n ch ng trình nh , đóng gói s n
ph m… và m i m t giai đo n có th đòi h i nhi u công c khác nhau
T i cu i th p k 70, giao di n đ h a d n d n đ c tích h p vào các công c c a
l p trình viên S thay đ i này khi n n ng su t c a h đ c t ng lên đáng k Tuy nhiên, vi c s d ng t ng công c riêng r th c s v n gây ra nhi u khó kh n H ph i
t n r t nhi u th i gian đ h c cách s d ng, c u hình và t ng tác v i nhi u công c [1] Do v y, các môi tr ng phát tri n tích h p giúp đ n gi n hóa quá trình phát tri n
ph n m m d n d n xu t hi n
M t th i gian sau, các môi tr ng phát tri n tích h p nh Maestro I, Turbo Pascal
l n l t ra đ i Các môi tr ng này đ u có b n thành ph n chính gi ng nhau [3] [4]: trình so n th o mã ngu n, trình biên d ch hay thông d ch, các công c xây d ng t
Trang 269
5,000 – 10,000 vi, emacs, gcc, make
ng d ng kho ng vài ch c t p tin –
100,000 – 1,000,000 IDEs, Repositories, Code
Tr i qua m t th i gian dài phát tri n, các môi tr ng phát tri n tích h p đã kh c
ph c đ c nhi u đi m y u nêu trên Bên c nh đó, chúng còn b sung thêm các ch c
n ng khác nh qu n lý t p tin, qu n lý phiên b n, thi t k b ng kéo th , phân tích mã
Trang 27ng d ng… Vi c đ a các s n ph m lên Web nh m c i thi n và h n ch b t các khó
kh n nêu trên G n đây đã xu t hi n m t s môi tr ng phát tri n tích h p trên Web
nh ECCO, CodeRun hay Cloud9 Gi ng nh trong các giai đo n đ u c a các môi
tr ng trên n n desktop, các s n ph m hi n có trên Web c ng ch h ng t i các ngôn
ng hay n n t ng r t c th , g p nh ng khó kh n c th và còn h n ch nhi u tính n ng
so v i Microsoft Visual Studio hay Eclipse Tuy v y, không th ph nh n đây là m t
l nh v c đ y ti m n ng
Hi n t i, các công trình liên quan đ n môi tr ng phát tri n tích h p trên Web v n
đ c xem xét và đ u t k l ng Trong t ng lai, chúng có th s có đ s c c nh tranh v i các môi tr ng trên desktop
2.2 Các công ngh l p trình Web
xây d ng ng d ng trên Web, chúng tôi ph i tìm hi u nhi u công ngh h tr khác nhau phía client, chúng tôi c n ph i n m v ng các ki n th c c b n v c ch liên l c Ajax, ngôn ng JavaScript và đ c bi t là chu n HTML5 V phía server, ngôn
Trang 2811
2.2.1 D ch v Web v i ki n trúc REST
Web ngày nay ch a r t nhi u thông tin: tin t c, s ki n, ý ki n, giá c , th i gian, hình nh, tài li u… Và Web c ng có r t nhi u d ch v : công c tìm ki m, c a hàng
tr c tuy n, blog, wiki, công c tính toán và các ch ng trình gi i trí, trò ch i… Thay vì
ph i cài đ t t t c các d li u và ch ng trình trên máy tính, chúng ta ch c n cài đ t
m t trình duy t Web là có th ti p c n các d li u và d ch v này Không nh ng th , các d ch v Web còn hình thành nh ng ph ng th c giao ti p không ch v i con ng i
mà c v i máy tính Ng i ta g i đó là m ng Internet có th l p trình đ c: chúng ta có
th t o ra m t trang Web b ng cách l p trình m t ng d ng đ giao ti p v i các d ch v Web, t n d ng t t c các thu t toán và d li u có s n mà không c n ph i cài đ t l i t
đ u L y m t ví d đ n gi n, ch c n chép m t đo n mã ngu n ng n và s a m t s tham s , chúng ta đã có th thêm vào trang Web c a mình m t ô tìm ki m đ c h tr
b i d ch v tìm ki m c a Google T ng t , chúng ta có th dùng d ch v th o lu n
c a Disqus đ t o ra m t di n đàn trên trang c a mình Nh v y, chúng ta hoàn toàn có
th xây d ng m t trang Web hoàn thi n ch b ng cách tích h p các d ch v có s n
D ch v Web cho phép các h th ng máy tính khác nhau t ng tác đ c v i nhau thông qua c ch thông đi p Vì các h th ng khác nhau nên c ch thông đi p này c n
đ c chu n hóa đ các bên có th hi u đ c Ch ng h n trong m t ng d ng chat, v n
b n mà ng i dùng gõ vào c n ph i đ c gói l i trong m t thông đi p, kèm theo các thông tin xác đ nh đi m đ n, c ch chuy n ti p và x lý, r i m i đ c g i đi
Hi n t i có nhi u chu n và công ngh đ c s d ng đ cài đ t các d ch v Web,
ph bi n nh t là RPC và REST V i RPC, các thông đi p đ c xây d ng b i ng i l p trình và đ c gói trong các thông đi p c b n c a Web – các thông đi p HTTP; trong
khi REST l i t n d ng chính các thông đi p HTTP, v n đã đ c chu n hóa và khá đ y
đ ây chính là đi m khác bi t l n nh t gi a các d ch v d a trên RPC (nh SOAP)
v i REST
Trang 2912
REST – Representational State Transfer – là m t ki u ki n trúc ph n m m cho các
ng d ng phân tán siêu ph ng ti n1 B n thân World Wide Web c ng d a trên REST Các nguyên t c c a REST đ c Roy Fielding trình bày l n đ u tiên trong lu n v n
Ti n s c a mình [5]
Nói ng n g n, các nguyên t c chính c a REST bao g m [6]:
Kh n ng đ nh v (Addressability): các tài nguyên đ c đ nh danh b i URI
Liên l c phi tr ng thái (Stateless Communication): server không l u tr tình
tr ng liên l c, coi m i yêu c u đ n server là đ c l p, không ph thu c vào các yêu c u tr c đó
Tính liên k t (Connected): các tài nguyên liên k t v i nhau
Giao ti p chu n (Uniform interface): s d ng các thành ph n c a HTTP
2.2.1.1 Kh n ng đ nh v
M i tài nguyên đ c đ nh danh duy nh t b i URI – Universal Resource Identifier
M t tài nguyên là m t m u thông tin, có th là m t t p tin, m t dòng trong c s d
li u hay k t qu c a m t thu t toán nào đó Khi client yêu c u m t tài nguyên, client s
nh n đ c m t bi u di n c a tài nguyên t i th i đi m hi n t i M i tài nguyên chính là
m t s n ph m d ch v Web; do đó, nó ph i có m t đ a ch xác đ nh đ ng i dùng hay
ng d ng có th truy c p đ n URI chính là cánh c ng đ truy c p và s d ng d ch v
2.2.1.2 Liên l c phi tr ng thái
Phi tr ng thái ngh a là m i gói yêu c u đ u đ c x lý đ c l p Khi client g i m t yêu c u HTTP, nó c n ph i gói t t c các thông tin c n thi t đ server x lý yêu c u đó
1 Thu t ng ti ng Anh: hypermedia
Trang 3013
Server s không d a vào các thông tin c a các yêu c u tr c đ x lý yêu c u hi n t i
i u này d n t i kh n ng m r ng c a h th ng: vì các yêu c u đ c x lý đ c l p, chúng có th đ c x lý b i nh ng server khác nhau – m r ng h th ng ch đ n gi n
là l p đ t thêm các server
2.2.1.3 Tính liên k t
Bên c nh tài nguyên mà client yêu c u, server nên cung c p cho client các đ ng
d n t i các bi u di n khác và các tài nguyên khác liên quan đ n bi u di n hi n t i c a tài nguyên v a đ c ph c v Nh v y m t d ch v hoàn toàn có th t mô t chính nó:
ng i l p trình không c n ph i đ c nh ng v n b n h ng d n v các quy c cài đ t
d ch v , b n thân ng d ng có th ho t đ ng d a vào các ch d n c a server S d ng các quy c cài đ t khi n cho các ng d ng client b phá v khi các quy c này thay
đ i, ho c khi m i quan h gi a các tài nguyên tr nên quá ph c t p hay không n đ nh
2.2.1.4 Giao ti p chu n
M i giao ti p gi a client và tài nguyên có th th c hi n qua m t vài ph ng th c HTTP HTTP cung c p các ph ng th c c b n đ x lý tài nguyên, trong đó các
ph ng th c ph bi n nh t, đ đ h tr các thao tác đ c, thêm, xóa, s a:
L y m t bi u di n c a tài nguyên: GET
T o m t tài nguyên m i: PUT – t o qua m t URI m i, ho c POST – t o qua
m t URI hi n có
Thay đ i tài nguyên hi n có: PUT – qua m t URI hi n có
Xóa m t tài nguyên hi n có: DELETE
B t c m t tài nguyên nào c ng cho phép m t vài ph ng th c tác đ ng lên nó, và
m i ph ng th c có ý ngh a nh nhau đ i v i m i tài nguyên Giao ti p chu n giúp
đ n gi n hóa quá trình xây d ng d ch v Web: ng i l p trình không c n ph i b quá
Trang 3114
nhi u th i gian đ ngh ra các ph ng th c, khi n cho giao ti p gi a các d ch v Web
tr nên tùy h ng và không th ng nh t Giao ti p chu n c ng giúp tách bi t các d ch v
và các cài đ t c a chúng, h tr kh n ng phát tri n đ c l p
2.2.2 JavaScript
JavaScript là m t ngôn ng d ng thông d ch V m t t ng cú pháp, JavaScript có
nhi u đi m t ng đ ng v i ngôn ng C, C++ và Java Tuy nhiên, không gi ng nh ba ngôn ng trên, JavaScript là m t ngôn ng không có nh ng ràng bu c ch t ch v ki u
d li u đ i v i bi n1 Do đó, khi l p trình v i JavaScript, chúng ta có th thay đ i ki u
d li u c a bi n khi c n thi t M t trong nh ng đi m khác bi t n i b t khác là c ch
k th a Không gi ng nh C++ hay Java, JavaScript s d ng c ch k th a d a trên khuôn m u2 V i c ch hàm g i ng c3, JavaScript r t phù h p v i Ajax – m t trong
nh ng cách th c trao đ i d li u ph bi n trong ng d ng Web hi n nay [7] [8]
G n li n v i JavaScript là m t s nh m l n đáng ti c Th nh t, m t s ng i ngh JavaScript là m t phiên b n đ n gi n hóa c a Java M c dù có tên g n gi ng nhau
nh ng gi a chúng có r t nhi u đi m khác bi t Th hai, đôi khi JavaScript ch đ c xem là m t ngôn ng d ng k ch b n4, phù h p v i nh ng ng d ng đ n gi n và nh ng
ng i l p trình không chuyên i u này hoàn toàn không đúng JavaScript cung c p
đ y đ nh ng ch c n ng c a m t ngôn ng l p trình hi n đ i c n ph i có; th m chí, v
đ ph c t p, JavaScript không thua, hay còn h n nhi u ngôn ng [9]
1 Thu t ng ti ng Anh: loosely-typed language
2 Thu t ng ti ng Anh: prototype-based inheritance
3 Thu t ng ti ng Anh: callback funtion
4 Thu t ng ti ng Anh: scripting language
Trang 3215
Ngày nay, JavaScript đ c s d ng r ng rãi khi l p trình Web nh m t ng c ng
kh n ng t ng tác v i ng i dùng, đi u khi n trình duy t và thay đ i n i dung c a trang Web Ngoài các ng d ng trên, JavaScript còn đ c s d ng trong các ng d ng khác nh Adobe Integrated Runtime, DX Studio, Re-Animator [10] c bi t JavaScript c ng đã đ c s d ng làm ngôn ng l p trình server, nh các công c nh trình thông d ch Rhino (cho phép các ng d ng JavaScript ti p c n v i Java API) hay Node.js (s d ng trình thông d ch V8 c a Google, cho phép ti p c n v i POSIX API) [9]
2.2.3 C ch Ajax và cú pháp JSON
Vào th i k đ u, h u h t các trang Web đ u ch là m t t p h p nh ng trang HTML riêng r và m i ch c n ng c a nó đ u đ c x lý server Do đó, ngay c khi ch có
m t thay đ i nh , toàn b n i dung c a trang Web đ u ph i c p nh t l i D th y r ng,
ph ng pháp này ho t đ ng không hi u qu , không ch v m t đ ng truy n mà còn v
Tháng 02/2005, thu t ng Ajax – Asynchronous JavaScript and XML – l n đ u tiên
xu t hi n trong bài báo “Ajax: A New Approach to Web Applications” c a Jesse James Garrett Th c ra, Ajax không ph i là m t công ngh m i Nó bao g m các công ngh khác nhau đ c nêu trên – nh ng công ngh đang d n thay đ i th gi i Web Theo Garrett, Ajax bao g m [13]:
Bi u di n thông tin b ng XHTML và CSS;
Hi n th và t ng tác linh đ ng thông qua mô hình đ i t ng tài li u DOM;
Trang 3316
Trao đ i d li u d i d ng XML và s d ng XSLT đ đi u khi n;
Truy c p d li u không đ ng b v i Web server b ng XMLHttpRequest;
Liên k t các công ngh trên b ng JavaScript
Ajax đem l i nh ng l i ích sau [11] [12] [13]:
T ng c ng kh n ng x lý bên phía client
Cùng v i s phát tri n c a công ngh , thu t ng Ajax c ng ít nhi u thay đ i theo Ngày nay, chúng ta có th s d ng VBScript thay cho JavaScript, hay JSON thay cho XML
JSON – JavaScript Object Notation – là m t đ nh d ng đ c dùng trong vi c trao
đ i d li u, có th đ c và ghi d dàng Nó đ c phát tri n d a trên JavaScript nênJSON không ch hoàn toàn đ c l p v i các ngôn ng l p trình mà còn đem l i c m giác quen thu c đ i v i nh ng ng i đã dùng qua C, C++, Java hay JavaScript Nh ng đ c tính đó đã t o nên JSON m t cú pháp chuy n đ i d li u lý t ng
JSON có hai lo i c u trúc [14]:
M t là t p h p c a các c p đ nh danh (name) và giá tr (value) C u trúc này r t
g n v i các khái ni m đ i t ng (object), b n ghi (record), c u trúc (struct), t
Trang 3417
đi n (dictionary), b ng b m (hash table), danh sách t khoá (keyed list), hay
m ng liên h p (associative array)
Hai là danh sách các giá tr có th t m t góc đ nào đó, nó có th đ c xem
nh m ng (array), véc–t , danh sách (list) hay chu i (sequence)
Xét trên khía c nh trao đ i d li u, khi so sánh v i XML, JSON có nh ng u đi m
nh t n ít b nh , cú pháp đ n gi n, phù h p v i JavaScript D nhiên, JSON v n có
nh ng khuy t đi m nh không h tr m t s ki u d li u (ngày tháng, s th p l c phân…) và khó đ c h n XML Tuy nhiên, nh ng khi m khuy t này không th ng n
c n s ph bi n c a JSON
2.2.4 HTML5
Ngôn ng đánh d u siêu v n b n HTML – HyperText Markup Language – là
m t ngôn ng đánh d u r t thông d ng đ c thi t k ra đ t o nên các trang Web K
t khi ra đ i vào n m 1993 (d i d ng b n nháp), HTML đã tr i qua nhi u giai đo n phát tri n Th p k 90 ch ng ki n s bùng n c a HTML, các phiên b n 2.0, 3.2, 4.0
và 4.01 l n l t ra đ i Trong quãng th i gian này, HTML c ng đ c t ch c World Wide Web Consortium (W3C) chu n hóa [15]
Tuy nhiên, sau khi phiên b n 4.01 ra đ i, s phát tri n c a HTML g n nh ch ng
l i B y gi , h u h t m i ng i t p trung vào các tiêu chu n nh XML hay XHTML
T i n m 2004, m t b c ngo t th c s đã x y ra D i s ng h c a Apple, Opera và Mozilla, Web Hypertext Application Technology Working Group (WhatWG) đ c thành l p v i m c tiêu là c i ti n phiên b n hi n hành c a HTML Sau đó, W3C c ng
đã phát tri n m t phiên b n HTML k ti p c a riêng mình Cu i cùng, nh ng c i ti n
c a WhatWG và W3C c ng đ c k t h p l i v i nhau M c dù v n còn m t s b t
đ ng, s k t h p này đã giúp đ nh hình rõ ràng nh ng đ c tr ng c a phiên b n HTML
m i – phiên b n v n th ng đ c g i là HTML5 [16]
Trang 3518
HTML5 v n s h tr các phiên b n HTML tr c đó HTML5 đ c b sung nhi u
th và thu c tính m i, giúp h tr các x lý giao di n t i d dàng h n, đ c bi t là Ajax, trong đó có các API m i r t ti n l i nh [17] [18]: kh n ng l u tr ngo i tuy n (offline) cho phép ng d ng l u tr d li u và th c thi ngo i tuy n ngay t i máy ng i dùng; kh n ng t ng tác tr c ti p v i hình nh, bi u đ , âm thanh và video mà không
c n s d ng Flash hay các tính n ng b sung khác; kh n ng cho phép ng i dùng
ch nh s a tr c ti p n i dung các đ i t ng trong ng d ng; kh n ng can thi p vào l ch
s duy t Web mà không c n ph i t i l i trang; kh n ng đ nh v ng i dùng; kh n ng cho phép JavaScript ch y đ c l p trên các thread n n bên d i…
HTML5 v n đang còn trong giai đo n d th o và nh ng tính n ng m i s v n đ c
ti p t c b sung Vào th i đi m này, các trình duy t Web đã h tr h u h t các tính
n ng m i này; m t s ch c n ng c ng đã b t đ u đ c h tr b i các trình duy t dành cho thi t b di đ ng Do đó, ngay t bây gi , ta có th kh ng đ nh HTML5 s tr thành
m t ph n không th thi u c a th gi i Web trong t ng lai
2.2.5 PHP
PHP – Hypertext Preprocessor – là m t ngôn ng d ng k ch b n đa m c đích, đ c
bi t phù h p v i vi c phát tri n Web và có th nhúng vào HTML K t khi ra đ i, PHP đã g t hái đ c nhi u thành công và tr thành n n t ng Web đ c s d ng nhi u
nh t v i h n m t ph n ba các máy ch Web s d ng PHP [19] Cho đ n nay, PHP v n không ng ng đ c phát tri n v s l ng l n ch t l ng
Phiên b n đ u tiên đ c Rasmus Lerdorf phát tri n vào n m 1995 Tuy nhiên, vào
th i đi m này, nó đ c g i là PHP/FI – Personal Home Page/Forms Interpreter và ch
đ n gi n g m m t t p mã ngu n Perl ch ch a ph i là m t ngôn ng l p trình t ng
hi u qu công vi c, Rasmus b sung thêm m t s ch c n ng (vài ch c n ng đ c vi t
b ng C) và công b mã ngu n PHP/FI Sau m t th i gian ch nh s a, cu i n m 1997,
Trang 36h ng đ i t ng ngày m t l n, h ti n hành phát tri n Zend Engine II – h t nhân c a phiên b n PHP 5 Tháng 06/2004, PHP 5 chính th c đ c phát hành [20] So v i các phiên b n tr c đó, PHP 5 có nhi u đ c đi m m i nh : mô hình h ng đ i t ng m i,
b sung m t s đ c tr ng quan tr ng c a l p trình h ng đ i t ng, quy t c b t l i và
x lý ngo i l , b sung các ch c n ng liên quan t i x lý XML và h tr các d ch v Web, ph ng th c qu n lý b nh m i [19]
2.2.6 Khung phát tri n ng d ng1
Qua nhi u n m, c ng đ ng phát tri n ng d ng Web nh n ra r ng h đã lãng phí quá nhi u th i gian đ phát tri n c ng nh t i u hóa nh ng ch c n ng c b n M i l p trình viên t chuyên nghi p t i nghi p d và s d ng b t k ngôn ng l p trình nào
Trang 3720
M t khung phát tri n ng d ng là m t t p mã ngu n đ c t ch c theo m t ki n trúc nh t đ nh và đ c sinh ra nh m rút ng n đ c th i gian phát tri n s n ph m Chúng cung c p m t s ch c n ng có s n, đã đ c chu n hóa, ki m th k l ng, có
kh n ng tái s d ng cao và cho phép ng i dùng tùy ch nh D nhiên, m i khung phát tri n cho phép m t m c đ tùy ch nh khác nhau và càng linh ho t thì càng m t nhi u
th i gian đ làm quen Khác v i th vi n, các thành ph n c a khung phát tri n không
đ c g i t mã ngu n do ng i s d ng vi t Ng c l i, chính nh ng b khung này s
g i các đo n mã c a ng i dùng D i m t khía c nh nào đó, chúng gi ng nh m t b
s n đ đ p thêm các chi ti t khác [21]
Vì v y, v i nhi u ng i, vi c l a ch n chính xác và s d ng h p lý khung phát tri n ng d ng đóng vai trò quy t đ nh s thành công c a s n ph m Tuy nhiên, gi i quy t v n đ này không h d dàng Bên c nh tính đ n gi n, d h c và d s d ng c a
m t khung phát tri n, chúng ta c n ph i xem xét đ n các y u t khác nh : tính n đ nh, tính thích nghi, m c đ ki m th , tài li u h ng d n, k ho ch phát tri n, s ki m soát
ch t l ng, danh sách ch c n ng h tr , v n đ h tr k thu t, uy tín c a c ng đ ng phát tri n và c danh sách đ i tác chi n l c [24] Quá nhi u vi c đ làm! ây c ng chính là khía c nh mà m t khung phát tri n t t c n ph i chú ý đ đem l i nhi u l i ích cho ng i dùng
Chúng tôi đã tìm hi u các th vi n khung c a các ngôn ng s d ng trong phát tri n ng d ng Web V m t s th vi n khung cho JavaScript, xin xem Ph l c A.1
V m t s th vi n khung cho PHP, xin xem Ph l c A.2
Trang 38Các s n ph m trên desktop đã đ c phát tri n r t t t, h tr h u nh không ch các
ch c n ng c b n mà còn c các ch c n ng nâng cao nh nh c mã ngu n, phân tích mã ngu n, phân tích hi u su t, thi t k giao di n… Trong khi đó các s n ph m Web v n còn s khai, ph n l n t p trung vào các ngôn ng l p trình Web; ch m t s ít có các
ch c n ng nh c mã ngu n, phân tích mã ngu n, chia s mã ngu n Ngoài ra, s l ng
s n ph m trên Web v n còn r t h n ch Trong s đó, m t vài d án đã ng ng tri n khai, m t s khác ch v a b t đ u trong th i gian g n đây i u đó cho th y v n còn r t nhi u vi c ph i làm đ xây d ng m t môi tr ng phát tri n ph n m m tích h p hoàn thi n trên Web
3.2 Ch c n ng c a ng d ng
Theo gi i h n c a khóa lu n, ng d ng c a chúng tôi ch cung c p nh ng ch c
n ng th c s c n thi t, đ c s d ng nhi u sau đây:
So n th o trên nhi u th : hi n th t ng t p tin trên t ng th riêng bi t
Trang 39su t ng
d ng
Nh c mã ngu n tích mã Phân
ngu n
Cây c u trúc đ i
t ng
Phát tri n ng
Platform Debugger GUI
Builder Profiler complete Auto- Analysis Code Browser Class Based
GUI-Design
Code Coverage Revision Control
XCode Mac OS iPhone
B ng 3.1 So sánh m t s s n ph m IDE ngôn ng C/C++ trên n n desktop [22]
Trang 40l nh
Nh c
mã ngu n
Chia
s -
L p trình
đa
ng i dùng
Qu n
lý phiên
b n
Phân tích
mã ngu n
Ghi chú
Syntax Highlight Compiler Run Debugger Class Browser Console Auto Complete boration Colla- Revision Control Realtime Code
Analysis ECCO
Java PHP HTML JavaScript
Có Có Có Không Không Có Không Không Không Không ng ng phát
Có Có Có Có Không Không Có Chia s Không Không
ideone h n 40 ngôn ng Có Có Có Không Không Không Không Không Không Không