Tải bản đầy đủ (.pdf) (54 trang)

Ứng dụng smartphone và điện toán đám mây

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.46 MB, 54 trang )

TRNG I HC M TP.H CHÍ MINH
KHOA CÔNG NGH THÔNG TIN




S LIÊN LC IN T
(NG DNG SMARTPHONE VÀ IN TOÁN
ÁM MÂY)

BÁO CÁO  ÁN MÔN HC
SVTH: Lý Trng Khoa
MSSV:0851010132
SVTH: Trang Thành Lc
MSSV: 0851010354
Ngành: Khoa Hc Máy Tính
Hng chuyên ngành: C S D Liu
Lp: TH08B2

Ging Viên Hng Dn
TS.Lê Xuân Trng



Tp. H Chí Minh –Tháng 2 nm 2012
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

ĐÁnMônHcSLiênLcĐinTngdngCloudVàAndroid 


LI CÁM N



 án đc thành công là nh s hng dn, giúp đ ca thy. Em xin chân
thành cm n thy đã b thi gian quý báu ca mình đ giúp em hoàn thành tt khóa
lun này.
Chúng em xin chân thành cm n khoa Công Ngh Thông Tin, trng i Hc
M đã h tr to nhiu điu kin thun li cho chúng em trong quá trình hc tp,
nghiên cu cng nh quá trình thc hin đ án này.
Chúng em xin cm n đn thy cô trong khoa CNTT đã tn tình ging dy,
trang b cho chúng em nhng kin thc cn thit trong sut quá trình hc tp và
nghiên cu ti khoa.
Cui cùng chúng em xin cm n đn thy Lê Xuân Trng ging viên lp lý
thuyt và thc hành môn Nhp Môn Công Ngh Phn Mm đã tn tình hng dn,
truyn đt cho em nhng kin thc quý báu và giúp đ chúng tôi trong quá trình thc
hin đ tài này.
Mc dù chúng em
đã n lc ht sc đ hoàn thành tt đ ca mình nhng dù
sao nhng sai sót trong đ tài là điu không th tránh khi, kính mong thy cô thông
cm và tn tình ch bo cho chúng em.Bên cnh đó cng mong các bn đóng góp ý
kin đ chúng em có th hoàn thin đ tài ca mình hn.

ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

ĐÁnMônHcSLiênLcĐinTngdngCloudVàAndroid 


NHN XÉT CA GIÁO VIÊN HNG DN

………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………

………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………
………………………………………………………………………………


ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

ĐÁnMônHcSLiênLcĐinTngdngCloudVàAndroid 

MC LC

Chng 1. TNG QUAN 1
1.1. GII THIU Ý TNG NGHIÊN CU 1
1.2. Mc đích làm đ tài 2
1.3. Phng pháp nghiên cu 3

1.4. Phm vi 3
Chng 2. C S LÝ THUYT 4
2.1. Tng Quan in Toán ám Mây 4
2.1.1. Gii pháp ca đin toán đám mây 5
2.1.2. Cu trúc các phn to nên đám mây
6
2.1.3. in toán đám mây vi Google App Engine 7
2.2. Kin trúc Google App Engine 7
2.2.1. Tng quan Google App Engine 8
2.2.2. Môi trng phát trin 9
2.2.3. Các loi tp tin tnh trên server 10
2.2.4. DataStore 10
2.2.5. Các loi Dch V 11
2.2.6. Google Accounts 11
2.2.7. Các hn ch ca Google App Engine 11
2.3. Các thành phn ca Google App Engine trong Java 12
2.3.1. BackEnds 12
2.3.2. Storing Data 12
2.3.3. Các d
ch v ca GAE 17
2.4. H tr kt ni Android vi AppEngine 26
2.4.1. Gii thiu s lc 26
2.4.2. Kin trúc Android kt ni Appengine 26
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

ĐÁnMônHcSLiênLcĐinTngdngCloudVàAndroid 

Chng 3. HIN THC NG DNG 27
3.1. S lc ng dng 27
3.1.1. Mô hình hot đng 27

3.1.2. S lc các chc nng 27
3.2. Xây dng ng dng Backend và Android 27
3.2.1. ng b hóa d liu tài khon google 27
3.2.2. S dng Google Cloud Sql 28
3.3. Xây dng ng dng xem đim trên Android 36
3.3.1.
Mô hình hot đng 36
3.3.2. Cách thc x lý 36
Chng 4. KT QU T C 38
4.1. Các dch v tin ích dành cho giáo viên, ph huynh và hc sinh 38
4.2. ng dng trên Android 41
Chng 5. KT LUN 47
5.1. Li ích ca đin toán đám mây vi GAE 47
5.2. Hn ch ca đin toán đám mây 47
5.3.
 Li ích ca H điu hành Android 47
 Tính Nng M: 47
 Phá b các rào cn ng dng: 47
 Vi Android tc đ nhanh & phát trin ng dng d dàng 48
 Phn cng đa dng 48
5.4. Nhc đim ca h điu hành Android: 48
 Thi lng s dng pin thp 48


ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

Chng 1. TNG QUAN


