微软比 google 早发明 20 年的 RPC 远程调用,然而现在市面上几乎全是 gRPC 的天下!

2023-03-16 10:28:31 +08:00
 tool2d
最近在研究 Google 的 gRPC ,几乎都成为大半个云行业标准了。很好奇微软有没有类似替代品,一查还真有。

早在 1995 年,微软就出了一本书,叫<Microsoft RPC programming guide>,那时候微软 RPC 编程体系已经很成熟了,但是没有开源!

正式开源,是在 2005 年,也就是十年后,发布了 DCE/RPC 的标准。可惜那时候完全没掀起什么风浪,当时那个时间节点,大家很难把开源和 M$联系起来。

微软用的是 IDL 语法,和 COM 大同小异,也支持跨语言调用。我自己在虚拟机上编译了一下,用 wireshark 抓了一下 TCP 的远程调用包,搭建很顺利。

感叹技术做的早 20 年也没用,生不逢时啊。

5240 次点击
所在节点    程序员
24 条回复
pengtdyd
2023-03-16 10:30:55 +08:00
行业里面有一句话:跟着微软混,三天饿九顿。

吃技术饭,远离微软。
402124773
2023-03-16 10:31:27 +08:00
微软起个大早,赶个晚集的事情非常多
ospider
2023-03-16 10:31:48 +08:00
xmlhttprequest 还是微软第一个加的呢,你上次用 ie 是什么时候了?
opengps
2023-03-16 10:35:05 +08:00
及时不对比微软,谷歌也确实是很多东西都在靠开源等方式占领了主流市场,比如搜索,比如浏览器,比如谷歌地图
tool2d
2023-03-16 10:38:10 +08:00
@ospider 我觉得最主要还是早期微软把 linux 当成竞争对手,没有做针对 linux 版本的开源和优化。光 windows 上的 rpc 没人来用啊,服务器很多都是 linux 的。

现在微软终于想通了,vscode 都是全平台发布。早就应该打不过就加入。
tool2d
2023-03-16 10:42:43 +08:00
@opengps 其实 google 的 gRPC 也没那么好用,和 http2 强绑定,偏要买一送一,所以我才找找有没有什么替代品。

但奈何不了 gRPC 几乎成为了行业标准,只能硬着头皮用起来。
wetalk
2023-03-16 10:46:57 +08:00
@402124773 移动互联网,塞班系统~~
chawuchiren
2023-03-16 10:50:41 +08:00
@402124773 2015 年微软发布了一个展望未来的视频,不知道它自己能抓住几个实现
seakingii
2023-03-16 10:51:21 +08:00
@402124773
"微软起个大早,赶个晚集的事情非常多"

有道理 ,不少技术在我看来其实思想还是可以的,但是微软就是自己都坚持不下去,也推广不起来.
比如 Windows Mobile , WPF 的 MVVM, 远程调用还有个技术叫 WCF
lesismal
2023-03-16 11:03:56 +08:00
gRPC 的设计其实挺一般的。基于 HTTP2.0 ,解决不了 4 层线头阻塞,对于 RPC 这种应用场景,集群内多是内网、用 HTTP2.0 是浪费不如直接 TCP 省去加密。streaming 也不是什么优秀玩意,只是相当于在 request and response 基础上前进半步。唯一优点就是多语言。
ospider
2023-03-16 11:18:38 +08:00
@tool2d 是的,鲍尔默的路子是走不通的,自己搞一套再优雅也没用,别人只会把你的注意抄过来另起炉灶。gRPC 真的非常一般,尤其是我最常用的 python 客户端更是坑爹,自己起个循环搞乱了好多东西。我现在倾向于用 thrift 或者直接 http2+simdjson.
dexterzzz
2023-03-16 11:33:27 +08:00
当年的 RPC 是和 IBM,Oracle 竞争.
WCF,BizTalk,在 ERP,CRM 领域用
BwNVlwSq
2023-03-16 11:52:40 +08:00
不要跟着微软混😂
wanguorui123
2023-03-16 12:31:35 +08:00
以前用的最多的是 WebService
cassyfar
2023-03-16 13:02:04 +08:00
@lesismal multiplexing 了解下
swulling
2023-03-16 13:20:40 +08:00
@lesismal

1. 即使是内网环境,所有的流量也应该加密,哪怕是 TCP 也应该套 SSL 。不搞这个你连等保都过不了。

2. 线头阻塞是个啥玩意,说的是 HOL blocking ?这个一般不是翻译为队头阻塞么。

这里有点矛盾,因为 TCP 的队头阻塞是在丢包率比较高的网络中才有较大的影响,如果不丢包也就没什么阻塞一说了,而你之前论证不需要 SSL 说是内网环境,内网的丢包率通常是非常低的。

另外 TCP 的问题和 gRPC 有啥关系,你换其他 TCP 上的 RPC 实现不是一样的问题么。连解决方法,比如 multiplexing 都是一样的,别的 RPC 能用,gRPC 也能用。

当然你可以换基于 UDP 的 RPC 实现,gRPC 社区我看也在做基于 QUIC 也就是 HTTP3 作为传输层的工作。
mxT52CRuqR6o5
2023-03-16 13:24:23 +08:00
想做行业标准的话,不搞开放,那就是成心不想好好做
现在的微软在开放方面做的事情真的好多了
ysc3839
2023-03-16 18:25:33 +08:00
微软这个 RPC 主要是给 Windows 用的,印象中并没有做成一个跨平台的库,自然不会流行
agagega
2023-03-16 19:02:50 +08:00
在「起个大早,赶个晚集」这件事上,你有没有听过一家叫 IBM 的公司……
pipilu
2023-03-16 19:22:11 +08:00
你们听说过 WPF ,WCF 吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/924432

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX