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

做阿里巴巴网站图片尺寸网站开发前台与后台的交互

做阿里巴巴网站图片尺寸,网站开发前台与后台的交互,现在的网站做多大尺寸的,深圳低价建站1.发布服务过程 目前完成了mprpc框架项目中的以上的功能。 作为rpcprovider的使用者#xff0c;也就是rpc方法的发布方 main函数如下#xff1a; 首先我们init调用框架的init#xff0c;然后启动一个provider#xff0c;然后向provider上注册服务对象方法#xff0c;即us…1.发布服务过程 目前完成了mprpc框架项目中的以上的功能。 作为rpcprovider的使用者也就是rpc方法的发布方 main函数如下 首先我们init调用框架的init然后启动一个provider然后向provider上注册服务对象方法即userservice的login方法当做一个可以远程调用的rpc方法然后启动runrun相当于是一个网络服务器。 首先如果远端有RPC请求的话RpcProvider的网络模块muduo会帮助我们去接收数据就是接收一个RPC请求RPC请求里面有函数名函数参数。RpcProvider先把这个请求上报到LoginRequest。我们作为用户不管底层是怎么进行网络收发muduo库完成不管怎么把网络上的字节流反序列化成具体的LoginRequest的数据protobuf完成我们只管最后去使用就可以了。 执行对应方法最后我们又把响应的结果送给protobufRpcProvider首先通过protobuf进行对响应的结果 序列化然后通过muduo库发送出去。 所以接下去我们要完成框架的RpcProvider从网络上接收一个RPC调用请求时他怎么知道要调用应用程序的哪个服务对象的哪个RPC方法呢 当远端发送来一个请求根据一些信息由框架调用对应方法定位到需要调用的服务对象的服务方法相当于一个回调操作。 我们将要实现NotifyService的 需要生成一张表记录服务对象和其发布的所有服务方法。 比如说UserService 发布了Login , Register等方法 FriendService发布了AddFriendDelFriendGetFriendList等方法 由一个表记录这些信息当远端有一个rpc请求过来rpcprovider就可以在这个表里查一查需要调用哪个对象的哪个方法然后就会帮我们去调用调用后我们就会看到对应方法被框架调用就会去执行我们写好的响应操作。 使用protobuf的好处这些Service都是继承了protobuf的Service类方法都是继承protobuf的Method类。 而且我们用户不知道什么时候调用Login框架才知道有人请求框架才调用因为我们是作为服务方。 当远端有RPC有请求过来时RpcProvider就可以在这张表查调用的是哪个对象的哪个方法它就去调用了。 开发RpcProvider的发布服务NotifyService GetDescriptor方法用于获取一个服务的描述服务名字、对象、服务对象里面有哪些方法 2. rpcprovider.h #pragma once #include google/protobuf/service.h #include muduo/net/TcpServer.h #include muduo/net/EventLoop.h #include muduo/net/InetAddress.h #include muduo/net/TcpConnection.h #include string #include functional #include google/protobuf/descriptor.h #include unordered_map//框架提供的专门发布rpc服务的网络对象类 class RpcProvider { public://这里是框架提供给外部使用的可以发布rpc方法的函数接口void NotifyService(google::protobuf::Service* service);//具体的服务对象类是从Service类继承而来//框架是可以接收各种RPC服务的不能依赖具体的某一个业务。 //基类指针指向子对象 //启动rpc服务节点开始提供rpc远程网络调用服务void Run();private://组合EventLoopmuduo::net::EventLoop m_eventLoop;//service服务类型信息struct ServiceInfo{google::protobuf::Service* m_service;//保存服务对象std::unordered_mapstd::string,const google::protobuf::MethodDescriptor* m_methodMap;//保存服务方法};//存储注册成功的服务对象和其服务方法的所有信息std::unordered_mapstd::string,ServiceInfo m_serviceMap;//新的socket连接回调void OnConnection(const muduo::net::TcpConnectionPtr);//已建立连接用户的读写事件回调void OnMessage(const muduo::net::TcpConnectionPtr,muduo::net::Buffer*,muduo::Timestamp); }; 3.rpcprovider.cc #include rpcprovider.h #include mprpcapplication.h/* service_name service描述一个服务由一个服务名字对应》 service* 记录服务对象method_name method方法对象 json:存储键值对基于文本存储数据有对应的键值 protobuf基于二进制存储存储效率更高紧密存储不携带除数据外的任何信息整体来说protobuf存储效率更高占用的带宽更少同样带宽传输的数据量更大不仅可以提供类型的序列化和反序列化还提供了service rpc方法的描述 */ //这里是框架提供给外部使用的可以发布rpc方法的函数接口 void RpcProvider::NotifyService(google::protobuf::Service *service) {ServiceInfo service_info;//获取了服务对象的描述信息const google::protobuf::ServiceDescriptor* pserviceDescservice-GetDescriptor();//获取服务的名字std::string service_namepserviceDesc-name();//获取服务对象service的方法的数量int methodCntpserviceDesc-method_count();std::coutservice_name:service_namestd::endl;for(int i0;imethodCnt;i){//获取了服务对象指定下标的服务方法的描述抽象描述 UserService Loginconst google::protobuf::MethodDescriptor* pmethodDescpserviceDesc-method(i);std::string method_namepmethodDesc-name();service_info.m_methodMap.insert({method_name,pmethodDesc});std::coutmethod_name:method_namestd::endl;}service_info.m_serviceservice;m_serviceMap.insert({service_name,service_info});}// 启动rpc服务节点开始提供rpc远程网络调用服务 void RpcProvider::Run() {std::string ipMprpcApplication::GetInstance().GetConfig().Load(rpcserverip);uint16_t portatoi(MprpcApplication::GetInstance().GetConfig().Load(rpcserverport).c_str());muduo::net::InetAddress address(ip,port);//创建TcpServer对象muduo::net::TcpServer server(m_eventLoop,address,RpcProvider);//绑定连接回调和消息读写回调方法 muduo库的好处是分离了网络代码和业务代码server.setConnectionCallback(std::bind(RpcProvider::OnConnection, this, std::placeholders::_1));//预留1个参数std::placeholders::_1server.setMessageCallback(std::bind(RpcProvider::OnMessage, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));//预留3个参数std::placeholders::_1,2,3//设置muduo库的线程数量server.setThreadNum(4);std::coutRpcProvider start service at ip:ipport:portstd::endl;//启动网络服务server.start();m_eventLoop.loop(); }//新的socket连接回调 void RpcProvider::OnConnection(const muduo::net::TcpConnectionPtr) {}// 已建立连接用户的读写事件回调 void RpcProvider::OnMessage(const muduo::net::TcpConnectionPtr,muduo::net::Buffer*,muduo::Timestamp) {} protobuf提供了serviceRPC方法的描述service类method类从抽象的层面描述服务对象服务方法到时候由底层就直接可以用上层的服务方法了。notifyservice就是发布rpc服务的站点
http://www.dnsts.com.cn/news/18157.html

