c# - .NET 2010 和任何类型的客户端之间的 WCF

标签 c# java wcf

我对使用 WCF 完全陌生,但已经被安排到一个需要它的项目中。虽然没有作为要求给出,但我希望该服务能够与任何客户端无缝协作,无论它是用什么技术编写的(例如 Java)。

基本上,客户端会向我发送一个 XML block ,我将对其进行验证和处理。如果一切顺利,我将返回一个包含 2 个字段(退出代码和消息)的 XML 文档。

如果我使用 DataContracts(具有 1 个只写属性和 2 个只读属性),这会起作用,还是有比我看到的更多的东西。

非常感谢!

粘土

最佳答案

数据合约不是“解决方案”; DC 是一种可能的消息序列化方法。是否要使用 DC 取决于 XML 必须是什么样子或可以是什么样子,以及您想要或需要如何从程序内存中的对象映射到消息(xml 文档或片段)。

特别是,如果您想要或需要消息中的 xml 属性,那么 DataContracts 可能不是最佳选择。

DC可以支持这种输入消息:

<request>
  <flavor>7</flavor>
  <param>eiueuie</param>
</request>

注意所有数据都存储为 xml 元素。 DataContract 不适用于此类消息:

<request flavor='7'>
  <param>eiueuie</param>
</request>

...其中任何消息数据都存储在 xml 属性中。如果您想使用 XML 属性,那么您可能需要使用 XML 序列化程序。如果你不关心其中一种方式,那么 DC 可能就没问题。

但是,Xml 序列化程序无法将私有(private)字段或属性映射到 XML 元素,而 DC 可以。因此,如果您的对象模型需要这样做,那么您不能使用 XML Serializer,而应该使用 DC。

要了解有关 DC 和 XMLS 之间权衡的更多信息,read this .

<小时/>

话虽如此,是否使用 DC 的决定只是设计的一部分。您还需要决定是否需要完整的 SOAP Envelope 支持(允许消息签名等),或者是否需要更简单的“REST”消息格式(可能更适合称为“普通旧 XML”)。

然后还有实例化、托管和激活(使用 IIS 还是自托管?)、日志记录/审核、安全性(身份验证和授权)等。

因此,WCF 可以为您工作,适用于任何类型的客户端,但选择是否使用 DataContracts 只是难题的一小部分。

关于c# - .NET 2010 和任何类型的客户端之间的 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5852274/

相关文章:

java - Spring Cloud Gateway - 修改全局后置过滤器中的响应正文

java - main(String args[]) 不是动态数组吗?

c# - 使用C# Poly框架进行Wcf重试,哪些异常值得重试?

wcf - 找不到引用契约(Contract)的默认端点元素

c# - 在 Microsoft.Web.Administration.Application 对象上配置 SSL?

c# - 派生的 C# 接口(interface)属性是否可以覆盖同名的基本接口(interface)属性?

java - java中new对象的{}是什么?

c# - 通过 HttpWebRequest 调用 WCF 服务时出现 HTTP 错误 400

javascript - 在 ASP.Net Core 中使用 SharedLocalizer 和 javascript

c# - AuthorizeAttribute with JWT Token- Authentication in .NET Core 2.0