作为促进横向应用程序扩展的解耦过程的一部分,我们正在慢慢地将应用程序的无状态部分分配到单独的服务中,这些服务要么在同一个AWS IIS实例上提供,要么分解为新的实例。他们需要。
很明显,构成Web服务的某些服务是解耦的理想选择。但是,我不确定WCF REST调用是否是彼此通信的最佳方式。
通过WCF在托管应用程序中提供组件间通信的最佳解决方案是什么?目前对服务没有框架限制,因此任何.net都可以。
答案 0 :(得分:1)
只有当您从一个您无法控制并且需要提供标准接口或正在通过必须使用http协议的网络上调用的客户端调用您的服务时,休息才有用。
如果您的系统中您的客户端由您控制并且可以使用任何机制来调用该服务,那么请使用更高效的通信系统。如果您使用WCF,您可以使用net.tcpip协议,它将更快(或WWS甚至更快)或整个生猪并使用协议缓冲区,thrift或其他RPC来获得最佳性能。
我还会将这些作为专用服务运行在IIS之外,这样它们就不再依赖于整个Web基础结构。然后,您可以将它们部署在任何盒子上并加强它们而不会产生“单一文化”风险,或者在c ++中重写它们以提高效率。
答案 1 :(得分:1)
如果您处于完整的.NET环境中,请使用不带REST的WCF,以便客户端可以轻松创建本地类引用,并且可以轻松地通过Web服务层进行通信。理想情况下,如果您真的需要最佳解决方案,请将服务公开(并使用)为net.tcp绑定。
通过WCF公开REST(ful)端点以供Web客户端使用,其中涉及XML和/或JSON。
WCF的最大好处是您可以在相同的合同(接口)上公开多个端点,因此您的.NET中间层可以通过一个端点公开,而其他服务可以通过Web端点(例如webHttpBinding)公开需要它的客户。