ASP.NET ZERO 学习 —— (3) 开发手册之介绍和MVC 应用前端

来源:互联网 发布:魔域老网络连接堵塞 编辑:程序博客网 时间:2024/05/27 14:11

介绍

解决方案结构(层)

这里写图片描述

在解决方案里面一共有7个项目
- Core 领域模型层(如实体和领域服务)
- Application 应用逻辑层(如应用服务和DTO)
- EntityFramework 包含DbContext, repository 的实现,数据库迁移和EntityFramework的其他具体概念
- WebApi Web API 控制器
- Web 表现层(脚本, 样式和视图)
- Migrator 运行数据迁移的控制台应用层序
- Test 单元和集成测试

应用程序

ASP.NET ZERO 解决方案包含四个应用程序
- MVC 前端应用程序:可以用它创建公共的网站或者是应用程序的登陆页
- Angular 后台单页应用程序:需要用户名及密码登录的应用程序,用AngularJs构造的单页应用。
- MVC 后台多页应用程序 : 用MVC和JQuery构造的和Angular应用相同的方法
- Migrator:运行数据库迁移的控制台应用程序

因此,后台应用有两种架构(SPA 单页面应用 和 MPA 多页面应用)。你可以选择适合自己应用的方式。

多租户

多租户可以很方便的用来构造SaaS(软件即服务),通过这个技术我们可以部署单独的应用多个顾客进行服务。每个租户将拥有自己的角色,用户和设置。

所有的ASP.NET ZERO的基础代码都是按照多租户模式开发的。但是,你可以通过一行配置代码禁用多租户模式,以提供单租户应用。如果多租户模式被禁用,所有的多租户逻辑将被隐藏或变为不可用。如果多租户模式被禁用,那么会只有一个默认的租户叫default

在多租户应用中有两种角色:
- Host:管理所有租户及系统,即SaaS服务的提供者。
- Tenant : 使用SaaS服务的对象,即这个应用的客户

ASP.NET Zero 使用了ABP的Data filters。因此,如果你正确的使用filter接口,它会自动的过滤租户数据。

网站的Root URL

web.config 文件包含了一个设置WebSiteRootAddress,它存储了网站应用程序的Root URL:

<add key="WebSiteRootAddress" value="http://localhost:6240/" />

它是用来计算网站应用程序的一些URL地址。所以,在部署的时候需要更改它。针对于多租户应用,URL可以包含动态的租户名字。举个栗子,{TENANCY_NAME} 将替换为租户名字:

<add key="WebSiteRootAddress" value="http://{TENANCY_NAME}.mydomain.com/" />

因此,ASP.NET Zero 通过URL自动的定位到当前租户。如果像上面那样配置,还可以重定向至应用程序的所有子域名。

  1. 需要配置DNS重定向子域名的一个静态IP地址。申明“所有子域”时,需要使用通配符例如*.mydomain.com
  2. 需要配置IIS绑定静态IP地址

也许还有其他实现方式,但这是最简单的。

MVC 应用前端

ASP.NET Zero 包含可用于公共网站的起点或应用程序的登陆的前端页。当第一次运行项目的时候,会看见像下图所展示的主页:

这里写图片描述

有两个页面,Home pageAbout us。网页的内容有初始模板创建,需要修改。也可以完全删除该内容,并根据需要建立页面。当然,也需要将Logo改为你公司的Logo。

metronic 有很多选项和组件,他们是一个广泛的资源,使您能够更快地建立一个更丰富的网站。

菜单在 FrontEndNavigationProvider类 中定义。当你添加一个新的菜单选项时,将会自动的出现在菜单里。

这里写图片描述

 frontEndMenu                //HOME                .AddItem(new MenuItemDefinition(                    PageNames.Frontend.Home,                    L("HomePage"),                    url: ""                    )                //ABOUT                ).AddItem(new MenuItemDefinition(                    PageNames.Frontend.About,                    L("AboutUs"),                    url: "About"                    )                //MULTI-LEVEL MENU (JUST FOR EXAMPLE)                //).AddItem(new MenuItemDefinition(                //    "MultiLevelMenu",                //    new FixedLocalizableString("Multi level menu")                //    ).AddItem(new MenuItemDefinition(                //        "MultiLevelMenu.1",                //        new FixedLocalizableString("Sub menu item 1")                //        )                //    ).AddItem(new MenuItemDefinition(                //        "MultiLevelMenu.2",                //        new FixedLocalizableString("Sub menu item 2")                //        ).AddItem(new MenuItemDefinition(                //            "MultiLevelMenu.2.1",                //            new FixedLocalizableString("Sub menu item 2.1")                //            )                //        ).AddItem(new MenuItemDefinition(                //            "MultiLevelMenu.2.2",                //            new FixedLocalizableString("Sub menu item 2.2")                //            )                //        ).AddItem(new MenuItemDefinition(                //            "MultiLevelMenu.2.3",                //            new FixedLocalizableString("Sub menu item 2.3")                //            ).AddItem(new MenuItemDefinition(                //                "MultiLevelMenu.2.3.1",                //                new FixedLocalizableString("ASP.NET Boilerplate"),                //                url: "http://aspnetboilerplate.com"                //                )                //            ).AddItem(new MenuItemDefinition(                //                "MultiLevelMenu.2.3.2",                //                new FixedLocalizableString("jtable.org"),                //                url: "http://jtable.org"                //                )                //            )                //        )                //    )                );

在左上角有一个Login链接,这个链接将会跳转到后台应用程序的Login Page

布局

前端布局页面位于 .Web 项目的 Views/Layout 文件夹里

这里写图片描述

_Layout 是主要的布局文件,包含了脚本和样式。语言标签和菜单在 _Header 文件中。 _PreFooter 并没有使用,如果你需要可以自行将其添加至 _Layout 文件里。

租户注册

当你在首页点击 New tenant 链接时,你可以注册一个新的租户。

这里写图片描述
(上图中显示为中英文混搭,是因为部分标签没有对应的中文,后面在配置文件中增加就行)

这里你可以创建一个新的租户。TenantRegistrationController 就是用来注册新租户的。租户的注册也可以在后台配置文件中设置是否禁用。

0 0