Size: 3404
Comment:
|
Size: 3239
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
Junyong Pan: | Junyong Pan:: |
Line 30: | Line 30: |
我们喜欢Python ! | 我们喜欢Python ! |
Line 33: | Line 33: |
Django, Pylons 都很简单 |
Django, Pylons 都很简单 |
Line 37: | Line 37: |
Zope !! |
Zope !! |
Line 41: | Line 41: |
太复杂! | 太复杂! |
Line 44: | Line 44: |
很严肃 ... | 很严肃 ... |
Line 47: | Line 47: |
对象耦合、重用问题... | 对象耦合、重用问题... |
Line 50: | Line 50: |
很难、很专业! | 很难、很专业! |
Line 53: | Line 53: |
用一点是一点咯 | 用一点是一点咯 |
Line 58: | Line 58: |
基于接口开发 可重用 \ 可维护 |
基于接口开发 可重用 \ 可维护 |
Line 62: | Line 62: |
COM XPCOM |
COM XPCOM |
Line 68: | Line 68: |
Zope Component Archetecture? Python Component Archetecture! |
Zope Component Archetecture? Python Component Archetecture! |
Line 71: | Line 71: |
------------------------ | |
Line 72: | Line 73: |
------------------------ | |
Line 74: | Line 76: |
数据为中心 编写函数操作数据 数据在函数之间传递 复杂难维护! |
数据为中心 编写函数操作数据 数据在函数之间传递 复杂难维护! |
Line 80: | Line 82: |
封装数据和操作 更容易维护 噩梦: 扩展新功能... |
封装数据和操作 更容易维护 噩梦: 扩展新功能... |
Line 85: | Line 87: |
ZCA核心功能! 瘦的Model 通过Adapter来扩展 |
ZCA核心功能! 瘦的Model 通过Adapter来扩展 |
Line 92: | Line 94: |
投影仪? 视频 + 电源 -> 投影 |
投影仪? 视频 + 电源 -> 投影 |
Line 96: | Line 98: |
一: 提供使用接口定义组件的方法 二:注册组件之间的接口关系 三:查询满足某个接口关系的组件 |
一: 提供使用接口定义组件的方法 二:注册组件之间的接口关系 三:查询满足某个接口关系的组件 |
Line 102: | Line 103: |
单子: 电源 单子:数据库连接 工具 Utility: 适配空 Utility: 得到实现某接口的对象 |
单子: 电源 单子:数据库连接 工具 Utility: 适配空 Utility: 得到实现某接口的对象 |
Line 109: | Line 109: |
1. 订阅适配 例: 多重的数据校验 2. 事件处理器 Observer模式 |
1. 订阅适配 例: 多重的数据校验 2. 事件处理器 Observer模式 |
Line 120: | Line 119: |
更方便各个模块独立开发 方便测试 可重用! 提供了实践设计模式的简单途径 |
更方便各个模块独立开发 方便测试 可重用! 提供了实践设计模式的简单途径 |
Line 128: | Line 127: |
如果世界本来就简单呢? 但世界本来就复杂啊! |
如果世界本来就简单呢? 但世界本来就复杂啊! 显卡? PCI -> VGA 网卡? PCI -> 网线EIA/TIA 568B 电源? 220V -> 9V 接口! Interface 适配, 一个接口 -> 另一个接口 多适配, 但世界本来就复杂啊! |
Line 136: | Line 148: |
repoze.tm repoze.who repoze.vhm repoze.urispace repoze.errorlog repoze.profile repoze.debug deliverance Beaker |
repoze.tm repoze.who repoze.vhm repoze.urispace repoze.errorlog repoze.profile repoze.debug deliverance Beaker |
Line 148: | Line 159: |
1. 复杂的分裂为简单 2. 融合各个简单个体 |
|
Line 149: | Line 162: |
1. 复杂的分裂为简单 2. 融合各个简单个体 显卡? PCI -> VGA 网卡? PCI -> 网线EIA/TIA 568B 电源? 220V -> 9V 接口! Interface 适配, 一个接口 -> 另一个接口 多适配, 但世界本来就复杂啊! 分解之... 手术刀:WSGI WSGI的时代已经到来... repoze.tm repoze.who repoze.vhm repoze.urispace repoze.errorlog repoze.profile repoze.debug deliverance Beaker 因此,WSGI让: 1. 复杂的分裂为简单 2. 融合各个简单个体 |
:status: 今天牙疼,冒着牙疼讲课,值得鼓励不。。。我半边脸都是肿的,发现没。 Junyong Pan:: Junyong Pan <[email protected]> reply-to [email protected] to [email protected] cc "Python.cn@google" <[email protected]>, CPUG-华东南用户组 <[email protected]>, 哲思讨论区 <[email protected]>, "TopLanguage]列表" <[email protected]>, [email protected], 金山蟒营 <[email protected]>, [email protected] date Sat, Sep 20, 2008 at 18:06 subject [ZPyUG:874] Re: [ann][会课]ZPyUG 08.03 合OpenSourceCamp 广州~总第31次 .. contents:: :depth: 3 ====================== 从 组件架构 到 WSGI ====================== Python: 简单的美 我们喜欢Python ! 我们也喜欢, Django, Pylons 都很简单 那么 Zope !! 大家伙 太复杂! 如何开发一个大型系统? 很严肃 ... 面向对象? 对象耦合、重用问题... 20多种设计模式... 很难、很专业! MVC轻量级框架 用一点是一点咯 我们缺少什么? 组件开发框架! 基于接口开发 可重用 \ 可维护 他山之石: COM XPCOM 我们拥有什么? ZCA Zope Component Archetecture? Python Component Archetecture! ------------------------ 回顾... ------------------------ 一:过程式 数据为中心 编写函数操作数据 数据在函数之间传递 复杂难维护! 二:面向对象 封装数据和操作 更容易维护 噩梦: 扩展新功能... 三:适配器模式 Adapter ZCA核心功能! 瘦的Model 通过Adapter来扩展 一切皆适配! 看看现实生活中的适配器多个接口 -> 新的接口 投影仪? 视频 + 电源 -> 投影 ZCA做什么? 一: 提供使用接口定义组件的方法 二:注册组件之间的接口关系 三:查询满足某个接口关系的组件 如何表现单子模式? 单子: 电源 单子:数据库连接 工具 Utility: 适配空 Utility: 得到实现某接口的对象 高级的适配应用 1. 订阅适配 例: 多重的数据校验 2. 事件处理器 Observer模式 就这些了... 到底用起来怎么样? 设计模式进入天人合一境界 更方便各个模块独立开发 方便测试 可重用! 提供了实践设计模式的简单途径 反思: 真的需要ZCA吗? 复杂系统的存在,是ZCA的根基 如果世界本来就简单呢? 但世界本来就复杂啊! 显卡? PCI -> VGA 网卡? PCI -> 网线EIA/TIA 568B 电源? 220V -> 9V 接口! Interface 适配, 一个接口 -> 另一个接口 多适配, 但世界本来就复杂啊! 分解之... 手术刀:WSGI WSGI的时代已经到来... repoze.tm repoze.who repoze.vhm repoze.urispace repoze.errorlog repoze.profile repoze.debug deliverance Beaker 因此,WSGI让: 1. 复杂的分裂为简单 2. 融合各个简单个体 .. macro:: [[PageComment2(nosmiley=1, notify=1)]] .. macro:: -- ZoomQuiet [[[DateTime(2008-09-21T15:38:10Z)]]]