2012-11-14 121 views
0

我必须在3.5开发一个WCF应用程序。输入将以XML的形式发送,响应也将以XML的形式发送。 ASP.NET应用程序将使用WCF并以XML格式发送/接收数据。根据我的理解,现在,当从ASP.NET应用程序中使用WCF时,我们只需添加对服务的引用,创建服务的对象,将所有必需的数据(WCF中的数据成员)打包到输入对象(Data Contract的对象)并调用必要的函数。什么是处理XML发送到WCF的最佳方式3.5

恰巧ASP.NET应用程序正在由一个单独的开发团队开发,并且他们正在以XML格式接收和发送数据。我可以从中看到,WCF将把XML字符串(单个数据成员字符串类型)作为输入,并发出一个XML字符串(同样是一个Data Member字符串类型)作为输出。我早些时候创建了WCF应用程序,当它被jQuery ajax调用使用时,请求和响应以XML/JSON格式发送出去。在这些情况下,XML标签会自动映射到定义的不同数据成员。

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

+0

从我所知道的情况来看,你处于为尚未写入的客户开发服务的幸运位置。我会正常使用DataContracts,然后将它们交给一个自动生成的WSDL文档以通过'svcutil'运行。他们可以感谢你让他们的工作更容易后来:)我一直在这个公式的客户端对*服务*,其单个调用接受并返回一个字符串参数编码为XML,必须手动解码。所有包裹在SOAP信封中:P – shambulator

+1

通常人们以这种方式指定Web服务或客户端,因为他们实际上并不了解他们正在使用的技术。我对这种事感到非常强烈 - 这是一场血腥的闹剧! –

回答

1

总之,没有。

但是,您可以'壳''DataContractSerializer自己的实例来反序列化/序列化您的调用者想要的XML字符串的实际对象。然后,您仍然可以自由地在您的末端写入数据协定类型,以反映调用者想要使用的那些类型。

但是,如果他们希望您能够将其纳入服务的WSDL中,那么他们会吼出错误的树 - 您需要分别发布这些类型的模式(您可以使用XsdDataContractExporter要做到这一点)。

另一个说明 - 这是深深令人不安的是,这些家伙希望你开发一个WCF服务,它只是简单地夹住XML字符串。鉴于WCF将使用XML作为消息格式,所有这些XML将不得不作为裸体(编码或CDATA)文本发送,因此不会对XML进行消息级验证。无论提供的XML字符串是否为gobbledegook,您的代码都会收到请求。这非常令人难以置信。

0

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

相关问题