相关文章:

  • 男女做暖暖的视频试看网站帮企业做网站前景怎么样
  • 营销型网站优点广州站扩建
  • 营销型网站建设区别网站怎么做百度快照
  • 游戏攻略网站开发wordpress免费采集器
  • 云浮哪有做网站公司中国国家标准建设信息网站
  • 网站开发入门需要学什么做的网站 如何在局域网内访问
  • 买完域名以后怎么做网站上海信用网企业查询
  • 做医院健康专题网站thinkphp大型网站开发
  • 适合vue做的网站类型电子商务网站规划的内容
  • 网站设计论文选题深圳手机端网站建设模板
  • 买做指甲的材料在哪个网站企业在哪里查询
  • 做家教去哪个网站下载公众号平台app
  • 黔东南建设厅官方网站网站建设公司知名
  • 网站在手机上内页图不显示石家庄seo优化公司
  • 绿色网站配色百度公司介绍
  • 网站建设教程免费湖南岚鸿开通公司网站怎么开通
  • 青岛的网站建设公司哪家好如何拥有自己的网站域名
  • 邯郸做网站哪家好wordpress文件上传管理
  • 兼容性视图中显示所有网站规划网站站点需要遵循哪些原则
  • 网站空格键代码h5页面怎么做
  • 3g 手机网站建设zimeiti wordpress
  • 怎么查询网站备案服务商是哪个找别人做网站一般注意什么
  • 南京企业建站系统模板网页设计如何把照片作为背景
  • 网站与建设实训报告动画制作平台
  • 学校网站建设整改报告seo刷排名公司
  • 博物馆门户网站建设方案本人有资金寻求合作
  • 网站制作网免费找做网站的人
  • 建站源码程序有创意的食品包装设计
  • 网站建设总体需求报告导视设计报价
  • 专门做求职课程的网站堵博网站建设