当前位置: 首页 > news >正文

玉溪网站建设制作制作手机网站用什么软件

玉溪网站建设制作,制作手机网站用什么软件,软件开发线上培训机构,公司网站开发哪家好目录 一、Protobuf介绍 1.Protobuf用来做什么 2. Protobuf的序列化与反序列化 3. Protobuf的优点和缺点 4. RPC介绍 1文档规范 2消息编码 3传输协议 4传输性能 5传输形式 6浏览器的支持度 7消息的可读性和…目录 一、Protobuf介绍 1.Protobuf用来做什么 2. Protobuf的序列化与反序列化 3. Protobuf的优点和缺点 4. RPC介绍 1文档规范 2消息编码 3传输协议 4传输性能 5传输形式 6浏览器的支持度 7消息的可读性和安全性 8代码的编写 5. gRPC的适用场景 二、gRPC简单实践 1. 安装 protobuf 编译库 2.安装protoc-gen-go 一、Protobuf介绍 Protobuf (Protocol Buffers) 是谷歌开发的一款无关平台无关语言可扩展轻量级高效的序列化结构的数据格式用于将自定义数据结构序列化成字节流和将字节流反序列化为数据结构。所以很适合做数据存储和为不同语言不同应用之间互相通信的数据交换格式只要实现相同的协议格式即后缀为proto文件被编译成不同的语言版本加入各自的项目中这样不同的语言可以解析其它语言通过Protobuf序列化的数据。目前官方提供cjavago等语言支持。 下面表格是支持语言的列表及各个语言的插件 Github源码地址GitHub - protocolbuffers/protobuf: Protocol Buffers - Googles data interchange format 支持的语言列表以及支持每种语言对应的安装说明 LanguageSourceC (include C runtime and protoc)srcJavajavaPythonpythonObjective-CobjectivecC#csharpRubyrubyGoprotocolbuffers/protobuf-goPHPphpDartdart-lang/protobufJavaScriptprotocolbuffers/protobuf-javascript 1.Protobuf用来做什么 protobuf是跨平台的数据交互格式通过字节流的方式在不同终端或服务器之间进行数据传输。 目前主要有以下数据交换格式 json一般用于WEB项目中因为浏览器对JSON格式的数据支持非常好大部分编程语言有很多内建函数支持而且JSON几乎支持所有编程语言。用于Restful通信协议。xmlXML在WebService中的应用比较多相比于JSON它的数据更加冗余因为需要成对的闭合标签而JSON使用了键值对的方式不仅压缩了一定的数据空间同时也有更好的可读性。protobuf谷歌公司新开发的一种数据格式适合高性能对响应速度有要求的数据传输场景。因为Protobuf是二进制数据格式需要编码和解码。数据本身不具有可读性因此只能反序列化得到可读数据。用于gRPC通信协议 2. Protobuf的序列化与反序列化 1. 序列化将数据结构或者对象转化成二进制串的过程。 2. 反序列化将序列化过程中所产生的二进制串转换成数据结构或对象的过程。 3. Protobuf的优点和缺点 优点 Protobuf序列化和反序列化速度快序列化后的体积比json,xml更小传输更快。使用相对也简单因为Proto编译器能自己序列化和反序列化。可以定义自己的数据结构然后使用代码生成器去生成的代码来读写这个数据结构甚至可以在不用重新部署的情况下来更新这个数据结构只需要使用Protobuf对数据结构进行一次描述就可以利用不同的语言或者从不同的数据流对你的结构化数据轻松的读写。向后兼容性好不需要破坏旧的数据格式依靠老的数据格式的程序就可以对数据结构更新。语义比xml更加清晰无需类似xml解析器的东西因为Protobuf编译器会将.proto文件编译成对应的数据访问用以对Protobuf数据进行序列化和反序列化操作。跨平台跨语言可扩展性好。 维护成本比较低多个平台只需要维护一套.proto对象协议文件。加密性好。 缺点   Protobuf功能简单无法用来表示复杂的概念。相比xmlxml具有某种程度的自解释性因为最终是转成二进制流不像xml和json能够直接查看明文。 4. RPC介绍 既然protobuf是跨语言的gRPC是通过protobuf协议传输的自然而然gRPC也是跨语言的。说起gRPC还是先聊聊RPCRPC全称Remote Procedure Call中文译为远程过程调用。通俗地讲使用RPC进行通信调用远程函数就像调用本地函数一样RPC底层会做好数据的序列化与传输从而能使我们更轻松地创建分布式应用和服务。 而gRPC则是RPC的一种它是免费且开源的由谷歌出品。使用gRPC我们只需要定义好每个API的Request和Response剩下的gRPC这个框架会帮我们自动搞定。另外gRPC的典型特征就是使用protobuf全称protocol buffers作为其接口定义语言Interface Definition Language缩写IDL同时底层的消息交换格式也是使用protobuf。 4.1 常见的 PRC 框架 目前流行的开源 RPC 框架还是比较多的有阿里巴巴的 Dubbo、Google 的 gRPC、Facebook 的 Thrift 和 Twitter 的 Finagle 等。 Go RPCGo 语言原生支持的 RPC 远程调用机制简单便捷。gRPCGoogle 发布的开源 RPC 框架是基于 HTTP 2.0 协议的并支持众多常见的编程语言它提供了强大的流式调用能力目前已经成为最主流的 RPC 框架之一。ThriftFacebook 的开源 RPC 框架主要是一个跨语言的服务开发框架作为老牌开源 RPC 协议以其高性能和稳定性成为众多开源项目提供数据的方案选项。 4.2 gRPC VS Restful 平时我们对接接口大都使用Restful协议比较多gRPC能为我们解决什么样的问题又能带来什么样的体验知乎的一篇文章分析很详细我引用如下 gRPC和Restful之间的对比历来是学习gRPC的必修课我会从文档规范、消息编码、传输协议、传输性能、传输形式、浏览器的支持度以及数据的可读性、安全性等方面进行比较。 1文档规范 文档规范这种东西有点见仁见智在我看来gRPC使用proto文件编写接口API文档规范比Restful更好因为proto文件的语法和形式是定死的所以更为严谨、风格统一清晰而Restful由于可以使用多种工具进行编写只要人看得懂就行每家公司、每个人的攥写风格又各有差异难免让人觉得比较混乱。 另外Restful文档的过时相信很多人深有体会因为维护一份不会过时的文档需要很大的人力和精力而公司往往都是业务为先而gRPC文档即代码接口的更改也会体现到代码中这也是我比较喜欢gRPC的一个原因因为不用花很多精力去维护文档。 2消息编码 消息编码这块gRPC使用protobuf进行消息编码而Restful一般使用JSON进行编码 3传输协议 传输协议这块gRPC使用HTTP/2作为底层传输协议据说也可替换为其他协议但目前还未考证而RestFul则使用HTTP。 RPC 和 RestFul都是微服务间通信较为常用的方案之一其实RPC 和 RestFul 并不完全是同一个层次的概念它们之间还是有所区别的。 RPC 是远程过程调用其调用协议通常包括序列化协议和传输协议。序列化协议有基于纯文本的 XML 和 JSON、二进制编码的Protobuf和Hessian。传输协议是指其底层网络传输所使用的协议比如 TCP、HTTP。可以看出HTTP是RPC的传输协议的一个可选方案比如说 gRPC 的网络传输协议就是 HTTP。HTTP 既可以和 RPC 一样作为服务间通信的解决方案也可以作为 RPC 中通信层的传输协议此时与之对比的是 TCP 协议。 4传输性能 由于gRPC使用protobuf进行消息编码即序列化而经protobuf序列化后的消息体积很小传输内容少传输相对就快再加上HTTP/2协议的加持HTTP1.1的进一步优化使得gRPC的传输性能要优于Restful。 5传输形式 传输形式这块gRPC最大的优势就是支持流式传输传输形式具体可以分为四种unary、client stream、server stream、bidirectional stream这个后面我们会讲到而Restful是不支持流式传输的。 6浏览器的支持度 不知道是不是gRPC发展较晚的原因目前浏览器对gRPC的支持度并不是很好而对Restful的支持可谓是密不可分这也是gRPC的一个劣势如果后续浏览器对gRPC的支持度越来越高不知道gRPC有没有干饭Restful的可能呢 7消息的可读性和安全性 由于gRPC序列化的数据是二进制且如果你不知道定义的Request和Response是什么你几乎是没办法解密的所以gRPC的安全性也非常高但随着带来的就是可读性的降低调试会比较麻烦而Restful则相反现在有HTTPS安全性其实也很高 8代码的编写 由于gRPC调用的函数以及字段名都是使用stub文件的所以从某种角度看代码更不容易出错联调成本也会比较低不会出现低级错误比如字段名写错、写漏。 5. gRPC的适用场景 从上面gRPC和Restful的比较中我们其实也从侧面了解gRPC的优劣势也能顺势推断出其应用场景。 gRPC主要用于公司内部的服务调用性能消耗低传输效率高服务治理方便。Restful主要用于对外比如提供接口给前端调用提供外部服务给其他人调用等。 二、gRPC简单实践 一般来讲实现一个gRPC服务端和客户端主要分为这几步 1.安装 protobuf 依赖2.编写 proto 文件IDL3.编译 proto 文件生成stub文件4.编写server端实现我们的接口5.编写client端测试我们的接口 1. 安装 protobuf 编译库 这是一个开源的项目要使用protobuf需要安装protobuf编译环境和具体语言代码生成工具这里以go语言为例进行安装测试 protobufprotobuf核心类库 protoc-gen-go生产go语言对应的代码Javapythonruby官网都有对应的工具。 protobuf github地址GitHub - protocolbuffers/protobuf: Protocol Buffers - Googles data interchange format 安装protobuf两种安装方式 1命令行安装 可以搜索可用的protobuf源 brew search protobuf 搜索结果如下 protobuf protobuf-c protobuf21 protobuf3 swift-protobuf 选择protobuf执行  brew install protobuf a.查看安装版本 protoc --version libprotoc 25.1 b.查看安装的文件 brew list protobuf /opt/homebrew/Cellar/protobuf/25.1/bin/protoc #二进制路径 /opt/homebrew/Cellar/protobuf/25.1/bin/protoc-25.1.0 /opt/homebrew/Cellar/protobuf/25.1/include/google/ (233 files) #google api文件路径 /opt/homebrew/Cellar/protobuf/25.1/include/java/core/src/main/java/com/google/protobuf/java_features.proto /opt/homebrew/Cellar/protobuf/25.1/include/ (2 files) /opt/homebrew/Cellar/protobuf/25.1/lib/libprotobuf-lite.25.1.0.dylib /opt/homebrew/Cellar/protobuf/25.1/lib/libprotobuf.25.1.0.dylib /opt/homebrew/Cellar/protobuf/25.1/lib/libprotoc.25.1.0.dylib /opt/homebrew/Cellar/protobuf/25.1/lib/cmake/ (10 files) /opt/homebrew/Cellar/protobuf/25.1/lib/pkgconfig/ (3 files) /opt/homebrew/Cellar/protobuf/25.1/lib/python3.10/ (56 files) /opt/homebrew/Cellar/protobuf/25.1/lib/python3.11/ (56 files) /opt/homebrew/Cellar/protobuf/25.1/lib/python3.12/ (56 files) /opt/homebrew/Cellar/protobuf/25.1/lib/ (5 other files) /opt/homebrew/Cellar/protobuf/25.1/share/emacs/site-lisp/protobuf/protobuf-mode.el /opt/homebrew/Cellar/protobuf/25.1/share/protobuf/ (25 files) /opt/homebrew/Cellar/protobuf/25.1/share/vim/vimfiles/syntax/proto.vim c.protoc执行搜索的文件 cd /opt/homebrew/Cellar/protobuf/25.1/include/google/protobuf ll *.proto -rw-r--r-- 1 easton admin 6.0K 11 16 02:52 any.proto -rw-r--r-- 1 easton admin 7.5K 11 16 02:52 api.proto -rw-r--r-- 1 easton admin 974B 11 16 02:52 cpp_features.proto -rw-r--r-- 1 easton admin 49K 11 16 02:52 descriptor.proto -rw-r--r-- 1 easton admin 4.8K 11 16 02:52 duration.proto -rw-r--r-- 1 easton admin 2.3K 11 16 02:52 empty.proto -rw-r--r-- 1 easton admin 8.0K 11 16 02:52 field_mask.proto -rw-r--r-- 1 easton admin 2.3K 11 16 02:52 source_context.proto -rw-r--r-- 1 easton admin 3.7K 11 16 02:52 struct.proto -rw-r--r-- 1 easton admin 6.3K 11 16 02:52 timestamp.proto -rw-r--r-- 1 easton admin 6.2K 11 16 02:52 type.proto -rw-r--r-- 1 easton admin 3.9K 11 16 02:52 wrappers.proto 每当在proto文件中写 import “google/protobuf/descriptor.proto”;  protoc在编译时会自动搜索protoc的安装路径并查询descriptor.proto文件。 如果由于网络导致安装失败建议通过编译安装下载源码进行编译并安装。 2编译安装 下载源码https://github.com/protocolbuffers/protobuf/releases 选择对应的操作系统下载源码即可mac下载protoc-25.1-osx-aarch_64.zip a.解压源码 unzip protoc-25.1-osx-aarch_64.zip b.执行编译并安装到/usr/local/protobuf/进入到解压后的目录执行如下命令 cd protoc-25.1-osx-aarch_64sudo ./configure --prefix/usr/local/protobufsudo makesudo make checksudo make install c.配置环境变量 vim /.bash_profile export PROTOBUF/usr/local/protobuf export PATH$PROTOBUF/bin:$PATH source ~/.bash_profile d.执行命令protoc --version 检查是否安装成功 protoc --version libprotoc 25.1 2.安装protoc-gen-go 官网关于go语言的安装文档如下 Go Generated Code Guide | Protocol Buffers Documentation a.执行安装命令 go install google.golang.org/protobuf/cmd/protoc-gen-golatest 这条命令会安装并将protoc-gen-go可执行文件复制到 $GOBIN 文件夹下 也会将google.golang.org/protobuf源码文件下载到pkg包下我的工程$GOBIN路径如下 /Users/easton/sourceCode/go/goproject01/bin可以看到生成了protoc-gen-go二进制文件 由于使用go mod包管理模式会将源码下载到 $GOMODCACHE 目录下 GOMODCACHE/Users/easton/sourceCode/go/goproject01/pkg/mod b.执行完安装查看版本 可以进入到项目目录下执行命令 我的项目路径cd /Users/easton/sourceCode/go/goproject01 protoc-gen-go --version protoc-gen-go v1.31.0 #版本号c.配置$GOBIN到环境变量 vim ~/.bash_profileexport GOBIN/Users/easton/sourceCode/go/goproject01/bin export $PATH$GOBIN:$PATH d.然后执行命令  protoc-gen-go --version protoc-gen-go v1.31.0 #版本号⚠️注意原来的github.com/golang/protobuf/protoc-gen-go这个库已经被弃用我们需要使用 google.golang.org/protobuf 这个库 % go get -u github.com/golang/protobuf/protoc-gen-go go: module github.com/golang/protobuf is deprecated: Use the google.golang.org/protobuf module instead. go: added github.com/golang/protobuf v1.5.2 go: added google.golang.org/protobuf v1.28.0   参考资料 Mac下protobuf安装Protobuf 介绍与实战1Mac环境下安装Protobuf(两种方式安装)_mac安装protobuf-CSDN博客 Mac下protobuf安装Mac下环境搭建(用brew安装go和protoc)-腾讯云开发者社区-腾讯云 protobuf安装配置Protobuf的安装、配置和使用golang版 - 掘金 go proto代码生成工具安装Go Generated Code Guide | Protocol Buffers Documentation 聊聊什么是gRPC - 知乎 gRPC介绍https://www.cnblogs.com/songgj/p/11560565.html protobuf介绍https://www.cnblogs.com/songgj/p/13463717.html
http://www.sadfv.cn/news/73723/

