原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com
自SOA架构理念提出以来,应用程序间如何以最低耦合度通信的问题便呈现在所有架构师面前。
互联网系统的复杂度让我们不得不大量使用分布式应用,早期通过数据库来交互通信,慢慢地大家发现数据库的耦合是最难解的,并且数据库是最难做负载均衡的,水平拆分,垂直拆分,读写分离让开发的复杂度在不断增加。最终大家发现我们可以把持久化要求不高,结构化程度不强的数据通过分布式缓存、消息队列、NoSQL等一系列手段降低对数据库的依赖,而数据库本身则朝SSD云化方向发展。
从行为方式划分通信为异步通信和同步通信,异步通信借助消息队列,可以很好的削峰填谷,发布订阅。同步通信即RPC调用,可以从两个方面来权衡:
传输层(载体):tcp, udp, http, https
编码方式(载荷):xml, soap, json, binary
成型的框架有:
Web Service, WCF, Restful, ICE, Akka, Thrift....
微软曾经力图让WCF成为标准,然而火爆一时的WCF由于其臃肿的身材最终没有获得业界的青睐,受其它平台语言的支持度不高,最后自家的Web API项目由于改动太大,转而由Asp.Net团队接手开发。
来看几个选型原则:
轻量:互联网去IOE的进程在加快,而背后的实质是软件硬件都在朝轻量化方向发展,互联网风云突变,产品灵活创新,轻量化生命力更强,事实证明,蚂蚁军团总能啃死大象的。
跨平台:社区协作是方向,在互联网行业,没有哪个平台哪个语言能一条龙的提供一揽子整体解决方案。扬长避短能让我们更高效,不用过于执着和信仰一种平台。我们公司就有Java和.NET两种语言,相互调用是难免的。
高效:效率就是载体和载荷两方面,xml老矣,tcp/http+json/binary能擦出爱的火花吗?
简单:开发简单,部署简单,没有过多依赖,干净整洁,看着开心,用着舒心。
能进入比较的有两个:
Restful:这是一种架构方式,基于http,不依赖于任何语言平台,.NET原生支持的即为Web API,还有每三方的组织也在作相关的贡献。最新版本的visual studio开始提供Linux下部署支持。主流厂商对外接口大量使用Rest方式,不受防火墙的影响,对开发人员友好。
Thrift:没有IIS的束缚,意味着更轻便,没有ASP.NET管道带来的开销,意味着更高效。其初始版本由Facebook开发,为分布式并发而生,支持跨语言服务开发,为后端服务间的多语言混合开发提供了高可靠,可扩展,以及高效的实现。
作者:协思
出处:http://zeeman.cnblogs.com/
QQ交流群:32972862
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)