1 / 42

Google App Engine

Google App Engine. Các Công nghệ lập trình hiện đại. TH2009/03. Contents. Giới thiệu. Môi trường GAE. Google App Engine Service. Quotas & Limit. Phát triển Ứng dụng trên GAE. Giới thiệu. Google App Engine là gì ? .

daphne
Download Presentation

Google App Engine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Google App Engine CácCôngnghệlậptrìnhhiệnđại TH2009/03

  2. Contents Giớithiệu Môitrường GAE Google App Engine Service Quotas & Limit PháttriểnỨngdụngtrên GAE ĐH-KHTN

  3. Giớithiệu • Google App Engine làgì? • GAElàmộtnềntảng cho phép chúng ta có thể triển khai các ứng dụng của mình trên nền cơsởhạtầngsẵn của Google ĐH-KHTN

  4. Giớithiệu • Lợiíchcủa GAE: Easy build: cơ chế build tự động của Google. Maintain: chúng ta sẽ không cần quan tâm đến các vấn đề bảo trì Server vì đã có Google giúp chúng ta làm chuyện đó. Easy scale: Server tự điều chỉnh băng thông và dung lượng lưu trữ cho phù hợp. Công việc chính của chúng ta chỉ là xây dựng và upload mã nguồn lên GAE. ĐH-KHTN

  5. Môitrường GAE: • Tổngquan: • GAE baogồmnhữngtínhnăngsau: Cáccôngnghệ web độngphổ biến. Cơsở dữliệuchophéptruyvấn, sắpxếpvà xửlýtheo Session. Khảnăng Scalable dễdàng. API để xácthựcvà gửi mail bằngtàikhoản Google. Mộtbộ SDK cókhảnănggiảlập Local Server như GAE Server. Task Queue và Task Schedule ĐH-KHTN

  6. Môitrường GAE: • Tổngquan: • GAE hỗtrợ 3 ngônngữchính: Java - Java runtime environment Python - Python runtime environments Go - Go runtime environment ĐH-KHTN

  7. Môitrường GAE: • Sandbox: Sandbox làmộtmôitrườngđảmbảocácứngdụngchạytrên GAE phảituânthủmộtsốquytắcnhấtđịnh: Thayđổihệthốngtập tin. MởMột socket hoặctruycậptrựctiếpMộtmáychủkhác SinhraMộttiếntrìnhphụkháctrongkhisửlýmột Request Tạocácloại System Call khácnhau ĐH-KHTN

  8. Môitrường GAE: • Storing Your Data: GAE cungcấpmộtsốlựachọnchoviệclưudữliêu: App Engine Datastore: https://developers.google.com/appengine/docs/whatisgoogleappengine Google Cloud SQL: https://developers.google.com/cloud-sql/ Google Cloud Storage: https://developers.google.com/storage/ ĐH-KHTN

  9. Môitrường GAE: • Google Accounts: Cho phépỨngdụngcủachúngtasửdụng Google Account làmhệthốngxácthựcngườidùng. Lợiích: • Ngườidùngkhôngcầntạo 1 acc mớiđểđăngnhậpvàohệthốngcủachúngta. • Chúngtakhôngcầnphảitốnthờigiantrongviệcpháttriểnvàbảomậtmộthệthốngquảnlýngườidùng. ĐH-KHTN

  10. Google App Engine Service: App Engine cungcấpmộtloạtcácdịchvụchophépthựchiệncáchoạtđộngphổbiếntrênứngdụng: • 1) URL Fetch 2) Mail 3) MemCache • 4) Image Manipulation 5) Scheduled Tasks and Task Queues 6) XMPP ĐH-KHTN

  11. Google App Engine Service: • 1.URL Fetch: Đặcđiểm: • Truycậpcác URL bênngoàithông qua HTTP và HTTPS. • Hỗtrợcácphươngthức: GET, POST, DELETE, PUT, HEAD. • Hỗtrợcácyêucầu: ĐồngbộvàBấtđồngbộ. Giớihạn: • Dung lượngyêucầuvàthông tin trảvề khôngđược quá 1MB. ĐH-KHTN

  12. Google App Engine Service: • 2.Mail: Đặcđiểm: • Gửi mail dướidanhnghĩacủa admin hoặcngườidùng Google. Giớihạn: • Tổng dung lượngmột mail baogồm cả phầnđínhkèmkhông quá 1MB. • Nếu admin làngườinhận dung lượng mail khôngđược quá 16KB. ĐH-KHTN

  13. Google App Engine Service: • 3.MemCache: Đặcđiểm: • NhanhhơnlưutrữtrênDataStore • Lưutrữliệulênbộ nhớthay vì lênđĩa. • Tổ chức key-value pair. • Kế thừaJcaheinteface. Giớihạn: • Dung lượnglưutrữkhôngvượtquá 1MB. ĐH-KHTN

  14. Google App Engine Service: • 4.Image Manipulation: Đặcđiểm: • Xửlíảnh, cảithiệnảnh, chuyểnđổiđịnhdạng. • Cóthể sửdụngảnhtrongBlobStore, khiđókíchthướcảnh có thể bỏ qua tuynhiênảnhtrảvề vẫn bị giớihạnnhỏhơn 1MB. Giớihạn: • Kíchthướctốiđacủaảnhnhậnvàgửilà 1MB. ĐH-KHTN

  15. Google App Engine Service: • 5.Scheduled Tasks & Task Queues: Đặcđiểm: • Thựchiệncáctác vụ nềnbằngcáchthêmchúngvàocáchàngđợi. • File queue.xml phảiđượccấuhình. Giớihạn: • Mộtđốitượng Task có kíchthướcphảinhỏ hơn 10 KB. • Số hàngđợitốiđa là 10. • Tốiđa 20 task đượcthựcthitrong 1 giây. ĐH-KHTN

  16. Google App Engine Service: • 6.XMPP: Đặcđiểm: • Tươngthíchvớicácứngdụng chat phổ biến. • Khônghỗ trợ chat nhóm. Giớihạn: • Dung lượngmỗithôngđiệpkhông quá 100KB. ĐH-KHTN

  17. Google App Engine Service: • 6.XMPP: Đặcđiểm: • Tươngthíchvớicácứngdụng chat phổ biến. • Khônghỗ trợ chat nhóm. Giớihạn: • Dung lượngmỗithôngđiệpkhông quá 100KB. ĐH-KHTN

  18. Quotas and Limit: Google App Engine cungcấptrênmỗitàikhoản Gmail là 10 Ứngdụng. Mỗiứngdụngsẽcó: • 1GBlưutrữ. • 5 triệulượtxem/1 tháng/1 ứngdụng. Lưu ý: • Nếubạnmuốnmởrộnghệthốngcủabạn, bạnchỉcầntrảchonhữngkhoảnvượt qua mứcQuotas(Limit trên 1 App của 1 tàikhoản Free) • TuynhiênnếubạnlợidụngQuotas đểgianlận(Xâydựngmộtloạtứngdụng link vớinhau) thìtấtcảứngdụngđósẽbịngắtvàtàikhoảncủabạnsẽbị block. ĐH-KHTN

  19. PháttriểnỨngdụngtrên GAE Mộtsốbướcpháttriểnứngdụng GAE Java Application: • 1)Càiđặt GAE SDK. • 2)Tạo Project. • 3)Sửdụng User Service. • 4)SửdụngDataStore. • 5)Deploy ứngdụnglên GAE. ĐH-KHTN

  20. Google App Engine Service: • 1.Cài đặt GAE SDK: a)Càiđặt JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html b)Càiđặt Eclipse: http://www.eclipse.org/downloads/packages/eclipse-classic-421/junosr1 c)Dùng Eclipse càiđặt GAE SDK: https://dl.google.com/eclipse/plugin/4.2 Xem Video Demo ĐH-KHTN

  21. Google App Engine Service: • 2.Tạo Project: Saukhicàiđặt Eclipse với GAE SDK bạncóthểtạo GAE Application thông qua 2 cách: i) Click vào Button New Web Application Project trênthanh toolbar. ii) File → New → Web Application Project. ĐH-KHTN

  22. Google App Engine Service: • 2.Tạo Project: a) Cấutrúcthưmục: Java Web Application tuântheotiêuchuẩnWAR. Ứngdụngsẽbaogồmcác file .class, static file vàcác file configđượctổchứcnhưsau: ĐH-KHTN

  23. Google App Engine Service: • 2.Tạo Project: Nội dung trìnhbày: a) Cấutrúcthưmục. b) Mộtsốtập tin đặcbiệt. c) Running & Testing. ĐH-KHTN

  24. Google App Engine Service: • 2.Tạo Project: b) Mộtsốtập tin đặcbiệt: • web.xml: Giúpứngdụngkhinhậnđượcmột Web Request sẽbiếtđượcnênchạyServletnào. Nội dung file web.xml 3 2 Web Request 1 ĐH-KHTN

  25. Google App Engine Service: • 2.Tạo Project: b) Mộtsốtập tin đặcbiệt: • appengine-web.xml: File appengine-web.xml cónhiệmvụchohệthốngbiếtđượclàmcáchnàođể deploy vàchạyứngdụng. Nội dung file appengine-web.xml: App ID đượcđăngkýtrên GAE Version hiệntạicủaứngdụngtrên GAE ĐH-KHTN

  26. Google App Engine Service: • 2.Tạo Project: c) Running & Testing(tt): Lưu ý:Khi pháttriểnứngdụngtrên Eclipse hay mộtsố IDE khác, Nếubạnthayđổimộtsồ file nhưJSPs, static files, class, appengine-web.xml, hệthốngsẽcốgắngcậpnhậtnhữngthayđổiđólên Server. Nhưngnếubạnthayđổitrên file web.xml, bắtbuộcbạnphải stop Server mớicóthểcậpnhậtthayđổi. ĐH-KHTN

  27. Google App Engine Service: • 2.Tạo Project: c) Running & Testing: Khipháttriểnứngdụng GAE bằng Eclipse trên local, ứngdụngsẽđược Deploy với Port mặcđịnhlà 8888. VD: http://localhost:8888/guestbook Nếubạnđangsửdụngdev_appserver command, ứngdụngsẽđược Deploy với Port là 8080. VD: http://localhost:8080/guestbook ĐH-KHTN

  28. Google App Engine Service: • 3.Sử dụng User Service: a) Giớithiệu: Nhưđãnói ở trên Google cungcấpchochúngtamộtdịchvụhếtsứcbổíchchínhlàhệthống Google Account. Cácứngdụngtrên GAE cóthểdễdàngtíchhợphệthống Google Account mộtcáchdễdàng ĐH-KHTN

  29. Google App Engine Service: • 3.Sử dụng User Service: b) Cáchsửdụng: // Lấythông tin ngườidùnghiệntạiUserServiceuserService=UserServiceFactory.getUserService();Useruser=userService.getCurrentUser(); Login: userService.createLoginURL(); Logout: userService.createLogoutURL(); • Lưu ý:Khi Deploy ứngdụngtrênServer Local, thìhàmcreateLoginURL() sẽ Redirect đếntrang login củaứngdụnghiệntại. Ở trangnày, khônghềcóbấtcứxửlýnàoliênquanđếnGoogle Account. Chỉkhita deploy ứngdụnglênGAE, tamớiđược Redirect đếntrangđăngnhậpcủaGoogle. ĐH-KHTN

  30. Google App Engine Service: • 4.Sử dụngDataStore: a) Giớithiệu: Đasốứngdụngtrên GAE đềusửdụngDataStorelànơilưutrữdữliệu. Trongđócác Object đượclưutrongDataStoređượcgọilà Entity. Các Entity đượctổchứcvớinhaudướidạngcâythưmục. VD: ĐH-KHTN

  31. Google App Engine Service: • 4.Sử dụngDataStore: a) Giớithiệu(tt): Những Entity cùnglà con củamột Entity thìthuộcvềmột group. Chínhvìvậy, ngoài Common Key của Entity, Các Entity còncóthêmmột Key nữađểđịnhdanh Parent củanó. VD: Cáccâutruyvấnthườngdùng Parent Key đểtruyvấnđượcgọilà:ancestor queries. Cấutrúcdữliệutheokiểunàyđảmbảodữliệuluônđượcthốngnhấtvàtoànvẹn. ĐH-KHTN

  32. Google App Engine Service: • 4.Sử dụngDataStore: b) CácthaotáccơbảntrênDataStore: i) Create Object: // Lấy Parent Key StringguestbookName=req.getParameter("guestbookName");KeyguestbookKey=KeyFactory.createKey("Guestbook",guestbookName);String content =req.getParameter("content");Datedate=newDate(); //Set cácthuộctínhcho ObjectEntity greeting =newEntity("Greeting",guestbookKey);greeting.setProperty("user", user);greeting.setProperty("date", date);greeting.setProperty("content", content); // Thêm Object vào DatabaseDatastoreServicedatastore=DatastoreServiceFactory.getDatastoreService();datastore.put(greeting); ĐH-KHTN

  33. Google App Engine Service: • 4.Sử dụngDataStore: b) CácthaotáccơbảntrênDataStore: ii) Read(Query) Object: // Lấy Parent Key DatastoreServicedatastore=DatastoreServiceFactory.getDatastoreService();KeyguestbookKey=KeyFactory.createKey("Guestbook",guestbookName); // Run an ancestor query to ensure we see the most up-to-date// view of the Greetings belonging to the selected Guestbook. //TạocâutruyvấncóthêmdùnghàmaddFilter(“Column”, FilterOperator.EQUAL,value) đểthêmcácđiềukiệnWhere Queryquery=newQuery("Greeting",guestbookKey).addSort("date",Query.SortDirection.DESCENDING);List<Entity> greetings =datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5)); ĐH-KHTN

  34. Google App Engine Service: • 4.Sử dụngDataStore: b) CácthaotáccơbảntrênDataStore: iii) Delete Object: • // Key employeeKey = ...;datastore.delete(employeeKey); iii) Update Object: Đểcậpnhậtmột entity, tatruyvấnsauđósửađổicácthuộctínhcủađốitượngvàgọithông qua phươngthứcDatastoreService.put(). Dữliệusẽđượcghiđè. ĐH-KHTN

  35. Google App Engine Service: • 4.Sử dụngDataStore: c) DataStore Index: i) Giớithiệu: ĐểhỗtrợchoviệctruyvấntrênDataStore, GAE hỗtrợkỹthuật Index(Datastore Indexes).Tấtcảcáccâu Query trênDataStoređềucóítnhấtmộtIndex.Các Index củaứngdụngđềuđượclưutrong file datastore-indexes.xml. Hệthốngsẽtựđộng add các Entry vào file này. Ta cũngcóthểcustome file nàychotốiưunhất. VD: <?xml version="1.0" encoding="utf-8"?><datastore-indexesautoGenerate="true"><datastore-indexkind="Greeting"ancestor="true"><propertyname="date"direction="desc"/></datastore-index></datastore-indexes> ĐH-KHTN

  36. Google App Engine Service: • 4.Sử dụngDataStore: c) DataStore Index: i) Cáchthứchoạtđộng: • Lấyracác Index từcâu Query. VD: Query q =newQuery("Person").addFilter("lastName",Query.FilterOperator.EQUAL,"Smith").addSort("height",Query.SortDirection.DESCENDING); • Các Index đượcchọn: lastName, height. • Lọcracác Potential Result. • Lựachọnracác Entity cólastNamevà height cógiátrịhoặcbằng Null ĐH-KHTN

  37. Google App Engine Service: • 4.Sử dụngDataStore: c) DataStore Index: i) Cáchthứchoạtđộng(tt): • Sắpxếp Potential Result vào Table Index. Table Index sẽsắpxếpcác Entity theolầnlượtcáchàmaddSortcủa Query. • Scan rakếtquảcuốicùng. • Sauđó, Hệthốngsẽ scan đểtìmrađược Entity đầutiênthỏamãnđiềukiệncuảcác Index trongTableIndex. Nếugặpđược Entity đầutiênthỏamãnhệthốngsẽlấyluôncácphầntửsauchođếnkhi: • Entity tiếptheokhôngthỏacác Index. • Khônggặpđược Entity tiếptheo(Kếtthúcbảng). • Đạtđủsốlượngyêucầu. ĐH-KHTN

  38. Google App Engine Service: • 5.Deploy ứngdụnglên GAE: Trướckhi deploy ứngdụng ta cầnphảiđăngkíứngdụngtrên GAE: • Đăngkýmộttàikhoản Gmail. • Đăngnhậptrêntrang: https://appengine.google.com/vớitàikhoản Gmail vừatạo • Click vào button Create Application: ĐH-KHTN

  39. Google App Engine Service: • 5.Deploy ứngdụnglên GAE: • Điềncácmụctheoyêucầu . ĐH-KHTN

  40. Google App Engine Service: Chỉnh sửa file appengine-web.xml. <application>application-ID vừa đăng ký </application> <version>Số version của ứng dụng được chạy trên GAE</version> • 5.Deploy ứngdụnglên GAE: Cácbướcđể deploy ứngdụnglên GAE: • Chỉnhsửa file appengine-web.xml. <application>application-ID vừađăngký </application> <version>Số version củaứngdụngđượcchạytrên GAE</version> ĐH-KHTN

  41. Google App Engine Service: Chỉnh sửa file appengine-web.xml. <application>application-ID vừa đăng ký </application> <version>Số version của ứng dụng được chạy trên GAE</version> • 5.Deploy ứngdụnglên GAE: Cácbướcđể deploy ứngdụnglên GAE: • TrongElipse ta click vào button trênToolbar vàchọn Deploy to App Engine… • Truycậpvào Website http://your_app_id.appspot.com/đểkiểmtra ĐH-KHTN

  42. Thank You ! www.themegallery.com

More Related