第一篇文章(大约半年前写的):https://www.cnblogs.com/cgzl/p/11246324.html gRPC in ASP.NET Core 3.x -- Protocol Buffer(2)Go语言的例子(上) 接着上一篇文章. 写入到JSON 首先写一个func: 在这里,使用了jsonpb里面的Marshaler这个struct,这个struct上有一个方法叫做MarshalToString,它可以把proto.Message类型转化为JSON字符串. 与此同时,需要添…
当你第一次定义Protocol Buffer的消息的时候,你肯定会给消息设定一套规则需求.但是随着时间的推进,你的业务可能会发生了变化,与此同时,你的Protocol Buffer消息类型的需求也会随之变化. 也就是说:有一些字段可能会发生变化,可能会添加一些字段,也可能会删除一些字段.但是可能有很多程序正在使用/读取你的Protocol Buffer的消息,但是它们没法都随着需求进行更新.所以,在你对源数据进行演进的时候,一定不要引起破坏性变化,否则其它的程序可能就无法正常工作了.   主要有…
上一篇文章(大约半年前写的):https://www.cnblogs.com/cgzl/p/11246324.html 建立Go项目 在GOPATH的src下面建立一个文件夹 protobuf-go,然后在里面执行命令 go mod init github.com/solenovex/protobuf-go 这个命令是用来初始化go module的. 命令执行后在该目录生成go.mod文件,其内容如下:…
现如今微服务很流行,而微服务很有可能是使用不同语言进行构建的.而微服务之间通常需要相互通信,所以微服务之间必须在以下几个方面达成共识: 需要使用某种API 数据格式 错误的模式 负载均衡 ... 现在最流行的一种API风格可能是REST,它主要是通过HTTP协议来传输JSON数据. 但是现在我们可以看看gRPC(https://grpc.io/),它来自Google,并且支持众多主流的语言包括Go,Dart,C#,C/C++,Nodejs,Python等等. 下面就学习一下gRPC. gRPC能…
前言: 上一篇文章中简单的对gRPC进行了简单了解,并实现了gRPC在ASP.NET Core中服务实现.客户端调用:那么本篇继续对gRPC的4中服务方法定义.其他使用注意点进一步了解学习 一.gRPC的4类服务方法 简单 RPC(一元方法):客户端向服务器发送单个请求并获得单个响应,就像普通的函数调用一样. 示例: rpc UnaryCall(ExampleRequest) returns (ExampleResponse) {} 服务器端流式 RPC: 客户端发送请求到服务器,拿到一个流去读…
gRPC的结构 在我们搭建gRPC通信系统之前,首先需要知道gRPC的结构组成. 首先,需要一个server(服务器),它用来接收和处理请求,然后返回响应. 既然有server,那么肯定有client(客户端),client的作用就是向server发送请求,具体就是生成一个请求,然后把它发送到server,然后等待server的响应. 但是它们不必是一对一的关系,在整个系统里,可以有多个server,也可以有多个client.根据实际情况,一个应用程序可能是gRPC的server,也可能是gRP…
微软推出ASP.NET Core 2.0的一般可用性,并发布.NET Core 2.0.该公司还推出了其旗舰集成开发环境(IDE)的更新:Visual Studio 2017版本15.3和Visual Studio 2017 for Mac 7.1版本.ASP.NET是一个用于构建动态网站,Web应用程序和Web服务的服务器端Web应用程序框架..NET Core是一个免费的跨平台管理软件框架. ASP.NET Core 2.0具有.NET Core 2.0兼容性和Visual Studio 2…
有的时候我们会直接在生产环境上更新页面文件,比如更改了JS代码,CSS代码或页面的文案,布局等.这种没有改到后台代码的情况一般就是直接发布页面文件了,在asp.net core 2.2以前的版本(没有主动配置页面缓存的情况)更新了是会立即生效的,但是在2.2及以后的版本在生产环境上要想立即生效得需要自己手动配置了,代码如下: services.AddMvc(options => { options.Filters.Add(new GlobalExceptionFilter()); }).AddJ…
背景 通常,.Net 应用程序中的配置存储在配置文件中,例如 App.config.Web.config 或 appsettings.json.从 ASP.Net Core 开始,出现了一个新的可扩展配置框架,它允许将配置存储在配置文件之外,并从命令行.环境变量等等中检索它们. 在传统项目中,修改配置文件,需要登录生产环境进行修改,当项目多的时候,不便于维护和管理. 因此我们通过Consul在线实时配置,则达到了只更改配置不重启服务即可实时响应的目的.实现思路基于Consul的Key/value…
第1部分 跨平台开发体验 1 跨平台开发体验 001 跨平台开发体验: Windows [上篇]         002 跨平台开发体验: Windows [中篇]        003 跨平台开发体验: Windows [下篇]        004 跨平台开发体验: Mac OS        005 跨平台开发体验: Linux        006 跨平台开发体验: Docker 2 跨平台的奥秘 007 上篇:历史的枷锁        008 中篇:复用之殇        009 下篇…
一.gRPC简介: gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架. gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建.它使用HTTP/2作为通信协议,使用 Protocol Buffers(协议缓冲区) 作为序列化协议. 引用自微软文档: gRPC 的主要优点是: 现代高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现. 可用于多种语言的工具,以生成强类型服务器和客户端. 支持客户端.服务…
效果图: 01 02 直接贴代码了: NoTrim public class NoTrimAttribute : Attribute { } 我们自定义的模型绑定提供程序 /// <summary> /// 自定义的“天空”模型绑定提供程序 /// </summary> public class MyModelBinderProvider : IModelBinderProvider { public IModelBinder GetBinder(ModelBinderProvid…
一.简介 gRPC 是一个由Google开源的,跨语言的,高性能的远程过程调用(RPC)框架. gRPC使客户端和服务端应用程序可以透明地进行通信,并简化了连接系统的构建.它使用HTTP/2作为通信协议,使用 Protocol Buffers 作为序列化协议. 它的主要优点: 现代高性能轻量级 RPC 框架. 约定优先的 API 开发,默认使用 Protocol Buffers 作为描述语言,允许与语言无关的实现. 可用于多种语言的工具,以生成强类型的服务器和客户端. 支持客户端,服务器和双向调…
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安装.NET Core3.0预览版的SDK.至于开发工具我用的时VS2019,当然你也可以使用VS Code进行. 作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/10631420.html gRPC的简单介绍 gRPC 是一种与语言无关的高性能远程过程调用…
一.开头聊骚 本文算是对于 ASP.NET Core 3.0 gRPC 研究性学习的最后一篇了,以后在实际使用中,可能会发一些经验之文.本文主要讲 ASP.NET Core 本身的认证授权和gRPC接入,认证方式采用目前主流的 JWT 结合 IdentityServer4. 二.服务端配置 我们首先需要在服务端配置认证和授权.gRPC基于此文的Demo来开始: ASP.NET Core 3.0 使用gRPC ,IdentityServer 基于此文Demo: https://www.cnblog…
一. 前言 gRPC 在当前最常见的应用就是在微服务场景中,所以不可避免的会有服务注册与发现问题,我们使用gRPC实现的服务可以使用 Consul 或者 etcd 作为服务注册与发现中心,本文主要介绍Consul. 二. Consul 介绍 Consul是一种服务网络解决方案,可跨任何运行平台以及公共或私有云来连接和保护服务.它可以你发现服务并保护网络流量.它可以在Kubernetes中使用,实现服务发现和服务网格功能(k8s默认etcd). 提供安全服务通讯,保护和观察服务之间的通信,而无需修…
一. 说明 本全家桶现在只包含了入门级别的资料,实战资料更新中. 二.官方文档 gRPC in Asp.Net Core :官方文档 gRPC 官网:点我跳转 三.入门全家桶 正片: ASP.NET Core 使用gRPC ASP.NET Core gRPC 双向流 ASP.NET Core gRPC 拦截器 ASP.NET Core gRPC 身份认证和授权 ASP.NET Core gRPC 聚合调用 ASP.NET Core gRPC 单元和集成测试 不能点击代表未更新 四.实战 ASP.…
一. 前言 gRPC 服务实现健康检查有两种方式,前面在此文 ASP.NET Core gRPC 使用 Consul 服务注册发现 中有提到过,这里归纳整理一下.gRPC 的健康检查,官方是定义了标准的规则也就是 proto 的,所以这两种方式都大同小异. 二. 方法一 自己手动添加 proto 文件,然后自己实现健康检查服务. 新建一个 proto 文件,命名为 HealthCheck.proto syntax = "proto3"; package grpc.health.v1;…
将 gRPC 服务添加到 ASP.NET Core 应用 gRPC 需要gRPC包. 配置 gRPC 在 Startup.cs 中: gRPC 是通过AddGrpc方法启用的. 每个 gRPC 服务通过MapGrpcService方法添加到路由管道. C#复制     public class Startup { // This method gets called by the runtime. Use this method to add services to the container.…
目前.NET Core 3.0的版本为.NET Core 3.0 Preview 3,对应ASP.NET Core 3.0 Preview 3. ASP.NET Core 3.0 之后将不再支持.NET Framework,只运行在.NET Core 上面. ASP.NET Core 3.0 现在已经出到了第三个预览版,增加和改进了很多功能. 环境准备: 下载最新.NET Core 3.0 Preview 3 SDK, https://dotnet.microsoft.com/download/…
我们都知道在6月12日的时候微软发布了.NET Core 3.0的第6个预览版.针对.NET Core 3.0的发布我们国内的微软MVP-汪宇杰还发布的官翻版的博文进行了详细的介绍.具体的可以关注"汪宇杰博客"公众号,或者我的"DotNetCore实战"公众号然后在历史文章里面进行查阅.而我们这篇文章将会介绍本次更新中对ASP.NET Core和Blazor所做的更新.当然本文的大部分内容翻译自ASP.NET的首席项目经理Daniel Roth的介绍. 注:英语能力…
8.Server   第五个对象 服务器在管道中的职责非常明确,当我们启动应用宿主的WebHost的时候,服务它被自动启动.启动后的服务器会绑定到指定的端口进行请求监听,一旦有请求抵达,服务器会根据该请求创建出代表上下文的HttpContext对象,并将该上下文作为输入调用由所有注册中间件构建而成的RequestDelegate对象. 简单起见,我们使用如下这个简写的IServer接口来表示服务器.我们通过定义在IServer接口的唯一方法StartAsync启动服务器,作为参数的handler…
ASP.NET Core请求处理管道由一个服务器和一组有序排列的中间件构成,所有中间件针对请求的处理都在通过HttpContext对象表示的上下文中进行.由于应用程序总是利用服务器来完成对请求的接收和响应工作,所以原始请求上下文的描述由注册的服务器类型来决定.但是ASP.NET Core需要在上层提供具有一致性的编程模型,所以我们需要一个抽象的.不依赖具体服务器类型的请求上下文描述,这就是本章着重介绍的HttpContext.[本文节选自<ASP.NET Core 3框架揭秘>第13章, 更多…
ASP.NET Core的请求处理管道由一个服务器和一组中间件构成,但对于面向传输层的服务器来说,它其实没有中间件的概念.当服务器接收到请求之后,会将该请求分发给一个处理器进行处理,对服务器而言,这个处理器就是一个HTTP应用,此应用通过IHttpApplication<TContext>接口来表示.由于服务器是通过IServer接口表示的,所以可以将ASP.NET Core框架的核心视为由IServer和IHttpApplication<TContext>对象组成的管道.[本文节…
注册的服务器和中间件共同构成了ASP.NET Core用于处理请求的管道, 这样一个管道是在我们启动作为应用宿主的WebHost时构建出来的.要深刻了解这个管道是如何被构建出来的,我们就必须对WebHost和它的创建者WebHostBuilder这个重要的对象具有深刻的理解.[本文已经同步到<ASP.NET Core框架揭秘>之中] 目录一.WebHost    WebHostOptions    构建管道的三个步骤二.WebHostBuilder    WebHost的创建    几个常用的…
前言 首先提一下微软更名后的叫法: ASP.NET 5 更名为 ASP.NET Core 1.0 .NET Core 更名为 .NET Core 1.0 Entity Framework 7 更名为 Entity Framework Core 1.0 或者简称 EF Core 1.0         现在伴随着ASP.NET Core 1.0 RC2版的更新速度,许多官方文档都跟不上,还停留在RC1版的使用方式上(RC1版是继Beta版之后第一个发布的稳定版本).RC1和RC2的区别在于RC1版…
现在ASP.NET Core还在不断成长.更新中,说不定到了明天又换了个模样,就如同一个小孩,从蹒跚学步,到奔向未来. 所以我们可以相应的去理解更新中所发生的变化,包容它.呵护它,而不是盲目的指责与批评!正所谓"三十年河东,三十年河西,莫欺少年穷" 这时不禁让我想起了一首优美的旋律,"门前老树张新芽,院里枯木又开花----" 注:以下ASP.NET Core都有Core标识   工具 2015 插件:Open Command Line(运行dotnet命令)   折…
前言 首先提一下微软更名后的叫法: ASP.NET 5 更名为 ASP.NET Core 1.0 .NET Core 更名为 .NET Core 1.0 Entity Framework 7 更名为 Entity Framework Core 1.0 或者简称 EF Core 1.0         现在伴随着ASP.NET Core 1.0 RC2版的更新速度,许多官方文档都跟不上,还停留在RC1版的使用方式上(RC1版是继Beta版之后第一个发布的稳定版本).RC1和RC2的区别在于RC1…
ASP.NET Core 现在ASP.NET Core还在不断成长.更新中,说不定到了明天又换了个模样,就如同一个小孩,从蹒跚学步,到奔向未来. 所以我们可以相应的去理解更新中所发生的变化,包容它.呵护它,而不是盲目的指责与批评!正所谓“三十年河东,三十年河西,莫欺少年穷” 这时不禁让我想起了一首优美的旋律,“门前老树张新芽,院里枯木又开花…………” 注:以下ASP.NET Core都有Core标识 工具 2015 插件:Open Command Line(运行dotnet命令) 折腾 将 do…
为什么使用 Jwt 最近,移动开发的劲头越来越足,学校搞的各种比赛都需要用手机 APP 来撑场面,所以,作为写后端的,很有必要改进一下以往的基于 Session 的身份认证方式了,理由如下: 移动端经常要保持长时间(1 到 2 星期)在线,但是 Session 却不好在服务端保存这么久,虽然可以持久化到数据库,但是还是挺费资源 移动端往往不是使用的网页技术,所以藏在 Cookie 里面的 SessionId 不是很方便的传递给服务端 服务端暴露给客户端的接口往往是 RESTful 风格的,这是一…