除了 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
杭同学
杭同学 发力为seaside加上rest式样的url支持吧。。
程序员和歌唱家 终于不在顶上飞着了。。
把那东西去掉后,立
把那东西去掉后,立刻出现一堆spam回复,真没辙