相关文章:

  • 制作网站赚钱上海网页设计培训哪个好
  • 加盟店推广营销南宁seo优化
  • 长春建站网站模板我为群众办实事项目清单
  • 网站qq获取怎么制作一个平台
  • 织梦做的网站怎么上传视频教程中铁建设集团门户网app
  • 1800做网站因为专业吉林省延边州建设局网站
  • 网站入口wordpress 画展主题
  • 怎么建立织梦网站做网站美工排版
  • 深圳中瑞建设集团官方网站邯郸哪里制作网站
  • 十堰市茅箭区建设局网站wordpress页面内容显示more
  • 邢台手机网站建设价格上海注册公司需要多久
  • 黄石网站推广排名服务网站建设算固定资产吗
  • 西安网站建设那家好wordpress读者墙不显示
  • 惠州网站建设公司推荐乐云seo小程序源码之家
  • 网站频繁改版商业网站源码免费下载
  • 外贸电商做俄罗斯市场网站wordpress可以关闭不
  • 新乡建设招标投标网站电商网站的多选菜单插件
  • wordpress分类目录浏览权限手机清理优化软件排名
  • 南京做网站建设的公司哪家好潍坊网站建设尚荣
  • 番禺区移动端网站制作新服务器做网站
  • 企业只有建立了自己的网站沈阳做网站找思路
  • 深圳有哪些网站开发公司广州省建设厅官方网站
  • 做外汇都看那些网站手机广西网
  • 好的摄影网站推荐电子商务网站建设与维护 教材
  • 网络公司要求做网站工商网监网站模板插件
  • 北京兼职做网站推广成都线上超市有哪些平台
  • 做音乐网站曲库在哪找人力资源管理咨询
  • wordpress 瑞课教育seo培训机构
  • 中国山东网站建设手机网站 教程
  • 石家庄新钥匙建站网站竞价推广都有哪些