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

网站建设放在什么科目桦甸市建设局网站

网站建设放在什么科目,桦甸市建设局网站,只做域名跳转和关停网站,网站域名注册商Redola.Rpc 解决了什么问题#xff1f; Redola.Rpc 是一个使用 C# 开发的 RPC 框架#xff0c;代码开源在 GitHub 上。目前版本仅支持 .NET Framework 4.6 以上版本#xff0c;未来待系统稳健后再考虑移植 .NET Standard 和 .NET Core。 Redola.Rpc 在 0.3.2 版本中#…Redola.Rpc 解决了什么问题 Redola.Rpc 是一个使用 C# 开发的 RPC 框架代码开源在 GitHub 上。目前版本仅支持 .NET Framework 4.6 以上版本未来待系统稳健后再考虑移植 .NET Standard 和 .NET Core。 Redola.Rpc 在 0.3.2 版本中尝试解决几个 RPC 设计问题 我是谁Local Actor如何告诉别人我是谁Actor Directory我提供什么服务Service Catalog Provider如何告诉别人我提供什么服务Service Directory我需要的服务在哪里Service Discovery如何调用该服务Service Dynamic Proxy如何找到该服务Actor Directory如何发消息给该服务Remote Actor Actor 是什么 Redola 定义的 Actor 模型代表着一个通信节点使用 ActorIdentity 描述包括节点类型 Type、节点名称 Name、节点地址 Address、节点端口 Port。 Actor 与 Actor 之间是基于 TCP Socket 通信的Actor 并不区分 TCP 的 Server/Client 端它将 Server 和 Client 封装在底层为上层应用提供更便捷的传输定义和调用接口。Actor 模型提供了面向通道 Channel 的双工通道可以接收来自对端的消息也可以发送消息给对端。 Actor 收发的消息是面向二进制数组的它不关心具体发送的是什么消息也不关心序列化格式。Actor 使用 ActorFrameHeader 定义传输消息头Header 携带消息体长度。 Actor 一旦建立连接生成的 Channel 通道会自动进行 KeepAlive 双向保活机制。通过 Actor 服务发现可以与任意的 Actor 进行通信无需再配置对端节点地址和端口。并且针对相同 Type 的 Actor还可以实现消息分发的负载均衡功能。 RPC 契约定义 Redola.Rpc 是基于契约模型通信的使用 Protobuf 2 格式定义 IDL并通过自动生成工具生成 Contract 契约定义。 例如下面是定义 ICalcService 服务的 IDL 定义。 package Redola.Rpc.TestContracts;message AddRequest {required int32 X 10;required int32 Y 20; }message AddResponse {required int32 Result 10; }service CalcService {rpc Add (AddRequest) returns (AddResponse); } 上述 IDL 生成的 ICalcService 接口定义为 public interface ICalcService {AddResponse Add(AddRequest request); } RPC 消息序列化 Redola.Rpc 选择使用 Protobuf 2 进行消息序列化默认集成 protobuf-net 类库稳定使用 protobuf-net v2.0.0.668 版本。 RPC 消息信封 使用 ActorMessageEnvelope 封装消息信封携带如下信息 属性名称 属性类型  属性描述  MessageIDstring 消息 ID唯一 ID通常使用 GUID。 MessageTimeDateTime 消息产生时间 CorrelationIDstring 如果是 Response 则回填 Request 的 MessageID。  CorrelationTime DateTime  如果是 Response 则回填 Request 的 MessageTime。 SourceEndpoint  ActorEndpoint  发送端节点描述消息路由使用默认不需要填写。 TargetEndpointActorEndpoint 目的端节点描述消息路由使用默认不需要填写。  MessageTypestring 消息类型使用字符串描述。 MessageDatabyte[] 消息体消息序列化后的二进制数组。 RPC 消息定义 RPC 消息分为 2 类 InvokeMethodRequest / InvokeMethodResponse 用于定义请求回复模型的方法调用InvokeMethodMessage 用于定义请求无回复模型的方法调用 通常 RPC 消息会包含如下属性信息 属性名称 属性类型  属性描述  MethodLocatorstring RPC 方法描述使用字符串描述。 MethodArguments object[] RPC 方法的入参object 对象数组。 例如对于 ICalcService 中的 Add 方法 MethodLocator Rodola.Rpc.TestContracts.ICalcService/Add_AddRequest;MethodArguments new object[] { new AddRequest(1, 2)}; 鉴于 protobuf 本身是面向契约设计的而 object[] 中的 object 是有不确定性的并不能具体描述一个契约则要求每一个 Argument 都需要支持 protobuf 的序列化传输时系统会携带该 Argument 类型的 AssemblyQualifiedName在对端通过反射进行反序列化。 Actor Directory 节点目录 Actor Directory 负责注册本地 Local Actor 到注册中心Local Actor 也可以在 Shutdown 时将自己从注册中心移除掉。 通过 Actor DirectoryLocal Actor 可以使用 Type 和 Name 进行 Remote Actor 的检索进而进行 Channel 的建立和通信。 Actor Directory 通过 IActorDirectory 的抽象定义可以与不同的目录方案进行集成。例如自实现基于 Actor 的 CenterActorDirectory使用 XML 配置文件的 LocalXmlFileActorDirectory使用 Consul 进行中心注册的 ConsulActorDirectory。 使用 Consul 时实际上是调用了 Consul HTTP API 中的 Agent Register Service 接口 /v1/agent/service/register通过指定 ServiceID 和 ServiceName 进行注册。 通过如下 cmd 启动 Consul Server 和 Consul Agent。 consul.exe agent -config-dir C:\Consul\config\server-01 -bootstrap -ui consul.exe agent -config-dir C:\Consul\config\client-01 -join 192.168.1.133:7774 -ui 下面为启动本地 Consul 进行测试的配置文件。 server-01.json {  datacenter: dc1,  data_dir: C:\\Consul\\data\\server-01,  log_level: INFO,  node_name: server-01,  server: true,  ports: {    http: 7771,    rpc: 7772,    dns: 7773,    serf_lan: 7774,    serf_wan: 7775,    server: 7776} } client-01.json {  datacenter: dc1,  data_dir: C:\\Consul\\data\\client-01,  log_level: INFO,  node_name: client-01,  ports: {    http: 8881,    rpc: 8882,    dns: 8883,    serf_lan: 8884,    serf_wan: 8885,    server: 8886} } Service Catalog Provider 服务提供者 作为 RPC Service 的 Provider 提供方需要显式定义指定 Contract 的服务实例。例如下面将不同的服务契约与服务实例进行了注册。 var serviceCatalog new ServiceCatalogProvider(); serviceCatalog.RegisterServiceIHelloService(new HelloService()); serviceCatalog.RegisterServiceICalcService(new CalcService()); serviceCatalog.RegisterServiceIOrderService(new OrderService()); 实际上可以通过对于 IServiceCatalogProvider 接口的不同实现进行不同方式的本地服务发现和注册。例如可以使用 Attribute 标记服务通过对 Assembly 进行反射进行服务的实例化。 Service Directory 服务目录 本地服务聚集到 Catalog 中后系统会将服务逐个注册到 Service Directory 服务目录中使得其他节点可以检索服务进行使用。 通过 IServiceDirectory 的抽象定义可以与不同的目录方案进行集成。例如使用 XML 配置文件的 LocalXmlFileServiceDirectory使用 Consul 进行中心注册的 ConsulServiceDirectory。 使用 Consul 时注册服务的 log 如下所示。 当 Redola 将服务注册至 Consul 中后可通过 Consul 内置的 UI 进行查看。 http://localhost:8881/ui/#/dc1/services Service Discovery 服务发现 通过 ConsulServiceDiscovery 实现 IServiceDiscovery 服务发现接口从 Consul 检索指定服务类型的服务。 通过 Postman 测试 GET /v1/catalog/services得到如下 JSON 数据。 http://localhost:8881/v1/catalog/services {    Redola.Rpc.TestContracts.ICalcService: [],    Redola.Rpc.TestContracts.IHelloService: [],    Redola.Rpc.TestContracts.IOrderService: [],    consul: [],    server: [] } 通过 Postman 测试 GET /v1/catalog/service得到如下 JSON 数据。 http://localhost:8881/v1/catalog/service/Redola.Rpc.TestContracts.ICalcService [{        ID: 359e8dfe-262d-6eb7-260c-e6e3ad208a14,        Node: client-01,        Address: 192.168.1.133,        Datacenter: dc1,           TaggedAddresses: {            lan: 192.168.1.133,            wan: 192.168.1.133},        NodeMeta: {},        ServiceID: redola/server/server-33333/Redola.Rpc.TestContracts.ICalcService,        ServiceName: Redola.Rpc.TestContracts.ICalcService,        ServiceTags: [],        ServiceAddress: localhost,        ServicePort: 33333,        ServiceEnableTagOverride: true,        CreateIndex: 2147,        ModifyIndex: 2151} ] 服务检索方可通过指定 IServiceLoadBalancingStrategy 的具体实现实施不同的负载均衡策略默认指定的是 IServiceLoadBalancingStrategy 随机选择。 Service Dynamic Proxy 动态代理 为简化 RPC 调用发起方的封装通常会使用 Dynamic Proxy 动态代理技术来动态生成给定契约的服务实例将整体 RPC 的过程透明化。 例如通过下面的代码来动态生成 ICalcService 的动态代理。 var calcClient rpcNode.ResolveICalcService(); 目前 Redola.Rpc 默认集成了 Castle.Core 中的 Dynamic Proxy 模块通过对实例方法的 Intercept 拦截进行 RPC 消息的收发处理。 当然如需集成其他 Dynamic Proxy 类库可通过 ISeviceProxyGenerator 接口进行方案实现。 Redola.Rpc 类库依赖 Redola.Rpc 当前实现依赖了如下开源类库。 ?xml version1.0 encodingutf-8?packagespackage idConsul version0.7.2.3 targetFrameworknet46 /package idCowboy.Sockets version1.3.14.0 targetFrameworknet46 /package idprotobuf-net version2.0.0.668 targetFrameworknet46 /package idCastle.Core version4.1.0 targetFrameworknet46 /package idLogrila.Logging version1.0.3.0 targetFrameworknet46 /package idLogrila.Logging.NLogIntegration version1.0.3.0 targetFrameworknet46 /package idNLog version4.2.3 targetFrameworknet46 //packages
http://www.pierceye.com/news/889346/

