SaaS模式、技术与案例详解——第15章 SaaS平台的技术选型(saas模式与技术架构)
【本章导读语】
“笑嘻嘻的小猫咪,”爱丽斯问道,“请您告诉我,我应该走哪条路
呢?”“那取决于您想去何方。”小猫回答说。
________路易斯.卡罗尔,《爱丽斯漫游仙境》
“磨刀不误砍柴功”,一个好的工具可以快速地开发出一个系统,这样在时间及效率上都取得最好的优化,也降低了开发成本。不过,用什么开发工具完全取决于您公司自己。
15.1 SaaS平台选型技术基本要求
SaaS平台本身业务特殊,注册用户多,使用范围广等特点,对平台的技术框架选型也有许多要求,主要包括如下:
l 运行稳定、安全可靠,性能卓越。
l 开发快捷,并且有强大的拓展能力。
l 支持分布式部署和分布式事务。
l 支持数据交换和消息传递。
l 有较强的portal管理能力。
l 能开发比较强大,容易吸引客户的交互界面。
l 通过比较简单的设计开发,就能实现SOA架构。
l 具备强大的集成支持,如集成即时通讯等。
l 具有移动商务解决方案的开发和整合支持。
15.2 三种技术平台简析
目前IT业界上涉及的开发框架主要包括三个:domino、j2ee和.net框架,Domino有完善的权限框架体系,但网站开发(大型企业社区的建设)、软件系统集成和搜索上非常不方便,因此不太适合。
J2EE功能强大、拓展能力强,使用人员多,开源项目免费资源也很多,但大多数项目存在一定的bug和隐患,不是很稳定,需要自己投入比较大的修改成本,另外J2EE框架开发成本也不低。
.net平台功能完整,开放快捷,性能卓越,微软服务支持到位。但开源项目相对J2EE较少。
因此从技术框架选型上主要可以采用.net或者J2EE,下面对.net和J2EE做一些分析
和比较。
15.3 J2EE和.net比较
J2EE和.net是软件业界中主要的开发技术,这二种技术又各有其优势与不足,SaaS平台及应用系统该选择哪种技术,这是一个长远的技术策略问题。不象有的项目,用户一般对开发技术有要求,对使用的环境都有明确的规定。SaaS系统用户只有使用权,没有终身拥有权,用户也不会关心您是用什么语言开发的,是用什么类型的数据库。所以开发技术问题是让您决定的。
15.3.1 技术比较
我们通过一项项来比较J2EE与.net的技术如表15-1:
表15-1 J2EE和.net技术比较
主要技术 | J2EE | .net |
通信协议 | Remote Method Invocation over InternetfffffInterOrb Protocol(RMI/IIOP),XML | |
编程语言 | Java | C#,VB.net,COBOL |
运行时环境 | Java Virtual Machine (JVM) | Common Language Runtime (CLR) |
胖客户端 | Java Swing | Windows Forms |
目录服务 | Java Naming and Directory Interface (JNDI) | Active Directory Services Interface (ADSI) |
数据访问 | Java Database Connection (JDBC),Java Connectors | ADO.net |
异步消息处理 | Java Message Service (JMS) | Microsoft Message Queue |
表示层技术 | Servles,Java Server Page(JSP) | ASP.net |
中间层组件模型 | EJB,JavaBean | COM ,COM |
安全访问 | JAAS | COM Security Call Context |
事物处理 | Java Transaction Server (JTS) | Microsoft Distributed Transaction Coordinator (MS-DTC) |
开发工具 | WebGain Visual Café Borland JBuilder IBM VisualAge 等(第三方提供,规范本身没有定义) | Visual Studio.net |
易用性 | 较好 | 很好 |
扩展能力 | 很好 | 较好 |
多平台支持 | 很好 | 不好 |
多语言支持 | 就一种语言 | 很好 |
可靠性 | 较好 | 较好 |
可管理性 | 较好 | 较好 |
重用性 | 很好 | 较好 |
负载平衡 | 较好 | 较好 |
开放标准 | 很好 | 一般 |
15.3.2 性能比较
l 以Web Service为基准作比较
下图是在以Oracel9i为数据库以Windows2003为操作系统,有8个CPU的主机为软硬件的测试环境下对.net与J2EE的测试结果:
图15-1 .net与J2EE的性能测试结果
l 以Web Application为基准作比较
下图是在分布式环境下运行了24小时后对.net与J2EE的Web应用的测试结果:
图15-2 .net与J2EE的基准测试结果
l 以Web Services为基准作比较
下图是在分布式环境下运行了24小时后对.net与J2EE的Web服务的测试结果:
图15-3 .net与J2EE的服务基准测试结果
Tests XML Web Services(SOAP 1.1)performance
Tests application as SOAP server and SOAP client
性能比较
Distributed Transaction 24 Hour Benchmark
15.3.3 开发成本比较
图15-4 .net与J2EE的开发成本比较1
图15-5 .net与J2EE的开发成本比较2
15.3.4 风险比较
l 从基础平台搭建上
要构建一个稳定的java平台至少需要1到2年的时间。
Java平台现有一些开源框架,但都不太稳定,需要投入比较大的人力财力去修改。
l 从团队学习和培养上
JAVA学习和培养比.net难。
JAVA代码如果设计没做好,比.net代码维护难。
l 从架构设计上
设计一个SOA架构,采用JAVA平台比较难。
微软自己有一套体系,配置和实现SOA架构,相对简单。
l 从技术支持上
采用Java平台,免费的技术支持来源开源项目或者员工能力。
采用.net微软提供专业的技术支持和难点问题解决。
15.4 基于.net架构设计
图15-6 技术选型-NET架构
技术选型-.NET架构
l 基于.NET架构
本平台是基于微软.NET架构(包括.NET企业应用服务器、.NET开发工具)。采用Windows 2003作为服务器的体系结构;
l 开发方式
按照数据、业务逻辑、用户接口三层结构进行设计和开发;
l 开发语言及工具
ASP.net、C#、XML、XSL、DHTML、CSS、JavaScript,Sqlserver,VSS,PowerDesign;
l 服务器配置:
MS Windows 2003 、
MS SQL Server 2000 EntERPrise、
IIS 5.0。
l 数据格式
使用XML进行数据交换和文档结构化;
15.4.1 所需微软产品列表
l 开发过程
Windows 2003标准版
Sqlserver developer版本
Visual studio 2005
VS team server
Office
l 运营环境
Windows 2003服务器版
Sqlserver企业版本(初期可以用developer版)
l 其他:如atlas、asp.net2.0、IIS、windows workflow foundation等均免费使用
15.4.2 采用.net平台可能存在问题与风险
l 开发技术方面问题
目前有没有现成且功能强大,拓展性强的权限框架、工作流、PORTAL等组件提供SaaS平台使用?
目前有没有稳定又好用的.net的data Acess框架?按三层架构开发方式,我们程序员在数据层的开发工作量目前还比较大。
分布式开发技术如何实现?
表单的技术如何应用?
Webpart技术?
报表技术?
服务器间通讯或者数据交换技术?
移动解决方案开发技术问题?
数据库事务、分布式事务的支持开发框架?
l 设计性能方面问题
如何设计支持SaaS模式的权限框架?
如何设计支持SaaS模式的工作流框架。
如果进行分布式设计和部署?
PORTAL框架如何实现?
数据库如何设计,如何存储:分表还是分库?
SOA框架是否适合SaaS模式?怎么设计?
业务组件和平台的关系?如何设计才能方便扩展和管理业务组件?
如何设计才能支持集群、负载均衡?
如何制定标准使得平台可以和第三方产品快速集成?
l 安全方面问题
系统访问安全?
数据传输安全?
数据存储与备份恢复问题?
服务器安全?
商业数据安全问题?
服务器部署保证安全?
l 集成方面问题
目前公司的产品和系统采用的是domino和java平台,如gocom server、galaxy和indioffice等,我们平台的业务组件,能不能从现有系统抽取集成,有没有好的解决办法?
如果说SaaS模式是公司其他产品体系发展的一种趋势,如何把我们开发的SaaS平台和其他产品很好的结合起来,实现其他产品的SaaS模式。
l 管理方面问题
团队建设:如何快速组建高效能的.net开发团队
² 组织机构
² 工作方法
² 沟通机制
² 考核
² 学习机制
配置管理:代码文档管理?分支合并、多人修改同一文件合并等问题?
招人问题:怎么能找到SaaS方面的专家很难?
15.5 小结
本章介绍了SaaS平台的技术选型方法。通过对SaaS平台技术选型的要求,主要通过J2EE与.net的比较来说明哪种工具更适合SaaS平台的开发。