1.1. GII THIU Ý TNG NGHIÊN CU
Theo Công vn s 9772/BGDT-CNTT ngày 20/10/2008 ca B GD&T v
vic hng dn thc hin nhim v CNTT nm hc 2008 – 2009. Trong đó xác đnh
nhim v trng tâm ca nm hc 2008 – 2009 là nm hc đu tiên trin khai thc hin
Ch th s 55/2008/CT-BGDT ngày 30/9/2008 ca B trng B GDT v tng
cng ging dy, đào to và ng dng CNTT trong ngành giáo dc giai đon 2008-
2012. Nm hc 2008 – 2009 đc chn là “Nm hc đy mnh ng dng CNTT, đi
mi qun lý tài chính và xây dng trng hc thân thin, hc sinh tích cc”.
Ngày nay, cùng vi s phát trin ca nn kinh t, các gia đình ngày càng quan
tâm đn tình hình hc tp ca con em mình  nhà trng.Tuy nhiên trong nhp sng
tt bt, hi h
ca Xã Hi. Các bc ph huynh không có thi gian đn trng đ qun
lý tình hình hc tp ca con em mình.Nm bt đc tình hình và nhu cu này ca
đông đo quý ph huynh hc sinh.
S liên lc chính là cu ni gia Gia đình - Nhà trng - Hc sinh, cho phép ph
huynh hc sinh nm bt đc tình hình hc tp ca con em nh đim kim tra, hnh
kim, hc lc… nhng ch là nhng thi đim đnh k là cui Tháng hay cui Hc
K.Nh vy thì ph huynh ch có th bit kt qu mà không th dõi theo tng bc
hc hành ca con em mình.Chính vì lý do đó mà cn có mt cu ni nhanh chóng hn,
chính xác hn gia Nhà Trng-Ph Huynh.ó cng là lý do thc hin “S Liên Lc
in T Thông Minh”.
Ph huynh s nhanh chóng nhn đc các thông báo ca Nhà trng nh vi
c
đóng hc phí, lch kim tra hoc lch thi các môn, thy giáo ngh dy, hp ph huynh
hc sinh, liên hoan, thm quan…Nhn đc thông tin chuyên cn ca các con thng
xuyên và nhánh chóng qua tin nhn SMS.
im mi nht  đây đó là S Liên Lc in T s đc áp dng công ngh
in Toán ám Mây và in Thoi SmartPhone(Android).
Áp dng in Toán ám Mây(Xu hng tt yu 
Vit Nam)

Thut ng "Cloud Computing" ra đi gia nm 2007 không phi đ nói v mt
trào lu mi, mà đ khái quát li các hng đi ca c s h tng thông tin vn đã và
đang din ra t my nm qua. Khái nim này có th đc din gii mt cách đn gin:
các ngun đin toán khng l nh phn mm, dch v s nm t
i các máy ch o
(đám mây) trên Internet thay vì trong máy tính gia đình và vn phòng (trên mt đt) đ
mi ngi kt ni và s dng mi khi h cn.
Công ngh đin toán đám mây đã tr nên khá ph bin và có th mang đn các
thay đi tim nng.Ngày nay, khi mà mc tiêu chính ca hu ht các doanh nghip là
tng doanh s, gim thiu chi phí hot đng và quan trng là thu hút đc các khách
hàng mi, công ngh đin toán
đám mây có th h tr cho vic thc hin tt c các
mc tiêu đó.
in toán đám mây tr nên là công c h tr đc lc cho các công ty không có
h thng máy ch, PC ch cài mt s phn mm c bn còn tt c đu ph thuc vào
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

cloud. “Chng hn, h đng ký dch v hosting cho website công ty, thuê công c
qun lý doanh thu t Salesforce.com, ly d liu kho sát th trng t t chc Survey
Monkey Và tt nhiên, h dùng Google đ tìm kim, phân tích, chia s và lu tr tài
liu”.Nh vy các doanh nghip ch cn tp trung cho dch v và sn xut bi C S
D Liu đã có ngi lo thay cho h.
Google nm trong s nhng hãng 
ng h đin toán máy ch o tích cc nht bi
hot đng kinh doanh ca h da trên vic phân phi các cloud (virtual server), và các
web services s dng các dch v hosting ca Google, đc gi là Google App Engine
(GAE).
GAE là mt nn tng hosting bao gm web server, c s d liu BigTable và kho

lu tr file GFS. GAE cho phép vit ng dng web da trên c s h tng ca
Google. Ngha là chúng ta không cn quan tâm là trang web ca chúng ta đc lu tr

nh th nào (k c database đi kèm), mà ch cn quan tâm đn vic phát trin ng
dng theo các API do Google cung cp.
Áp dng SmartPhone (Android)
 Android là h điu hành chy trên thit b đin thoi đc phát trin bi Google.
 Android ra mt đu tiên vào ngày 5/11/2007
Android có rt nhiu u đim vt tri hn các h điu hành chy trên thit b
đin thoi khác nh
 vic phát hành phn mn mã ngun m mi ngi,t chc đu có
th d dàng tip cn can thip và nâng cp phát trin theo ý mun ca mình. Ngoài ra
vic phát trin các ng dng cho Android có nhiu thun li đi vi ngi và cng
đng phát trin. Vic Android đc Google cho ra đi đánh du bc tin trong lnh
vc phát trin nn tng smartphone, không phi nh iOS đc quyn trên th
 h máy
ca Apple mà Android đã xut hin trên rt nhiu th h máy ca nhiu nhà sn xut
ln nh HTC, LG, SonyErricsion, Samsung, vic Android đc ng dng đi trà s
giúp Google chim u th ln trong th trng smartphone.ng thi Google còn có
chc nng cho kt hp Android vi GAE.Nh vy xu th ca th gii hin nay là liên
kt tt c lên đám mây.

1.2. M
c đích làm đ tài
Hin nay vic giáo dc con ngi đc đt lên hàng đu  các nc trên Th
Gii nói chung và Vit Nam nói riêng.Do đó vic h tr vic liên kt gia các bc ph
huynh hc sinh vi nhà trng là điu quan trng cn phi làm nu mun vic hc tp
ca con em ngày càng tt hn.Chính vì vy “S Liên Lc in T Thông Minh” đc
ra đi.Mc dù “S liên lc đin t” không my xa l đi vi các bc ph huynh trong
nhiu nm tr li đây.Nhng khi áp dng in Toán ám Mây và in Thoi Thông

Minh vào ng dng s liên lc đin t thì gim thiu ti đa thi gian s dng mà chi
phí có th r hn.Mang li nhiu li ích hn v mi mt:
 X lí nhanh hn
 Bo mt an toàn hn cách truyn thng
 Không hao tn nhiu chi phí phát sinh ban đu hay th tc rm rà.
 Gim chi phí phn cng, không cn thit phi lp đt nhng thit b đt tin,
