【问题标题】:Communication of two application in same device同一设备中的两个应用程序的通信
【发布时间】:2019-10-04 07:47:38
【问题描述】:
有 2 个应用程序需要相互通信。它们都在同一台 PC 上运行。
主应用程序 (C#)
帮助应用程序 (C#) -> 从主应用程序启动
帮助应用程序将修改主应用程序使用/包含的一些数据。辅助应用程序可以是微服务吗? (对微服务不熟悉,网上查的时候看到过)
我找到了一个有用的教程,并且能够创建 WCF 双工绑定。
现在 Main Application 和 Helper Application 可以通信了。
我只是想知道这是否是一个好的解决方案(或者微服务更好??)
【问题讨论】:
标签:
rest
wcf
soap
wsdl
microservices
【解决方案1】:
帮助应用程序可以是微服务吗? (不熟悉微服务...
当然。 “微服务”只是描述基于分布式组件的网络计算的最新术语。它可以追溯到(可能更远)分布式 COM (DCOM) 和 Corba 的时代; COM+ 最后是面向服务的架构 (SOA)。 WCF 将 SOA 用作最佳实践。在实践中,SOA 和微服务之间唯一真正的区别是后者倾向于采用 HTTP-REST-JSON 作为传输/API/有效负载,而 SOA 生成是传输/有效负载中立的,但通常使用 SOAP。
我找到了一个有用的教程,并且能够创建 WCF 双工绑定。现在 Main Application 和 Helper Application 可以通信了。我只是想知道这是否是一个好的解决方案(或者微服务更好??)
从技术上讲,您已经在使用微服务/SOA。
我只是想知道这是否是一个好的解决方案
否。 SOA/微服务在同一台机器上的问题是它们非常健谈;开销很大;并且他们的消息有效负载非常冗长。默认情况下,SOAP 和 REST 都使用文本消息(分别为 XML 和 JSON)(与二进制相比更大)。
如果客户端和服务器都在同一台机器上,您最好直接使用命名管道并避免使用 WCF/REST。命名管道下的通信是二进制的,因此非常紧凑;命名管道以内核模式运行,这意味着它非常快速,并且作为在本地通信时的额外奖励,绕过 网络层(而不是说TCP 甚至可以用于 LOCALHOST)。