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

介绍

解决方案结构(层)

这里写图片描述

在解决方案里面一共有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/" />
  • 1

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

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

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

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

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

MVC 应用前端

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

这里写图片描述

有两个页面,Home page 和 About 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"
                //                )
                //            )
                //        )
                //    )
                );
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

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

布局

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

这里写图片描述

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

租户注册

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值