2016年11月30日

集群 & 负载均衡

摘要: 集群(Cluster) 指一组计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信,实现分布式计算。在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。 集群技术的分类 高可用集群(High Availability,HA):高可用的含义是最大限... 阅读全文

posted @ 2016-11-30 22:17 SkySoot 阅读(9684) 评论(0) 推荐(2) 编辑

CDN 技术详解(DNS,GSLB,Cache)

摘要: CDN 是什么 CDN(Content Delivery Network,内容分发网络),即全网内容加速服务。为了尽可能的避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定,由此,诞生了 CDN 加速服务。 CDN 的作用 利用遍布全球(全国,或企业自行规划的各大城市及区域)的加速节点,帮助企业将业务内容发布至最接近用户的边缘节点,使用... 阅读全文

posted @ 2016-11-30 19:26 SkySoot 阅读(13926) 评论(0) 推荐(0) 编辑

2016年11月26日

HttpModule & HttpHandler

摘要: ASP.NET 处理请求的过程 inetinfo.exe:www 服务进程,IIS 服务 和 ASPNET_ISAPI.dll 都寄存在此进程中。 ASPNET_ISAPI.dll:处理 .aspx 文件的 win32 组件。其实,IIS 服务器只能识别 .html 文件的,当发现被请求的文件是 .aspx 文件时,IIS 服务器将其交给 aspnet_isapi.dll 来处理。 aspnet... 阅读全文

posted @ 2016-11-26 16:14 SkySoot 阅读(580) 评论(0) 推荐(0) 编辑

2016年11月25日

ASP.NET Web 应用程序及页面生命周期

