65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET MVC 三层架构 Web 应用入门 – 第 1 部分

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.77/5 (70投票s)

2014 年 11 月 12 日

CPOL

7分钟阅读

viewsIcon

254621

downloadIcon

4416

ASP.NET MVC 三层架构 Web 应用入门 – 第 1 部分

目标

本系列文章旨在让初学者了解 ASP.NET MVC web 应用程序在三层架构设计中,数据是如何在不同层之间流动的。

概述

问:你想看一个基于 ASP.NET MVC、jQuery、Bootstrap、C#.NET、Entity Framework 和 Microsoft SQL Server 构建的三层架构的实时 web 应用程序吗?
答:就在这里 http://linkhub.manzoorthetrainer.com/

问:你是否真的渴望从头开始学习如何开发这个基于 ASP.NET MVC 和 Entity Framework 的三层 web 应用程序?
答:那么你将在这里与我一起从头开始学习。

在本文中,我们将学习如何将需求分解为对象,并找出它们之间的关系。然后,我们将学习如何根据这些对象和关系设计数据库。接下来,我们还将了解如何设计项目的基础三层架构并实现各个层。我们将学习如何使用 Entity Framework 实现业务对象层,以及使用 Repository 设计模式和 Entity Framework 实现数据访问层。

对于用户界面,我们将看到 ASP.NET MVC、jQuery 和 Bootstrap。我们将学习 Bootstrap 如何使我们的应用程序具有响应性。我们还将了解如何实现自定义排序和分页。此外,您还将学习表单验证和业务规则验证。我们将使用自定义成员资格提供程序和角色提供程序来保护我们的应用程序,并将其发布到 Web 上。

在高级操作中,我们将尝试了解如何实现事务,将多个模型绑定到单个视图,以及对 ASP.NET Web 应用程序进行 Ajax 化。最后,我们还将看到一些 SSRS 客户端报告。

工具要求

  • SQL Server 2008 Express 或更高版本
  • VS2013 Express 或更高版本

目标读者

  • 应熟练掌握 C#.NET 的面向对象编程
  • 应充分理解 ASP.NET MVC 和 Entity Framework

免责声明

示例代码完全基于我的自学、研究成果以及实际项目。代码仅用于解释整体架构。如果您想在项目中使用此代码,您需要对其进行丰富和修改以满足您的需求。此外,示例项目中的 CRUD 操作非常原始,功能基本,您可以对其进行丰富以添加一些高级功能。

Content

1:介绍

引言

2:分析与设计

需求收集,识别对象和关系,设计数据库,数据库实现和理解架构,创建解决方案和项目。

3:实现所有层

使用 Entity Framework 创建业务对象层,UI 原型设计,设计控制器和操作,实现 Bootstrap

4:实现用户和管理员模块

使用 Repository 设计模式创建数据访问层,创建业务逻辑层并实现 BrowseUrLs,过滤 BrowseURLs,在 MVC 中对 BrowseUrls 表实现自定义排序,在 MVC 中对 BrowseUrls 表实现自定义分页,实现 ListUsers、ListCategory 和 DeleteCategory

5:架构增强和验证

实现带有表单验证的 CreateCategory,实现 SubmitUrl 并在 BLL 中添加基类 - AdminBsClass,为 BLL 和控制器创建基类,实现批准 URL 和用户注册

6:保护 ASP.NET MVC Web 应用

实现身份验证-I,实现身份验证-II,实现授权

7:应用 Bootstrap 主题

应用新的 Bootstrap 主题并实现 Slider-I,应用新的 Bootstrap 主题并实现 Slider-II

8:实现事务

将多个模型绑定到一个视图,处理标识字段,事务

9:Ajax 化 MVC 应用

Ajax 化演示,进行基于 jQuery 的 Ajax 调用,实现 Approve 和 Reject ALL 并带有更新进度条,MVC 中的部分页面更新

10:外部登录

使用 Gmail 登录,使用 Facebook 登录

11:最后冲刺

项目设置 - 源代码,将您的站点上线

12:ASP.NET MVC 中的报表

ASP.NET 中的 RDLC 报表

1:介绍

