从ASP.net Web服务返回和发送数据

时间:2009-12-10 16:12:55

标签: c# asp.net web-services

目前,我们有许多Web服务,当我们向他们发送数据时,我们将其作为字符串发送,这是一个XML块,Web服务解析并完成一些工作。

类似地,当我们需要来自Web服务的数据时,我们返回一个字符串,该字符串又是客户端应用程序解析的XML块。

这样做是否有缺点。我们还应该返回序列化为xml的类型吗?

JD

5 个答案:

答案 0 :(得分:2)

如果您将XML作为字符串发送并将其作为字符串返回,那么您也可以使用REST。

Web服务的重点在于为您处理XML序列化和反序列化(编组/解组),因此只需传递复杂类型,或将Request对象作为输入并返回Response对象。

你可以毫不费力地打字。

答案 1 :(得分:1)

在使用这种类型的Web服务时,我更喜欢序列化方法。但是,您可以查看WCF,因为它提供了许多优于ASMX Web服务的优势。

答案 2 :(得分:1)

一些缺点:

  • 为了调用Web服务,客户端需要知道作为参数传递的XML的结构以及为了使之有意义而返回的XML的结构
  • 您正在执行反映性能的双序列化/反序列化

答案 3 :(得分:1)

我之前为web服务做过xml输入/输出方法。当我这样做时,尝试参数传递的“covenant”模型。它整体上做得非常好,使得事情很容易实现和修改。

我遵循的实现是为我的输入/输出xml创建模式,然后使用xsd生成用于序列化的类。所以在我的Web服务中,我只使用强类型对象并序列化到/从xml来处理实际的请求和响应。

一些专业人士

  1. 通过在参数架构中创建新版本的命名空间,可以轻松修改入站和outboud参数。因此,您永远不必更改客户端调用的Web方法(它们只是更改它们处理输入和输出的方式,无论如何)
  2. 提供向后兼容性 - 您发送1.0命名空间请求,并且您可以获得1.0命名空间响应。
  3. 您可以针对架构验证输入xml,并在对象类型中添加其他验证。
  4. 一些缺点

    1. COM有相同的修订版本问题(你可以很容易地找到你的Web服务参数有很多不同版本的地方,什么时候可以完全摆脱它们?)
    2. 序列化可能会对性能产生影响。对于我的网络服务来说,这并不是一个巨大的影响,但是你的网络服务可能会有不同的吞吐量/需求。

答案 4 :(得分:0)

与基于SOAP的Web服务不同,没有"官方" RESTful Web API的标准。这是因为REST是一种架构风格,而SOAP是一种协议。尽管REST本身并不是标准,但大多数RESTful实现都使用HTTP,URI,JSON和XML等标准。 Check detail here