受欢迎的博客标签

OrchardCore模块化实现原理

Published

学习OrchardCore的前提一定要了解和会使用MSBuild。我们生成解决方案,将会看到主程序集里面将会自动生成所实现模块特性的模块程序集信息。

正常情况下我们通过nuget直接下载的是程序包,而OrchardCore对于入口则是利用MSBuild加载targets文件

 

.NET Core模块化插件

.NET Core内置提供了AssemblyLoadContext加载dll插件方式实现模块化,然后将其进行注册

 

            var mvcBuilder = services.AddMvc();
            foreach (var module in modules)
            {
                // Register controller from modules
                mvcBuilder.AddApplicationPart(module.Assembly);
            }

 

 

 

OrchardCore:底层设施以及可能需要添加的组件(比如本地化、日志、文件存储、缓存、Lucene等)

OrchardCore.Frameworks:MVC框架

OrchardCore.Modules:模块化包(比如邮件服务、后台作业服务、第三方集成等等)

OrchardCore.Modules.Cms:Cms模块包

OrchardCore.Themes:主题管理

 

 

OrchardCore.Cms.Web:主程序

 

Orchard Core 模块

每个独立的模块可以包含控制器、视图、页面等组件