源设计就单纯完成了把服务转发到特定的服务模块,一定程度上解耦了业务流程 但是我们实际开发过程中会面临服务转发后还有一些列关联的服务 举个例子 你调用了发送邮件的服务,接下来会面临扣费的服务,扣费之后会自动生成一个消费流水 你看上去只做了一件事儿,但是实际上是一套业务流程流水线 我看见Jeffcky大佬博客的一篇文章<EntityFramework Core进行读写分离最佳实践方式,了解一下(二)?> 看见了DiagnosticSource的发布订阅,随即折腾了一番,完成了我心目中的转发服务新版…
标题:ASP.NET Core中实现单体程序的事件发布/订阅 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/10468058.html 项目源代码:https://github.com/lamondlu/EventHandlerInSingleApplication 背景 事件发布/订阅是一种非常强大的模式,它可以帮助业务组件间实现完全解耦,不同的业务组件只依赖事件,只关注哪些事件是需要自己处理的,而不用关注谁来处理自己发布事件,事件追溯(Ev…
我有个小伙伴问我,他需要写一个转发服务的他有很多功能要通过他的服务转发~ 技术栈又不一定asp.net core,我就想起泥水老前辈的BeetleX.FastHttpApi 中午午休,折腾了一会儿前辈,问清楚了FastHttpApi如何配置控制器依赖注入和控制器的路由配置 花了一些时间折腾,算折腾出来了 入口调用部分代码如下 static void Main(string[] args) { UnitWork.Instance.Register((services) => { services.…
在web服务里面,很常见出现各种问题,需要一些响应的策略,比如服务繁忙的时候,重试,或者重试等待 服务繁忙的时候根据策略即使处理 关于接入Polly我还是沿用之前的代码,继续迭代 Web Api用的是FastHttpApi 增加在过滤器里 public class RetryAttribute: FilterAttribute { private int _count; public RetryAttribute(int count) { _count = count; } public ove…
什么是GRPC gRPC 是一种与语言无关的高性能远程过程调用 (RPC) 框架. gRPC 的主要优点是: 高性能轻量级 RPC 框架. 协定优先 API 开发,默认使用协议缓冲区,允许与语言无关的实现. 可用于多种语言的工具,以生成强类型服务器和客户端. 支持客户端.服务器和双向流式处理调用. 使用 Protobuf 二进制序列化减少对网络的使用. 这些优点使 gRPC 适用于: 效率至关重要的轻量级微服务. 需要多种语言用于开发的系统. 需要处理流式处理请求或响应的点对点实时服务. Dap…
在Razor页面应用程序中添加一个实体 在本篇文章中,学习添加用于管理数据库中的书籍的实体类.通过实体框架(EF Core)使用这些类来处理数据库.EF Core是一个对象关系映射(ORM)框架,它简化了编写数据库访问的代码. 创建的实体类被称为POCO类(“普通的CLR对象”)因为他们没有在EF Core中有任何依赖.它们定义存储在数据库中的数据的属性. 一.添加一个实体类 在Visual Studio 2017的解决方案资源管理器中,右键单击该RazorMvcBooks,在弹出菜单中选择,项…
当一个客户端执行SUBSCRIBE命令订阅某个或某些频道时,这个客户端与被订阅频道之间就建立起了一种订阅关系. Redis将所有频道的订阅关系保存在服务器状态的pubsub_channels字典里面,这个字典的键是某个被订阅的频道,而键的值是一个链表,链表里面记录了所有订阅这个频道的客户端: struct redisServer{ //保存所有频道的订阅关系 dict *pubsub_channels; } 如果频道已经有其他的订阅者,那么他在pubsub_channels字典中必然有相应的订阅…
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面 学习ASP.NET Core Razor 编程系列五——Asp.Net Core Razor新建模板页面 学习ASP.NET C…
前言 上篇文章实际上只讲了服务治理中的服务注册,服务与服务之间如何调用呢?传统的方式,服务A调用服务B,那么服务A访问的是服务B的负载均衡地址,通过负载均衡来指向到服务B的真实地址,上篇文章已经说了这种方式的缺点.那么下面讲如何在spring cloud+dotnet core的应用下进行服务调用. 代码实现 假设一种场景,有一个订单服务,有一个产品服务,其中产品服务是由两个服务节点组成一个集群.需求是订单服务访问产品服务的一个API接口.根据上一章文章的内容创建3个应用程序ServiceOne…
前言 上篇文章实际上只讲了服务治理中的服务注册,服务与服务之间如何调用呢?传统的方式,服务A调用服务B,那么服务A访问的是服务B的负载均衡地址,通过负载均衡来指向到服务B的真实地址,上篇文章已经说了这种方式的缺点.那么下面讲如何在spring cloud+dotnet core的应用下进行服务调用. 代码实现 假设一种场景,有一个订单服务,有一个产品服务,其中产品服务是由两个服务节点组成一个集群.需求是订单服务访问产品服务的一个API接口.根据上一章文章的内容创建3个应用程序ServiceOne…