设计模式 – 如何在自己的应用程序域中分离webapi控制器?

我正在集思广益,讨论如何将web api控制器隔离到他们自己的“模块”中,这些模块可以混合到一个webapi应用程序中.但是我想隔离它们并且它们的依赖关系彼此形成,因为可能存在程序集版本冲突.我一直想知道是否可以通过每个控制器的不同应用程序域实现这一点.有人有这方面的经验吗?

解决方法

bin文件夹中的任何内容都将加载到当前的应用程序域中,因此通常这不是问题.但是,在避免版本控制冲突时,您可以使用自定义程序集解析程序将多个程序集/版本加载到同一AppDomain中.这将允许您将其他程序集引入Web api的AppDomain.


public class CustomAssemblyResolver : DefaultAssembliesResolver
    {
        public override ICollection GetAssemblies() 
        { 
             // load all of your assemblies and return 
        }
    }

然后,您将在配置中替换web api的认程序集解析程序.


config.Services.Replace(typeof(IAssembliesResolver),new CustomAssemblyResolver());

当web api转到搜索程序集以查找控制器时,它现在将引入所有其他程序集.有关更详细的说明,请参见this example.

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....