相关文章:

  • 广州专业做网站的科技公司维度网络做网站
  • l建设银行网站怎么注册网站
  • 网站设计多少钱wordpress调用菜单代码
  • 成都p2p网站建设手机网站和app有什么区别
  • 人像摄影作品网站怎么做多个网站单点登录
  • 企业网站设计推广方案外贸seo优化方法
  • 广州网站推广找哪家西安网站制作定制
  • 各大招聘网站上海网页制作方法
  • 舟山建设信息港门户网站网站用途及栏目说明
  • 在线留电话的广告专业搜索引擎seo服务商
  • 网站建设方案说明松山湖网站建设公司
  • 西安网站推广方案网站主机是服务器吗
  • seo站内优化培训北京社保网上服务平台官网
  • 滨海做网站价格呼和浩特市网站公司电话
  • vs2012网站开发环境logo免费下载网站
  • 手机网站懒人模板章丘网站优化
  • 常州做网站的企业中国十大动漫学校
  • 广东手机网站制作电话wordpress 被写入文件
  • 意大利之家设计网站什么是软件开发技术
  • 下载flash网站国外域名备案
  • 网站建设服务费应计入什么科目装饰公司简介内容
  • 淘宝客网站域名备案吗漂亮的ppt模板大全免费
  • 西安外贸网站开发网站后端做留言板功能
  • 自建淘宝客APP网站模板制作网站的公司
  • 最佳线上网站制作模板网站开发 企业 定制系统
  • 怎么将网站设置为首页百度seoo优化软件
  • iis6建设网站浏览wordpress显示在线人数
  • 一键制作单页网站女做受网站
  • 网站推广广告 优帮云开发公司资质哪里查
  • 沈阳网站建设思路做海报的话网站