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



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

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

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

在这种情况下,我应该采取什么方法?我应该只接受一个字符串作为输入(基本上是XML字符串),还是WCF/.NET3.5可以自动将XML标记与请求和响应的数据成员映射,并且不需要单独解析XML字符串?

简而言之,没有

然而,您只需"shell"自己的DataContractSerializer实例,就可以将实际对象从调用方想要的XML字符串反序列化/串行化。然后,您仍然可以自由地在您的端编写数据契约类型,这些类型反映了调用者想要使用的类型。

然而,如果他们希望您能够将其输入到服务的WSDL中,那么他们就大错特错了——您需要单独发布这些类型的模式(您可以使用XsdDataContractExporter来实现这一点)。

另一点是,这些家伙想让你开发一个只需丢弃XML字符串的WCF服务,这让深感不安。考虑到WCF无论如何都将使用XML作为消息格式,所有这些XML都必须以裸文本(编码或CDATA)的形式发送,因此不会对XML进行消息级验证。无论提供的XML字符串是否为官样文章,您的代码都将始终收到请求。这真是让人难以置信。

在其正常配置中,WCF将以XML形式通过发送数据,因此对此无需任何操作。据我所知,该方有一些带有XML的string文本,并希望将其直接传递给您,他们希望直接从您那里接收XML。发送用XML包装的XML数据会很尴尬。这样,您的服务代码将不得不解析XML,而不是直接使用对象图。我会指责他们,如果他们想直接使用XML,那就是他们的问题。他们试图把这当成你的问题,这是不公平的。您只需要坚持良好的开发实践。

最新更新