ASP.NET没有魔法——目录】的更多相关文章

ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序 ASP.NET没有魔法——为什么使用ASP.NET ASP.NET没有魔法——第一个ASP.NET应用<MyBlog> 本文地址:http://www.cnblogs.com/selimsong/p/7641799.html…
ASP.NET没有魔法——开篇-用VS创建一个ASP.NET Web程序 ASP.NET没有魔法——为什么使用ASP.NET ASP.NET没有魔法——第一个ASP.NET应用<MyBlog> ASP.NET没有魔法——ASP.NET MVC是如何运行的?它的生命周期是什么? ASP.NET没有魔法——ASP.NET MVC & 分层 ASP.NET没有魔法——ASP.NET MVC & 分层 代码篇 ASP.NET没有魔法——ASP.NET与数据库 ASP.NET没有魔法——…
上一篇文章简要说明了MVC所代表的含义并提供了详细的项目及其控制器.视图等内容的创建步骤,最终完成了一个简单ASP.NET MVC程序. 注:MVC与ASP.NET MVC不相等,MVC是一种开发模式,而ASP.NET MVC是MVC这种模式的其中一种实现方式,本文中提到的MVC如果没有特指,那么均表示ASP.NET MVC. 本文将从ASP.NET的M-V-C到底代表什么?如何编写对应的代码?来讨论如何使用ASP.NET MVC开发应用程序. ○ ASP.NET MVC与分层 ○ ASP.NE…
为什么写这一系列文章? 本系列文章基于ASP.NET MVC,在ASP.NET Core已经发布2.0版本,微服务漫天的今天为什么还写ASP.NET?. 答:虽然现在已经有ASP.NET Core并且以微服务架构为主流,但是在生产上仍然存有很多用ASP.NET开发应用程序,所以对于维护来说ASP.NET也是很重要的,另外ASP.NET Core毕竟很多东西仍然是基于ASP.NET的思想的,理解ASP.NET再去学习Core会事倍功半,另外使用一项技术开发应用程序,并不是所有的业务都适合微服务架构…
ASP.NET是什么? ASP.NET是一个使用HTML.CSS.Javascript来构建动态网站或者网站应用程序的Web框架,并且也可以使用它来构建web API和实时通信技术如web soket. ASP.NET提供了三种框架来创建网页应用,它们分别是Web Forms,ASP.NET MVC以及ASP.NET Web Pages,它们都是基于.Net Framework并且共享.Net和ASP.NET核心功能.如基于Identity的安全验证.相同的请求管理设施.session处理以及A…
创建一个ASP.NET MVC应用程序 在之前文章中介绍了ASP.NET中提供了3个开发动态网页的框架,分别是Web Form.MVC以及Web Pages,也大概介绍了它们的特点. 其中MVC对于其它两种框来来说更容易测试并且也更容易维护,MVC是一种开发模式MVC分别表示model(模型)-view(视图)-controller(控制器). Controller:这个类型用于处理来自浏览器的请求,获取数据发送给指定的View的类. Model:它代表应用程序里的数据模型的类. View:它是…
ASP.NET没有魔法——ASP.NET与数据库 ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL ASP.NET没有魔法——ASP.NET MVC 与数据库之ORM ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQL&EF ASP.NET没有魔法——ASP.NET MVC 与数据库之EntityFramework配置与连接字符串 ASP.NET没有魔法——ASP.NET MVC 与数据库之Entity Framework Migrations ASP.…
在之前的文章中介绍了使用ASP.NET MVC来开发一个博客系统,并且已将初具雏形,可以查看文章列表页面,也可以点击文章列表的其中一篇文章查看详情,这已经完成了最开始需求分析的读者的查看列表和查看文章两个需求,但是现在最大的问题是文章数据仍然是“静态”的. 所有数据被保存在内存中,系统在初始化时会自动添加被硬编码在代码文件中的数据,服务器每次重新启动都只会保留这些数据,并且没有提供“作者”的管理接口,“作者”没法来管理这些数据,哪怕是可以进行管理也没用,因为服务器重启后数据就不存在了,这才是最糟…
之前介绍了My Blog如何使用ADO.NET来访问SQL Server获取数据.本章将介绍如何使用My SQL来完成数据管理. 在使用My SQL之前需确保开发环境中安装了My SQL数据库和Connector/Net,后者是一个用C#编写的ADO.NET数据提供器,换句话说无论使用SQL Server还是My SQL,ASP.NET都是通过ADO.NET来访问.操作数据库的,它们唯一的区别是数据提供器,所以连接My SQL仍然需要使用System.Data.dll中的类型,以下是之前文章所介…
什么是ORM 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换.(百度百科). Object-relational mapping (ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between incom…
本章将介绍如何通过Entity Framework来使用My SQL,之前介绍EF时介绍了provider这个配置项,而且也介绍了在ASP.NET访问MySQL数据仍然是通过ADO.NET,不同的地方仅仅是更换了MySQL的数据提供器,那么在EF中是否也只需更换“提供器”就可以了呢?接下来就看一下Entity Framework是如何连接使用My SQL数据库的. 1. 通过Nuget安装Entity Framework组件到BlogRepository.MySQL项目上: 2. 在BlogRe…
前几篇文章中介绍了如何使用Entity Framework来操作数据库,但是对EF的配置.连接字符串的指定仍然存在一些疑问. 本章将对EF的配置进行介绍. EF可以通过两种方式来实现配置,分别是代码方式和配置文件. Entity Framework的配置文件 对于配置文件来说,在安装Entity Framework的时候将会自动在配置文件中插入以下内容: 首先是ConfigSection: ConfigSection是.Net程序用来自定义配置节点的节点,所以这个节点的作用是告诉.Net程序有一…
在开发数据库应用程序的时候,经常会遇到某些表需要添加字段或者修改类型.新增表等需求,而对于EF Code First来说关注的只有实体类,当需求变更时只需要添加新的实体类或者在实体类中添加.删除.修改属性即可.但是修改完成之后要如何将修改同步到数据库中? Entity Framework提供了Migrations机制来解决这一问题. 启用Migrations 在VS中的Package Manager Console窗口中选择默认项目为DbContext存在的项目,并执行命令: enable-mi…
大家都知道在关系型数据库中每张表的每个字段都会有自己的属性,如:数据类型.长度.是否为空.主外键.索引以及表与表之间的关系.但对于C#编写的类来说,它的属性只有一个数据类型和类与类之间的关系,但是在My Blog中并没有对它们之间进行过任何的配置,My Blog可以使用已有的数据库运行,在后续为Post类型添加新属性时,新属性也能够正确的添加到数据库表中,以下是MySQL的数据库表结构: 其中IsPublish和ClickCount是后续通过EF Mirgations添加的.下图的表是直接通过E…
ASP.NET MVC的路由是MVC应用的一个核心也是MVC应用处理的入口,作为一个开发者,在正常情况下仅仅需要做的就是根据需求去定义实体.业务逻辑,然后在MVC的Controller中去调用.View中去展现,“路由”仅仅是定义一个路由表,使用户在点击一个链接时,应用能够命中正确的Controller.正确的Action并获取到正确的参数,使程序能够正常运行. 但ASP.NET没有魔法,一个HTTP请求为什么能够被ASP.NET识别为MVC请求,而不是Web Page或者是静态资源文件?MVC…
前面的文章我们使用ASP.NET MVC创建了个博客应用,那么它是如何工作的呢?我们都知道ASP.NET的程序需要部署到IIS上才能够通过浏览器来访问,那么IIS与ASP.NET MVC程序之间又是如何工作的呢? 本章将从以下几个方面对ASP.NET的运行周期进行介绍: ●IIS及其管道配置 ●HttpApplication Events ●使用Global.asax注册事件 IIS及其管道配置 IIS(Internet Information Services)是微软在Windows操作系统上…
之前的文章介绍了MVC如何通过ControllerFactory及ControllerActivator创建Controller,而Controller又是如何通过ControllerBase这个模板完成了功能的拓展及业务的执行.这一系列MVC类型的设计处处都体现了IoC的设计原则,所以本章将从以下几点对ASP.NET MVC中的IoC进行介绍: ● 什么是IoC ● ASP.NET MVC中的IoC ● 什么是DI ● IoC容器与依赖解析器(Dependency Resolver) ● AS…
之前对Controller创建的分析中,知道了Controller的创建是有两个步骤组成,分别是Controller的类型查找以及根据类型创建Controller实例. 在查询Controller的类型时,实际上是通过RouteData中的Controller名称和命名空间来完成匹配和查找的,而Controller的名称就根据路由对象中的url模板来获取,如默认的url模板:"{controller}/{action}/{id}".以下是根据ControllerName查找Contro…
前面的文章中为My Blog加入了文章的管理功能(ASP.NET没有魔法——ASP.NET MVC使用Area开发一个管理模块),但是管理功能应该只能由“作者”来访问,那么要如何控制用户的访问权限?也就是当用户访问管理功能时需要对用户进行身份验证,对于用户来说身份验证也就是登录,即提供一个登录界面,通过账号密码的形式登录后就可以访问受限制的内容. 本文将从以下几个方面介绍ASP.NET MVC是如何实现用户身份验证的: ● Web中的身份验证 ● ASP.NET的Identity组件介绍 ● A…
之前的My Blog提供了列表的展示和文章显示功能,但是所有数据仍然只能通过数据库录入,为了完成最初的角色“作者”的用例,本章将介绍如何使用“Area”实现My Blog的管理功能. 根据功能分离代码 根据功能分离代码即所谓的模块,由于在My Blog中已经存在博客查看功能,而管理功能与查看功能是有区别的,所以在开发时也应考虑将它们的代码进行区分,以便于阅读和管理.而区分代码最常用的就是通过子目录将它们区分,如下: 在Controllers.Models和Views目录下创建Admin子目录,但…
上篇文章介绍了如何在ASP.NET MVC项目中引入Identity组件来实现用户注册.登录及身份验证功能,并且也提到了Identity是集成到Owin中的,本章就来介绍一下什么是Owin以及如何使用Owin来增强Identity的功能. 本章的主要内容有: ● 什么是Owin ● 关于Katana ● Owin与宿主IIS ● Owin与Identity的集成 ● Identity在Owin中的特殊用法 什么是Owin Owin(Open Web Server Interface)它是一个.N…
前面文章介绍了如何使用Identity在ASP.NET MVC中实现用户的注册.登录以及身份验证.这些功能都是与用户信息安全相关的功能,数据安全的重要性永远放在第一位.那么对于注册和登录功能来说要把密码及用户其它信息通过表单的形式安全的提交到服务器上,那么最适合的方法就是使用HTTPS(如果有条件或者有安全需求,应该所有请求都基于HTTPS,本章不涉及HTTPS的介绍),而在注册时用户的密码应该加密后保存在数据库中,包括登录时对用户名的验证也是对密码明文加密后再进行匹配,对于身份验证来说,服务器…
一个完整的ASP.NET的请求中会存在身份验证(Authentication)阶段以及授权(Authorization)阶段,英文单词Authentication和Authorization非常相似,所以很多时候会混淆这两个概念.身份验证(Authentication)的目的是知道“你”是谁,而授权(Authorization)则是当“你”访问一个资源时是否符合访问条件,符合就将访问权限授权给你进行访问,否则拒绝访问. 本文将从以下几点介绍ASP.NET MVC如何使用Identity完成资源访…
上一篇文章介绍了使用Authorize特性实现了ASP.NET MVC中针对Controller或者Action的授权功能,实际上这个特性是MVC功能的一部分,被称为过滤器(Filter),它是一种面向切面编程(AOP)的实现,本章将从以下几个方面来介绍ASP.NET MVC中的过滤器. ● ASP.NET MVC 中的过滤器及其类型 ● ASP.NET MVC 中常用的过滤器 ● ASP.NET MVC 过滤器的应用方法 ● ASP.NET MVC Action方法的调用与Filter的执行…
上一章节中对路由的注册和匹配过程进行了介绍,知道了MVC的Http请求最终是交由MvcHandler处理的,而其处理过程就是对Controller的创建.执行和释放. 本章将从以下几点进一步对上面提到的三个过程进行介绍: ● MvcHandler概述 ● ControllerBuilder&ControllerFactory ● DefaultControllerFactory ● Controller&ControllerBase ● Controller的执行 MvcHandler概述…
ASP.NET Identity除了提供基于Cookie的身份验证外,还提供了一些高级功能,如多次输入错误账户信息后会锁定用户禁止登录.集成第三方验证.账户的二次验证等,并且ASP.NET MVC的默认模板中就带有这些功能. 本文将从以下几个方面解释ASP.NET Identity是如何实现身份验证机制的: ● ASP.NET Identity的“多重”身份验证 ● Owin身份验证的积极模式与消极模式 ● 再谈Owin身份验证机制 ● 基于Owin的Identity在ASP.NET中身份验证的…
上篇文章介绍了ASP.NET中身份验证的机制与流程,本文将使用代码的来介绍如何实现第三方账户验证与双因子验证. 本章主要内容有: ● 实现基于微软账户的第三方身份验证 ● 实现双因子身份验证 ● 验证码机制 实现基于微软账户的第三方身份验证 在微软提供的ASP.NET MVC模板代码中,默认添加了微软.Google.twitter以及Facebook的账户登录代码(虽然被注释了),另外针对国内的一些社交账户提供了相应的组件,所有组件都可以通过Nuget包管理器安装: 从上图中看到有优酷.微信.Q…
随着软件的不断发展,出现了更多的身份验证使用场景,除了典型的服务器与客户端之间的身份验证外还有,如服务与服务之间的(如微服务架构).服务器与多种客户端的(如PC.移动.Web等),甚至还有需要以服务的形式开放给第三方的,身份验证这一功能已经演化为一个服务,很多大型应用中都有自己的身份验证服务器甚至集群,所以普通的身份验证方式已经不能满足需求. 在.Net领域中也有一些开源的身份验证服务器组件,如IdentityServer(http://identityserver.io/),但是这些组件对于一…
上一篇文章介绍了OAuth2.0以及如何使用.Net来实现基于OAuth的身份验证,本文是对上一篇文章的补充,主要是介绍OAuth与Jwt以及OpenID Connect之间的关系与区别. 本文主要内容有: ● Jwt简介 ● .Net的Jwt实现 ● OAuth与Jwt ● .Net中使用Jwt Bearer Token实现OAuth身份验证 ● OAuth与OpenID Connect 注:本章内容源码下载:https://files.cnblogs.com/files/selimsong/…
之前的文章中介绍了My Blog文章维护功能的开发,开发过程中使用Area的方法建立了用于维护文章的Controller.View和Model.但是无论代码怎么变对于浏览器来说都是通过一个url地址去访问,现在My Blog可用的url有以下几个: http://localhost:52356/ -- 主页 http://localhost:52356/Home --主页 http://localhost:52356/Post --博客列表 http://localhost:52356/Post…