【建站服务】唐山网站优化【唐山开通400电话】唐山网站搭建、唐山微信公众号推文外包、唐山开通京东拼多多设计、唐山淘宝装修-域名申请
作者: 风兰 . 阅读量: 3 . 发表时间:2022-09-20 15:09:34
上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
唐山网站优化【唐山开通400电话】唐山网站搭建、唐山微信公众号推文外包、唐山开通京东拼多多设计、唐山淘宝装修
唐山,简称“唐”,河北省地级市,构建开放型经济新体制综合试点地区 [1] 。位于河北省东部、华北平原东北部,南临渤海,北依燕山,毗邻京津,地处华北与东北通道的咽喉要地,总面积为13472平方千米,是中国(唐山)跨境电子商务综合试验区 [2] 、中国(河北)自由贸易试验区组成部分。 [3-4]
唐山因唐太宗李世民东征高句丽驻跸而得名,素有“北方瓷都”之称。这里诞生了中国第一座机械化采煤矿井、第一条标准轨距铁路、第一台蒸汽机车、第一桶机制水泥。唐山是中国评剧的发源地,素有“冀东三支花”之称的皮影、评剧、乐亭大鼓,为国家级非物质文化遗产。
2019年,唐山市下辖7个市辖区、3个县级市、4个县 [5] ,常住人口796.4万人,地区生产总值6890.0亿元,其中,第一产业增加值531.2亿元,第二产业增加值3613.3亿元,第三产业增加值2745.5亿元,三次产业增加值结构为7.7:52.4:39.9。按常住人口计算,全年人均地区生产总值86667元(按年平均汇率折合12563美元)。
服务定义是在 ProductInfo.proto 文件中声明的,服务器端和客户端都会使用该文件来生成代码。这里假设 ProductInfo 服务使用 Go 语言来实现,消费者使用 Java 语言来实现,两者之间的通信则通过 HTTP/2 来进行。
接下来深入了解 gRPC 通信的细节。构建 gRPC 服务的第一步是创建服务接口定义,其中包括该服务暴露的方法及其输入参数和返回类型。下面介绍服务定义的细节。
gRPC 使用 protocol buffers 作为 IDL 来定义服务接口。protocol buffers 是语言中立、平台无关、实现结构化数据序列化的可扩展机制 5。服务接口定义在 proto 文件中指定,也就是在扩展名为“.proto”的普通文本文件中。我们要按照普通的 protocol buffers 格式来定义 gRPC 服务,并将 RPC 方法参数和返回类型指定为 protocol buffers 消息。因为服务定义是 protocol buffers 规范的扩展,所以可以借助特殊的 gRPC 插件来根据 proto 文件生成代码。
5第 4 章会详细介绍 protocol buffers 的基本原理,现在可将其看作一种数据序列化机制。
在示例场景中,ProductInfo 服务接口可以使用代码清单 1-1 中的 protocol buffers 来定义,其中涉及远程方法调用、相关输入参数和输出参数以及这些参数的类型定义(或消息格式),这些也是 ProductInfo 服务定义的组成部分。
代码清单 1-1 使用 protocol buffers 来定义
ProductInfo服务(gRPC)
// ProductInfo.protosyntax = "proto3"; ➊package ecommerce; ➋service ProductInfo { ➌
rpc addProduct(Product) returns (ProductID); ➍
rpc getProduct(ProductID) returns (Product); ➎}message Product { ➏
string id = 1; ➐
string name = 2;
string description = 3;}message ProductID { ➑
string value = 1;}复制代码❶ 服务定义首先声明所使用的 protocol buffers 版本(proto3)。
❷ 用来防止协议消息类型之间发生命名冲突的包名,该包名也会用来生成代码。
❸ 定义 gRPC 服务的接口。
❹ 添加商品的远程方法,该方法会返回商品 ID 作为响应。
❺ 基于商品 ID 获取商品的远程方法。
❻ 定义 Product 的消息格式或类型。
❼ 保存商品 ID 的字段(名–值对),具有唯一的字段编号,该编号用来在二进制格式消息中识别字段。 ❽ 用于商品标识号的用户定义类型。
服务就是可被远程调用的一组方法,比如 addProduct 方法和 getProduct 方法。每个方法都有输入参数和返回类型,既可以被定义为服务的一部分,也可以导入 protocol buffers 定义中。
输入参数和返回参数既可以是用户定义类型,比如 Product 类型和 ProductID 类型,也可以是服务定义中已经定义好的 protocol buffers 已知类型。这些类型会被构造成消息,每条消息都是包含一系列名–值对信息的小型逻辑记录,这些名–值对叫作字段。这些字段都是具有唯一编号的名–值对(如 string id = 1),在二进制形式消息中,可以用编号来识别相应字段。
该服务定义会被用来构建 gRPC 应用程序的服务器端和客户端。1.1.2 节将介绍 gRPC 服务器端的实现细节。
一旦服务定义准备就绪,就可以使用 protocol buffers 编译器 protoc 来生成服务器端和客户端的代码了。借助 gRPC 的 protocol buffers 插件,可以生成 gRPC 服务器端代码、客户端代码以及常规的 protocol buffers 代码,从而填充、序列化和检索消息类型。
在服务器端,需要实现该服务定义,并运行 gRPC 服务器来处理客户端的调用。因此,为了让服务器端的 ProductInfo 服务完成其任务,需要先做以下两件事情。
通过重载服务基类,实现所生成的服务器端骨架的逻辑。
运行 gRPC 服务器,监听来自客户端的请求并返回服务响应。
要实现服务逻辑,首先要根据服务定义生成服务器端骨架。例如,在代码清单 1-2 中,可以看到使用 Go 语言为 ProductInfo 服务所生成的远程函数。在这些远程函数体中,我们可以实现每个函数的逻辑。
代码清单 1-2 使用 Go 语言为
ProductInfo服务实现 gRPC 服务器端逻辑
import (
...
"context"
pb "github.com/grpc-up-and-running/samples/ch02/productinfo/go/proto"
"google.golang.org/grpc"
...)// 使用Go语言的ProductInfo实现// 添加商品的远程方法func (s *server) AddProduct(ctx context.Context, in *pb.Product) (
*pb.ProductID, error) {
// 业务逻辑}// 获取商品的远程方法func (s *server) GetProduct(ctx context.Context, in *pb.ProductID) (
*pb.Product, error) {
// 业务逻辑}复制代码当服务实现准备就绪之后,接下来需要运行 gRPC 服务器,从而监听来自客户端的请求,将这些请求分发到服务实现,并将服务的响应返回到客户端。代码清单 1-3 展示了 ProductInfo 服务用例,其中使用 Go 语言来编写 gRPC 服务器实现。另外,这里打开了一个 TCP 端口并启动了 gRPC 服务器,同时在该服务器上注册了 ProductInfo 服务。
代码清单 1-3 使用 Go 语言为
ProductInfo服务运行 gRPC 服务器
func main() {
lis, _ := net.Listen("tcp", port)
s := grpc.NewServer()
pb.RegisterProductInfoServer(s, &server{})
if err := s.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}}复制代码这就是服务器端要做的所有事情了。接下来看一下 gRPC 的客户端实现。

唐山网站优化【唐山开通400电话】唐山网站搭建、唐山微信公众号推文外包、唐山开通京东拼多多设计、唐山淘宝装修
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站


