Differences between revisions 1 and 2
Revision 1 as of 2008-08-27 05:22:11
Size: 3464
Editor: ZoomQuiet
Comment:
Revision 2 as of 2008-08-27 05:22:54
Size: 3505
Editor: ZoomQuiet
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
SEE:'''[wiki:ZopeEnv Zope平台综论]'''

TableOfContents

Include(ZPyUGnav)

SEE:[wiki:ZopeEnv Zope平台综论]

Zope 组件体系

[http://www.muthukadan.net/docs/zca.html ZCA]~Zope Component Architecture 跨越思想的应用建筑基础

介绍

潘俊勇 <[email protected]>
reply-to        [email protected]
to      python-cn`CPyUG`华蟒用户组 <[email protected]>
date    Wed, Aug 27, 2008 at 09:24
subject [CPyUG:63538] Python的组件架构扩展

微软有COM组件架构,使用接口来拼装应用,很牛。 对于复杂应用,组件架构大大简化了开发过程,系统更可扩展,柔性更强。

Python上是否有类似的成熟体系?

有的,twisted在用,zope在用,还有很多知名的python软件都在用....

那就是著名的Zope Component Architecture,来自于Zope社区的一个系统,却已经在整个python社区开花结果 了。。。。

发展了若干年的宝物在这里:

http://www.muthukadan.net/docs/zca.html

(绝对不是新鲜玩意了,如果您还不知道,责任不在您,只怪zope社区广告没做好)

即便你做非web的程序,这个也是试用你的,上的例子就是基于pyGTK的。

很简单的概念(适配器、工具),却容下了各种设计模式的纷繁内容,秉承了python"大道至简"的理念。

如果你只想作python脚本级别的开发,这个您可能不那么需要ZCA;

如果您是真正的pythoner开发人员,ZCA绝对是不得不学的附加,我超强力推荐!

广告到此结束。

(如果有人想翻译上面的文章,和俺联系)

体验

Chen Houwu

Chen Houwu <[email protected]>
reply-to        [email protected]
to      python-cn`CPyUG`华蟒用户组 <[email protected]>
date    Wed, Aug 27, 2008 at 12:40
subject [CPyUG:63578] Re: Python的组件架构扩展

我补充一下:

  1. zca中的interface对接口的定义不是强制性的,而是描述性的。
  2. interface不仅具有明确定义的功能,更重要的是,它是其他技术的基础:
    1. zca提供了依赖注射和aop能力
    2. zca提供了规约式编程能力:前件、后件、不变式什么的
    3. zca提供了事件发布机制
    4. zca提供了常用设计模式
    5. 。。。。。很多,一时想不起来了
  3. zca的一个主导原则是:不要subclass,要delegate,并根据zope2的经验认为前者是造成模块重用的巨大障碍,所以整个zca

都是建立在adapter模式上的。虽然有人认为在这方面,做得太绝对化,有时候带来了不必要的麻烦,但是确实在这个框架下开发组件做到了"高内聚低耦合"。

  1. 拿zca和com比是不恰当的。com做到了语言无关,zca只是个开发框架。

学习了zca之后,再用spring.net, castle windsor之流,都是那么的看不上眼。在.net/java世界里,需要多个框架一 起解决的问题,一个zca就可以搞定,而且浑然一体、干净清爽。

觉得zca不够pythonic的人,真的应该考虑一下他每项技术要解决的问题是什么,你是否还有比它更干净的解决办法。


反馈

创建 by -- ZoomQuiet [DateTime(2008-08-27T05:22:11Z)]

PageComment2

[:/PageCommentData:PageCommentData]

ZopeComponentArchitecture (last edited 2009-12-25 07:08:53 by localhost)