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 模块化,多租户框架的更多相关文章

  1. ASP.NET Core 简介 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 简介 - ASP.NET Core 基础教程 - 简单教程,简单编程 ← ASP.NET Core 基础教程 ASP.NET Core Windows 环境配置 → A ...

  2. ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 用户注册 上一章节我们终于迁移完了 Identity 的数据,也创建 ...

  3. ASP.NET Core 视图 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 视图 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 视图 花了几章节,终于把 ASP.NET Core MVC 中的 C 控 ...

  4. ASP.NET Core 路由 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 路由 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 路由 前两章节中,我们提到 ASP.NET Core 支持 MVC 开发 ...

  5. ASP.NET Core 中间件 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 中间件 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 中间件 上一章节中,我们我们有讲到 Startup 类中的 Confi ...

  6. 【ASP.NET Core】ASP.NET Core 依赖注入

    一.什么是依赖注入(Denpendency Injection) 这也是个老身常谈的问题,到底依赖注入是什么? 为什么要用它? 初学者特别容易对控制反转IOC(Iversion of Control) ...

  7. 【Asp.Net Core】ASP.NET Core 2.0 + EF6 + Linux +MySql混搭

    好消息!特好消息!同时使用ASP.NET Core 2.0和.NET Framework类库还能运行在linux上的方法来啦! 是的,你没有看错!ASP.NET Core 2.0,.NET Frame ...

  8. 【ASP.NET Core】ASP.NET Core API 版本控制

    几天前,我和我的朋友们使用 ASP.NET Core 开发了一个API ,使用的是GET方式,将一些数据返回到客户端 APP.我们在前端进行了分页,意味着我们将所有数据发送给客户端,然后进行一些dat ...

  9. [.net core]1,asp.net core 的优势及特性

    1.跨平台 支持windows ,linux .macOS 可以托管在iis,apache,Docker,或自宿在自己的进程 2.强大的IDE visual studio 或visual studio ...

  10. ASP.NET Core:ASP.NET Core中使用NLog记录日志

    一.前言 在所有的应用程序中,日志功能是不可或缺的模块,我们可以根据日志信息进行调试.查看产生的错误信息,在ASP.NET Core中我们可以使用log4net或者NLog日志组件来实现记录日志的功能 ...

随机推荐

  1. JavaScript系列-----对象基于哈希存储(<Key,Value>之Key篇) (1)

    1.Hash表的结构 首先,允许我们花一点时间来简单介绍hash表. 1.什么是hash表 hash表是一种二维结构,管理着一对对<Key,Value>这样的键值对,Hash表的结构如下图 ...

  2. Scrum Meeting Alpha - 9

    Scrum Meeting Alpha - 9 NewTeam 2017/11/03 地点:新主楼F座二楼 任务反馈 团队成员 完成任务 计划任务 安万贺 完成了登陆退出功能Pull Request ...

  3. C语 三子棋小游戏

    #include <stdio.h> #include <Windows.h> #include<time.h> #define row 3 #define lis ...

  4. 通过 Visual Studio 的“代码度量值”来改进代码质量

    1 软件度量值指标 1.1 可维护性指数 表示源代码的可维护性,数值越高可维护性越好.该值介于0到100之间.绿色评级在20到100之间,表明该代码具有高度的可维护性:黄色评级在10到19之间,表示该 ...

  5. Python For嵌套循环 图形打印X型 nested loop -练习题

    For嵌套循环图形打印作业很多是C++语言做的,我觉得Python应该也能做,就来试一试. 原网址C++练习题:http://www.imooc.com/qadetail/216848?t=33880 ...

  6. [最短路]P1339 [USACO09OCT]热浪Heat Wave

    题目描述 The good folks in Texas are having a heatwave this summer. Their Texas Longhorn cows make for g ...

  7. unity android相互调用

    简介 有一些手机功能,Unity没有提供相应的接口,例如震动,例如不锁屏,例如GPS,例如... 有太多的特殊功能Unity都没有提供接口,这时候,我们就需要通过使用Android原生的ADT编辑器去 ...

  8. .net 系列:并发编程之一 并发编程的初步理论

    一.关于并发编程的几个误解 1)并发就是多线程 实际上多线程只是并发编程的一种形式而已,在C#中还有很多其他的并发编程技术,包括异步编程,并行编程,TPL数据流,响应式编程等.  2)只有大型服务器才 ...

  9. hive中一些常用的sql语句

    1.建表 CREATE TABLE IF NOT EXISTS student( time varchar(64) , num int , age int )PARTITIONED BY ( scor ...

  10. mysql的复杂查询,连接数据库

    1.MySQL的工具:Navicat 优点:方便2.数据库的导入 mysqldump -u用户名 -p密码 数据库名称 > 导出文集路径 #结构+数据 mysqldump -u用户名 -p密码 ...