【开篇】
在本系列的第一篇”“软芯片”畅想-基于Python的应用软件开发框架Softchip(一) “中,阐述了softchip应用开发框架的基本原理。本篇是本系列的第二篇。在本篇中,将通过具体的样例代码来具体展示使用softchip开发应用是怎样的一种场景,框架使用者即开发者的代码究竟会怎么写,到底会得到怎样的好处。如第一篇所言,样例代码是使用Python完成的。该样例代码可以在Python 2.6 + WinXP的环境下良好的运行。但是,考虑到本篇的主题,属于框架内范畴的softboard核心部分的实现代码暂时略去(该部分将在后续篇章中研讨 ),而只保留所有利用softboard的代码。所谓利用softboard的代码,就是指利用softchip框架编程时,开发人员需要编写的实际代码。
【说明】
为清晰地展示基于softchip框架的代码结构,本篇虚构了一个非常简单的的应用程序。这个程序进行加、减、乘方运算并打印计算结果。除框架内的softboard部分外,应用程序由三个关键的组件完成核心功能:Controller负责整体操控,Computer负责提供算术运算服务,Processor负责打印运算结果。Controller需要使用Computer的API实施计算并将计算结果以事件的形式发送给Processor,后者将其打印在控制台上。这三者就是主要的三个softchip。除此以外,根据第一篇阐述的原理,还需要一个系统集成者的角色。这个类是SoftchipApp,它负责创建softboard、三个softchip并将所有部件组装在一起,最后启动整个系统。
这个微小的应用,整体结构如下图所示:
在本样例中,大家将清晰地看到使用softchip框架后,应用程序编写方式发生了重要的质变 ,主要体现在以下几个方面:
01.每个组件都讲主要精力集中在自己的逻辑上,而不必担心与其他组件之间的耦合。
- 大家谁也不需要保持谁的句柄,即使我们正在相互利用。
-对于需要外部API支持的,就向APIBinder提出要求,APIBinder会非常体贴地替你找到你需要的API入口。
-对于自己关心的event,就向EventCenter进行订阅,到event发生时,event center自然会把事件送来。
-自己产生的event,只要很简单地丢给EventCenter就好了,谁订阅谁处理,与我无关。
02.每个组件都可以独立地编写、编译和进行模块测试。
在进行模块测试时,基于softboard机制,可以非常轻松地实施效果逼真的mock动作。
03.组件有组件的责任,集成者有集成者的责任,各司其职,在不同的layer上清晰地分工合作。
系统的”组装“过程,并不需要每个组件来操心,有专门的集成者来负责。而集成者也不需要关心具体功能,只需要plug and play即可。
【特别说明】
01. 代码样例只是为了展示softchip的使用场景而虚构的application,很小很小,只是为了展示用。
本样例只是通过一个微小的application展示一种用法。在实际的开发中,这个小的模型只能看作是一个局部的组件群 。
实际的大型应用可能是由多个组件群相互水平互联或垂直级联构成的组件群网络,因此可能存在专门为互联或级联目的
设计的api binder和event center节点。
02.由于主要目的是展示softchip的用法,没有特别地对代码的方方面面作非常深入和全面的优化,可能比较粗糙,请见谅。
03.本人对于Python的掌握也只能算是稀松平常,如有笨手笨脚或贻笑大方之处,敬请不吝赐教。
04.样例代码采用Python来实施,主要是利用了Python语言的如下天然优势:
-内建的map数据结构
-对方法地址(类似C的函数指针)的天然支持
-对方法之可变参数的良好支持
-对类多重继承的支持
-对的duck typing的支持
05.API绑定和Event分发的区别
可能已经有读者对两者产生了混淆或者觉得没有必要区分,在此稍作区分。
API绑定使得API的需求者可以直接拿到API入口,而不会由于间接调用导致包装层次层架,从而可以提高运行时的速度。
Event的分发过程可以是同步的,也可以是异步的,而绑定后的API调用原则上基本都是同步发生的(除非调用者分线程出来)。
【代码样例】
应用Softchip框架进行编程的实际样例:(Python代码)
本系列第二篇到此结束,感谢关注!
Michael
2010-04-27 晚 于上海。
注:对此系列文章感兴趣的同道,可以使用Email联络:micblues@126.com