处理发送到WCF 3.5的XML的最佳方法是什么

时间:2012-11-14 10:21:13

标签: wcf .net-3.5 xml-parsing

我必须在3.5中开发WCF应用程序。输入将以XML的形式发送,响应也将以XML的形式发送。 ASP.NET应用程序将使用WCF并以XML格式发送/接收数据。

现在,根据我的理解,当从ASP.NET应用程序中使用WCF时,我们只需添加对服务的引用,创建服务的对象,将所有必需的数据(WCF中的数据成员)打包到输入中对象(数据契约的对象)并调用必要的函数。

事实上,ASP.NET应用程序是由一个单独的一方开发的,他们一心想要以XML格式接收和发送数据。我可以从中看到的是,WCF将XML字符串(单个数据成员字符串类型)作为输入,并发送XML字符串(同样是单个数据成员字符串类型)作为输出。我之前已经创建了WCF应用程序,当jQuery ajax调用它们时,请求和响应以XML / JSON格式发送出去。在这些情况下,XML标记会自动映射到定义的不同数据成员。

在这种情况下我应该采取什么方法?我应该只是将一个字符串作为输入(基本上是XML字符串),或者是否有任何方式WCF / .NET 3.5将自动将XML标记映射到请求和响应的数据成员,我不需要单独解析XML字符串?

2 个答案:

答案 0 :(得分:1)

简而言之,没有。

但是,您可以“封装”自己的DataContractSerializer实例,以将实际对象反序列化/序列化到调用者想要的XML字符串中。然后,您仍然可以自由地在您的末尾编写数据合同类型,这反映了调用者想要使用的数据类型。

但是,如果他们希望您能够将其纳入服务的WSDL中,那么他们就会咆哮错误的树 - 您需要单独发布这些类型的模式(您可以使用{ {1}}这样做。)

另一方面 - 深深地令人不安的是,这些人希望您开发一个简单地浏览XML字符串的WCF服务。鉴于WCF无论如何都将使用XML作为消息格式,所有这些XML都必须以裸(编码或CDATA)文本的形式发送,因此不会对XML进行消息级验证。无论提供的XML字符串是否为gobbledegook,您的代码都将始终收到请求。这太令人难以置信了。

答案 1 :(得分:0)

在正常配置中,WCF将通过XML发送数据,因此您无需做任何事情。据我所知,该派对有一些string文字与XML,并希望直接传递给你,他们想直接从你那里收到XML。发送由XML包装的XML数据会相当尴尬。这样,您的服务代码就必须解析该XML,而不是直接使用对象图。我会给他们指责,并告诉他们,如果他们想直接使用XML而不是他们的问题。他们试图让这成为你的问题,这是不公平的。你只要坚持良好的发展实践。