0

0

.net进行高效率互联网敏捷开发的思考

伊谢尔伦

伊谢尔伦

发布时间:2016-12-03 09:11:55

|

1208人浏览过

|

来源于php中文网

原创

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

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

2317.jpg

最新上线的典型案例,其中用到了诸如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进行系统开发,那么在用户量

  二、一些传统的.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部署。

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

hstshop鸿思特商城系统
hstshop鸿思特商城系统

鸿思特商城系统HstShop是一款B2C独立网店系统,由拥有十年互联网开发经验的牛头带队开发完成,完全免费开源,适合大中型网站平台快速构建立强大的网上商城平台网店系统。HstShop悉心听取每一位商家的需求与建议,根据中国人的购物习惯改进了购物流程,实现更好的用户购物体验。HstShop网店系统无论在产品功能、稳定性、执行效率、负载能力、安全性和搜索引擎优化等方面都居国内同类产品领先地位,成为国内

下载

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

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

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

  3、.NET高阶语言特性应当加强使用,在理解的基础上,如果能熟练使用Linq、Lamda表达式、反射、Task并行编程等.NET特有的优质语言特性和方法,将会极大地提升开发效率,缩短开发时间。

  4、IIS的高级功能和动态管理应当加强使用,IIS7以后,IIS服务器就是高性能Web中间件的代名词,加上Server 2008、2012的Core模式,加强对IIS的动态管理和配置能够极大地提升Web处理效率。

  5、Server 2012 R2操作系统应该加强使用,虽然跨平台是.NET的方向,也在mono上实践的很好,但在PC服务器和云服务器越来越便宜的今天,还是多用用Windows最新的服务器操作系统吧。

  有了以上这些认识,经过总结,我们现行的.NET开发模式,可以简单概括为如下:

  一、前后端高度解耦

  首先要做的就是彻底抛弃ASP.NET WebForm和MVC模型,前后端高度解耦,前端的所有逻辑处理均使用JS进行处理,包括Dom元素布局与绘制以及数据请求,而后端为纯粹的业务逻辑处理,包括逻辑处理以及数据处理。目前我们的项目由于使用了ASP.NET中的Routing特性,依然Host在ASP.NET模型以及IIS中,在理论中以及不久的将来,替换为Core IIS或者Linux下的Nginx来Host纯HTML5以及HTMl5缓存也将非常容易。

  二、前端使用纯HTML5

  前端抛弃传统HTML,尽量全部使用HTML5技术,其中做出的牺牲有,抛弃IE11以下的浏览器,但在互联网思维的今天,这样的思路也未尝不可,当在前端全部使用HTML5技术后, 文件、图形图像、音频视频、地理位置等各种处理将变得非常简单,而且扁平化、数据化。

  三、前端充分利用成熟框架

  使用新的开发模式后,很明显的一个改变就是,公司的美工不再或者很少进行前端切图,而对于技术美工的需求(会CSS开发和JS开发、也懂设计)则日渐增加,带来这一改变的根源就是那些不断涌现先进的、优秀的前端框架,我们目前正在使用的有JQuery、Zepto、JQueryUI、JQueryMobile、Bootstrap、Amaze UI、inoic、Framework7、SUI、MUI等等,以及伴随着这些优秀框架的第三方插件。客观的说,通过优秀框架的使用,不仅没有增加前端的系统风险,反而由于框架的开源、架构清晰、稳定等特性,实现了更加稳定、可扩展的前端。简单的举个例子,在解决困扰很多Web工程师的全兼容性的布局以及响应式布局问题上,Bootstrap就功不可没。

  四、前端开发面向对象化

  将前端开发,通过JS面向对象特性进行简单封装,在Dom元素操作以及业务逻辑数据请求的处理上,与后端数据类型、实体结构以及处理逻辑上保持一致,不仅拉近了前后端开发人员之间对业务需求的理解,也是极大地降低的技术培训的门槛,提升了团队合作的效率。

  五、使用CDN服务

  CDN服务在几年前还是大企业、大公司的专属,现在已经完全普及化、平民化,Web前端越来越重是不争的事实,但真正的业务逻辑往往只有几十K甚至几K,1个几百K的页面,90%是JQuery等第三方框架,因此,合理的使用CDN加速,不仅提升用户端的体验,更直接将基于HTTP架构Web服务的负载能力提升5-10倍以上。

  六、业务逻辑HTTP服务化

  这句话的描述可能不是很恰当,但这也是我们全新的.NET开发模式中最重要的环节,经过对阿里开放平台等先进互联网架构的学习,最终我们形成了结构化但松散的业务逻处理模式,即每一个业务逻辑行为均有1个唯一的路由名称,业务逻辑只对路由名称负责,而路由名称对流向、性能、权限、安全等上层需求负责。这样做的好处是,能够充分利用3-5年左右经验的开发人员(这也是大部分公司的开发主力军),让他们专注于业务逻辑的编写,而业务逻辑之外的事情,在架构层面由其余的控制器去解决,而一个大的.NET项目工程,也可以灵活以不同的方式拆分为各个子模块。对于HTTP服务的实现,我们尝试过ASP.NET ASHX处理器、Windows Service HOST WCF服务、ASP.NET Web API,当前较为稳定版本是Web API,当然针对HTTP服务化这一需求,Wen API也显略重,以后会继续改进。总之这一改变过程,在实践中提升了至少3倍以上的开发效率和测试效率。在后一章节中,将会进行详述。

  七、分布式与热加载HTTP服务建设

  互联网应用要求的是敏捷开发和反复迭代,同一个逻辑架构下的不同请求会使用不同的服务器和数据库已经是家常便饭的事情,因此项目设计初期,分布式HTTP服务的建设至关重要,而业务更新更是需要能够进行热加载,在.NET体系里面,就是DLL托管代码的动态加载使用,可惜的是,由于公司现有项目并未出现大规模分布式场景,因此还未研发出较为稳定的DLL动态加载架构,在后一章节中,将会详细讨论。

  八、使用阿里云解决大数据问题

  我想任何一个使用过阿里云以及其他云服务的IT架构师,都能深深的感觉到,阿里云已经领先其他云不止一个身位。事实上,特别是阿里云的数据库相关功能,例如RDS、DRDS、KVStore等,都已经在实践环节真实的解决了很多传统需求里的复杂点和困难点,具体细节后面详细讨论,但真心的说一句,赶快使用阿里云吧,至少在现阶段,不是阿里云在绑架你,而是在帮助你。

  今天写了很多,总的来说,就是告诉大家,.NET的春天已经来了,.NET不仅可以进行互联网化的敏捷开发,更能处理大型项目大型数据大型逻辑,这一点我在实践中已经尝到甜头,而作为一个写Pascal数据结构出身的程序员,也至今十五年有余,我也对各类新技术非常感兴趣,都有涉猎甚至尝试,不怕被别的语言喷,我甚至可以大胆的说一句,其他语言,从综合(语言、开发环境、开发效率、技术社区、团队协作、应用能力)上来看,在应用级开发领域,已经落后.NET太多太多,只是.NET程序员自己还没察觉,所以从这一点上来看,需要大家的共同努力,不断钻研和探索。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

31

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

9

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

32

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

1

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

3

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

8

2026.01.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

23

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

122

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

51

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 7.7万人学习

python编程入门系列图文教程
python编程入门系列图文教程

共65课时 | 24.7万人学习

vscode其实很简单
vscode其实很简单

共72课时 | 29万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号