mua nhng chic máy tính nhanh nht vi b nh ln nht na.
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

Bên cnh đó S liên lc đin t là cu ni nhanh chóng và chính xác gia nhà
trng và gia đình.H tr giúp các bc ph huynh hc sinh nm rõ quá trình hc tp
ca con em mình đ đa ra nhng quyt đnh chính xác nhm h tr con em mình hc
ngày càng tin b hn.Nhm thúc đy nn giáo dc nc nhà ngày càng phát trin và
ln mnh hn.
S liên lc đin t đem li nhiu li ích cho c ph huynh ln nhà trng. Mt s
li ích đc đ cp đn nh sau:
Vi ph huynh:
- Nhanh chóng nhn đc đim, nhn xét, thông báo t nhà trng
- D dàng nm bt thông tin v tình hình hc tp hàng ngày ca con em mình
- Nâng cao ý thc t giác ca con em.
Vi nhà trng:
- Nâng cao cht lng ging dy.
- Nâng cao hình nh v mt nhà trng hin đ
i, chuyên nghip.
- Góp phn thúc đy tin hc hóa, hin đi hóa nhà trng.

1.3. Phng pháp nghiên cu
 Nghiên cu quá trình hot đng,bo mt thông tin, lu tr d liu trên đám

mây. Công ngh v đin toán đám mây vi Google App Engine
 S dng Spring FrameWork MVC.
 S dng c s d liu Google Cloud Sql, s dng mt chun MySQL đ truy
vn d liu, s d
ng JDBC và DB-API.
 Nghiên cu cách kt hp gia Android và Cloud Computing.
1.4. Phm vi
 Dch v web(Web services):
ứ Cung cp cho ph huynh và hc sinh có th tra cu đc đim
ứ Các thông tin v các lp hc
ứ Danh sách lp
ứ Giáo viên ch nhim lp.v.v
 Phiên bn SmartPhone
ứ ng dng có th xem đim ngay trc tip trên Smart Phone.Ch cn dùng
mã Hc sinh gi lên máy ch.
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

Chng 2. C S LÝ THUYT
2.1. Tng Quan in Toán ám Mây
Thut ng “in Toán ám Mây” không còn my xa l đi vi cng đng công ngh
Vit Nam nói riêng và các nc trên Th Gii nói chung.  đây xin đa ra mt s
đnh ngha.
Theo Gartner:
“in toán đám mây là mt kiu tính toán trong đó các nng lc CNTT có kh nng
m rng rt ln đc cung cp “d
i dng dch v” qua mng Internet đn nhiu
khách hàng bên ngoài.”
Theo Forrester Research:

“in toán đám mây là mt kho tài nguyên c s h tng o hóa, có kh nng m rng
cao và đc qun lý, có th h tr các ng dng ca khách hàng cui và đc tính tin
theo mc đ s dng.”
Theo NIST (National Institute of Standards and Technology):
“in toán đám mây là mt mô hình cho phép truy cp mng thun tin, theo nhu cu
đn mt kho tài nguyên đ
in toán dùng chung, có th đnh cu hình: mng, máy ch,
lu tr, ng dng,…có th đc cung cp và thu hi mt cách nhanh chóng vi yêu
cu ti thiu v qun lý hoc can thip ca nhà cung cp dch v.”

Hình 2.1 Mi th đu tp trung vào đám mây
Mt cách đn gin, đin toán đám mây là vic o hóa các tài nguyên tính toán và
các ng dng. Thay vì vic bn s dng mt hoc nhiu máy ch tht (ngay trc
mt, có th s đc, có th t bn n nút bt tt đc) thì nay bn s s dng các tài
nguyên đc o hóa (virtualized) thông qua môi trng Internet.
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

Theo truyn thng thì các cá nhân, doanh nghip s xây dng riêng c s h tng
k thut đ t cung cp các dch v cho các hot đng thông tin.Do đó nhng máy ch
đc đt  ngay v trí công ty, h s tr tin đ trin khai, duy trì c s h tng đó
(mua thit b phn cng, phn mm chuyên dng, tr lng cho b phn đi
u hành )
Khác vi mô hình truyn thng mô hình đin toán đám mây lu tr và x lý toàn b
thông tin trong đám mây Internet.Mi công ngh, k thut, c s h tng cng nh chi
phí trin khai trong đám mây s do nhà cung cp đm bo xây dng và duy trì.Các
doanh nghip ch vic kt ni qua mng Internet mà không phi mt chút công sc
nào đ bo trì, bo dng, nâng cp, chy máy ch. Không nhng th, các doanh
nghip còn có th

 cho khách hàng ca h s dng ng dng mà không phi mt công
cài đt.Do đó, thay vì phi đu t t đu rt nhiu tin cho chi phí xây dng c s h
tng riêng, các cá nhân, doanh nghip trong quá trình hot đng s ch phi tr s tin
va đ theo nhu cu s dng ca mình (pay-for-what-you-use).

2.1.1. Gii pháp ca đin toán đám mây

Hình 2.2 Các gii pháp v cung cp các dch v tài nguyên
 Vn đ v lu tr d liu
D liu đc lu tr tp trung  các trung tâm d liu khng l và đc
cp phát cho doanh nghip mt cách t thi. Thay vì vic doanh nghip
phi tính toán xem có nên m rng hay không, phi đu t bao nhiêu máy
ch thì nay doanh nghip ch cn yêu cu và đám mây s t tìm ki
m tài
nguyên ri đ cung cp cho bn.Các công ty ln nh Microsoft, Google có
hàng chc trung tâm d liu nm ri rác khp ni trên th gii. Các công ty
ln này s cung cp các dch v cho phép doanh nghip có th lu tr và
qun lý d liu ca h trên các trung tâm lu tr.
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

 Vn đ v sc mnh tính toán
