不确定如何使用Web服务发送复杂数据

时间:2011-03-11 16:30:40

标签: c# .net web-services

我已经查看了网站上的一些问题,但是我仍然无法理解从哪里开始。

我以前从未对网络服务做过任何事情,所以请耐心等待。

我分配的当前项目是编写一个查询数据库并将数据返回给客户端的Web服务。 (在C#中使用.NET 2008编程)

到目前为止,我已经能够做基本的数据类型没有问题,但我不能100%确定从哪里去。我一直在返回一个XmlDocument类型,但我不确定这是最好的方法,甚至是正确的方法。

目前正在创建一个ASP.NET Web服务,尽管有人建议我使用WCF Web服务。

有人能说明从哪里开始吗?或者也许是指向通过webservices发送和接收大量数据的教程的链接?

编辑:到目前为止,答案很棒,但我仍然不能100%肯定如何回答。我认为网络服务将与客户端程序以及网站的组合进行交互,如果可能的话......这就是我对此的新见解。

5 个答案:

答案 0 :(得分:2)

http://msdn.microsoft.com/en-us/library/ms733127.aspx

WCF使用数据契约的这一概念 - 它为复杂对象提供序列化帮助。

答案 1 :(得分:2)

根据您发送回客户端的数据结构,我不建议使用XmlDocument作为返回类型。它会为您的回复添加大量不必要的批量。

您确实没有说明要支持的协议,但是如果您通过HTTP传输数据,那么将数据作为JSON格式的字符串发送回客户端会更好地简化它。

您可以定义您正在返回格式为JSON的复杂类型,如下所示:

[WebGet(ResponseFormat=WebMessageFormat.Json, UriTemplate="GetComplexObject/{id}")]
public MyComplexType GetComplexObject(int id){
  //do work to get your object
  return myObject;
}

如果将MyComplexType定义为DataContract,则WCF会将您的对象序列化为JSON ...

[DataContract]
public class MyComplexType{
  [DataMember]
  String Name {get;set;}
}

如果您正在寻找REST-ful服务,那么WCF可能是使用WebHttp功能的首选方法。

WCF团队使用WCF WebHttp(这是.NET 4的新手)整理了great series步骤。他们假设了一些关于web http编程的知识,但他们非常好,希望能帮助你走上正确的轨道。

我希望这有帮助!!祝你好运。

答案 2 :(得分:0)

通过xml将数据发送回客户端的最佳方式,因为几乎所有语言都知道如何处理xml文档。

如果你想要使用几乎所有可用的语言来实现你的网络服务,那么如果你想要以某种方式返回一些与语言相关的东西并不是最糟糕的。

另一个可能性是返回json对象。

答案 3 :(得分:0)

如果您决定使用WCF,可以在http://dotnetslackers.com/articles/ajax/JSON-EnabledWCFServicesInASPNET35.aspx获得一个教程。

通常,this article提供了构建发送JSON的ASP.NET Web服务的步骤。

JSON比XML更快,并且正在成为大多数新Web服务的标准。我强烈建议使用JSON.NET library进行JSON序列化。

答案 4 :(得分:0)

我使用常规ASPX.NET Web服务实现了两种方法:

  1. 在客户端和服务器上具有相同的底层对象库,并将数据从Web服务对象转换为客户端对象。

  2. 在客户端和服务器上拥有相同的底层对象库,并将数据作为数据对象的字符串表示形式传递给服务器或从服务器传递数据(通常是XML格式,但可以是JSON或其他类似格式)

  3. 我找到的第一个选项非常繁琐。即使您在服务器和客户端上具有相同的类/对象,Web服务也会声称其库版本是唯一的。即使命名空间相同,从Web服务返回的对象也会在其中的某个位置具有Web服务命名空间,因此您必须编写函数来转换它们。我知道一种方法可以解决这个问题,但这不值得付出努力,至少对我而言不是。

    第二个选项是我现在正在使用的选项。我在客户端和服务器上都有一个库。它具有从数据库获取和保存数据的对象。然后,我有通用实用程序函数,用于将对象与XML字符串串行化。当我从服务器发送数据时,我将其序列化为服务器上的XML字符串,并在客户端进行反序列化。我向服务器发送数据时反向。我还分解了大量传入/传出Web服务的数据,以减少错误和数据传输时间。

    WCF可能更好。从未使用过它。但以上就是我对标准Web服务的所作所为。