My Github
摘要: 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor。在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity模板引擎。Razor在减少代码冗余、增强代码可读性和Visual Studio智能感知方面,都有着突出的优势。Razor一经推出就深受广大ASP.Net开发者的喜爱。 阅读全文
posted @ 2014-08-21 23:12 EdisonZhou 阅读(10899) 评论(10) 推荐(19) 编辑
摘要:  在ASP.Net MVC中微软并没有提供类似服务器端控件那种开发方式,毕竟微软的MVC就是传统的请求处理响应的回归。所以抛弃之前的那种事件响应的模型,抛弃服务器端控件也理所当然。但是,如果手写Html标签效率又比较低,可重用度比较低。这时,我们该怎样来提高效率呢?首先,经过上篇我们知道可以通过ViewData传递数据,于是我们可以写出以下的Html代码:虽然以上代码可以解决问题,但是效率还是比较低,特别是在列表集合项较多的时候,工作量会比较大。那么,还有木有一种更好的方式呢?别急,微软已经为我们想好了策略。微软为开发人员快速开发前台页面提供了丰富的HtmlHelper的辅助类,辅助我们快速开发前台页面,也提供了可扩展的接口,前台页面的标签可以可以做到高度可重用。 阅读全文
posted @ 2014-08-16 15:29 EdisonZhou 阅读(18719) 评论(10) 推荐(20) 编辑
摘要: 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/blog/index.aspx的URL,那么我们的WebForm程序会到网站根目录下去寻找blog目录下的index.aspx文件,然后由index.aspx页面的CodeBehind文件(.CS文件)进行逻辑处理,其中或许也包括到数据库去取出数据(其中的经过怎样的BLL到DAL这里就不谈了),然后再由index.aspx页面来呈现给用户。综上所述,在WebForm模式下:一个URL请求的是在服务器与该URL对应路径上的物理文件(ASPX文件或其他),然后由该文件来处理这个请求并返回结果给客户端。 阅读全文
posted @ 2014-08-14 14:36 EdisonZhou 阅读(37160) 评论(12) 推荐(50) 编辑
摘要: 经历了上一篇《aspx与服务器控件探秘》后,我们了解了aspx和服务器控件背后的故事。这篇我们开始走进WebForm状态保持的一大法宝—ViewState,对其刨根究底一下。然后,再对曾经很流行的ASP.Net AJAX方案中的利器—UpdatePanel这个神奇的区域一探究竟。 阅读全文
posted @ 2014-08-11 01:48 EdisonZhou 阅读(7963) 评论(14) 推荐(23) 编辑
摘要: 毫无疑问,ASP.Net WebForm是微软推出的一个跨时代的Web开发模式,它将WinForm开发模式的快捷便利的优点移植到了Web开发上,我们只要学会三步:拖控件→设属性→绑事件,便可以行走于天下。但这样真的就可以走一辈子吗?实际上,ASP.Net经常被喷的诟病就在于WebForm以及只会拖控件的ASP.Net程序员,往往大型互联网系统也没有采用WebForm的模式进行开发。但是,WebForm并不是一无是处,而是我们没有用好,还有很多东西我们知其然不知其所以然,现在我们就来对这些平时所不注意但又十分关键的东西一探究竟。 阅读全文
posted @ 2014-08-09 01:46 EdisonZhou 阅读(24797) 评论(41) 推荐(94) 编辑
摘要: 本文是学习2014版ASP.Net视频教程的学习笔记,仅供本人复习之用:①GET通过URL,POST通过报文体;②需在HTML中为表单元素设置name;③元素id是给Dom用的,name才是提交给服务器用的; 阅读全文
posted @ 2014-08-06 22:51 EdisonZhou 阅读(3000) 评论(9) 推荐(12) 编辑
摘要: 本文是在Cat Qi的参考原帖的基础之上经本人一题一题练习后编辑而成,非原创,仅润色而已。另外,本文所列题目的解法并非只有一种,本文只是给出比较普通的一种而已,也希望各位园友能够自由发挥。 阅读全文
posted @ 2014-08-04 16:33 EdisonZhou 阅读(8771) 评论(2) 推荐(8) 编辑
摘要: 本文是在Cat Qi的参考原帖的基础之上经本人一题一题练习后编辑而成,非原创,仅润色而已。另外,本文所列题目的解法并非只有一种,本文只是给出比较普通的一种而已,也希望各位园友能够自由发挥。 阅读全文
posted @ 2014-08-02 12:20 EdisonZhou 阅读(17704) 评论(19) 推荐(55) 编辑
摘要: 通过前面几篇的介绍中,我们都是在单机上使用Redis进行相关的实践操作,从本篇起,我们将初步探索一下Redis的集群,而集群中最经典的架构便是主从复制架构。那么,我们首先来了解一下神马是主从复制架构? 阅读全文
posted @ 2014-08-02 02:30 EdisonZhou 阅读(5036) 评论(15) 推荐(31) 编辑
摘要: book转眼之间,《大型网站技术架构》的读书笔记到此就结束了。最近时间非常紧,因此本篇没有详细对笔记进行介绍(本篇涉及太多内容,而且都是安全相关的)。通过本书的学习,我们从高性能、高可用、伸缩性、可扩展性、安全性五个方面的架构学习了每个方面经典的技术方案,虽然以理论偏多,但还是可以从中管中窥豹,一览大型网站技术的面貌。后面,等我找完工作,拿到offer后,也许会抽出时间去实践下大型网站所使用的一些技术方案,比如使用Mono在Linux上部署ASP.Net MVC项目,借助Nginx/Jexus构建负载均衡服务器,MSSQL数据库读写分离等,到时也会抽空将所学写成一篇篇博客发到博客园,与各位园友分享。 阅读全文
posted @ 2014-07-28 23:28 EdisonZhou 阅读(3760) 评论(1) 推荐(5) 编辑
摘要: 在很多场景中,用户都需要和我们的网站系统进行多次的信息交互,这时就需要一种解决方案来克服无状态特性所带来的困境。还好,在巨人的肩膀上,我们已经有了很好的解决方案,那就是浏览器端的Cookie和服务器端的Session。在一般的单机开发中(这里一般是指只有一台Web服务器的情况),服务器端我们通常使用Session来存储用户登录状态(一般是一个自定义对象实例),在多数的管理信息系统开发中(毕竟内部系统用户量不多,一台Web服务器既提供Web服务又存储Session对象内存还算是够用的)这是很常见的。 阅读全文
posted @ 2014-07-25 14:04 EdisonZhou 阅读(5078) 评论(8) 推荐(14) 编辑
摘要: book上篇笔记我们学习了可伸缩架构,但在实际场合中,包括许多架构师也常常混淆可伸缩和可扩展,用可扩展表示伸缩性。那么在此,跟随作者我们来理清这两个概念,避免我们以后对其傻傻分不清楚。扩展性(Extensibiltiy)指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。我们不禁想到了面向对象中一大原则:开闭原则,对扩展开放,对修改封闭。也就说,当系统新增一个功能时,不需要对现有系统的结构和代码进行修改。伸缩性(Scalability)指系统能够通过增加(或减少)自身资源规模的方式增强(或减少)自己计算事务的能力。在网站架构中,通常是指利用集群的方式增加服务器数量,从而提高系统的整体事务吞吐能力。 阅读全文
posted @ 2014-07-24 00:31 EdisonZhou 阅读(4494) 评论(3) 推荐(9) 编辑
摘要: 首先,不得不说,许多语言都实现了连接Memcached的客户端,其中以Perl、PHP为主。 仅仅memcached网站上列出的语言就有:Perl、PHP、Python、Ruby、C#、C/C++以及Lua等。那么,我们作为.Net码农,自然是使用C#。既然Memcached客户端有.Net版,那我们就去下载一个来试试。下载文件:http://pan.baidu.com/s/1w9Q8I memcached clientlib项目地址:http://sourceforge.net/projects/memcacheddotnet/ 阅读全文
posted @ 2014-07-21 01:22 EdisonZhou 阅读(19957) 评论(46) 推荐(153) 编辑
摘要: Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。经过多年的发展,目前已经有很多知名的互联网应用使用到了Memcached,比如:Wikipedia、Flickr、Youtube、Wordpress等等。 阅读全文
posted @ 2014-07-20 00:06 EdisonZhou 阅读(6437) 评论(20) 推荐(35) 编辑
摘要: book首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力。在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力。 阅读全文
posted @ 2014-07-19 13:57 EdisonZhou 阅读(11955) 评论(7) 推荐(33) 编辑
摘要: book首先,不得不说:要保证一个网站永远完全可用几乎是一件不可能完成的任务(Mission Impossible,是不是有点碟中谍的感觉)。广泛采用故障分的,它是对网站故障进行分类加权计算故障责任的方法。一般会给每个分类的故障设置一个权重(例如事故级故障权重为100,A类为20等),其计算公式为:故障分=故障时间(分钟)*故障权重。公司对技术团队的考核一般会参考故障分,例如某团队今年发生了几个事故级故障,那么其绩效考核估计受到很大影响,年终奖什么的就悲剧了。 阅读全文
posted @ 2014-07-12 02:36 EdisonZhou 阅读(6926) 评论(10) 推荐(14) 编辑
摘要: 在目前广泛的Web应用中,都会出现一种场景:在某一个时刻,网站会迎来一个用户请求的高峰期(比如:淘宝的双十一购物狂欢节,12306的春运抢票节等),一般的设计中,用户的请求都会被直接写入数据库或文件中,在高并发的情形下会对数据库服务器或文件服务器造成巨大的压力,同时呢,也使响应延迟加剧。这也说明了,为什么我们当时那么地抱怨和吐槽这些网站的响应速度了。 阅读全文
posted @ 2014-07-07 17:56 EdisonZhou 阅读(36079) 评论(28) 推荐(62) 编辑
摘要: 首先,不得不说Redis官方提供了众多的API开发包,但是目前Redis官方版本不支持.Net直接进行连接,需要使用一些第三方的开源类库。目前最流行的就是ServiceStack.Redis这个开源项目,其在GitHub上的下载地址为:https://github.com/ServiceStack/ServiceStack.Redis.进入下载页面,点击“Download Zip”按钮,即可下载该API包。解压该Zip包后,其实我们所用到的只是其中的几个DLL而已,打开build/release/MonoDevelop文件夹,看到里边还有一个zip包,这里边就是我们所需的DLL了。 阅读全文
posted @ 2014-07-04 11:19 EdisonZhou 阅读(5184) 评论(14) 推荐(13) 编辑
摘要: 随着应用对高性能需求的增加,NoSQL逐渐在各大名企的系统架构中生根发芽。时至今日,涌现出的NoSQL产品已经有很多种了,例如Membase、MongoDB、Apache Cassandra、CouchDB等。不过,在国内外互联网巨头例如社交巨头新浪微博、传媒巨头Viacom及图片分享领域佼佼者Pinterest等名企都不约而同地采用了Redis作为其NoSQL数据库的选择,到底Redis是何方神圣呢?能让如此多的名企为它而痴狂。 阅读全文
posted @ 2014-07-03 02:50 EdisonZhou 阅读(11602) 评论(27) 推荐(27) 编辑
摘要: book反向代理服务器具有以下功能:①保护网站安全:任何来自Internet的请求都必须先经过代理服务器;②通过配置缓存功能加速Web请求:减轻真实Web服务器的负载压力;③实现负载均衡:均衡地分发请求,平衡集群中各个服务器的负载压力; 网站性能优化第一定律:优先考虑使用缓存优化性能。缓存是指将数据存储在相对较高访问速度的存储介质中(如内存),以供系统进行快速处理响应用户请求。 阅读全文
posted @ 2014-06-26 17:20 EdisonZhou 阅读(6741) 评论(9) 推荐(32) 编辑