摘要: 以客户端浏览器向 ASP.NET Web 应用程序页面发送请求(Request)为起点,以浏览器收到 Web 服务器的响应(Response)为终点,这一完整的过程被称为“应用程序及页面的生命周期”。 ASP.NET Web 页面生命周期开始之前发生了什么? 用户浏览器向 Web 服务器(IIS)发出资源的请求。 Web 服务器收到请求,会根据请求文件的扩展名(如 .aspx... 阅读全文

posted @ 2016-11-25 23:19 SkySoot 阅读(961) 评论(0) 推荐(0) 编辑

微型计算机的启动过程(转自阮一峰先生的博客)

摘要: 从打开电源到开始操作,计算机的启动是一个非常复杂的过程。先问一个问题,"启动"用英语怎么说?回答是 boot。可是,boot 原来的意思是靴子,"启动"与靴子有什么关系呢? 原来,这里的 boot 是 bootstrap(鞋带)的缩写,它来自一句谚语: "pull oneself up by one's bootstraps" 字面意思是"拽着鞋带把自己拉起来",... 阅读全文

posted @ 2016-11-25 21:44 SkySoot 阅读(2712) 评论(0) 推荐(0) 编辑

2016年11月15日

移动支持 – ASP.NET MVC 4 系列

摘要: 目前,有各种各样的方法可以提高网站应用程序的移动体验。在某些情况下,我们只想在小规格上做一些微小的风格变化;另一些情况下,我们可能完全改变外观显示或者一些视图的内容;最极端的情况下,我们可能重新创建一个专门针对移动用户的 Web 应用程序。针对这些情况,MVC 4 提供了如下几种方案: 适应性呈现:默认的 Internet 和 Intranet 应用程序模板使用 CSS 媒体... 阅读全文

posted @ 2016-11-15 16:00 SkySoot 阅读(1281) 评论(0) 推荐(0) 编辑

2016年11月10日

扩展 ASP.NET MVC 模型扩展 – ASP.NET MVC 4 系列

摘要: 大部分人不能将核心运行时(System.Web 中的类)和 ASP.NET Web Forms 应用程序平台(System.Web.UI 中的类)区分开来。 ASP.NET 开发团队在简单的核心运行时抽象之上创建了复杂的 Web Form 抽象和 ASP.NET MVC。正因为 ASP.NET MVC 框架建立在公共抽象之上,所以 ASP.NET MVC 框架能实现的... 阅读全文

posted @ 2016-11-10 11:27 SkySoot 阅读(553) 评论(0) 推荐(0) 编辑

2016年7月20日

单元测试 – ASP.NET MVC 4 系列

摘要: 在开发可测试软件的过程中,单元测试已成为确保软件质量的一个不可或缺部分。测试驱动开发(Test-Driven Development,TDD)是编写单元测试的一种方法,采用该方法的开发人员在编写任何产品代码之前都需要编写测试程序。TDD 允许开发人员以系统的方式完善软件设计,从而有效的提高单元测试的质量,增加回归测试(指修改代码后的再次测试)带来的好处。 单元测试和测试驱动开... 阅读全文

posted @ 2016-07-20 14:05 SkySoot 阅读(779) 评论(1) 推荐(0) 编辑

2016年7月13日

依赖注入 – ASP.NET MVC 4 系列

摘要: 从 ASP.NET MVC 3.0 开始就引入了一个新概念:依赖解析器(dependence resolver)。极大的增强了应用程序参与依赖注入的能力,更好的在 MVC 使用的服务和创建的一些类(控制器和视图页面)之间建立依赖关系。为更好的理解依赖解析器的工作原理,下面首先定义一些它所用到的通用软件模式。 软件设计模式 软件设计模式主要用来规范问题及其解决方案... 阅读全文

posted @ 2016-07-13 14:01 SkySoot 阅读(781) 评论(0) 推荐(0) 编辑

ASP.NET Web API - ASP.NET MVC 4 系列

摘要: Web API 项目是 Windows 通信接口(Windows Communication Foundation,WCF)团队及其用户激情下的产物,他们想与 HTTP 深度整合。WCF 进行 Web 服务编程的迭代是一个抽象事务,主要为了隐藏像传输细节一样的内容。Web API 试图彻底颠覆这一过程,去掉 WCF 中的大部分层,而允许开发人员直接访问 HTTP 编程模型的所有方面。... 阅读全文

posted @ 2016-07-13 12:28 SkySoot 阅读(570) 评论(0) 推荐(0) 编辑

2016年7月8日

路由 - ASP.NET MVC 4 系列

摘要: 软件开发人员常常对一些细小的细节问题倍加关注,由其在考虑源代码的质量和结构时更是如此。因此,当遇到大部分使用 ASP.NET 技术构建的站点,使用如下的 URL 地址时,可能会有些奇怪: http://example.com/albums/list.aspx?catid=17173&genreid=33723&page=3 既然我们对代码倍加重视,为什么不能... 阅读全文

posted @ 2016-07-08 11:42 SkySoot 阅读(423) 评论(0) 推荐(0) 编辑

2016年7月7日

Ajax - ASP.NET MVC 4 系列

摘要: ASP.NET MVC 框架中包含一组 Ajax 辅助方法,可以用来创建表单和指向控制器操作的链接,它们是异步的,且不用编写任何脚本代码来实现程序的异步性,但需要引入脚本文件 jquery.unobtrusive-ajax.js,MVC 4 应用程序默认在 _Layout 视图中包含这个脚本: 当然,也可以去除它,而在需要的页面上手动引入: ... 阅读全文

posted @ 2016-07-07 21:43 SkySoot 阅读(551) 评论(0) 推荐(0) 编辑

2016年7月6日

Web 应用程序中的安全向量 – ASP.NET MVC 4 系列

摘要: Web 程序运行在标准的、基于文本的协议(HTTP 和 HTML)之上,所以特别容易受到自动攻击的伤害。本章主要介绍黑客如何滥用应用程序,以及针对这些问题的应对措施。 威胁:跨站脚本攻击(XSS) XSS 攻击在 Web安全威胁上排名第一,然而遗憾的是,导致 XSS 猖獗的主要原因是开发人员不熟悉这种攻击。可以使用 2 种方法实现 XSS: 被动注入(... 阅读全文

posted @ 2016-07-06 17:39 SkySoot 阅读(591) 评论(0) 推荐(0) 编辑

2015年10月21日

成员资格、授权 – ASP.NET MVC 4 系列

摘要: ASP.NET MVC 不像 ASP.NET WEB FORMS 那样提供了很多自动保护机制来保护页面不受恶意用户的攻击,更明确的说,后者是致力于使应用程序免受攻击: 服务器组件对显示的值和特性进行 HTML 编码,以帮助阻止 XSS 攻击。 加密和验证试图状态,从而帮助阻止篡改提交的表单。 请求验证(%@page validaterequest="true"... 阅读全文

posted @ 2015-10-21 23:34 SkySoot 阅读(777) 评论(0) 推荐(0) 编辑

2015年10月18日

数据注解和验证 – ASP.NET MVC 4 系列

摘要: 不仅在客户端浏览器中需要执行验证逻辑,在服务器端也需要执行。客户端验证能即时给出一个错误反馈(阻止请求发送至服务器),是时下 Web 应用程序所期望的特性。服务器端验证,主要是因为来自网络的信息都是不可信任的。 当在 ASP.NET MVC 设计模式上下文中谈论验证时,主要关注的是验证模型的值。ASP.NET MVC 验证特性可以帮助我们验证模型值,且这样验... 阅读全文

posted @ 2015-10-18 02:04 SkySoot 阅读(2028) 评论(1) 推荐(1) 编辑

2015年10月8日

表单和 HTML 辅助方法– ASP.NET MVC 4 系列

摘要: 这里有一个疑问,诸如在文本编辑器中输入 HTML 元素如此简单的任务,也需要任何帮助吗?的确,输入标签名称是很容易的事,但是确保 HTML 页面链接中的 URL 指向正确的位置、表单元素拥有适用于模型绑定的名称和值、以及当模型绑定失败时其他元素能够显示相应的错误提示消息,这些才是 HTML 的繁杂点。 action 和 method ASP.N... 阅读全文

posted @ 2015-10-08 22:32 SkySoot 阅读(779) 评论(0) 推荐(0) 编辑

2015年10月7日

模型(Model)– ASP.NET MVC 4 系列

摘要: 为 MVC Music Store 建模 在 Models 目录中为专辑、艺术家、流派建模: public class Album { public virtual int AlbumId { get; set; } ... 阅读全文

posted @ 2015-10-07 14:35 SkySoot 阅读(495) 评论(0) 推荐(0) 编辑

2015年10月6日

Razor 视图引擎 – ASP.NET MVC 4 系列

摘要: Razor 视图引擎是 ASP.NET MVC 3 开始扩展的内容,并且也是默认视图引擎。 Razor 通过理解标记的结构来实现代码和标记之间尽可能顺畅的转换。下面的例子演示了一个包含少量视图逻辑的简单 Razor 视图: @{ // this is a b... 阅读全文

posted @ 2015-10-06 22:28 SkySoot 阅读(496) 评论(0) 推荐(0) 编辑

视图(View) – ASP.NET MVC 4 系列

摘要: 精心编写的整洁代码是开发一个可维护 Web 应用程序的基础。但用户在浏览器中访问时,这些工作他们是看不见的。用户对应用程序的第一印象,以及与应用程序的整个交互过程都是从视图开始的。 按照约定,每个控制器在 Views 目录下都有一个对应的文件夹,其名称与控制器一样,只是没有 Controller 后缀名。在每一个控制器的 View 文件夹中,每一个操作方法都有一个同名... 阅读全文

posted @ 2015-10-06 20:50 SkySoot 阅读(623) 评论(0) 推荐(0) 编辑

控制器(Controller) – ASP.NET MVC 4 系列

摘要: 创建一个 ASP.NET MVC 4 Web Application 项目,将程序命名为 MvcMusicStore,如下图: 控制器 MVC 模式中,控制器主要负责响应用户的输入、并且在响应时修改模型、提供相关视图的输出数据。 请求的 URL 首先被路由机制截获,以决定实例化哪一个控制器,调用哪个操作方法,并未该方法提供需要的... 阅读全文

posted @ 2015-10-06 19:07 SkySoot 阅读(368) 评论(0) 推荐(0) 编辑

简介 – ASP.NET MVC 4 系列

摘要: 正所谓好记性不如烂笔头,尤其是技术类书籍在阅读后,时间久了一定会忘记。而重新翻阅整本书也较为低效,遂以博客记录阅读摘要以供日后查阅。本系列文章均摘要自 Wrox 红皮书【ASP.NET MVC 4 高级编程(第4版)】,喜欢详细了解的码农兄弟也可以自行购买。 MVC 模式简介 MVC 将应用程... 阅读全文

posted @ 2015-10-06 16:23 SkySoot 阅读(522) 评论(0) 推荐(0) 编辑

2014年1月19日

一般处理程序处理图片(动态给图片加上水印、保存缩略图、验证码)

摘要: 对网页所有的图片加水印的方式有 2 种: 以破坏图片的方式加上水印(这种方式的话,服务器端一般还有原图的备份) 在图片被请求时动态加上水印 文字水印 Html 页面: 一般处理程序: public void ProcessRequest(HttpContext context) {... 阅读全文

posted @ 2014-01-19 03:21 SkySoot 阅读(1501) 评论(0) 推荐(0) 编辑

2014年1月18日

一般处理程序上传文件(html表单上传、aspx页面上传)

摘要: html 表单上传文件 一般处理程序由于没有 apsx 页面的整个模型和控件的创建周期,而比较有效率。这里写一个用 html 表单进行文件上传的示例。 1. 表单元素选用 控件。 2. form 表单需要设置 enctype="multipart/form-data" 属性,请求报文体中数据格式也由键值对更改为数据头和数具体,并有随机边界符分割。 ... 阅读全文

posted @ 2014-01-18 15:27 SkySoot 阅读(23748) 评论(3) 推荐(3) 编辑

2014年1月17日

Socket 通信(基础原理、实时聊天系统雏形)

摘要: 什么是 Socket? Socket 英文直译为“孔或插座”,也称为套接字。用于描述 IP 地址和端口号,是一种进程间的通信机制。你可以理解为 IP 地址确定了网内的唯一计算机,而端口号则指定了将消息发送给哪一个应用程序(大多应用程序启动时会主动绑定一个端口,如果不主动绑定,操作系统自动为其分配一个端口)。 什么是端口? 一台主机一般运行了多个软件并同时提供一些服务。每种服务都会打... 阅读全文

posted @ 2014-01-17 16:35 SkySoot 阅读(18914) 评论(4) 推荐(1) 编辑

2013年12月27日

C# 多线程详解 Part.04(Lock、Monitor、生产与消费)

摘要: 系列1 曾经说过:每个线程都有自己的资源,但代码区是共享的,即每个线程都可以执行相同的函数。 这可能带来的问题就是多个线程同时执行一个函数,并修改同一变量值,这将导致数据的混乱,产生不可预料的结果。看下面的示例: private void btnThread_Click(object sender, EventArgs e) { ... 阅读全文

posted @ 2013-12-27 17:59 SkySoot 阅读(1268) 评论(1) 推荐(1) 编辑

C# 多线程详解 Part.02(UI 线程和子线程的互动、ProgressBar 的异步调用)

摘要: C# 多线程、UI线程和子线程的互动,子线程修改 UI 线程控件的方式等 阅读全文

posted @ 2013-12-27 16:24 SkySoot 阅读(3554) 评论(1) 推荐(1) 编辑

C# 多线程详解 Part.01(UI 线程、子线程)

摘要: C# 多线程、UI线程和子线程的创建 阅读全文

posted @ 2013-12-27 14:59 SkySoot 阅读(6717) 评论(2) 推荐(1) 编辑

2013年5月9日

正则表达式

摘要: (本文是精简自张子阳先生的正则表达式一文,并做部分修改) 正则表达式总是在你的开发过程中如影随形,不管是进行表单验证,还是高亮显示搜索结果,又或者是进行URL地址映射,总是需要使用它们。几乎所有的语言都对它进行了不同程度的支持,由此,足见其在文本匹配这一领域中的地位。 什么是正则表达式? 正则表达式也叫做匹配模式(Pattern),它由一组... 阅读全文

posted @ 2013-05-09 15:53 SkySoot 阅读(1204) 评论(1) 推荐(0) 编辑

2013年5月6日

ASP.NET 自定义成员资格提供程序 Part.4(使用自定义提供程序类)

摘要: 创建一个 Web 应用程序来测试先前的自定义成员提供程序和角色提供程序。 在 web.config 文件中配置为表单验证,并正确的设置自定义提供程序(或者在 ASP.NET WAT 中设置),例如下面这样: <system.web> <authentication mode="Forms" /> <authorization> ... 阅读全文

posted @ 2013-05-06 13:13 SkySoot 阅读(445) 评论(0) 推荐(0) 编辑

2013年5月3日

ASP.NET 自定义成员资格提供程序 Part.3(实现提供程序类:XmlRoleProvider)

摘要: 实现角色提供程序比实现成员资格提供程序容易,因为用于管理角色的结构比较简单。没有什么新概念,只需要调用 RoleStore 类的相应方法创建角色、删除角色、将用户分配到角色以及从角色中删除用户即可。 角色提供程序的完整接口如下: public class XmlRoleProvider : RoleProvider { publi... 阅读全文

posted @ 2013-05-03 17:01 SkySoot 阅读(319) 评论(0) 推荐(1) 编辑

ASP.NET 自定义成员资格提供程序 Part.2(实现提供程序类:XmlMembershipProvider)

摘要: 本篇将完成 XmlMembershipProvider 类,它是自定义存储和成员资格 API 需求之间适配器的角色。 public class XmlMembershipProvider : System.Web.Security.MembershipProvider { } 每一个自定义的成员资格提供程序必须从这个类继承。(ASP.NET 4.0 中移到了... 阅读全文

posted @ 2013-05-03 14:34 SkySoot 阅读(305) 评论(0) 推荐(1) 编辑

2013年5月2日

ASP.NET 自定义成员资格提供程序 Part.1(以 XML 存储为例,实现底层数据存储)

摘要: ASP.NET 提供了成员资格 API 和角色 API,这些 API 为你提供了一个用户和角色管理框架。但通过实现自定义的成员资格和角色提供程序来交换和 SQL Server 一起工作的默认实现,这样无需修改 Web 程序就可以交换用来存储用户和角色信息的底层存储。 正是由于这种分层的抽象设计,一个自定义提供程序总是基于 ASP.NET 成员资格和角色框架所引入的这个... 阅读全文

posted @ 2013-05-02 15:43 SkySoot 阅读(496) 评论(0) 推荐(1) 编辑

2013年4月29日

ASP.NET 加密 Part.5(加密查询字符串)

摘要: ASP.NET 没有提供一个类似的方法来激活对查询字符串的保护。很多时候,用户是否可以看到或者修改它并不重要,但有时,查询字符串包含了应当对用户隐藏的数据。 有必要设计一个增强安全的简单方式,在将数据放到查询字符串之前使其不规则化。 1. 包装查询字符串 创建一个 EncryptedQueryString 类,用于接收一个基于字符串的信息集合,... 阅读全文

posted @ 2013-04-29 14:35 SkySoot 阅读(454) 评论(0) 推荐(0) 编辑

2013年4月28日

ASP.NET 加密 Part.4(加密数据库中的敏感数据)

摘要: 本章介绍如何创建一个简单的测试页面来加密存储在数据库表中的信息。这个表会被连接到一个在成员资格服务中注册的用户。不建议使用自定义 MembershipUser 实现一个支持额外属性的自定义的成员资格提供程序。不要太紧密的与你自己的逻辑结合,这样,你可以在多个成员资格提供程序中使用它。 创建一个数据库表来存储 MembershipUser 的额外信息。它通过 Provi... 阅读全文

posted @ 2013-04-28 16:00 SkySoot 阅读(385) 评论(0) 推荐(0) 编辑

2013年4月26日

ASP.NET 加密 Part.3(非对称算法)

摘要: 非对称加密算法和对称加密算法有些类似,只有少许不同。主要在于对密钥的管理上。对称加密算法只有一个密钥,而非对称加密算法有两个密钥:一个用来加密数据(公钥),一个用来解密数据(私钥)。公钥可以传递给任何想加密数据的人,而私钥只应由解密信息的人所拥有。 .NET Framework 只为实际的数据加密提供了 1 个非对称加密算法(RSA,记住,DSA 只用于数字签名... 阅读全文

posted @ 2013-04-26 18:10 SkySoot 阅读(598) 评论(0) 推荐(0) 编辑

2013年4月25日

ASP.NET 加密 Part.2(对称算法)

摘要: 在理解了上一篇文章的基础上,本文将创建两个工具类,一个使用对称的加密算法,一个使用非对称的加密算法。 1. 管理秘密信息 必须采取某种措施来保护密钥,你当然可以对密钥本身进行加密,但这样就需要另一个加密密钥了,也会面临一样的问题。 Windows 提供了一个内置机制来保存和保护秘密数据。这个机制使用一个系统安装时创建的机器密钥来加密数据。只有本... 阅读全文

posted @ 2013-04-25 18:04 SkySoot 阅读(612) 评论(0) 推荐(0) 编辑

2013年4月24日

ASP.NET 加密 Part.1(简介)

摘要: .NET 提供了丰富的 CryptoAPI 以满足很大范围内的加密任务。比如,创建不同类型的散列字符串(MD5、SHA1 等)以及实现最重要的对称和非对称加密算法。 .NET Framework 还提供了单独的功能来保护本地计算机上或以每个用户为基础的秘密数据,这些工作都是通过 WindowsDPAPI(Data Protection API,数据保护 API)的完全... 阅读全文

posted @ 2013-04-24 17:03 SkySoot 阅读(594) 评论(0) 推荐(0) 编辑

2013年4月22日

ASP.NET 用户配置 Part.3(自定义用户配置提供程序)

摘要: 用户配置模型可以很好的嵌入 ASP.NET 网页。但是它的可配置性并不是非常好。你可能需要创建一个自定义的用户配置提供程序,原因如下: 需要将用户配置信息存储在其他类型的数据库里。比如,Oracle。 希望用户配置数据对其他程序也是有效的。分析 PropertyValuesString 和 PropertyValuesBinary 字段中的信息枯燥且易出错,如果要在其他... 阅读全文

posted @ 2013-04-22 17:26 SkySoot 阅读(370) 评论(0) 推荐(0) 编辑

2013年4月19日

ASP.NET 用户配置 Part.2(SQLProfileProvider)

摘要: SqlProfileProvider 允许将用户配置信息存储到一个 SQL Server 7.0 或者后续版本的数据库中。其实,你可以选择在任何数据库中创建用户配置表,但是,你无法修改其他任何的数据库架构。你只能操作指定的表名、列名、序列化方式。 你需要完成下面这些步骤使用用户配置: 创建用户配置表(SQL Server Express 版本,这步会自动发生)... 阅读全文

posted @ 2013-04-19 17:51 SkySoot 阅读(527) 评论(0) 推荐(0) 编辑

2013年4月18日

ASP.NET 用户配置 Part.1(理解:性能与限制)

摘要: 在 ASP.NET 1.x 中,存储用户信息唯一可行的方式是创建你自己的数据访问组件,这很有用。从 ASP.NET 2.0 开始,又多了一个选择,那就是使用用户配置。ASP.NET 会自动使用一个后台的数据源来处理指定用户的数据(读取、更新)。 从概念上看,用户配置和自定义数据组件非常类似,但它更为简介方便。它和 ASP.NET 验证模型浑然一体,当需要时,用户信息会... 阅读全文

posted @ 2013-04-18 18:04 SkySoot 阅读(314) 评论(0) 推荐(0) 编辑

导航