我正在寻找一个适当的框架来实现.NET中的(Web)服务层。我对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不允许,你可以转发给我任何其他可能的解决方案 - 远程处理,也许还有其他一些网络服务库?
答案 0 :(得分:1)
1)这两个属性都没有帮助你。这些属性由绑定(例如,WS-HttpBinding)解释,以确定如何实际创建消息。您将不得不编写自定义绑定来执行此操作,并且可能需要自定义序列化程序,具体取决于“请求数据”字段的结构。
2)同样,你需要编写一个自定义绑定。
快速搜索未显示任何现有的WCF GSA S2S绑定实现。
S2S现有引擎(例如S2SConnect)。许可成本可能或可能不值得花费时间来开发自己的实施。