解决方案结构(层)

创建和下载项目后,您将具有如下所示的解决方案结构:

解决方案有8个项目:

  • Core项目包含域层类(如 实体 和 域服务)。
  • Application项目包含应用程序逻辑(如应用程序服务和 DTO)。
  • EntityFrameworkCore项目包含您的DbContext, 存储库实现,数据库迁移和其他EntityFramework Core特定的概念。
  • Web.Mvc项目包含用于后端和前端应用程序的演示/ API层(控制器,视图,javascripts,样式,图像等)。
  • Web.Host项目不包含任何视图/ css / js文件。相反,它只是将应用程序用作API。因此,任何设备都可以将您的应用程序。
  • Web.Common项目包含Mvc和Host项目使用的常用类。
  • Migrator项目是运行数据库迁移的控制台应用程序。
  • 测试项目包含单元和集成测试。

应用

ASP.NET Zero解决方案包含3个应用:

  • 前端应用程序:可用于为应用程序创建公共网站或着陆页。
  • 后端应用程序:这是用户名和密码输入的应用程序。
  • Migrator:运行数据库迁移的控制台应用程序。

多租户

多租户用于轻松构建SaaS(软件即服务)应用程序。通过这种技术,我们可以部署单个应用程序来服务于 多个客户。每个租户都有自己的角色,用户和设置。

ASP.NET Zero的所有代码库被开发为多租户。但是,如果您正在开发单租户应用程序,则可以通过单行 配置禁用它 。当您禁用它时,所有多租户的东西将被隐藏,不可用。如果多租户被禁用,将会有一个名为Default的租户。

多租户应用有两种观点:

  • Host:管理租户和系统。
  • Tenant:使用应用程序功能。

如果您正在构建多租户应用程序,请阅读 租户文档。

网站根URL

Web.Mvc项目中的appsettings.json包含一个名为“ WebSiteRootAddress ” 的设置,它存储Web应用程序的根URL:

“WebSiteRootAddress”:“http:// localhost:62114 /”

它用于计算应用程序中的一些URL。因此,您需要在部署时进行更改。对于多租户应用程序,此URL可以包含动态租户(tenancy)名称。在这种情况下,请将{TENANCY_NAME}替换为租户名称:

“WebSiteRootAddress”:“http:// {TENANCY_NAME} .mydomain.com /”

因此,AspNet Zero可以从URL自动检测当前的租户。如果您按上述方式进行配置,则还应将所有子域重定向到您的应用程序。要做到这一点;

  1. 您应该配置DNS以将所有子域重定向到静态IP地址。要声明“所有子域”,您可以使用通配符,例如* .mydomain.com。
  2. 您应该配置IIS将此静态IP绑定到应用程序。

可能还有其他的方法,但这是最简单的。

相同的“WebSiteRootAddress”设置也存在于.Web.Host项目中的appsettings.json中。此外,.Web.Host应用程序包含“ ClientRootAddress ”,如果通过Angular UI 使用该API,则使用该 ClientRootAddress。如果您不使用Angular UI,您可以忽略它。最后,“ CorsOrigins ”设置用于允许一些域用于跨源请求。当您在分开的服务器/域中托管您的Angular  UI时,这也很有用。