Có 2 gii pháp chính:
 S dng các siêu máy tính đ x lý tính toán.
 S dng các h thng tính toán song song, phân tán.

 Vn đ v cung cp tài nguyên, phn mm.
Cung cp các dch v nh IaaS (infrastructure as a service), PaaS
(platform as a service), SaaS (Storeage as a service).

2.1.2. Cu trúc các phn to nên đám mây


Hình 2.3 Các phn to nên đám mây

2.1.2.1. Các dch v ng dng (SaaS)
Vi các cu trúc nhiu ngi s dng (mt phiên bn ng dng cho
nhiu khách hàng) hay mt cu trúc đa phiên bn (mt phiên bn ng dng cho
tng khách hàng trong cùng mt môi trng vi s bo mt hoàn ho thông
tin).
Tng dch v ng dng này h tr vic thc hin, qu
n lý, lu tr d án
phát trin ng dng phù hp. ây là nhng ng dng chy trong mt đám mây
SaaS s cung cp giy phép mt ng dng cho khách hàng đ s dng mt dch
v theo yêu cu hay còn gi là “phn mm theo yêu cu”. Vi vic ng dng
thành công mô hình SaaS cho phép cung cp, phát trin, lu tr và vn hành
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

phn mm đ khách hàng s dng.Thay vì mua các phn cng và phn mm đ
chy mt ng dng, khách hàng ch cn mt máy tính hoc mt máy ch đ ti
ng dng và truy cp internet đ chy phn mm.
Các ng dng đc cung cp qua mô hình SaaS làm li cho ngi tiêu
dùng bng cách gii phóng cho h khi vic cài đt và bo trì phn mm và các
ng dng có th đc s
dng thông qua các mô hình cp phép có h tr tr
tin đ s dng.
2.1.2.2. Các dch v nn tng (PaaS)
PaaS là mt nn tng công ngh và k thut đc thit k đc bit không

dành riêng cho mt mô hình c th nào, mà đc thit k mt cách tng th đ
Mô hình nào cng th th ng dng, trin khai và phù hp. PaaS cho phép bn
to ra nhng Phn mm
ng dng trên nn web mt cách nhanh chóng, giúp
bn gim bt đc chi phí và s phc tp liên quan đn vic qun lý và mua
bán các Phn mm hay phn cng thông thng Cng ging nh SaaS nhng
mô hình cloud computing này mang đn môi trng phát trin nh mt dch
v: Ví d : Bn xây dng ng dng chy trên c s h tng ca nhà cung cp
và phân phi ti ngi dùng qua máy ch ca nhà cung cp
đó. Mt s ví d
đin hình v PaaS là Salesforce.com, Google App Engine, Yahoo Pipes và ti
Vit Nam.ây là tng  đó chúng ta thy c s h tng ng dng ni lên nh là
mt tp hp các dch v.Các dch v nn tng này cho phép khách hàng chc
chn rng các ng dng ca h đc trang b đ đáp ng các nhu cu ca ngi
dùng bng cách cung cp c
 s h tng ng dng da theo yêu cu.
PaaS còn đc bit đn vi mt tên khác là cloudware.
2.1.2.3. Các dch v c s h tng (IaaS)
 đây, chúng ta thy mt tp hp các tài sn vt lí nh các máy ch, các
thit b mng và các đa lu tr đc đa ra nh là các dch v đc cung cp
cho ngi tiêu dùng. Các dch v  đây h
tr c s h tng ng dng và nhiu
ngi tiêu dùng hn. Cng nh vi các dch v nn tng, s o hóa là mt
phng pháp thng đc s dng đ to ra ch đ phân phi các ngun tài
nguyên theo yêu cu. Ví d v các dch v c s h tng bao gm IBM
Bluehouse, VMware, Amazon EC2, Microsoft Azure Platform, Sun ParaScale
Cloud Storage
2.1.3. in toán đám mây vi Google App Engine
Google n
m trong s nhng hãng ng h đin toán máy ch o tích cc

nht bi hot đng kinh doanh ca h da trên vic phân phi các cloud (virtual
server). Google cung cp các dch v  hai tng,  tng ng cao nht ca đám mây
là SaaS, Google cho phép s dng các dch v ca h nh Gmail, Google Doc và 
tng Paas h cung cp các tp API dành cho các doanh nhip, cá nhân, hay t chc
đ h tr cho các ng d
ng web Application s dng các dch v hosting ca
Google, đc gi là Google App Engine (GAE).
2.2. Kin trúc Google App Engine
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

2.2.1. Tng quan Google App Engine
Nhiu doanh nghip s dng rt nhiu phn cng đ chy các ng dng nh
các c s d liu, các máy ch ng dng, các h thng qun lý thay đi và các
công c ln vt tìm li. Tuy vy, ngày nay, các phn cng này này có th d dàng
vt b đ thay bng vic s dng chính gói phn mm y di dng mt d
ch v
đang chy trên mt c s h tng ca ngi, hay t chc nào đó khác.
Mt doanh nghip có th vt b phn cng nm bên di ca mt ng dng
web c th đ thay bng vic chy ng dng trên phn cng đc cung cp bi
Amazon, Google hoc các đi tác khác. Các công ty này đa ra kh nng thuê
phn cng  các m
c đ khác nhau, va vn có th lu tr mt ng dng. Hn
na, các công ty này có kh nng qun lý m rng, sao lu và bo mt. Amazon và
Google đã nêu ra nhng mi quan tâm này và đi phó tt hn vi chúng ta, có
nhiu đi mi xung quanh các khía cnh ca vic chy các nn tng phn mm sao
cho hiu qu.
App Engine ca Google là mt nn tng hosting thc s đ xây dng và
tri

