第二个灵魂 发表于 2015-1-18 11:14:32

ASP.NET网页编程之微软ASP.NET手艺“乱谈”仓酷云

也许C#刚上市的时候有些抄袭net网页编程吧,但自从C#2.0上市之后,整个局面就扭转乾坤了,不但net网页编程在模仿C#,而且他从来都没能跟得上C#的脚步。2014新年了,随手写的一点笔墨,次要谈谈我对以后微软ASP.NET手艺的意见,对照随便,年夜伙儿任意看看吧。
1以后微软Web平台手艺全貌

从2002年公布.NET1.0和VisualStudio.NET,到2013年.NET4.5.1和VisualStudio2013公布时,微软.NET平台己有11年的汗青,其Web手艺几经变迁,以后演变为以下的次要手艺子范畴:

一张图懂得微软Web平台手艺全貌
时至昔日,ASP.NET底层的基本架构基础没太年夜变更,诸如利用HTTP处置管线处置HTTP哀求,利用HTTPModule对原始HTTP哀求举行“加工“,利用HTTPHandler天生发给扫瞄器的HTML代码等中心运作机理也没有变更,一切变更的都是下层手艺。
上面就扼要地聊聊以后ASP.NET手艺家属的各项成员:


[*]从1.0就有的WebForms是当之无愧的“创业元老“,有关它的话题前面要重点说,此处先不提。


[*]ASP.NETMVC是厥后的但敏捷发展为以后最中心的微软Web开辟手艺,一切进修或利用微软Web手艺开辟的人,如今还不进修MVC,那其实是件很让人奇异的事。风趣的是,如今WebForms入手下手愈来愈多地引进MVC的特征,这在ASP.NET4.5中看得十分分明:好比强范例的数据库绑定,用户友爱的URL等等。打个大概不太得当的例如:MVC可当作是“米国”,WebForms可比成“天朝”,“两国”来往亲切。


[*]WebApi是针对挪动互联时期的需求而计划,比拟那庞大非常的“WCF怪兽”,WebApi计划得相称轻便,它次要卖力与手机等智能挪动设备互换信息,底层间接利用HTTP,API具有REST作风,数据互换格局利用Json和Xml,这类格局的数据具有优秀的跨平台才能,能便利地被Android和iOS设备所剖析。WebApi能便利地与WebForms和MVC互相集成,使之成为微软平台开辟挪动互联使用服务端Service层的幻想选择。


[*]基于MVC/WebAPI,开辟如今对照盛行的“单页面使用(SPA:SinglePageApps)”很便利。基于微软平台开辟这类范例的使用,可以使用MVC供应页面模板,WebApi供应各类数据服务,前端页面利用各类Web框架(好比Angular、knockout等以AJAX体例会见服务真个WebApi服务,静态地更新页面的响应地区,呼应用户操纵)。


[*]另外一项手艺WebPages接纳相似于PHP的开辟体例,间接在页面利用Razor集成C#代码,与MVC比拟,它属于“轻量级”手艺,对照复杂易用,固然,支付的价值是没有MVC所供应的诸多内置功效,关于功效复杂的小网站,WebPages很符合。
这里谈到PHP,说些题外话:诸如PHP、JSP之类微软以外的其他Web开辟手艺,与ASP.NET实在有诸多重合的地方,每种编程手艺都有多种框架可选。你能够先学PHP/JSP,再学ASP.NET,大概反之。不外我团体感到,假如先学ASP.NET再学其他手艺,入手下手会略感不适,由于本来良多你己经习气的“主动化”的工具,在很多其他手艺中必需由程序员手动完成,是谓“由奢进简难”。但究竟都是Web使用,仍是有良多都是一样或相似的工具,转型其实不坚苦。


[*]SignalR是ASP.NET家属中一个全新的成员,它实际上是一个Web开辟框架,能开辟“及时”的Web使用。所谓“及时”,实在就是在服务端与客户端之间创建“双向”信息通道,同意服务端自动向客户端发送信息,回调客户端代码。SignalR底层根据各类情形会主动选择诸如HTML5WebSocket如许的手艺完成客户端与服务真个双向数据通信。这项手艺挺成心思的,今后无机会再具体聊聊它。
在现有的ASP.NET手艺家属成员中,WebForms是“元老”,MVC是“新贵”,二者都是微软Web手艺中最有目共睹的核心,上面就专门地聊聊它们。
2MVCvsWebForms

