c# - 使用WCF按照行业标准实现服务?

标签 c# .net wcf web-services messaging

我正在寻找一个合适的框架来在 .NET 中实现(网络)服务层。我对 WCF 有点熟悉,想知道是否可以按照我想要的方式对其进行自定义。

1) 系统发送/接收消息有一个行业标准,它定义了操作、使用的类型等。它是基于 XML 的。它要求所有请求/响应都包裹在一个信封中,例如:

<xxx:Message>
  <xxx:Header>
    //some header data
  </xxx:Header>
  <xxx:Body>
    <xxx:Command>
      //request data
    </xxx:Command>
    <xxx:Command>
      //request data
    </xxx:Command>
  <xxx:Body>
</xxx:Message> 

xxx:Command元素实际上标识了要执行的操作和参数,或者包含命令执行结果。
WCF 将所有内容包装到 SOAP 信封中。是否可以自定义为使用上面示例中的信封而不是 SOAP 来发送所有请求?我应该如何编码我的服务,以便正确解析所有传出和传入的消息。我应该查看 [MessageContract][DataContract] 属性还是两者?

2) 单向操作。行业标准规定服务应以“确认”消息响应,即已收到请求。我正在查看实现类似方法的单向操作 - 一旦服务器收到消息,它们就会通知客户端。我想知道,如何自定义发送的“确认”消息以符合行业标准。

如果 WCF 不允许这样做,您能否将我转到任何其他可能的解决方案 - 远程处理,也许是其他一些网络服务库?

最佳答案

1) 这两个属性都不会帮助你。这些属性由绑定(bind)(例如 WS-HttpBinding)解释以确定如何实际创建消息。您将必须编写一个自定义绑定(bind)来执行此操作,并且可能需要编写一个自定义序列化程序,具体取决于“请求数据”字段的结构。

2) 同样,您将需要编写自定义绑定(bind)。

快速搜索没有显示 WCF 的 GSA S2S 绑定(bind)的任何现有实现。

现有的 S2S 引擎(例如 S2SConnect )。许可成本可能值得也可能不值得因为必须开发自己的实现而节省的时间。

关于c# - 使用WCF按照行业标准实现服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2357975/

相关文章:

c# - 与巨大的数据流异步

c# - GC Eager 根收集

wcf - 如何维护同一个wcf服务的多个版本

c# - 连接到网络服务的 Android 应用程序 - 无法正常工作

c# - 如何从 C# 中的 pvk 文件中读取私钥?

c# - 表格未显示在 Visual Studio 2012 中

c# - 将 RTF 字符串转换为 XAML 字符串

c# - EXEC sp_spaceused 查询

c# - .NET 文件访问冲突

wcf - 部署 WCF - 需要在 SSL 站点上设置主机 header