0

我必须在 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 字符串?

4

2 回答 2

1

简而言之,没有。

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

但是,如果他们希望您能够将其加入服务的 WSDL,那么他们就找错了树——您需要分别发布这些类型的模式(您可以使用XsdDataContractExporter来做到这一点) .

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

于 2012-11-14T10:50:32.430 回答
0

在其正常配置中,WCF 将通过 XML 格式发送数据,因此您无需对此进行任何操作。据我了解,该方有一些string带有 XML 的文字,并希望将其直接传递给您,并且他们希望直接从您那里接收 XML。发送由 XML 包装的 XML 数据会很尴尬。这样,您的服务代码将不得不解析该 XML,而不是直接使用对象图。我会给他们一根手指,告诉他们是否想直接使用 XML,而不是他们的问题。他们试图把这个问题变成你的问题,这是不公平的。您只需坚持良好的开发实践。

于 2012-11-14T10:58:40.387 回答