大家好,这个帖子我打算根据项目的进展不断添加项目过程中碰到的问题,而在这里,就先抛开商业的一些需求,纯从技术上讨论架构及实现,以及可能的风险。下面是对项目的描述。
首先,这是一个管理软件,用于软件公司的。就是说,是为某软件公司开发的软件。 第二点:这是一个需要插件体系的B/S软件,需要通过一些简单配置去实现新功能(包括工作流,但不仅是工作流) 第三点:为了追求易用性,因此需要在B/S中实现单机程序的风格页面,因此可能会包含大量组件,大量复杂页面展示逻辑。 第四点:需要分布式部署 第五点:在特殊需求下,需要在网页内调用一个富客户端完成工作,而客户可以接受的唯一安装的东西是JVM,因此这个软件不需要其他的客户端 第六点:客户的办公室分布在多个城市,需要高速响应用户的需求,抛开网络问题,需要在客户每个城市放上一台或多台服务器。 第七点:在线人数会非常大,因此需要可以横向扩服务器。同时需要较快的访问速度。 第八点:系统大部分地方对数据的查询与写入是二比一的比例,或者说:有很频繁的更新操作 第九点:系统对事务要求较高,因为有财务,还有成本估算等模块,因此不允许垃圾数据的存在,并且事务要求是全局的。
这是简单的几条,下面分别描述几个典型的模块: 1.消息系统。 需要一个完善的消息系统,支持从Email到RSS,站内消息的模块,同时也需要支持手机短信,以及未来可能需要的一些通知方式。
2.工作流系统 需要自定义的工作流,并且工作流需要实现的流程是跨地区的,比如有的流程在一个城市,另一个流程在另一个城市,流程之间可以轮转。
3.在线的绘图、会议 这种地方需要实现在页面内绘图,如果需要,允许使用客户端(但不需要安装,现在考虑的是JavaWebStart)
4.IM,(要求也是在线的) 可以集成MSN和YAHOO,同时自己还需要维护内部的账户(就是自己开发IM,用户如果需要,可以同时聊MSN,就像Gaim那样)
5.WebService支持 需要公开一部分WebService供客户的客户去调用,这里有大量只读的,部分需要进行数据信息交流的
6.SSO 把过去的一些系统也集成起来,一起登录(现在还不清楚是谁集成谁)
7.分布式部署(这是我们经验最不足的地方) 为了访问速度可以快一些,虽然有核心的服务器,但希望客户的不同办公区域都各放上一台服务器对某个地区提供服务。而客户的不同办公区域在不同的城市。而各地方的业务逻辑基本上是相同的,因此,这个部分的架构可以多讨论一下。
在这方面,还有一些细节需求:中心服务器是PostgreSQL或者Oracle,而为了速度,也许可以在客户端的服务器上跑一个简单的MySQL对某些数据进行缓存。
8.关于业务复杂度 在这里我没法把复杂度描述出来,不过的确是相当复杂,涉及财务、时间管理、项目管理、成本、风险等各种东西,因此业务相当复杂。
上面是一些典型的模型,大家对于这种项目,有什么好的技术建议?随着项目的进行,我也把一些问题摆上来,与大家的方案进行对比。这个项目现在还在考察阶段,估计过了年才能够开始。
项目会跑在Solaris上,不排斥Java EE 5的技术,可以使用新的应用中间件。
欢迎大家讨论。