n khai ng dng Web Java, Python và Go trên c s h tng m rng ca
Google. Nó không yêu cu l phí cp phép s dng (tr ra mt s th vin phn
mm mà chúng ta chn đ s dng trên c s h tng y yêu cu giy phép) và
không cn chi phí tr trc cho bng thông hoc không gian lu tr. C s h tng
ca App Engine là hoàn toàn min phí cho đn khi đt đ
n ngng v mc s
dng, dung lng lu tr 500MB và theo nh trích dn nguyên vn t Google, "đ
CPU và bng thông cho khong 5 triu lt xem trang mi tháng". Ch cn nói
rng, khi đt ti đim mà Google bt đu gi hóa đn tính phí, thì ng dng Web
ca chúng ta rõ ràng đã to ra lu lng đáng k , có nhiu ngi xem và có lãi.
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

Hình 2.4 Kin trúc Google App Engine cho Java
2.2.2. Môi trng phát trin
Hin nay Google App Engine h tr phát trin trên ba môi trng nn tng.
Mt là Java Runtime Environment, Python Runtime Environment và Go Runtime
Environment. Môi trng đc chn ph thuc vào ngôn ng ca ng dng và
công ngh mà chúng ta s dng đ phát trin ng dng.
Môi trng Java h tr cho ng dng s dng Java 6 virtual Machine. ng
dng có th phát trin bng ngôn ng Java, hay hu ht các ngôn ng khác mà có
th ch
y trên JVM nh PHP(s dng Quercus), Ruby (s dng JRuby), JavaScript,
Scala, Groovy. ng dng có th chy trên môi trng và s dng các dch v bng
các công ngh web chun hin nay nh servlet và Java Persistence API
Môi trng Python h tr cho các ng dng đc vit bng ngôn ng
Python 2.5 đc ci tin t phiên bn CPython. Môi trng Python trên Google
App Engine cho phép các ng dng Python s dng CGI, mt th vin chun h
tr giao din. Mt 

ng dng python có th s dng đc hu ht các th vin
chun. Nhiu th vin mã ngun m điu hot đng tt vi google App Engine
nh là Django, Web2py, Pylons và App Engine còn cha nhiu th vin ca riêng

ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

Môi Trng Go h tr cho các ng dng đc vit bng ngôn ng Go phiên
bn Release r58.1 tr lên, môi trng này hin đang đc th nghim trên Google
App Engine. Trong gói SDK ca GAE đã cha trình biên dch ca Go và mt th
vin chun.
Môi trng Java, Python và Go có đim chung đó là s dng cách thc
ging nhau trong vic truy cp d liu: mt ng dng đc đnh tuyn ti máy ch
ca Google, sau
đó máy ch s xem yêu cu và chun b d liu, nu có d liu
theo yêu cu thì máy ch tin hành tr li cho client. Mi môi trng s dng mt
trình thông dch riêng.
Tt c các ng dng ca server cn mt trình thông dch riêng (JVM hay
Python interpreter), vì th trc khi các yêu cu đc gi ti server, thì server phi
thc hin nhim v là chun b môi trng phù hp vi ng dng có yêu c
u.
2.2.3. Các loi tp tin tnh trên server
Mt website có rt nhiu tài nguyên.Hu ht các website có resource đc
cp phát cho trình duyt mà không có s thay đi trong quá trình hot đng thng
xuyên ca nó. Hình nh và CSS đc mô t nh là s xut hin ca các trang
web, mã JavaScript giúp chy các tác v trên trình duyt, và các trang HTML
không có các thành phn d liu đng là các ví d ca nhng tài nguyên này, đc
gi chung là các tp tin tnh. S cp phát tài nguyên này cho browser không liên
quan ti mã code ca ng d

ng, không cn thit và không hiu qu đ đáp ng t
các máy ch. Thay vào đó, App Engine cung cp mt thành phn chuyên bit ca
máy ch chuyên dng đ cung cp tnh các tp tin này. Các server này đc ti u
hóa cho kin trúc ni b và phng thc truyn dn mng đ x lý các yêu cu v
tài nguyên tnh.
Khi duyt website, các tp tin tnh cùng các mã ng dng đc load lên.
 các tp tin tnh có th
đáp ng yêu cu ca website, phi cu hình mt s khía
cnh trong các tp tin cu hình bao gm: các URL tnh ca tp tin, các loi ni
dung và hng dn cho các trình duyt đ gi các bn sao ca các tp tin trong b
nh Cache cho mt s lng và thi gian nht đnh đ làm gim lu lng và tc
đ dng hình ca trang khi trang đc load. Mc đnh trong GAE thì các file hình
nh và CSS trong th mc resouse ca ng d
ng đu là các tp tin Static.
2.2.4. DataStore
Hu ht các ng dng web hu ích cn phi lu tr thông tin trong vic x
lý yêu cu. Vì th các website thng có các lung xut nhp d liu và phi có
mt hoc nhiu máy ch web kt ni vi máy ch c s d liu đ lu tr hoc ly
d liu. Tuy nhiên, khó khn đc đt ra khi có nhiu kt n
i đng thi đ yêu cu
d liu, vì th h thng máy ch c s d liu phi đòi hi mt s cu hình v
phn cng đ có th đáp ng đc nhiu yêu cu cùng lúc.
Hin nay, các h thng lu tr d liu ph bin nht cho các ng dng web
là lu tr theo table, hàng và ct, gin lt không gian, s
p xp, s dng các ch s
index đ nâng cao kh nng truy xut d liu. Các loi khác ca h thng lu tr
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang


