基于Symfony框架下的快速企业级应用开发

2,936 views

Published on

Symfony,框架,快速,企业级,应用开发

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,936
On SlideShare
0
From Embeds
0
Number of Embeds
889
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

基于Symfony框架下的快速企业级应用开发

  1. 1. SACC2011
  2. 2. 适用对象•  希望快速开发复杂应用 –  在种子孵化阶段 •  具备快速开发应用原型的能力 –  在早期阶段 •  具备平滑地进行业务升级和调整的能力 –  在发展阶段 •  具备可优化产品性能的能力 •  具备可平滑扩充系统架构的能力•  希望产品具有可持续发展性 SACC2011
  3. 3. Why Symfony? SACC2011
  4. 4. 主流PHP框架之间的对比 SACC2011
  5. 5. 如果编程语言是⼀一条船•  Java•  Ruby•  C•  PHP SACC2011
  6. 6. [⼀一条能代表Symfony+PHP的船] ? SACC2011
  7. 7. 互联网开发的最佳实践 SACC2011
  8. 8. 互联网开发最佳实践之⼀一 - 脚手架 SACC2011
  9. 9. Scaffolding(脚手架)•  什么是Scaffolding –  快速勾勒基本业务逻辑的工具•  为什么要用Scaffolding –  减少开发成本,加快开发速度 –  勾勒基本业务模型, 快速搭建业务逻辑•  Scaffolding在互联网中的应用 –  Ruby on Rails –  Django –  Appfuse –  Symfony,Codeigniter,Cakephp,Zend Framework SACC2011
  10. 10. 在Symfony中使用Scaffolding功能 SACC2011
  11. 11. 构建⼀一个CRUD页面的完整流程•  用MySQL Workbench画数据库ER图•  用Doctrine Export生成Yaml格式的数据库定义文件•  根据数据库定义文件生成数据库操作类 –  #symfony doctrine:build --all•  根据数据库操作类生成CRUD功能 –  #symfony doctrine:generate-admin SACC2011
  12. 12. 你就能得到 SACC2011
  13. 13. 除此之外,通过命令行Symfony还可以帮你…•  生成Project/App/Module –  以及他们所对应的Unit Test和Functional Test•  安装插件 –  或者升级现有插件 –  甚至将要现有的程序打包成⼀一个插件•  部署程序•  …… SACC2011
  14. 14. 互联网开发最佳实践之二 – 命令行工具 SACC2011
  15. 15. 命令行工具用来做什么?•  开发 –  创建项目、模块•  测试 –  执行Unit Test•  部署 –  同步数据 –  部署程序 –  清空缓存•  生产 –  定时脚本 SACC2011
  16. 16. #php symfony SACC2011
  17. 17. 互联网开发最佳实践之三 – DRY SACC2011
  18. 18. 不要重复制造轮子! SACC2011
  19. 19. 可实际情况是:经常不知道去哪儿找轮子 SACC2011
  20. 20. Don’t Repeat Yourself的三个境界 Plugin ClassFunction SACC2011
  21. 21. Symfony中的DRY•  Function –  提供Lazy Load功能,调用Function无成本 –  强大的Helper函数库 这两句话较难理解•  Class 后面有详细的解释 –  提供了面向互联网开发的抽象类 –  提供了继承这个抽象类的Symfony核心程序 •  sfWebRequest/sfWebResponse/sfFileCache…… –  提供了数据库的ORM•  Plugin –  拥有大量现成Plugin –  社区活跃,鼓励开发者开发提交自己的Plugin SACC2011
  22. 22. “提供了继承这个抽象类的Symfony核心程序” Cache sfCache get() set()sfFileCache sfAPCCache sfMemcacheCache sfFunctionCache get() get() get() call() set() set() set() SACC2011
  23. 23. 又比如Database sfDatabase connect() getResource() shutdown()sfMySQLDatabase sfMySQLiDatabase sfPDODatabase myMysqlDatabaseconnect() connect() connect() connect()getResource() getResource() getResource() getResource()shutdown() shutdown() shutdown() shutdown() 实现你自己连接数据库的逻辑: 例如读写分离,垂直水平分割,审 计,set names,HA等等等 SACC2011
  24. 24. Plugins of Symfony•  1000多个插件•  插件涵盖后台管理、表单、数据库操作、性能优化、Ajax、 搜索等二十多个领域 SACC2011
  25. 25. 介绍几个经典Plugin•  sfGuardPlugin/sfDoctrineGuardPlugin –  登录,注册,权限设置以及验证•  sfFormExtraPlugin –  提供多个额外的Validator和WidgetForm,例如 Captcha,JQueryAutocompleter,TinyMCE等•  sfJqueryReloadedPlugin –  在Symfony中集成Jquery•  stOfcPlugin –  生成Flash统计图•  sfAdminDashPlugin –  生成后台管理页面 SACC2011
  26. 26. Plugins of hoopCHINA.com•  hcHTMLCompression•  hcXHProfPlugin –  Fork from elXHProfPlugin•  hcCKEditorPlugin•  hcDatabaseDebugPanelPlugin•  hcProtobufPlugin SACC2011
  27. 27. 互联网开发最佳实践之四 – ORM SACC2011
  28. 28. PHP的ORM•  Doctrine•  Propel SACC2011
  29. 29. Doctrine or Propel•  PHP领域最强大的两个ORM框架•  谁好谁坏的争论从来没有停止过…… Ps:虎扑正在使用Doctrine SACC2011
  30. 30. 互联网开发最佳实践之五 – 开发/调试工具 SACC2011
  31. 31. Debug in Symfony•  Debug Toolbar•  Log and Debug Message•  Exception Message SACC2011
  32. 32. Debug Toolbar •  数据库操作耗时 •  函数调用耗时 •  内存占用情况 •  系统日志 •  模版的变量 •  模板调用关系 •  系统配置信息 •  SESSION •  变量当前版本号 SACC2011
  33. 33. Log Debug Message 可以生成 日志文件 SACC2011
  34. 34. 想存在其他地方?没问题factories.yml: sfLogger Abstractprod: logger: myLogger class: sfFileLogger param: sfFileLogger level: err loggers: ~ sfConsoleLogger sfNoLogger myLogger SACC2011
  35. 35. Exception Message 详细程度 不输J2ee SACC2011
  36. 36. 互联网开发最佳实践之六 – 统⼀一开发环境 SACC2011
  37. 37. Symfony开发环境最佳实践 /opt/dev/{Devloper Name}/{product}/{branch} /opt/dev/sharing/ XHProf APC Development Server http://userA.product.branch.hc.com X:devproductbranchRemote Mount NetBeans/Zend Studio/Eclipse Developers SACC2011
  38. 38. 建立统⼀一开发环境的优势•  统⼀一硬件配置和服务配置 –  避免因为服务器配置原因造成的不兼容•  提供更接近与生产环境的开发环境•  建立分支/合并等操作速度快•  App和框架/类库分离,各自升级均不互相影响•  除此之外,还可以: –  开启display_error,拒绝有问题代码的出现. –  开启XHProf,让程序员在开发时就意识到性能问题. –  限制memery_limit数量,让程序员在开发时就意识到内存问题. –  限制扩展的数量,尽量使用现有的代码去解决新问题. SACC2011
  39. 39. 架构上的变化 SACC2011
  40. 40. 传统框架下的整体应用架构图 LBApp 1 App 2 App 3 App 4 App 5 SACC2011
  41. 41. 传统架构下的⼀一些问题•  应用和应用之间任何数据调用都需要跨网络•  服务器和应用没有清晰的关系,部署、运维、监控等过程复杂•  容易引发单点故障•  性能瓶颈容易波及整体架构 SACC2011
  42. 42. 软件架构上的变化 LB计算点App App App App AppSymfony Symfony Libs ORM Plugin SACC2011
  43. 43. 整体架构上的变化 LB计算点 计算点 计算点 计算点 计算点 ×∞ DB/Cache/MQ/File Passport/Credit/User Status/…… SACC2011
  44. 44. 使用Symfony作为框架后的⼀一些系统架构上的优势•  减少应用间数据调用的成本 –  从Webservice/SOAP/Rest/RPC变成了本地函数调用 –  性能极大提高•  每个计算点包含了所有的应用 –  扩展性极强 –  解决了单点故障问题•  框架源文件和应用分离 –  部署速度快 –  升级方便•  整体性能得到提高 –  提供了对计算点进行scale out和scale up的可能性 SACC2011
  45. 45. 总结•  Symfony与其他语言对比以及框架的优势•  Scaffolding•  命令行•  ORM•  插件•  Symfony开发环境最佳实践•  使用Symfony后的架构变化和好处•  部署 SACC2011
  46. 46. 抛砖引玉 SACC2011
  47. 47. 你讲的不错,但我回家后从哪儿入手呢? SACC2011
  48. 48. 学习资料•  Symfony官方教程(推荐) –  http://www.symfony-project.org/doc/1_4/•  看源代码 –  真的,我不是在忽悠你 •  从Symfony源代码中学习 •  从Symfony的插件库中学习更多 SACC2011
  49. 49. ⼀一些有用的工具和网址•  Doctrine Export –  http://code.google.com/p/mysql-workbench-doctrine-plugin/•  Symfony Snippets –  http://snippets.symfony-project.org/•  ORM Designer –  http://www.orm-designer.com/symfony SACC2011
  50. 50. 对于希望迁移到Symfony框架的团队的⼀一些建议•  Symfony的学习曲线较陡峭 – 需要做好2-6个月的学习时间•  开发上: – 先从小的网站和应用入手,积累一些开发经验. – 不要重复制造轮子 – 造出来要分享,发扬开源精神 – 通过逐步替换单个功能点或页面,最终完成改造 SACC2011
  51. 51. 展望-Symfony2•  今年8月已经发布正式版•  特性 –  基于php5.3重写,支持namespace,目录结构更精简 –  所有代码都是松耦合的,包括核心代码 –  默认使用Doctrine2,支持Mongodb•  所以 –  开发速度快 –  程序速度快•  但是 –  新的东西都不太稳定…•  不过 –  许多组织都表示会使用Symfony2,例如phpbb SACC2011
  52. 52. 还有问题?•  Mail –  公司:hongtao@hoopchina.com –  个人:scourgen@gmail.com•  QQ –  2468630•  MSN –  scourgen@hotmail.com•  新浪微博 –  @虎扑网洪涛•  Twitter –  @scourgen SACC2011
  53. 53. 谢谢 SACC2011

×