Thrift架构~从图中理解thrift,它事实上是一种远程过程调用
thrift为我们简化了tcp通讯,它可以使用我们方便的建立各种语言的服务端与客户端,并实现客户端对服务器的远程过程调用,简单的说就是服务器通过thrift架构对外开放一些接口,并自己实现这些接口,如操作文件,操作图片,文件下载等等,然后客户端通过thrift架构生成的接口,去简单的调用它,我们不需要关心服务端实现的方式,我们只关注它对外提供的接口,这也是面向对象的好处,呵呵。
下面是我对thrift的理解,并用图示来表示一下,请看图:
对于thrift的使用者来说,我们关心的是接口,或者说方法签名,而不需要太过关心数据,这是正确的,数据本身在传递的过程中就应该被保护起来,用面向对象的说法就是封装起来,不对外公开,这可以大大保证数据的安全性,使用thrift架构,我们不需要对数据结构
进行破坏,在之前的10几年,我们在进行数据通讯时,最常见的作法就是使用类型标识符来区别个个数据的作用,如,1表示文件上业务,2表示文件下载业务,其实这样做了之后我们的数据结构是混乱的,而有了thrift之后,我们的数据实现是独立的,是职责分明的,当然也是受保护的,即,文件上传与文件下载的数据是相互独立的,呵呵。
我们可以通过方法签名来看一下二者的区别:
thrift 环境下的
bool Upload(DataSegment dataSegment); DataSegment Download(DataSegment dataSegment);
普通socket通讯的
bool Send(byte[] data,string type); byte[] Receive(string fileName,string type);
从上面的两处代码来看,我们可以看出其中的不同了,事实上,thrift是将业务功能代码最小化了,以业务为单位将代码分离,相不影响,而后者的代码,它的业务一定会混在一个send方法里,当然你可以使用一些设计模块来实现解耦,但对于我们程序员来说,程序的
可读性一定会受到不少影响,呵呵!
下一节,我们将会一起讨论在项目中实现thrift环境的AOP组件注入的问题,敬请期待!
分类:
其它 / Thrift
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2013-01-20 开发人员应该对IIS理论层的知识了解的多一些~第三讲 网页从IIS端到客户端浏览器经历的阶段
2013-01-20 开发人员应该对IIS理论层的知识了解的多一些~第二讲 静态网页与动态网页如何被解释执行的