banq请进,我发现你的JdonSD与我的openis非常类似
我发现我的很多设想在你的JdonSD中都能找到对应的思路,因此贴出我的openis文档,希望你与你交流。
openis 系统开发文档(1)
系统的历史、目标与方案的选择
1.0版
2004-01-16
庄表伟
一、历史
1、PHP版本,最初的试验
在2000年6月左右,我开始使用PHP为公司开发门户网站,当时有一个最初的设想,
来源于各种各样的“栏目”,在一个门户网站中,存在各种各样的栏目,每一个栏目都
有不少的文章,栏目还包括子栏目,子栏目下也可以 包括不少的文章。以往的设计
都是为不同的栏目设计不同的表,定下不同的字段,为了这些不同的表和字段写不同
的程序。于是我就考虑,能不能只用两个表来表示这所有的信息,栏目表、内容表。
无论哪个栏目的内容,都放在一个表里,这些内容的不同的字段,我通过一个包含了
各种冗余字段的内容表,来存放不同的内容。这样的设计当然是不符合数据库设计与
经典的软件开发的思路的。当时也遭到了一些反对。但是这样的好处就是,我可以写
一个统一的访问栏目与内容的函数层,整个网站的开发,不再需要考虑数据库结构的
设计,也不再需要写不同的数据库访问程序,项目的焦点,就直接集中于表现层,开
发的进度大大加快。至于系统的效率,当时确实没有考虑。
2、Java版本,命名为iMIS
在具体的应用中,我发现,不但栏目需要加子栏目,内容也可能需要加子内容。比
如BBS中,栏目就是板块,帖子就是内容,但是每一个帖子也可以有多个跟帖。不但栏
目是树状的,内容也应该是树状的。另外就是相关性,某一篇新闻的相关新闻,也需
要有所记录。
于是在新的开发项目中,我将栏目与内容统一命名为节点(Node)。 每个节点都可
以跟子节点。节点与节点的区别就是节点类型的不同。不但内容发布的信息是节点,
用户群组与 用户也是节点,产品类别是节点,具体的产品也是节点。只要能够想到
的信息,都是某种节点。节点与节点的 关系也有很多种,比如厂商节点与产品节点
存在“生产”关系,新闻节点与新闻节点存在“相关”关系,用户节点 与内容/栏目节点
存在“权限”关系等等。
这个系统被命名为iMIS,也就是集成管理信息系统的意思。这其中含义包括四个方
面“数据集成”,“应用集成”,“管理集成”,“界面集成”。但是这个系统并没有完成他
的命名所预定的目标,就已经完成了当时需要开发的项目的目标:)在公司来说,就不
再支持后续的开发了。
3、openis,一个全新的开始
一个全新的系统,不与某个具体的项目挂钩--虽然与具体的项目挂钩能够得到公
司的支持。2004-01-10开始。
二、目标
1、提高开发速度
最重要的目标就是提高开发速度,终极的目标是系统对于用户来说是“立等可取”的。
开发的过程变成修改的过程,而对于系统的修改成为常态。使得软件工程师与客户之间
能够直接交流,不再经过咨询人员的“低效率翻译”,也不用“UML”之类的高科技使用户
望而生畏,而是提供一种双方都能直接理解的需求定义的方式。
2、降低学习成本
无论是软件公司,还是使用软件的政府与企业,都不需要更多的学习,而是能够通过
一些简单的讲解,就能理解和应用。
3、规范开发流程
通过使用openis,在软件公司实现规范的,合理的,科学的开发流程,在清晰定义的
结构中,每个人都能明白自己的任务和目标。
4、提供整体方案
一方面在openis能够覆盖的范围内(Web上的管理信息系统),各种项目都能在一个
整体方案中得到实现。
另一方面,通过openis,能够整合现有的各种应用,进而对于用户显示出一个整体。
5、不断提高系统的性能
性能不是最重要的选择,但是必须在openis的开发过程中,不断提高。
三、方案的选择
1、同时支持java与.NET
java程序员与.NET程序员,都需要一套快速开发平台。
2、java而不是j2ee
j2ee华而不实。
3、ASP.NET而不是ASP
ASP对于扩展性的支持,远不如ASP.NET,另外C与java的类似性,也是选择.NET的
原因。
4、jsp+taglib≈C#+ASP.NET
ASP.NET的服务器控件是一种非常好的Web开发方式,jsp+taglib,能够基本实现类
似ASP.NET的服务器控件。
5、数据库作为主要存储方式
有很多人试图开发自己的存储方式与算法,但是这不划算,而且不太可能超过数据库
的性能。
6、提供一套完整的对象模型
这套模型目前要能够支持信息发布,内容管理,工作流,事务处理,以及版本控制。
而且在java与.NET中,应该用法一致。