再现理想 发表于 2015-1-18 11:17:53

ASP.NET网页设计对.net体系架构改革的一点履历和教导仓酷云

C#中有两处地方用到new关键字,第一处也是最常见的一处是用在调用构造函数的时候,这种情况也是大家见的最多的一种。另一处是用在派生类中,作用有隐藏成员,切断继承关系等,相信第二处的用法大家明显要比第一处生疏。在互联网行业,基于Unix/Linux的网站体系架构毫无疑问是现今支流的架构办理计划,这不单单是由于Linux自己充足的开放性,更由于环绕传统Unix/Linux社区有大批的成熟开源办理计划,掩盖了网站使用扩大的各个方面。
我记得十几年前第一波互联网海潮的时期,接纳Windows平台ASP架构的年夜型网站长短常提高的,而现在接纳Windows平台.net架构的年夜流量出名网站已百里挑一了。良多接纳Windows平台.net架构的年夜型网站都面对了架构上的扩大成绩:
比方外洋的SNS网站MySpace网站面对过很严峻的功能扩大成绩,国际电商网站京东也不止一次受困于架构扩大带来了功能瓶颈。因而,一些Windows平台.net架构为主的网站,不能不思索“往.net化”,丢弃.net,周全迁徙到以Java为主的架构上。
可是年夜型网站的架构迁徙,自己也是伤筋动骨的事变,风险极高,乐成案例尚未几见,失利案例俯拾皆是,这是由于:

[*]架构迁徙是在现有营业体系长进行的,并非沉着的开辟新产物,有充足的工夫测试和完美,相称于给正在地面航行的客机换引擎,必需一次切换乐成,没有第二次时机,稍有不对,就会机毁人亡。而我们都晓得,新开辟一个年夜型体系,没有上线磨合和完美过,没法做到一次100%完善。

[*]架构迁徙意味着老的研发团队将被减少,而常常老团队系统跟着公司强大已把握了充足话语权,新架构的团队在公司又基本未稳,出于保护本身好处的天性,新旧团队之间很简单发作政治奋斗,互相倾轧,招致迁徙失利。

5173“往.net化”的教导

5173网站以游戏设备买卖发迹,已经在客户端收集游戏开展黄金时代,迎来了营业发作性的增加期。此时,用.net架构开辟的网站已不胜重负,因为现有的.net研发团队临时没法办理网站的功能成绩,5173决意将网站从.net架构周全迁徙到Java为主的架构上。为此,5173花了很年夜的价值,从淘宝和SUN公司挖了良多工程师,构成了一个六七十人的Java架构研发部门。
新的Java研发部门开辟新的5173网站,而老的.net研发部门保护现有的5173网站,两个部门并行事情,两个版本的网站并交运行,这带来了公司外部剧烈的政治奋斗,新开辟完成的Java版本的5173网站从未正式上线过,老的.net研发团队在面对严峻保存威逼的情形下,勉力办理了一些中心的可用性和不乱性成绩。同时跟着端游黄金时期的停止,网站功能成绩也渐渐显得不再主要。
在环绕新版本网站是不是要正式交换老版本网站的成绩上,各个好处方争吵不下,反重复复拉锯战,而空降而来的女CTO不属于任何派系,立场不置可否。终极奋斗的了局.net好处方克服了Java好处方,Java研发部门被洗濯。
我的.net体系架构改革的履历和教导