d liu bao gm các kho d liu phân cp (XML) và c s d liu hng đi
tng (Object database). Mi loi c s d liu có u và khuyt đim riêng, và
loi tt nht phù hp cho mt ng dng ph thuc vào bn cht d liu ca ng
dng. Và mi loi c s d liu có nhng k thut c
a riêng mình đ phát trin qua
các h thng các máy ch.
H thng c s d liu ca Google App Engine gn ging nht vi mt c
s d liu kiu đi tng(object). Nó không phi là mt c s d liu quan h,
điu này có th s yêu cu thay đi cách suy ngh v d liu ca ng dng.
2.2.5. Các loi Dch V
Mi quan h gia datastore và thi gian thc thi đó là mt loi dch v: dch
v này cung cp các tp API đ truy xut vào h thng c s d liu. Google App
Engine bao gm mt s dch v hu ích cho các ng dng web. Dch v b nh
Cache là mt dch v giúp kh nng truy xut nhanh vì chính li th ca nó là
nhanh, nhanh hn nhiu so vi truy xut trc ti
p trên database. Nhng mt nhc
đim ca nó là khi server có s c v mt đin hay tt máy thì các giá tr ghi tm
thi trong memcache b xóa hoàn toàn. Nh tên gi ca nó, dch v memcache s
dng nh là mt b nh cache đ lu các kt qu ca các truy vn thng xuyên
hoc thc hin các phép tính toán.
ng dng ca App Engine có th truy xut đn các tài nguyên ca các trang
web khác s dng d
ch v URL Fetch. Dch v này to ra kt ni HTTP ti server
khác trên internet đ nhn v tài nguyên
ng dng App Engine có th gi mail s dng dch v Mail. Tin nhn có
th gi đn các user khác trong Domain hoc ngoài Domain và có th nhn mail t
các user khác. Nu ng dng đc cu hình đ nhn mail thì tin nhn s đc gi
đn đa ch ca ng dng, sau đó ng dng s đnh tuy
n ti Mail service và hin
th trên webform nu có yêu cu

Ngoài gi nhn Mail. App Engine còn cho phép ng dng có th nhn tin
nhn chat ca Google Talk s dng giao thc XMPP bng dch v XMPP service
X lý nh cng là mt phn trong dch v ca App Engine bao gm các
dch v xoay nh, ct nh, hin th nh…
2.2.6. Google Accounts
App Engine có kh nng tích hp các tài khon Google vào ng dng, các
tài khon này ngi dùng đã
đng kí trên các dch v Saas nh Google Mail,
Google Docs và Google Calendar. S bo mt hn nu chúng ta có th s dng tài
khon Google đ chng thc thay vì s dng mt h thng đng nhp riêng. Tt
nhiên, Chúng ta có th s dng h thng riêng ca chúng ta hoc là mt nhà cung
cp khác mà GAE có h tr nh là OpenID
2.2.7. Các hn ch ca Google App Engine
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

App Engine cung cp phng thc kt ni an toàn(HTTPS) cho tên min
con ca google h tr là application-id.appspot.com, nhng cha h tr phng
thc kt ni này cho tên min khác. Google account đng nhp luôn luôn s dng
phng thc kt ni an toàn này
ng dng s dng dch v URL Fetch đ to kt ni HTTPS và gi yêu cu
đn mt website khác, nhng App Engine không kim tra đc certificate (giy
chng nhn) s dng trên máy ch
 t xa.
2.3. Các thành phn ca Google App Engine trong Java
2.3.1. BackEnds
Backends đc mô t nh là mt phn ph tr ca GAE, là mt ng dng
đc bit không có gii hn thi gian yêu cu, có b nh cao hn và tng bng
thông CPU. BackEnds đc thit k cho các ng dng cn hiu sut nhanh hn,

cn b nh nhiu hn, và các quá trình yêu cu là liên tc. Nhng phn ph tr
này s tính phí theo thi gian hot đng
2.3.2. Storing Data
Môi trng App Engine cung cp nhng phm vi chc nng dành cho vic
lu tr d liu:
 App Engine Datastore cung cp lu tr c s d liu dng mô hình
NoSql(mô hình lu tr cp giá tr-khóa và h thng lu tr phân tán)
 Google Cloud Sql cung cp c s d liu Sql dành cho ng dng
Appengine, c bn phát trin trên mô hình quan h quen thuc
MYSQL.
 Google Cloud Storage cung cp dch v lu tr cho các đi tng và
tp tin lên đn con s hàng t byte.
2.3.2.1. Google Cloud Sql
n gin là đt mt thc th MySql sng trong đám mây.Nó có tt c
kh nng và chc nng ca MySql, vi mt vài tính nng đc thêm vào và
mt vài tính nng không đc h tr.ây là dch v Google API đc Google
chính thc phát trin và đa vào s dng vào tháng 10 n
m 2011.
Google Cloud Sql rt d dàng cho vic s dng, không đòi hi bt c
vic cài đt phn mm hay bo trì.iu đó rt lý tng cho các ng
dng va và nh.
Mt s tính nng và hn ch:
 Tính nng
 Kh nng lu tr c s d liu MySql trong các đám mây.
 H tr dung lng lên đn 10GB
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

 ng b d liu trên môi trng đa lý nhân rng.

 Nhp và xut d liu bng cách s dng mysqldump
 Kh nng tng thích vi Java và Python
 H tr công c dòng lnh
 H Tr tin ích đnh hng cho các câu lnh SQL(SQL
Prompt)trong Google API Console.
 Hn ch
 Dung lng b gii hn ch khong 10GB không thích hp
cho các c s d
liu ln
 Chc nng đnh ngha ngi dùng không đc h tr.
 Không h tr nhân bn c s d liu.
 Và mt s hàm không đc h tr trong MySql nh:
LOAD DATA INFILE
SELECT INTO OUTFILE
SELECT INTO DUMPFILE
INSTALL PLUGIN
UNINSTALL PLUGIN
CREATE FUNCTION
LOAD_FILE()
 s dng đc Google Cloud Sql đòi hi cn phi có các thông tin
nh sau:
 ng ký / ng nhp dch v Google Cloud Sql
 To m
t instance Google Cloud Sql
 Cung cp quyn truy cp cho instance t ng dng App Engine
2.3.2.2. Using Google Cloud Sql with Java
Bc 1: To ng dng Appengine
Bc 2: To c s d liu và các bng
 To trc tip c s d liu trên Cloud thông qua Sql Prompt vi giao
din trc quan.

ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

