初学Web Service,问题可能很幼稚,请谅解.....1. 如果Web Service 传入和返回的参数为自定义对象类型,那么客户端引用的时候,怎么使用这个对象啊?是否需要提供Web Service的那一方提供这个对象的代码给使用者啊?如果使用者是使用JAVA语言的?怎么处理?2. Web Service 在使用的时候,一般都是添加Web 引用和用JS解析吗?还有什么其他的常用方式吗?3. Web Service在添加引用的时候是使用的SOAP吧?那什么时候使用Http GET/POST 啊?还是基本不使用后两者?这三者有什么区别呢?4. Web Service在使用时如何注意性能问题?5. 如果客户端在请求一个Web Service的时候一直处于请求状态,就死在那了,客户端应该如何进行这种异常处理?谢谢!!!!!!!!!
本节阐释可以给 Web 服务方法传递和从 Web 服务方法返回各种数据类型。由于 XML Web 服务实现建立在 XML 序列化结构之上,因此它支持相当多的数据类型。下表列出了在使用 SOAP 协议(例如,使用由 Web 服务描述语言工具 WSDL.exe 生成的代理)时 Web 服务方法支持的数据类型。 值 说明
基元类型 标准基元类型。 受支持的基元类型的完整列表是 String、Char、Byte、Boolean、Int16、Int32、Int64、UInt16、UInt32、UInt64、Single、Double、Guid、Decimal、DateTime (与 XML 的 timeInstant 一样)、DateTime(与 XML 的 date 一样)、DateTime(与 XML 的 time 一样)和 XmlQualifiedName(与 XML 的 QName 一样)。
枚举类型 枚举类型,例如“public enum color { red=1, blue=2 }”
基元数组,枚举 上述基元类型的数组,如 string[] 和 int[]
类和结构 具有公共字段或属性的类和结构类型。 公共属性和字段已序列化。
类数组(结构) 上述类型的数组。
数据集 ADO.NET }数据集类型(有关示例,请参阅下一节)。 数据集也可以字段的形式出现在结构或类中。
注意:Microsoft Visual Studio .NET 和 XSD.EXE SDK 实用工具支持数据集具有强类型。这些工具生成一个类,该类从数据集继承以产生 DataSet1,并添加若干特定于具体某个 XML 架构的方法/属性/其他对象。如果您传递数据集,XML Web 服务始终将架构与数据(这样它就知道您正在传递的表和列)及其类型(如 int、string 类型)一起传输。如果您传递数据集的一个子类(如 DataSet1),则 XML Web 服务假定您正在构造函数中添加表/列,并假定这些表 /列表示您的架构。
数据集数组 上述类型的数组。
XmlNode XmlNode 是 XML 段在内存中的表示形式(类似轻量 XML 文档对象模型)。例如 “<comment>This is<b>pretty</b> neat</comment>” 可以存储在 XmlNode 中。可以将 XmlNodes 作为参数传递,这些参数将添加到以 SOAP 兼容方式传递到 XML Web 服务的 XML 的其余部分(其他参数)。返回值同样如此。这使您可以传递或返回结构随调用改变的 XML,或者可能不知道正在传递的所有类型的 XML。XmlNode 也可以字段的形式出现在结构或类中。
XmlNode 的数组 上述类型的数组。
返回值:
不论是使用 SOAP 还是 HTTP GET/POST 来调用 XML Web 服务,返回值都支持上述所有类型。 参数:当使用 SOAP 协议时,按值参数和按引用参数 (in/out) 都受支持。按引用参数可以沿两个方向发送值:向上发送到服务器和向下发送回客户端。当使用 HTTP GET/POST 将输入参数传递给 XML Web 服务时,只支持一组有限的数据类型,并且它们必须是按值参数。HTTP GET/POST 参数支持的类型在下面列出:
类型 说明
基元类型(有限) 大多数标准基元类型。受支持的基元类型的完整列表是 Int32、String、Int16、Int64、Boolean、Single、Double、Decimal、DateTime、UInt16、UInt32、UInt64 和 Currency。从客户端的角度看,所有这些类型都转换为 string。
枚举类型 枚举类型,例如“public enum color { red=1, blue=2 }”。从客户端的角度看,枚举变成每个值都有静态常数字符串的类。
基元数组,枚举 上述基元类型的数组,如 string[] 和 int[]
可以用异步调用web service来解决这个问题
如果在.net与其他语言之间,就比较麻烦了,需要自己去分析,然后进行转化。
如果你想看这部分如何实现,可以查看引用后生成的reference.cs文件。
自定义对象类型客户端需要引用
5. 如果客户端在请求一个Web Service的时候一直处于请求状态,就死在那了,客户端应该如何进行这种异常处理?如果数据量大的话,可以异步调用web service。