ASP.NET Zero--解决方案结构(层)的更多相关文章

  1. 《ASP.NET Core In Action》读书笔记系列五 ASP.NET Core 解决方案结构解析1

    创建好项目后,解决方案资源管理器窗口里我们看到,增加了不少文件夹及文件,如下图所示: 在解决方案文件夹中,找到项目文件夹,该文件夹又包含五个子文件夹 -Models.Controllers.Views ...

  2. ASP.NET SignalR2持久连接层解析

    越是到年底越是感觉浑身无力,看着啥也不想动,只期盼着年终奖的到来以此来给自己打一针强心剂.估摸着大多数人都跟我一样犯着这样浑身无力的病,感觉今年算是没挣到啥钱,但是话也不能这么说,搞得好像去年挣到钱了 ...

  3. 转发 win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案

    win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NE ...

  4. 【翻译】Organizing ASP.NET MVC solutions 如何组织你的ASP.NET MVC解决方案

    序言 时隔一年,弦哥重出江湖,对于我们学习.NET MVC那将有大大的好处,期待弦哥的重构系列.在弦哥与jerrychou的交流中提到了一篇文章http://lostechies.com/jimmyb ...

  5. 认识ASP.NET 5项目结构和项目文件xproj

    ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方. 我们先用 Visual Stu ...

  6. asp.netMVC中,视图层和控制器层的传值

    Asp.Net Mvc 控制器与视图的数据传递 摘要:本文将讨论asp.net mvc框架中的数据传递. 数据传递也就是控制器和视图之间的交互,比如在视图中提交的数据,在控制器怎么获取,或者控制器从业 ...

  7. 1.2 认识ASP.NET MVC项目结构

    1.开发环境 操作系统:xp.vista.windows 7.windows 8.windows server 2003|2008|2008R2|2012: 集成开发环境IDE: Vsiual Stu ...

  8. asp.net的Master-Content结构简介

    在一个网站中,页面应该具有统一的布局方式,这些统一的布局内同将显示到所有的页面中,它提供了用户最基本的功能.Asp.Net2.0通过Master-Content结构提供了这样统一页面管理的机制. Ma ...

  9. 依赖反转原则DIP 与 asp.net core 项目结构

    DIP 依赖反转原则 Dependency Inversion Principle 的定义如下: 高级别的模块不应该依赖于低级别的模块, 他们都应该依赖于抽象. 假设Controller依赖于Repo ...

  10. 分享一个ASP.NET的弹出层,比较好用!

    网上的一些弹出层的控件多了去了,我很久之前用了一个,效果还不错,但如果应用到ASP.NET的话,会出现“弹出层内的控件runat='server'失效”的情况,具体情况我也不太会描述,但就是那些onc ...

随机推荐

  1. javascript时间戳与日期格式之间的互转

    1. 将时间戳转换成日期格式 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己拼接起来就好了 ...

  2. Python内置函数(9)——callable

    英文文档: callable(object) Return True if the object argument appears callable, False if not. If this re ...

  3. SpringCloud(4)---Ribbon服务调用,源码分析

    SpringCloud(4)---Ribbon 本篇模拟订单服务调用商品服务,同时商品服务采用集群部署. 注册中心服务端口号7001,订单服务端口号9001,商品集群端口号:8001.8002.800 ...

  4. mybatis框架(6)---mybatis插入数据后获取自增主键

    mybatis插入数据后获取自增主键 首先理解这就话的意思:就是在往数据库表中插入一条数据的同时,返回该条数据在数据库表中的自增主键值. 有什么用呢,举个例子: 你编辑一条新闻,同时需要给该新闻打上标 ...

  5. java多线程(5)---ThreadPoolExecutor

    ThreadPoolExecutor 官方API解释线程池的好处: (1)通过重用线程池中的线程,来减少每个线程创建和销毁的性能开销. (2)对线程进行一些维护和管理,比如定时开始,周期执行,并发数控 ...

  6. Content Security Policy (CSP) 介绍

    当我不经意间在 Twitter 页面 view source 后,发现了惊喜. <!DOCTYPE html> <html lang="en"> <h ...

  7. SpringBoot入门教程(六)SpringBoot2.0统一处理404,500等http错误跳转页

    在做web项目的时候,大家对404.500等http状态码肯定并不陌生.然而无论是哪种"非正常"状态码,都不是我们想遇到的.尤其像一些500这种服务器内部错误,不愿意展示给用户的, ...

  8. SpringCloud Feign的分析

    Feign是一个声明式的Web Service客户端,它使得编写Web Serivce客户端变得更加简单.我们只需要使用Feign来创建一个接口并用注解来配置它既可完成. @FeignClient(v ...

  9. Chapter 5 Blood Type——22

    Suddenly the sidewalk disappeared from beneath me. My eyes flew open in shock. 突然我身下的人行道消失了.我飞快的睁开眼睛 ...

  10. 离线批量数据通道Tunnel的最佳实践及常见问题

    基本介绍及应用场景 Tunnel是MaxCompute提供的离线批量数据通道服务,主要提供大批量离线数据上传和下载,仅提供每次批量大于等于64MB数据的场景,小批量流式数据场景请使用DataHub实时 ...