SeaSide/Magritte 与 Zope/CMF 的比较

除了 Continuation这一点区别外, SeaSide 和 Zope 很像。
而 Magritte 相对于Seaside的关系就有点类似 CMF 与Zope的关系。

Seaside与Zope的相似点:

1. 两者都是web应用服务器,都可以独立运行,且自带对象持久层
Zope使用 Zodb对象数据库,而seaside则把对象直接就可以smalltalk虚拟机的镜像中, 同时也可以像Zope那样用对象型数据库 GOODS (Generic Object Oriented Database System)

2. 两者都可以在页面上进行配置管理
zope有管理界面,可以查看编辑服务器中的各种对象,而seaside 更加强大,不单可以配置应用,更可以直接在页面上查看所有类的源代码,直接在页面修改,还可以看到当前执行环境中各个对象的内部状态,也可以直接修改。对于调试的支持很强大。

3. 对象的集合都用 OrderedCollection/Ordered List

4. Magritte 和 CMF 都是描述性的自动化工具,对一个对象的各个变量,添加描述语句,自动生成创建表单等。
例如,一个Host对象,包含 hostName, ip , status 等属性,直接在class 的定义中添加两个描述函数:

descriptionHostName
	^ MAStringDescription new selectorAccessor: #hostName;
		 label: 'host name?';
		 priority: 30;
		 default: '';
		 yourself

descriptionIP
	^ MAStringDescription new selectorAccessor: #ip;
		 label: 'IP:';
		 priority: 30;
		 default: '192.168.1.0';
		 yourself

descriptionStatus
	^ MASingleOptionDescription new selectorAccessor: #status;
		 label: 'status:';
		 priority: 30;
		 default: 'alive';
		options: #('alive' 'down');
		 yourself

然后即可通过如下语句自动生成一个创建表单:

createNewHost
	| host| 
	host := self call: Host new asComponent addValidatedForm.
	host ifNotNil: [self items add: host]
	

对于输入参数的检查,以及返回信息等,都可以自动化的搞定。

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

杭同学

杭同学 发力为seaside加上rest式样的url支持吧。。

程序员和歌唱家 终于不在顶上飞着了。。

把那东西去掉后,立

把那东西去掉后,立刻出现一堆spam回复,真没辙