3年前,我刚接办公司的产物和研发团队的时分,中心体系约莫2/3是Windows平台.net架构,1/3是LAMP架构。研发职员事先也很少:只要2个.net程序员,3个PHP程序员,厥后另有1个我带过去的Ruby程序员。事先的企图是:网站全体架构改革的偏向是Linux架构,渐渐交换失落现有的.net体系。因而不盘算持续雇用和增补.net程序员了,现有的.net程序员卖力老的中心体系保护事情。
但硕果仅存的2个.net程序员在随后不到半年工夫都走了:一个.net程序员随着微软出来的高管往创业,另外一个.net程序员跳槽往百度做了前端工程师。这两头的事理也很复杂:既然公司要往.net化,那.net工程师就会忧虑比及未来.net体系都换失落以后,本人在公司另有代价吗,不就完全边沿化了吗?
固然我在制定架构迁徙企图的时分,也思索到了这一点:我给谁人更资深的.net工程师制定的是全部公司总架构师的培育企图,谁人精晓JS的.net工程师制定的是将来前端团队Leader的培育企图。不外有不确性的答应老是不如实际的威逼更急切,以是我也出格可以了解.net工程师的流掉。
这个时分,我堕入了一个两难的处境:


[*]假如将来仍是沿着“往.net化”的企图往下走,就算从头雇用和搭建了.net研发团队,因为.net在公司是必定要被交换失落的,那末新的.net团队是不成能不乱的,极可能来一两个月,一看情势不合错误,立马走人了。而事先.net的中心体系占全部网站的比重很高,且极度庞大,一旦出成绩,基本就一筹莫展,必需要有妙手坐镇保护。事先我已入手下手review中心体系的.net代码,筹办亲身上阵了。

[*]假如将来保持“往.net化”的企图,大概短时间能够办理一些头疼的体系保护的成绩,可是对全部网站临时的开展会带来良多倒霉的方面:比方网站的平安性成绩,网站的架构扩大成绩,网站服务端软件周全正版化的本钱成绩等等。假如事先不下定决计往.net化,那末未来再想做这个事变,价值只会愈来愈高。

事先,我最后的设法是:雇用2名程度尚可,没有太年夜长进心,能够安于近况,脚踏实地事情的.net程序员来保护老的.net中心体系;同时雇用和搭建ruby研发团队,以我已往用ruby开辟网站的惊人开辟效力,争夺工夫,一一重写老的.net中心体系。可是如许做,风险也很年夜:

[*]我来公司的工夫不是很长,事先线上产物又多又杂,足有上百个之多,良多体系我都不分明干甚么的;
[*]公司向导也不太撑持我这么快下手,乃至很忧虑我大马金刀的改革网站,会把事先已很懦弱的网站完全弄休克;
[*]我来北京今后,只带过去1个Ruby程序员,而搭建Ruby团队,磨合团队,开辟中心体系,都不是一朝一夕的事变,想快也很难快起来;
侥幸的是,我雇用过程当中,口试到了两个相称不错的.net工程师,有很强的长进心,编程功底和悟性都很好。固然不切合我事先想找安于近况的工程师的尺度,但我又不太想错过好的人才网,以是我一时改动了本人的设法,将他们招过去,组建了新的.net团队。
为了不呈现之前.net团队流掉的成绩,给新的.net团队制造在公司开展的时机和空间,我想来想往,决意接纳一个折中的计划:即保存和相沿.net编程言语和框架,可是网站全体架构仍旧往Windows化,提要说来:

[*]数据层保持SQLServer数据库和存储历程,全体迁徙到Linux平台上的MySQL数据库上;
[*]缓存不再依附.net本身供应的缓存机制,迁徙到部署在Linux平台上的散布式的Redis上;
[*]服务之间的挪用,制止利用.net本身专有协定,改成Restful的HTTPWebAPI挪用;
[*]静态资本哀求,不再让IIS本人处置,分别到Linux平台上的nginx去向理;
[*]必要读取的文件体系,也改成会见Linux平台上的散布式文件体系;
[*]部署.net代码的Windows服务器放在LVS前面,用LVS做负载平衡和妨碍切换;
复杂说来,就是纯真让.net做使用层的编程言语和框架,其他都交给Linux平台的开源办理计划。而.net框架纯真做使用层,不管ASP.netMVC的开辟效力,仍是.netCLR假造机的运转效力都十分好,今朝我们单台Windows服务器上跑几百万的静态哀求毫无压力,并且使用层架构是能够横向扩大的:假如哀求负载十分高,只必要增加更多Windows服务器便可。总之,做到了取长补短。
别的,我也对照注意分歧编程言语研发团队之间的交换,勉励.net工程师熟习Linux操纵体系,培育.net工程师全体架构认识。我们如今的主力.net主干和我说,感到离开这里今后手艺上最年夜的提拔就是视野一下被翻开了。
在厥后两年的全部网站改革过程当中,也证实了如许的做法是相称乐成的:

