我已经得到了需要通过WCF通信的两个应用程序服务器WCF: 称为A和B. 一个假设推值到B的存储/更新 乙想推的列表存储到一个两个WCF服务器VS与回调
在我的团队的高级程序员要开在一个我要求一个人应该是服务器,另一个应该是客户端WCF服务器和B.
另一个WCF服务器值并使用服务器回调为了避免将接口拆分为两个,避免循环依赖和重复的代码设置。他不明白。任何人都可以帮我解释他为什么他的解决方案是不好的代码?
我已经得到了需要通过WCF通信的两个应用程序服务器WCF: 称为A和B. 一个假设推值到B的存储/更新 乙想推的列表存储到一个两个WCF服务器VS与回调
在我的团队的高级程序员要开在一个我要求一个人应该是服务器,另一个应该是客户端WCF服务器和B.
另一个WCF服务器值并使用服务器回调为了避免将接口拆分为两个,避免循环依赖和重复的代码设置。他不明白。任何人都可以帮我解释他为什么他的解决方案是不好的代码?
服务应封装其他应用程序可以使用的一组功能。它所做的只是等待并响应来自其他组件的请求,而不会自行发起操作。
如果应用程序B正在存储数据,那么它当然可以作为服务提供给应用程序A.它提供了存储数据的“服务”,而不需要应用程序A担心如何或在哪里,并返回成功存储的数据。这正是WCF Services要处理的事情。
我假设应用程序A是发起请求的应用程序(除非您有未提及的第三个应用程序,其中之一必须是是发起程序)。如果应用程序A正在发起操作(例如,它具有UI,或被触发以执行一些批处理等),则不应将其建模为“服务”。
我希望帮助:)
这取决于您的标准。假设一个客户端/服务器模型,其中A是客户端,B是服务器。您声明B应该将数据“推送”到A.
如果您确实需要推送,那么您应该将B配置为双工服务器。这确实给你的带子带来了一些压力,所以如果你有一个带宽限制,这可能不是正确的选择。
如果您在A上可能会比您想要选择自己的轮询机制(可能基于计时或某种其他逻辑)延迟一段时间。
如果两者都不是选项,则可以尝试交换角色。那么,让B成为客户端和A服务器。这很直观,但它可能适合您的情况。如果您可能会延迟存储数据,请B轮询A以更改数据并保存一段时间。
如果两者都没有延迟并且bandwith有限,那么最终会得到两个WCF服务。尽管它乍一看可能看起来很傻,但请记住它们是服务而不是服务器。它确实使事情变得更加复杂,所以我会把它作为最后的手段。
之前坚持您的解决方案(看起来比较正常的,确实),检查你将能够使用绑定接受回调。保证您的应用程序始终位于同一个Intranet中? – Dan