首页 > 编程语言 >【aspnetcore】Web服务中,使用Service来控制业务处理逻辑的版本和二次开发

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

时间:2023-01-03 11:44:27浏览次数:52  
标签:Web Service 接口 IServiceCollection 实例 二次开发 注入

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

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

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

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

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

标签:Web,Service,接口,IServiceCollection,实例,二次开发,注入
From: https://www.cnblogs.com/rocael/p/17021628.html

相关文章

  • 透彻感知 数字孪生智慧隧道Web3D可视化监控系统
    今天为大家分享一个采用数维图的Sovit3D构建轻量化3D可视化场景的案例——智慧隧道三维可视化系统。多维度呈现隧道内外场景,实现隧道内态势的实时监测,运维设备、控制......
  • HTTP客户端之Spring WebClient
    对于HTTP客户端,其实有很多种,而SpringBoot也提供了一种方式叫SpringWebClient。它是在Spring5中引入的异步、反应式HTTP客户端,用于取代较旧的RestTemplate,以便在使用Sprin......
  • navicat 连接Oracle报错ORA-12514:TNS:listener does not currently know of service
     首先检查服务名是否正确,排除改原因后,定位原因为OCI环境和Oracle版本不匹配,Oracle官网下载高版本instantclient依赖解压到本地目录后,navicat-工具-选项-环境重新指定下oc......
  • dremio NamespaceService 简单说明一
    此处主要说明社区版dremionamspaceservice包含的一个能力,我们如果自己扩展下就可以实现简单的部分权限管理参加定义类图如下如可以看出namspaceservice提供的能力 ......
  • Webpack入门
    Webpack入门 一、什么是WebPack,为什么要使用它?模块打包机:分析项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(less,Scss,TypeScript等),并将其......
  • Webpack3.x升级至 4.x 小记
    Webpack3.x升级至4.x小记 近期项目部署遇到点问题,需要升级webpack版本,特此整理一小记,记录升级过程中的依赖包及报错处理。本次升级的依赖包及对应版本对照表:np......
  • webpack4.15.1 学习笔记(一) — 基本概念
    入口(entry)出口(output)加载器Loaders插件Plugins模式webpack.config.js配置 终终终终于下定决心,对你下手了,系统的学习一下。webpack是一个应用程序的静态......
  • webpack4.15.1 学习笔记(二) — 配置及开发环境构建
    目录基本安装配置文件管理资源管理输出构建一个开发环境使用sourcemap选择一个开发工具观察模式webpack-dev-serverwebpack-dev-middlewarewebpack......
  • webpack4.15.1 学习笔记(三) — 模块热替换HMR
    目录模块热替换HMRHMR监听文件变化HMR修改样式表 模块热替换HMR允许在运行时更新各种模块,而无需进行完全刷新。不适用于生产环境,意味着应当只在开发环境使用。......
  • webpack4.15.1 学习笔记(四) — Tree shaking
    webpack4.15.1学习笔记(四)—Treeshaking  目录Treeshaking原理标记效果副作用代码不可被删除如何实现Treeshaking的几种方法总结 Treesh......