[*].net团队不乱的持续了上去,并且成为全部研发部门体现一向十分凸起的团队;
[*]全部体系改革的历程十分妥当战争滑,没有碰着过甚么风险;
[*]对网站用户的打击很小,基础上都是在耳濡目染傍边,不知不觉的完成了全部网站产物的创新;
[*]对公司线上营业也没有形成任何影响,并且跟着体系不休改革,对营业的撑持愈来愈好;
当网站架构周全Linux化,而且架构办理计划全体一致今后,实在在使用层用甚么编程言语来写,就不是一件主要的事变了,我们今朝使用层现有产物线,既有.net,也有PHP和Ruby写的,可是架构都是一致的,用甚么编程言语,次要取决于研发团队资本的分配情形而定。
总之,以我的履历来讲,一个传统上严峻依附微软办理计划架构的网站,假如要举行架构改革,迁徙到Linux平台,乃至用其他编程言语重写,历来都不是一个纯真的手艺成绩,它最少触及以下几个层面的成绩:

[*]怎样保证旧体系的研发团队的好处成绩,怎样做到鼓励老团队介入架构改革,分享乐成。这是最主要的,常常也是架构迁徙最简单呈现的致命成绩,假如架构改革必定要就义老团队,完整不思索和保证他们的好处,我以为必定会发生严酷的政治奋斗,终极一定失利;
[*]现有营业体系怎样坚持一般运转战争滑过渡的成绩,假如架构改革影响到了营业,那必定会短命;
[*]怎样包管网站用户体验的光滑过渡和改良的成绩,假如架构改革影响了用户基础利用体验,那也必定会被叫停;
[*]向导对架构改革傍边呈现风险的容忍度成绩,和向导对架构改革周期拉长今后的耐烦成绩;
一点题外话

我感到我们互联网行业有一个不太好的征象:有些网站在促销时代瘫痪了,有些网站常常呈现会见不不乱的征象,公司老板就喜好跑到微博下去放狠话,请上司品茗,大概急就章的嚷嚷百万年薪招CTO,这些都是很稚嫩的做法。这就比如一团体,寻常生存习气差,灯红酒绿,从不注重摄生,了局天长日久上去,终究病倒了。在这个时分狠狠的挥动支票嚷嚷,哪一个名医能给我华陀再世,我给谁百万待遇。
也许唯一可以让世人留恋net网页编程的理由就剩下它的王牌——跨平台。

蒙在股里 发表于 2015-1-20 19:49:07

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

简单生活 发表于 2015-1-29 18:18:23

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

再见西城 发表于 2015-2-6 03:08:12

那么,ASP.Net有哪些改进呢?

因胸联盟 发表于 2015-2-15 07:05:23

使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

小女巫 发表于 2015-2-17 00:47:18

现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。

深爱那片海 发表于 2015-3-5 13:40:11

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

小妖女 发表于 2015-3-5 22:48:51

ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。

柔情似水 发表于 2015-3-11 06:41:07

ASP.net的速度是ASP不能比拟的。ASP.net是编译语言,所以,当第一次加载的时候,它会把所有的程序进行编译(其中包括worker进程,还有对语法进行编译,形成一个程序集),当程序编译后,执行速度几乎为0。

admin 发表于 2015-3-17 22:47:52

通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。

海妖 发表于 2015-3-25 04:05:00

JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
页: [1]
查看完整版本: ASP.NET网页设计对.net体系架构改革的一点履历和教导仓酷云