UML软件工程组织

Delphi、.Net、Java的Web Service互通实验报告
作者:刘爱军 来源:刘爱军BLOG

一、概述

软件系统整合(或称系统集成)过程中,通过什么技术来实现功能公用、数据共享是一个首先要解决的问题,而Web Service技术是一个比较好的技术解决方案。本实验通过对Delphi、.Net(C#)、Java三种常用开发平台编写Web Service的服务器和客户端程序相互调用,以验证Web Service技术在系统整合过程中的技术可行性。

二、 实验目的

1. 确认三种常用开发平台下编写的Web Service是否可以正常调用。

2. 衡量开发Web Service的便利程度。

三、 实验描述

1. 基本方法

实验基本方法是在三个平台下分别开发一个相同的Web Service接口,然后编写三个平台下的客户端程序来分别调用Web Service接口。

2. 实验环境

操作系统:

Windows 2000pro/XPpro

Delphi:

Delphi 7, up1, IIS

.Net:

Vs.Net 2003, .Net Framework 1.1, IIS

Java:

BEA platform 8.1

3. 实验对象

实验使用物资系统数据类型进行试验,实现库管“填写出库单、库存查询”功能。Web Service服务接口名称:StoreManager,有两个方法

1) StoreObjectCollection Query(String Owner,String ProductName,String Model)

2) int Export (ExportRecord exRecord)

两个函数用到的支持类

class StoreObjectCollection {

StoreObject[] sObjectArray; // 记录数组

int Count; // 返回的记录个数

}

class StoreObject {

String Owner;

String ProductName;

String Model;

int Count;

}

class ExportRecord {

String StockOutNo;

String ProjectNo;

String WorkGroup;

String Taker;

Date OutDate;

String OperaterUser;

Date OperateTime;

String Remark;

}

四、 实验结果

使用.NET(C#)和Java(BEA platform 8.1)开发的Web Service能被任意客户端成功访问。Delphi开发的Web Service用.NET(C#)和Java开发的客户端访问失败,用Delphi自己的客户端可以成功访问。

五、 结论

这次实验代表了一般情况下的应用案例,实验表明,至少对于我们公司来说,Web Service技术在整合各个平台下的应用程序,在技术上是可行的。不过,用Delphi按照常规方法开发的ISAPI的Web Service服务器端无法被.Net和Java的客户端访问,但是这基本不会影响到公司内软件开发的过程,因为解决方法有很多,比如使用第三方的Delphi控件开发Web Service、等待Borland出补丁、使用Delphi开发Com+组件然后用微软的工具直接发布为Web Service服务等。

使用Delphi、Vs.Net和Bea platform的IDE开发Web Service的服务器端和客户端都很简单,这就不用担心会带来开发工作量上升的问题。对于新项目来说,一开始设计就考虑使用Web Service的话,开发过程与原来相比并没有增加多少工作量,只是多化了设计时间,要求设计更严谨、更详细。但是,对于已经完成的系统(BS和CS)来讲,把它改造为基于Web Service的系统基本上无法节省工作量,特别是CS系统,因为这个转变是应用系统体系架构的变化,原有系统可以重用的只能是一些功能代码和业务逻辑处理算法,这个矛盾即使不使用Web Service技术改造也同样存在,除了修改应用系统体系架构外没有其他根本解决办法。

本次实验由于时间不足,没有考虑测试Web Service的稳定性和性能。不过,从网上的各种技术资料和公司已经在用的几个Web Service的使用效果来看,这不会是问题。如果要开发对性能要求很高的系统,则属于特殊案例,应该考虑用更有针对性的特殊技术手段解决。

所以,核心技术组的建议是:

1. 开发Web Service服务器端不建议使用Delphi,除非它只为Delphi客户端服务,建议开发Web Service使用.Net Framework,因为目前普遍认为它对Web Service技术支持最好。

2. Web Service技术不应该滥用,没有必要使用时就不使用,以免增加系统复杂度。Web Service技术在简化系统部署,整合不同应用系统(特别时不同平台的系统)的服务时比较合适。

3. 设计应用系统时(BS和CS),应该多考虑面向对象,多用接口封装功能,分离表现层和业务层,这样对系统以后的整合会带来很大的效率提升。(BS系统方面应该尽快研究出一个通用框架系统,解决各个系统的功能服务互用问题,CS系统方面虽然插件系统已经支持各个系统的功能服务互用问题,但是实际开发时还在使用老的设计思路,没有提炼服务接口,今后应该多考虑用插件的公布的接口为插件内部和外部提供服务。)


版权所有:UML软件工程组织