【aspnetcore】Web服务中,使用Service来控制业务处理逻辑的版本和二次开发

之所以有这个想法,起源于对于二开的需求和不想要动态加载的执念。起初的一种设计思路是将同一个Route的不同实现,放于不同的项目,进而发布为不同的dll,然后通过动态加载和IWebBuilder.AddControllers().AddApplicationPart(Assembly)的方式来实现。这样做的优势是不需要修改源代码,只需要提前做好约定,然后在部署的时候选择需要的程序集进行部署即可。而弊端则是随着程序集的数量的增加,维护和二次开发会存在大量代码冗余和工作冗余的事情。
故而,在对net core进行的一番思考后,我认为接口化编程是更符合需求的设计思路。

AspNetCore的接口化,依托于其给出的三种注入接口:

  1. IServiceCollection.AddSingleton
    这种方式注入的接口是单例化的,全局仅会使用一个实例。

  2. IServiceCollection.AddScoped
    这种方式注入的接口是域的,每一个客户端所请求的,都应当是同一个实例。

  3. IServiceCollection.AddTransient
    这种方式注入的接口是始终更新的,每一次获取的实例都是新的。

posted @ 2023-01-03 11:38  不正游侠  阅读(70)  评论(0)    收藏  举报