摘要:
高层模块不应该依赖底层模块,两都都应该依赖抽象 一个三层的Demo /// <summary> /// 人员实体类 /// </summary> class Person { public int ID { get; set; } public string Name { get; set; } p 阅读全文
摘要:
对修改是封闭的,对扩展是开放的。 新需求对于已上线的系统是司空见惯的,最佳实践告诉我们对生产中的代码在扩展功能时不要直接修改,而是去重写一个新的方法,新类型或新服务去扩展它,这道理很简单,任何即有代码的变更,都可能带来灾难。(除非100%把握,或有100%把握的胆子,当然也有一个工种,测试能帮我们来 阅读全文
摘要:
最近工作需要,在调研BMP产品(开源和商用),重点了解了activiti和它的商业产品Alfresco Process Services,这是java的体系,成熟,完善(三方开源库是java多年开源积累下的最宝贵的财富),出身.neter的我自然就想看看.net世界里有没有类似的产品。于是就找到两篇 阅读全文
摘要:
单一职责是降低耦合度的指导思想,适用于一个微服务,一个类型,一个方法。 微服务层: 微服务一般按业务的领域来进行拆分:药房微服务就是药房的业务,护士站微服务就是护士站的业务,广义上没有什么问题,但对于一些共用业务,就犯难了,究竟放在那个微服务里?还是合并两个微服务?其实这里就单一,把共用的抽离出来, 阅读全文
摘要:
官方和老人言,asp.net core中尽量用异步,为什么呢?接下来是个小demo,看看同步异步的差别吧,或许通过这个demo,就明白官方和老人的良苦用心了。 1、创建一个sql server的表 CREATE TABLE [dbo].[Students]( [StuNo] [varchar](50 阅读全文
摘要:
Jaeger是收集全链路跟踪的信息,在Jaeger收集的信息中,有请求的url信息,有每个请求的时间间隔,借助这些信息可以进行报警,比如一次较长的请求,或者是某些请求的次数和先后等。不管报警的业务规则是什么,首先得收集Jaeger中的信息。 Jaeger有api可以提供这些信息,比如 /api/se 阅读全文
摘要:
上一篇定义了两种使用Jaeger的方式:中间件和action过滤器,下面这个例子定义了两个服务 WebAPI01,请求WebAPI02,采用的是中间件的请求方式。 引入JaegerSharp包(或发布到自己的Nuget库里引用) WebAPI01的Startup using JaegerSharp; 阅读全文
摘要:
随着微服务的普及,微服务间的调用全链路跟踪也火了起来,Jaeger(https://www.jaegertracing.io/)是CNCF孵化的全链路跟踪型项目,在.net core中,提供了一个Jaeger的Nuget(https://github.com/jaegertracing/jaeger 阅读全文
摘要:
最近设计架构时,有个场景,首先是前后端分离,再就是一前端对多后端,这里需要解决两件事,一是前端的html,js,css需要一个host;二是需要一个api网关,能组织后端的api服务。有很多反向代理产品能实现,这里选择了Nginx来实现。 下面是在一个前端的html文件中调用后端api的例子,前端是 阅读全文
摘要:
GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。 ——出自 https 阅读全文