CREATE DATABASE guestbook;

 Khi s dng c s d liu ch cn chn C s d liu đó trong danh
sách menu.
Hình 2.5 Giao din Google Cloud Sql

 To tng thc th theo cu trúc Mysql rt tin li cho ngi dùng
CREATE TABLE entries (guestName VARCHAR(255),
content VARCHAR(255), entryID INT NOT NULL
AUTO_INCREMENT, PRIMARY KEY(entryID));

Bc 3:To kt ni và truy vn c s d liu hin th lên WebForm

2.3.2.3. Java Database Conectivity (JDBC)
JDBC là vit t
t ca “Java DataBase Connectivity”. Nó là mt API
(Application Programming Interface) có cha mt tp hp các lp, các giao
din Java và các thông báo li ngoi l nm trong cùng mt đc t mà theo đó
c các công ty sn xut JDBC driver cng nh các nhà phát trin JDBC đu
phi tuân th cht ch khi phát trin ng dng.
JDBC là mt chun truy xut c s d liu rt ph bin. Các RDBMS
(Relational Database Management Systems – H qun tr c s d li
u quan
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang


h) hay các nhà sn xut phn mm bên th ba phát trin các driver cho Java
đu cn tuân th cht ch đc t JDBC. Các nhà phát trin khác s dng các
driver này đ phát trin nên các ng dng có truy cp c s d liu: ví d, bn
dùng ConnectorJ JDBC driver đ truy cp c s d liu MySQL. Vì các driver
này tuân th cht ch đc t JDBC nên các nhà phát trin ng dng JDBC có
th thay th driver trong ng dng ca h b
ng mt cái tt hn mà không cn
phi vit li ng dng ca h. Nu h đã s dng mt s API đc quyn do mt
s nhà sn xut RDBMS nào đó cung cp thì h s không th nào thay đi
driver và/hoc c s d liu mà không vit li ng dng hoàn toàn.
Kin trúc JDBC:
Trong Java có 2 lp ch yu chu trách nhim v thit l
p kt ni đn
mt c s d liu.
- Lp đu tiên là DriverManager. ó là mt trong rt ít các lp thc s
do JDBC API cung cp. DriverManager chu trách nhim qun lý mt nhóm
(pool) các driver đã đng kí, mà thc cht là là tru tng hóa các chi tit v
vic s dng mt driver, cho nên lp trình viên không cn phi làm vic trc
tip vi driver đó.
- Lp th 2 là mt lp JDBC Driver th
c s. Nó đc cung cp bi các
nhà sn xut phn mm đc lp. Lp JDBC Driver chu trách nhim thit lp
đng kt ni c s d liu và x lý tt c các giao tip vi c s d liu đó.
Các JDBC driver chia thành 4 kiu khác nhau.Chúng ta s chia nó ra làm 2
phn:
 JDBC API (các gói java.sql & javax.sql )
 Các kiu JDBC Driver JDBC API, JDBC API có sn trong các gói
java.sql và javax.sql. Sau đây là các lp JDBC, các giao din và các li
ngoi l quan trng trong gói java. sql:

1. DriverManager - Np các JDBC driver vào trong b nh. Có th s dng nó
đ m các kt ni ti mt ngun d liu.
2. Connection - Biu th mt kt ni đn mt ngun d liu. c dùng đ to
ra các đi tng Statement, PreparedStatement và CallableStatement.
Statement - Biu din mt lnh SQL tnh. Có th s dng nó đ thu v đi
tng ResultSet.
3. PreparedStatement - Mt gii pháp thay th hot đng t
t hn đi tng
Statement, thc thi mt câu lnh SQL đã đc biên dch trc.
4. CallableStatement – biu din mt th tc đc lu tr. Có th đc s dng
đ thc thi các th tc đc lu tr trong mt RDBMS có h tr chúng.
5. ResultSet - biu din mt tp kt qu trong c s d liu to ra bi vic s
dng mt câu l
nh SQL là SELECT.
6. SQLException - mt lp x lý li ngoi l cha các li truy cp c s d
liu.
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

Gói th hai, javax.sql là mt b phn ca J2SE 1.4 và J2EE 1.3. Nó b sung
các tính nng sau đây vào JDBC đ h tr thêm cho các tính nng đã có trong
gói java.sql:
7. DataSource - Tru tng hóa mt ngun d liu. i tng này có th s
dng th cho 8. DriverManager đ to ra mt cách có hiu qu các kt ni c
s d liu (có kh nng s dng vic cha/phân chia các đng kt ni ngm).
To s
n c ch phân chia đng kt ni (built-in connection pooling).
9. XADataSource, XAConnection – Cho phép/H tr các giao dch phân phi.
RowSet – Nó m rng giao din ResultSet đ tng thêm s h tr đi vi các

tp kt ni b ngt.
Các loi JDBC Driver
Có 4 loi JDBC driver. Thông dng nht và cng là hiu qu nht là loi 4. Sau
đây là mô t:
 JDBC Driver loi 1- Chúng là các trình điu khin cu ni JDBC-
ODBC. Chúng y nhim công vic truy cp d
liu cho ODBC API.
Chúng là trình điu khin chm nht trong s còn li. SUN cung cp
mt phn mm trình điu khin JDBC/ODBC.
 JDBC Driver loi 2 – Chúng ch yu s dng API mã nn đ truy cp
d liu và cung cp các lp bao Java đ có th đc gi ra bng cách
dùng các JDBC driver.
 JDBC Driver loi 3 – Chúng đc vit thun bng Java và s dng giao
thc Net đc lp nhà sn xut đ
truy cp đn trình theo dõi t xa đc
lp nhà sn xut. Trình theo dõi này đn lt nó li ánh x các li gi
đc lp nhà sn xut này vào các li gi ph thuc nhà sn xut. Bc
đc bit này đã làm tng đ phc tp và gim tính hiu qu trong truy
cp c s d liu.
 JDBC Driver loi 4 – Chúng đc vit thun túy bng Java và là loi