WebForms是故乡伙了,在MVC呈现之前,它是微软Web手艺范畴内当之无愧的“一把手”(实际上是由于没得选,它是独一候选人),有大批的Web项目利用它开辟,个中很多项目一向跑到明天,并且看起来还会持续跑下往,究竟要跑多久,谁也不晓得。由于在理论中,人人都成心偶然地遵守如许一个准绳:
Ifit’snotbroken,don’tfixit.
这就是说,关于老的利用WebForms开辟的项目,假如它还运转一般,就不要往动它。可是,假如要开辟新项目,就必要细心思索是不是仍旧接纳这类具有十多年汗青的“老”手艺了。
JohnCiliberti在其《ASP.NETMVC4Recipes》一书中对WebForms的优弱点作了对照周全的总结,原文内容很多,我大略地转述以下(同时加上了一些团体概念):


[*]WebForm的优点:开辟起来的确便利!

[*]招人简单。以后玩得转ASP.NETMVC的人其实不算多。
[*]利用上手十分简单的相似于VB的开辟体例。
[*]仅必要开辟者懂一点HTML和JavaScript,就能够开辟出“像模像样”的网站,相干的手艺细节被WebForms框架“仔细”而且“严密”地封装了起来,并且很分明计划者其实不但愿利用者往“解开它”。
[*]具有“一堆”功效壮大易用的服务端控件,而且能在年夜多半扫瞄器中准确运转,扫瞄器兼容性(出格是对老的扫瞄器)不错。
[*]其用户控件很好用,易于开辟,同时又能年夜幅度地削减反复代码。
[*]数据考证功效由响应控件举行封装,相称便利,开辟者几近不必要手写JavaScript考证代码。
[*]具有一套本人的JavaScript框架,完成了AJAX功效,而且能与其他Web服务端控件无缝地整合。


[*]WebForms弱点——让人只知其然,不知其以是然
1、勾引程序员写出“把一切工具混同在一同”的Web使用。
WebForm接纳Code-behind体例,固然分别了页面模板代码和背景的C#代码,但实践上有良多程序员在背景C#代码中誊写大批的营业逻辑代码,而且把这些代码与页面上的控件间接绑定(由于在高度智能化的VisualStudio中,这么干太简单了),这会给网站的临时保护带来贫苦。别的,假如不是在一入手下手就在架构上有所思索,几近没有举措对一个WebForms项目举行单位测试。
2、成也控件,败也控件。
WebForms开辟中,控件是页面开辟的中心。WebForms服务端控件是分量级的控件,它具有本人的一套运作机理,好比控件有本人的保存周期,在分歧的周期触发分歧的事务;WebForms供应了很多数据考证控件,固然能完成年夜多半罕见的数据考证义务,但其可扩大性和功能比不上如今利用的诸多JavaScript库(好比jQueryValiation,不依附于服务端天生的ViewState,运转速率更快,利用便利天真)。

[*]很多WebForms服务端控件,固然跟着ASP.NET新版本的公布而不休更新,但仍旧有很多利用“老”的页面熟成手艺,好比有些控件仍旧利用table元素完成结构,当必要利用手机等会见这些网页时,其利用体验惨绝人寰。
[*]ASP.NET4.0之前版本的WebForms控件在天生HTML代码时,其ID值相称地“变化多端”,这会给JavaScript代码编写带来贫苦,固然,4.0今后版本对此有所改善,如今能够指定ID了。
[*]WebForms的很多服务端控件必需要利用ViewState和ControlState,一些特别的控件,好比GridView,天生的ViewState数据量大概会很年夜(高达数M),假如不显式封闭,那这些数据会在WebServer和Client间往返传输,占用过量的收集带宽,下降了呼应速率。
[*]WebForms控件联系关系着一个DLL,而且大概在外部利用了多个JavaScript剧本文件,这会招致扫瞄器收到的终极页面中会呈现一些诸如

