设计共享功能的ASP.NET Core 2应用程序的方法

时间:2017-10-20 18:15:00

标签: asp.net-core architecture

目前我的任务是创建一堆小型到中型的应用程序,每个应用程序都有一些共同的功能。

  1. 实施预先批准的基于boostrap的图形设计。因此,他们将使用相同的资产,图像,CSS和JavaScript组件。
  2. 分享相同的基于许可的机制。将构建一个应用程序服务,它将扫描文件或数据库以获取每个应用程序可用的许可证数量,从而授予或拒绝用户访问权限。唯一不同的是应用程序实例本身的名称。
  3. 使用AzureAD身份验证。
  4. 每个人都必须使用相同的授权机制。在给定用户AAD帐户的情况下,将构建基于声明的机制以从数据库检索声明。
  5. 每个人必须共享相同的管理控制台。此控制台将是填充用户信息和通用目录所需的控制台。
  6. 将构建一项服务,以在应用程序中显示Toast通知。
  7. 将构建电子邮件通知服务,以便在业务规则触发时向用户发送电子邮件。
  8. 以及其他一些不太重要的功能,但这些功能是核心功能。

    第一个也许是天真的方法是为每个应用程序创建一个ASP.NET Core 2解决方案,并在每个应用程序可以共享的核心组件类型中实现共享功能。然而,虽然这可能适用于第2点到第5点,但我仍然会为每个应用重复图形用户界面设计(基本上,复制wwwroot文件夹以及共享剃刀视图五次)。因此,明天CSS中的更改必须重复五次。

    另一种方法是创建单个ASP.NET Core 2解决方案,实现共享功能和UI,然后使用ASP.NET区域2的“区域”功能,每个区域都是不同的应用程序。这种方法的问题是运送应用程序:如果我必须在客户的服务器中安装五个应用程序,没问题。如果我必须安装,比方说只有两个应用程序,那么我必须运送五个应用程序,并找到一种方法来禁用其他三个应用程序。

    因此,我想知道ASP.NET Core 2中是否有用于处理此类场景的功能,或者是什么是可在此处应用的行业标准架构设计。

    在使用Unity的Windows Presentation Foundation中,我可以创建一个公共shell,然后在同一个shell窗口中加载该shell中的模块。因此,使用配置文件,我可以根据需要添加或删除模块。我正在寻找的是类似概念的东西。我不想创建五个ASP.NET核心解决方案并复制粘贴wwwroot文件夹并实现相同的授权,通知,电子邮件等机制,而是找到一种方法来加载核心,常用功能然后加载附加功能。

    提前致谢。

0 个答案:

没有答案