Your SlideShare is downloading. ×
The Google App Engine Oil Framework
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

The Google App Engine Oil Framework


Published on

Intro to GAEO framework

Intro to GAEO framework

1 Like
  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. The Google App Engine Oil (GAEO) Framework Lin-Chieh Shangkuan (ericsk)
  • 2. Outline Google App Engine overview Why we develop the GAEO framework What's done in GAEO 0.1 GAEO's current & future features How to start using GAEO (DEMO) GAEO links Q&A
  • 3. Current Google App Engine An application server with pure Python runtime language also a web server for you (HTTP) Request-based environment Uses BigTable as database Application version control and seamless upgrades/degrades. HTTPS support (* only)
  • 4. Developing Applications on AppEngine
  • 5. Request-based Configuration ctrl_list = ['Tag', 'User', 'Ziza'] app = webapp.WSGIApplication([ ('/', IndexView), ('/home', HomeView), ('/explore', ExploreView), ('/replies', RepliesView), ('/signup', SignupView), ('/settings', SettingsView), ('/tags', TagsView), ('/m/([^/s]*)', MsgView), ('/f/([^/s]*)', FeedsView), ('/r/([^/s]*)', FeedsWithFriendsView), ('/u/([^/s]*)', UserView), ('/t/([^/s]*)', TagView), ] + [(r'/%s/(.*)' % s.lower(), eval(s + 'Controller')) for s in ctrl_list], debug=True)
  • 6. Handle HTTP Request class IndexView(webapp.RequestHandler): def get(self): # get the user object user = users.get_current_user() if user: # the user has logined self.redirect('/home') template_values = { 'signin_url': users.create_login_url('/home'), }
  • 7. Deployment
  • 8. Why do we develop a framework on AppEngine?
  • 9. Goal To be familiar with AppEngine Convention over configuration Structured, meaningful, parameterized URL More helper methods Quickly migrate from ZF or Rails For team works
  • 10. Software Architecture action action client dispatcher request . dispatch . . action response
  • 11. Code Layout (0.2) $APP_BASE/ application/ controllers/ models/ templates/ assets/ css/ img/ js/ gaeo/ plugins/ app.yaml favicon.ico
  • 12. GAEO 0.1 released at Sep. 19, 2008
  • 13. GAEO URL Routing Default: controller: foo (FooController class)action: bar (bar method in FooController)id: 1234 Configurable & Parameterize: route.connect('/signin', controller='account', action='signin') route.connect('/user/:name', controller='user', action='show') route.connect('/foo/:action/:x/:y/:z', controller='foo')
  • 14. Action Controller Each request is distributed to an action In GAEO, an action is a method of an action controller Create a controller class that extends gaeo.controller. BaseController Implement the action class FooController(BaseController): def bar(self): quot;quot;quot; TODO: do things for /foo/bar request quot;quot;quot; pass
  • 15. Response Helper Use to_json method (uses simplejson) to convert a dict instance to a JSON string Use render method to output different response data. (helps set the Content-Type header) Use redirect method to redirect to another action (or URL) Do something in before_action and after_action filters
  • 16. Session support Store data at server (mapping clients via Session-IDs that stores in cookies) GAEO has designed a session interface and a memcache- session implementation. Use self.session in the actions.
  • 17. Model enhancement Add some helper methods update_attributes save, update Naming query A beginning of ORM belongs_to method
  • 18. Other helpers Object shortcuts: request response cookies Mobile device detection _is_iphone _is_mobile
  • 19. GAEO 0.2 beta released at Oct. 31, 2008
  • 20. Setuptools support Now you can use easy_install gaeo to install the GAEO package. Also available on pypi Provided by gasolin
  • 21. Scaffold Quickly generates some common pages new list show edit create update destroy Provided by xeonchen
  • 22. Plugins Provides plugins system in GAEO Install features on demand 3rd party development :-p
  • 23. Other Enhancements Global initialization application_init method (in ApplicationController) AJAX/Form helpers generates some useful AJAX/form strings The respond_to method respond content according to :format parameter zip core import You can zip the GAEO core to eliminate disk space cost methods enhancements
  • 24. GAEO's Future future
  • 25. Roadmap RESTful mobile device support i18n new template rendering engine ...
  • 26. GAEO Links Document: Project: Blog: Groups:
  • 27. Q&A 感謝您的收聽 Thanks for you attendance ご清聴とうもありがとうございました