[*]<scriptsrc="/ScriptResource.axd?d=JzFjHNVTNSRvxnyOuI_HmzgpeGgm-le_2DeNc7ub5pZUcy9A8M9scHh3p580Af72CFevs-15tBuSlQYGR8Y6jhCLDnQaQ1K84GPCFXjTaKWxU1eVzt8qVZ8mueqHNb4FDLOkRw2&t=ffffffff8a8533f5"
[*]type="text/javascript">
[*]</script>
之类的“奇妙代码”,并且只需你往页面上加了一个控件,它们就会不速之客。关于这些代码,你只能祷告它事情一般,一旦出了成绩,跟踪相称坚苦。
总而言之,WebForms控件高度封装的特征利用开辟者调剂它所天生代码的手腕很少很无限,这限定了开辟者的自在和发扬余地,也给页面优化带来坚苦。
3、上面重点说说WebForm的另外一个成绩——过分封装
最后WebForm的计划头脑是仿照VB的开辟体例,用拖放控件的体例计划Web页面。但Web使用与桌面使用究竟有严重差别,强求一致,一定必要对Web使用的底层机理举行深度地封装,刚刚大概制造出与桌面使用开辟分歧的开辟体验。WebForms的封装乃至到了这类水平:你不必要懂得HTTP协定,也能经由过程拖拖拽拽的体例构建Web使用。
如许一来,基于WebForms开辟复杂是复杂了,但阔别了Web使用的实质,WebForms框架完成了太多的事,你必需照着它划定的套路来,留给你自在发扬的余地未几了。同时,因为WebForms把HTTP协定给包得几近”看不到了”,打造了一个“Web网站开辟其实不庞大,就是如许“的第一印象,这实际上是一个”假像“,假如不克不及意想到它点,仅会用WebForms的Web开辟者,分开了VisaulStudio,几近没法在其他Web范畴找到事情,由于你己“认假成真”被“洗脑“,必需”清空内存“,从头进修与懂得Web使用的”真像“。
比拟WebForms,ASP.NETMVC要好很多了,它并未向利用者埋没Web使用的实质,固然进修曲线对照陡,触及到手艺和Web开辟相干背景常识对照多,但能玩转它的人,其进修才能战争均开辟程度常常都还不错。
3微软手艺影响下的程序员

最初说说微软手艺特性对程序员生活和手艺开展所带来的一些影响:
微软手艺的最年夜特性之一就是”易用“和”开辟高效“,这是长处,但关于程序员而言,假如对此没有明晰的熟悉,则会遭到倒霉的影响。
微软手艺为了易用,包了良多层,而且很多其实不开源。当你实验往探究其底层手艺完成时,会坚苦重重。
另外一方面,因为程序员本身开辟履历与才能的限定,过分的封装也制止了程序员对深度探究手艺内情的热忱。
与Windows比拟,Linux不容易用;与C#比拟,Java不容易用,C++特别不容易用;与WebForms比拟,JSP和PHP都不容易用,……,但这些不容易用,却迫使程序员往进修良多工具,变更了其主动性,程序员们劳绩到了本身才能与本质的进步。
人的天分是懒的,易用、开辟高效且高度封装的很多微软手艺,严峻减弱了良多程序员的手艺探究愿望。以是我看到,在微软手艺范畴,只要那些意志刚强而且对手艺自己有着浓郁乐趣的人,才干保持这条深切探究手艺之路,并在这一手艺探究过程当中收益很多。而如许的人,在微软范畴以外,也会是一把妙手。
固然,针对微软手艺“催生懒汉“这类征象,板子不克不及打在微软手艺身上,而应当打在人身上,这是人自己的成绩,手艺自己是中性的,是“无辜”的。
必要指出的是,微软手艺走向开放的趋向日趋分明,以后分量级的一些手艺,好比ASP.NETMVC、EntityFramework等,都是开放源代码的,偶然间读读这些项目标源码,定有所得。
最初谈一点,因为进修把握某个手艺会泯灭程序员大批的工夫、精神乃至款项,没有人但愿本人下年夜工夫把握的手艺没有效武之地,因而,流派之见相称凸起。常常会看到很多程序员会为各类手艺的所谓“好坏”争得面红耳赤,大发雷霆者乃至入手下手对对方举行人身打击,在网上,“黑“微软手艺者特别罕见。
实在,应当“把手艺当做工具,但不要成为宗教信奉”。
我赞成“有用主义”准绳,别华侈工夫往争辩哪一个手艺好、哪一个手艺坏,而应当存眷的是哪一个手艺最合适于办理哪类成绩。在分歧的场景选择符合的手艺,别试图用一种手艺往包打世界,“多学几手,脚踏两只船”。
语言是不是不是最重要的?

再见西城 发表于 2015-1-20 18:22:43

由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。

若天明 发表于 2015-1-26 16:06:50

ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。

admin 发表于 2015-1-26 16:43:48

关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。

精灵巫婆 发表于 2015-1-31 05:19:18

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

深爱那片海 发表于 2015-2-1 23:49:20

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!

仓酷云 发表于 2015-2-2 21:55:00

由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。

分手快乐 发表于 2015-2-24 01:12:55

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

透明 发表于 2015-3-4 02:56:08

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

小女巫 发表于 2015-3-5 03:35:20

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。

灵魂腐蚀 发表于 2015-3-6 07:55:07

由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。

金色的骷髅 发表于 2015-3-12 22:23:00

当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。

愤怒的大鸟 发表于 2015-3-20 04:06:21

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
页: [1]
查看完整版本: ASP.NET网页编程之微软ASP.NET手艺“乱谈”仓酷云