使用.NET进行互联网开发的思考和探索


本文摘自PHP中文网,作者Y2J,侵删。

不知从什么时候开始,创业变得很廉价,谈什么都是互联网,动辄融资千万。这阵风好像也刮向了程序员中,有那么一大批开发者,数据结构不好好学习、数据库原理不扎实掌握,在github上发布几个项目,用nodejs创建一些服务,再用H5写出APP,就自以为迈入了高级程序员的队伍,能够运筹帷幄互联网项目,难道学习新技术、新理念就是快速成长吗,显然不完全是,在这浮躁的氛围中,各种粗制滥造的互联网网站、APP接踵而至,很多看似漂亮的APP,连简单的http接口安全都没有措施应对,很多美丽的响应式网站,目录结构随意堆叠,这实在是一股歪风邪气,我觉得程序员还是应当踏踏实实的多学理论,多写代码,反复实践。

  那么另外一个问题就来了,新技术、新理念难道就没有用了吗,显然也不是,新技术新理念是无数的技术大牛在长期的实践中反复重构的胜利果实,而作为一个.NET老司机,眼看着这些年微软拥抱开源,拥抱社区带来的改变和进步,也是深感欣慰,于是今天,我想和大家分享一下这些年我以及我的公司对于使用.NET进行Web开发乃至于互联网应用开发的一些经验和技术总结。

  先看一个最新上线的典型案例,muban.printhelloworld.com,其中用到了诸如HTML5、Bootstrap、EF6 For MySql、阿里云RDS,阿里云CDN等新技术和新理念,然而却并没有脱离采用.NET进行开发以及采用.NET生态环境(IIS、Windows Server)进行部署这一基础,但整个开发流程,已经完全摆脱了WebForm甚至MVC,我们实践了一套全新的.NET开发模式,在开发效率和团队协作上大大提升,在开发时间上也极大地缩短,在这个案例里面,整个网站的前台和后台管理,从构思到设计、开发、调试、部署,1个人3天完成。下面就开发模式的细节详细描述,也听取大家的意见,继续改进和完善。

  对于ASP.NET WebForm的评价,我想以下的话是客观的:ASP.NET WebForm托拉拽以及事件驱动的Web开发模式的创新,虽然方便了一大批.NET入门者的学习和理解,但最终严重阻碍了的.NET的普及和商业化使用,而且在很长一段时间内,.NET优秀的语言特性得不到重视,反而一直被扣着低效率、难扩展、不适合商业开发的帽子,ASP.NET WebForm在这其中有着不可推卸的责任。

  遥想06、07年的时候,我还在惊叹于UpdatePanel的强大和方便,现在回想来看,这样的开发模式让开发人员对HTTP和Web本质的认识无疑是罩上了一层迷雾,从长远看是一种倒退,再往后来,到了ASP.NET MVC时代,微软高阶程序员的陋习依旧没有改善,虽然MVC开源了,但仍然充斥着各种自以为是的为开发人员提前想好的特性、绑定、快捷方法等等,这些东西初级开发人员可能会觉得很方便,但我想,任何从事过商业项目架构和开发的技术经理都会深有感触,在真正需要稳定的扎实项目中,这些小聪明,不仅毫无用处,而且难以扩展,更容易导致难以掌控的Bug和漏洞。

  令人庆幸的是,在Nadella的带领下,在比尔盖茨重新担任技术顾问的指引下,.NET不断修正方向,除了在语言上大步向前,更在生态建设上愈加清晰可见。我一直在怀疑公司所创造的.NET敏捷开发模式是否是先进性的体现,直到vNext(MVC6.0)的出现,我豁然开朗,原来殊途同归,微软终于走对路了。

  在谈开发模式之前,我想先谈一谈:

  一、目前的互联网项目或者是传统Web项目的一些新趋势和特点

  1、不再使用WebService,而是大量使用HTTP作为数据通讯的方式

  2、数据载体不再使用XML,转而使用JSON

  3、Web前端会使用Bootstrap、JQueryUI、EasyUI等第三方HTML5框架

  4、有APP的需求,甚至APP优先的需求,APP需要对接各类第三方插件

  5、为了追求APP快速上线,有时候会采用HTML5的APP开发模式,例如PhoneGap、AppCan、HBuilder等

  6、 有微信的需求,要求对接微信公众账号,进行微信浏览器中的移动Web开发

  7、开发周期短、迭代频繁

  8、数据量增长迅速,对报表展示、数据分析有较多的需求

  9、项目组人员需求由Web开发工程师,细分为HTML5前端工程师、JAVA(.NET)工程师、数据库工程师等

  10、单元测试减少,功能测试越来越多,甚至用互联网工具(worktile等)替代专业测试工具

  基于以上情况,我们考虑,如果仍然使用.NET进行系统开发,那么在用户量<=50万的敏捷项目里:

  二、一些传统的.NET Web开发模式和方法就应该被抛弃

  1、ASP.NET WebForm以及MVC模式不再合适,他们均存在前后端耦合严重,简单流程复杂化的问题,而且前端始终无法脱离.NET架构。

  2、SQL Server数据库不再合适,虽然SQL Server 2014的特性让人激动,但随着公有云的使用越来越普遍,同时相比其他数据库来说,大小、价格、可扩展性甚至性能方面,SQL Server都显劣势。

  3、传统三层架构不再合适,很多互联网项目,从设计之初就要求能够支持多服务节点,不同应用场景使用不同数据库。再加上三层架构大量使用反射牺牲性能增加代码,也不再适合敏捷开发。

  4、Server 2003的IT架构应当被抛弃,无论是IIS6.0落后于IIS7的HTTP请求处理模型,还是Server 2003落后于Server 2008、2012的稳定和扩展,都不应当再考虑基于Server 2003和IIS6的.NET部署。

  虽然被抛弃了一些东西,但微软毕竟是微软:

  三、一些.NET特性应当被强化

  1、深入使用Visual Studio 2015开发工具,VS2015是宇宙级开发工具无需多说,甚至在前端编码(CSS、JS、HTML)上也愈加纯熟,配合适合工程师自己的自定义设置以及第三方插件,将会如虎添翼

  2、TFS源代码管理的使用,无论是内部安装TFS Express版本还是在tfs.visualstudio.com上申请免费空间,都能够很好的进行团队协作,以我们实践来看,切勿被Git模式冲昏头脑,事实上TFS管理模式才是最适合.NET开发的

阅读剩余部分

相关阅读 >>

C#.NET: list<source>转dictionary<source.key,list<source>>

简单介绍C#.NET、javascript和json(图文)

使用.net进行互联网开发的思考和探索

更多相关阅读请进入《C#.NET》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...