rest - 同一设备中的两个应用程序的通信
问题描述
有 2 个应用程序需要相互通信。它们都在同一台PC上运行。
主要应用程序 (C#)
辅助应用程序 (C#) -> 从主应用程序启动
助手应用程序将修改主应用程序使用/包含的一些数据。辅助应用程序可以是微服务吗?(不熟悉微服务,但我在网上查的时候看到过)
我找到了一个有用的教程,并且能够创建 WCF 双工绑定。现在 Main Application 和 Helper Application 可以通信了。我只是想知道这是否是一个好的解决方案(或者微服务更好??)
解决方案
辅助应用程序可以是微服务吗?(不熟悉微服务...
当然。“微服务”只是描述基于分布式组件的网络计算的最新术语。它可以追溯到(可能更进一步)分布式 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)。
推荐阅读
- windows - 使用 winautomation 进程本身在 winautomation 中暂停/播放进程
- laravel - 如何对忽略数组中的当前 id 的数组应用 laravel 唯一验证?
- azure - 在使用电子邮件搜索现有用户时,对 https://graph.windows.net 方法 GET 作为请求正文的 AAD 请求格式错误
- linux - 如何在带有 libc 2.31 到 2.33 的 32 位 linux 上使用 64 位时间
- java - MCP 9.18 - 反编译失败“复制库 com.mojang:netty:1.7.7 时出错”
- powershell - 显示连接到网络驱动器的所有用户
- php - 自定义帖子类型术语的 Wordpress Tax_Query,税收查询未按术语过滤
- javascript - 如何创建一个扩展来模拟 Firefox 容器
- python - 转换为 exe 后 JWT 签名无效
- powershell - 导入 CSV 会拆分某些行