分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

Orchard Core Framework:ASP.NET Core 模块化,多租户框架

发布时间:2023-09-06 01:32责任编辑:白小东关键词:.NET

Orchard Core Framework:ASP.NET Core 模块化,多租户框架

上一篇编写Orchard Core一分钟搭建ASP.NET Core CMS ,介绍ASP.NET Core CMS ,Orchard的ASP.NET Core版,同时对应有一个ASP.NET Core框架。

支持模块化和多租户。整个Orchard Core就是通过一个个模块Module组成的

首先创建一个空的 ASP.NET Core Web应用程序为基础。下面学习模块的建立及使用。

模块化

首先在之前创建好的ASP.NET Core Web应用程序中,新建一个 类库(.NET Core)项目 为ModuleWeb。

然后添加 Microsoft.AspNetCore.Mvc 及 OrchardCore.Module.Targets 引用。

命令如下:

Install-Package Microsoft.AspNetCore.Mvc

Install-Package OrchardCore.Module.Targets -Pre

 接着我们就可以添加一个Views 文件夹和 Controllers 文件夹,以及添加一个HomeController和对应的视图页。

由于类库上没有很好的新建快捷方式,建议从ASP.NET Core Web 项目中复制。

 ???public class HomeController : Controller ???{ ???????public IActionResult Index() ???????{ ???????????return View(); ???????} ???}

Home/Index.cshtml

<h1>Hello from ModuleWeb /Home/Index</h1><h2>LineZero</h2>

Module 创建好了,接下来在ASP.NET Core Web 项目中引用。

首先需要在Web 项目添加一个OrchardCore.Application.Mvc.Targets 包

Install-Package OrchardCore.Application.Mvc.Targets -Pre

接着将ModuleWeb 项目引用进来。

更改Startup.cs 如下:

 ???public class Startup ???{ ???????public void ConfigureServices(IServiceCollection services) ???????{ ???????????services.AddModules(); ???????} ???????public void Configure(IApplicationBuilder app, IHostingEnvironment env) ???????{ ???????????if (env.IsDevelopment()) ???????????{ ???????????????app.UseDeveloperExceptionPage(); ???????????} ???????????app.UseModules(); ???????} ???}

 注意项目中引用为 Microsoft.AspNetCore 以及Microsoft.ApplicationInsights.AspNetCore,配置如下

 ?<ItemGroup> ???<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" /> ???<PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" /> ???<PackageReference Include="OrchardCore.Application.Mvc.Targets" Version="1.0.0-beta1-3667" /> ?</ItemGroup> ?<ItemGroup> ???<ProjectReference Include="..\ModuleWeb\ModuleWeb.csproj" /> ?</ItemGroup>

接着运行程序,输入 ModuleWeb/Home/index 如下

ModuleWeb 也就是正常可用。

多租户

多租户,可以直接根据配置读取用户设置,实现多域名或者多目录。

先来添加一个ModuleInfo ,添加引用:

Install-Package OrchardCore.Module.Targets -Pre

Install-Package OrchardCore.Environment.Shell.Abstractions -Pre

接着添加一个Startup.cs,实现如下:

 ???public class Startup : StartupBase ???{ ???????// This method gets called by the runtime. Use this method to add services to the container. ???????// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940 ???????public override void ConfigureServices(IServiceCollection services) ???????{ ???????} ???????// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. ???????public override void Configure(IApplicationBuilder app, IRouteBuilder routes, IServiceProvider serviceProvider) ???????{ ???????????app.Map("/hello", branch => ????????????????branch.Run(context => context.Response.WriteAsync("Hello World From ModuleInfo LineZero")) ???????????); ???????????app.Map("/info", branch => ???????????{ ???????????????branch.Run(context => ???????????????{ ???????????????????var shellSettings = context.RequestServices.GetRequiredService<ShellSettings>(); ???????????????????return context.Response.WriteAsync($"Request from tenant: {shellSettings.Name}"); ???????????????}); ???????????}); ???????} ???}

 访问/info 会读取shellsetting 获取用户的配置。

在ASP.NET Core Web应用程序 中添加一个tenants.json 如下:

{ ?"Web": { ???"State": "Running", ???// "RequestUrlHost": "web.com", ???"RequestUrlPrefix": "web", ???"Features": [ "ModuleWeb", "ModuleInfo", "OrchardCore.Mvc" ], ???"MyConnectionString": "connectionstring1" ?}, ?"Info": { ???"State": "Running", ???// "RequestUrlHost": "info.com, info.org", ???"RequestUrlPrefix": "info", ???"Features": [ "ModuleInfo", "OrchardCore.Mvc" ], ???"MyConnectionString": "connectionstring2" ?}}

并更改Startup.cs

 ???????public void ConfigureServices(IServiceCollection services) ???????{ ???????????services.AddModules(c=>c.WithTenants()); ???????}

接着将ModuleInfo 添加到Web应用程序,运行应用程序。

访问/web/info ,如下会输出Web

访问/info/info ,如下会输出Info

然后Web 配置下才会有两个模块,Info 配置下只有一个模块。可以根据这些信息来做用户隔离和区分。

对于Orchard Core Framework 更深入的了解,可以查看GitHub 上的源码:https://github.com/OrchardCMS/OrchardCore 

Orchard Core Framework:ASP.NET Core 模块化,多租户框架

原文地址:http://www.cnblogs.com/linezero/p/8093234.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved