最近一个项目由"WinForm直接访问DB2"移植到"WinForm通过

这个命题的难点不是访问DB2,而是.NET调用

但是问题还是要解决的,期限就摆在眼前呢。经过一番调查,终于有了眉目,现在分享给大家。

首先要说明的,

1)

1-1)TestWebService.

  1. TestWebService.wsdl:definitionswsdl:typess:schemas:elements:complexTypes:elements:elements:complexTypes:sequences:elements:sequences:complexTypes:elements:elements:complexTypes:sequences:elements:elements:sequences:complexTypes:elements:elements:complexTypes:sequences:elements:sequences:complexTypes:elements:complexTypes:sequences:elements:sequences:complexTypes:schemawsdl:typeswsdl:messagewsdl:partwsdl:messagewsdl:messagewsdl:partwsdl:messagewsdl:messagewsdl:partwsdl:messagewsdl:messagewsdl:partwsdl:messagewsdl:portTypewsdl:operationwsdl:inputwsdl:outputwsdl:operationwsdl:operationwsdl:inputwsdl:outputwsdl:operationwsdl:portTypewsdl:bindingsoap:bindingwsdl:operationsoap:operationwsdl:inputsoap:bodywsdl:inputwsdl:outputsoap:bodywsdl:outputwsdl:operationwsdl:operationsoap:operationwsdl:inputsoap:bodywsdl:inputwsdl:outputsoap:bodywsdl:outputwsdl:operationwsdl:bindingwsdl:bindingsoap12:bindingwsdl:operationsoap12:operationwsdl:inputsoap12:bodywsdl:inputwsdl:outputsoap12:bodywsdl:outputwsdl:operationwsdl:operationsoap12:operationwsdl:inputsoap12:bodywsdl:inputwsdl:outputsoap12:bodywsdl:outputwsdl:operationwsdl:bindingwsdl:servicewsdl:portsoap:addresswsdl:portwsdl:portsoap12:addresswsdl:portwsdl:servicewsdl:definitions>
登录后复制

WSDL的代码比较长,当方法很多时,手敲代码是不太可能的。有一个巧的办法,就是也用.NET实现一个不含真正方法体的Web Serivce,然后通过http://***/TestWebService.asmx?wsdl的方法生成wsdl代码文件。

关于WSDL文件,我要说明特别说明两点:

(1)soap:address结点是声明WebService的地址,在部署时要改成相应地址;

(2)一维数组的声明类型为ArrayOfType,字符串数组为ArrayOfString。如果Type不是简单类型,则Type需要另外声明。

2).NET客户端代码

先要添加Web引用,地址为WSDL文件的Http地址。

.NET调用

  1. //初始化WebService
  2. localhost.TestWebService srv = new localhost.TestWebService();
  3. //调第一个方法
  4. string str = srv.HelloWorld();
  5. //调第二个方法
  6. string[] arry= srv.GetArray("string1","string2");
登录后复制

.NET调用

(一)

(二)

(三)

(四)若返回值需要是多张二维表时,我浅薄的以为,可以传化一组字符串数组传送,格式为

[表1行数],[表1列数],[表1列名1],[表1列名2],……[表1列名N],[表1中按行列存放的值]

[表2行数],[表2列数],[表2列名1],[表2列名2],……[表2列名N],[表2中按行列存放的值]……

[表M行数],[表M列数],[表M列名1],[表M列名2],……[表M列名N],[表2中按行列存放的值]

按顺序将上面[]中的内容串成字符串数组,效率还不错,我测试10000行240列的数据,我有现成编解代码,有兴趣的可以向我索取.


http://www.bkjia.com/www.bkjia.comtruehttp://www.bkjia.com/TechArticle最近一个项目由"WinForm直接访问DB2"移植到"WinForm通过

09-15 23:17