hiu qu nh
t. Chúng cho phép kt ni trc tip vào c s d liu, cung
cp kt qu ti u và cho phép lp trình viên thc hin các chc nng
tùy thuc vào c s d liu c th. iu này đã to ra tính c đng cao
nht là khi bn cn thay đi c s d liu bên di mt ng dng. Loi
driver này thng đc dùng cho các ng d
ng phân tán cao.
SUN khuyn cáo s dng và phát trin các trình điu khin loi 4 trong
các ng dng.
2.3.2.4. Cu hình JDBC và kt ni truy vn c s d liu

Trc khi s dng bt c ng dng Java vi Google Cloud Sql đu phi
cn cung cp chính xác trình điu khin vi dch v. s dng JDBC cn
thêm “import com.google.appengine.api.rdbms.AppEngineDriver;” vào
trong class.
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

Hình 2.6 Chui kt ni đn c s d liu trên Cloud
2.3.3. Các dch v ca GAE
2.3.3.1. BlobStore Java API

Hình 2.7 Cách thc lu d liu ca BlobStore trong Datastore
BlobStore API cho phép ngi s dng ng dng ca chúng ta đ có th
upload đc d liu dng File vào Datastore. Các Blob đc to khi ngi
dùng upload file s dng giao thc HTTP, BlobStore to ra blob t ni dung
ca File và tr v mt key tham chiu ti Blob g
i là Blob key. Sau đó ngi
dùng có th s dng file thông qua key này, hoc blob có th đc đc trc tip
dng stream. Blob rt hu dng khi ngi dùng mun lu tr các file tài liu
loi ln nh là hình nh hoc Video. Blob không th sa đi sau khi nó đc
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

to ra, ch có th xóa nó. ng dng có th ly mt đon giá tr ca Blobstore
bng cách s dng các API, kích thc ca mi đon ti đa là 32Mb. Kích
thc ti đa ca đon này đc biu din bng bin
“com.google.appengine.api.blobstore.BlobstoreService.MAX_BLOB_FET
CH_SIZE” trong GAE.

 to ra blob t file đc upload, s dng :
“blobstoreService.createUploadUrl(“URL”)” t s kin ca HTML
form. Khi đc upload thành công lên Datastore, API t
đng to ra thông tin
v Blob mà chúng ta va upload và lu tr trong Datastore đ phc v cho
ngi dùng khi cn thêm thông tin v Blob mà chúng ta va upload. Sau khi
to ra blob, Blob có th đc chia s cho các ngi dùng khác, th vin cung
cp phng thc serve đ ngi dùng có th ly v Blob
blobstoreService.serve(blobKey, res). Ngoài vic cho ngi dùng upload file,
BlobStore API còn cho phép to ra mt blob rng mi s dng
createNewBlobFile() và có th ghi d liu vào blob mi to này bng File API.
2.3.3.2. Capabilities
Capabilities cung cp mt s
th vin dùng đ kim tra cu hình mà
ngi dùng đã cu hình trong các file XML, t đó gii quyt mt s vn đ, cái
nào dùng đc và cái nào không dùng đc. Có hai trng thái mà Capabilities
tr v là DISABLED và ENABLED. Nu s dng đc thì trng thái tr v là
ENABLED và ngc li


Hình 2.8 Cách s dng Capabilities
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang

Các loi Capabilities mà GAE h tr

Hình 2.9 Các loi Capabilities GAE h tr
2.3.3.3. Channel API
Channel API to ra mt loi kt ni bn vng gia ng dng và Google

Servers, cho phép ng dng có th gi tin nhn bng JavaScript trong thi gian
thc mà không có kim tra vòng. API này hu ích cho ng nào nào đc th k
dùng đ cp nht các thông tin user s dng App ngay tc thì
 JavaScipt Client:
 Kt ni ti Channel mt ln và nhn v thông báo thông tin channel t
server
 L
ng nghe các cp nht t channel v các Client khác
 Gi tin nhn ti server và server thông báo có tin nhn ti cho các
client khác
 Server:
 To ra mt Channel riêng cho tt c các JavaScrip Clients
 To và gi mã chng thc ID ca Channel cho mi Client, đ client có
th kt ni ti và lng nghe
 Nhn thông tin cp nht t client thông qua các yêu cu HTTP
 Gi các thông tin cp nht cho các client khác cùng Channel
 Qun lý các thông tin các trng thái kt ni ca Client
ĐiHcMTPHChíMinh GVHDTSLêXuânTrng

SVTHTrangThànhLcLýTrngKhoa Trang


Hình 2.10 Trao đi d liu gia client và server s dng Channel API
 s dng đc Channel, phi cu hình Channel trong file appengine-
web.xml

Hình 2.11 Cu hình Channel trong Google App Engine
2.3.3.4. Image API
App Engine cung cp mt dch v gi là Image service dùng trong các
thao tác vi nh nh, xoay nh, chnh kích thc, ct nh, phóng to, nh, điu

chnh đ sáng ti ca nh, chnh màu và đ tng phn ca nh. Nó có th
chuyn nh sang mt vài đnh dng khác nhau, s dng mt gii thut đc
đnh sn giúp nâng cao cht lng hình nh. Hình 
nh x lý có th ly trc tip
t ng dng hoc t Blobstore. Nu hình nh đc ly t Blobstore, nu mun
chnh sa thì kích thc ca blob phi nh hn 32Mb.
Dch v nh h tr các loi đnh dng sau: JPEG,PNG,WEBP,
GIF,BMP,TIFF và ICO.
2.3.3.5. Mail API
T ng dng App Engine có th gi email thay mt cho Qun Tr Viên
ca ng dng, và thay mt cho ngi s
dng vi ng dng vi Google
Accounts. Tt c các chc nng này đu đc h tr bi GAE đc gi là Mail
Service.
Cu hình s dng Mail trong GAE trong file appengine-web.xml

×