Link hub 是一个网络门户,用户可以在其中提交自己的门户 URL,并归类到特定类别下,以便在 Link hub 上分享。管理员可以批准或拒绝用户提交的 URL,并且在每种情况下都会向用户发送电子邮件。一旦链接获得批准,它将在 Link hub 门户上可用。

这就是我们即将实现的目标

屏幕 1. 用户注册

屏幕 2. 用户登录

屏幕 3. 登录后提交 URL

屏幕 4. 管理员批准 URL

屏幕 5. 浏览所有已批准的 URL

注意:在未来的文章中,我们还将尝试一些此处未描述屏幕的额外功能。

2:分析与设计(需求收集,识别对象和关系,设计数据库,数据库实现)

假设客户给了我们简要的需求,或者你也可以称之为用户故事,即他们需要开发一个名为 LINKHUB 的门户……

Link hub 是一个网络门户,用户可以在其中提交自己的门户 URL,并归类到特定类别下,以便在 Link hub 上分享。管理员可以批准或拒绝用户提交的 URL,并且在每种情况下都会向用户发送电子邮件。一旦链接获得批准,它将在 Link hub 门户上可用。

步骤 1

根据上述要求,我们首先定义角色和职责。

定义角色和职责 角色

  • 用户
    • 可以浏览网址
    • 可以注册
    • 可以提交网址
  • Admin
    • 可以 CRUD 类别
    • 可以查看所有用户
    • 可以批准或拒绝网址

第二步

现在让我们识别对象。

对象

  • 用户
  • 类别
  • URL

步骤 3

现在我们需要找到这些对象之间的关系

关系

  • 类别:Url (1:M)(因为一个类别可以有多个 Url)
  • 用户:Url (1:M)(因为一个用户可以上传多个 Url)

步骤 4

一旦我们有了对象和关系,我们就可以根据数据库设计的3个关键规则来设计数据库。

数据库设计的3个关键规则

  1. 每个对象一个表
  2. 对于 1:M 关系。1 将成为主表,M 将成为子表,即 1 的主键将作为 M 的外键。

    例如:部门:员工是 1:M 部门

  3. M:M 关系。两个对象都将成为主表,并且会有一个新的表,称为事务表或子表,其中包含主表的主键作为外键。

    例如:学生:课程是 M:M

根据以上三条规则,我们的数据库设计将是这样的,tbl_User 表中的角色列将区分普通用户为 'U',管理员为 'A'。

LinkHubDb

我们来实施它

步骤 5

一旦我们的数据库准备就绪,我们需要插入一些有意义的虚拟记录,这将有助于我们进一步的实现过程。

理解架构

数据访问层

在上述架构中,我们应用程序的后端是 Microsoft SQL Server,为了从数据库访问数据,我们使用 ADO.NET Entity Framework,我们称之为数据访问层(DAL)。

业务逻辑层

在将数据存储到数据库中或从数据库读取数据之后,我需要对数据执行一些业务逻辑。例如,我想存储一名员工的工资,假设是每小时 25 美元,他工作了 50 小时。那么,他的工资将计算为 25 X 50 = 1250 美元,这被称为业务逻辑,这段逻辑代码将进入业务逻辑层,并将使用 C#.NET 编程语言开发。所以,这里是业务逻辑层(BLL)。

UI

现在,我如何与应用程序交互呢?是的,我与应用程序交互的界面被称为用户界面或表示逻辑层,我们在这里可以看到所有表单控件,如文本框、按钮、网格等,我们将使用 ASP.NET MVC 5 来实现我们的表示逻辑层(PLL)。

业务对象层

最后,我如何将数据从一层传递到另一层?我们需要一个容器来存储数据,以便我们可以将该容器传递给其他层,该容器称为业务对象,它们位于业务对象层 (BOL) 中。

因此,我们需要一个包含以下四个项目的解决方案

  1. UI (ASP.NET MVC Web 应用)
  2. BOL (用于生成 DLL 的 C# 类库)
  3. BLL (用于生成 DLL 的 C# 类库)
  4. DAL (用于生成 DLL 的 C# 类库)

今天就到这里。在我们的下一篇文章中,我们将看到创建解决方案和项目

感谢阅读。

© . All rights reserved.