新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序
在博客园学习很长时间了,今天终于自己也开通了博客,准备分享一些感悟和经验。首先感谢博客园园主提供了这么好的程序员学习交流平台,也非常感谢张善友、dax.net、netfocus、司徒正美 等技术大牛的无私分享,从他们身上学到了很多。还有我最近一直关注的田园里的蟋蟀,分享了很多新的技术和思想方法,在此也深深地感谢!
我自己一开始工作(2002年)就从事WEB开发(ASP.NET方向),到现在已经13个年头了,从初级程序员到技术经理、开发部经理、项目总监,再合伙创业,因缺乏企业经营经验,创业不算很成功,所以后来转入到企业管理培训和咨询行业工作了5年,以开阔视野、提升全面能力、积累人脉资源。2014年初进入到一家由上市公司投资的移动互联网创业团队,作为合伙人。最初主要负责产品设计,但很多设计好的功能和想法,开发团队的技术无法实现。只好自己研究现代WEB前端技术,做好标准和范例,开发好最难的前端部分,再交给开发团队实现后端。几个月后,开发团队交出来的成果还是差强人意,公司让我接管开发部,亲自领导开发团队。于是我招聘了其他产品经理分担一部份产品设计工作,我的精力更多放在了重建开发团队方面。
我接手开发部时已经招了一些两、三年工作经验的和几个十年左右工作经验的JAVA开发人员(因为总部公司有十几年的JAVA开发基因,在成立我们这个创业团队时,从以前的开发团队派的技术骨干,所以后端开发也选择了JAVA技术),我接手后又招了几个,但无论是开发效率还是质量方面,都很难达到预期。后来在准备一个新的O2O平台产品时,我在考虑了Java、PHP、Node.Js、ASP.NET后,最终选择了ASP.NET作为新项目的后端开发技术。选择ASP.NET的原因可以另写一篇文章,但简单来说,ASP.NET的新版本,开源和跨平台已不是问题,并且已拥有像Node.Js一样的全异步机制,C#语法简洁优秀。
在这段时间的招聘面试过程中发现一个很严重的问题,大多数无论是工作2、3年的还是5到10年的程序人员,基础知识、经验能力、对新技术的了解和运用,都差得让我难以理解,几乎没有什么技术特长或深入专研的领域。当然,因为我们是创业公司,工资标准受限,很难吸引到优秀人才来应聘,但工作了很多年的程序员,还仅仅只是会简单三层架构的数据增删改查,没什么技术特长和开发思想,连能准确回答“int类型是多少位,能表达最大范围是什么数量级,或者是2的多少次方”这个问题的面试者都几乎没有。对“依赖注入”熟悉的面试者几乎没有,应聘高级开发和架构师岗位的人能说得清楚缓存机制的也几乎没有。其实,这每一个知识点,在互联网上都能找到很详细的资料。我认为只要找到方向并努力学习和运用,半年时间已经可以超过大多数工作2、3年的人,认真努力2年时间可以超过大多数工作5年8年的人,因为大多数工作多年的程序员多数时间都在做重复的、没有提升性的工作。这段时间实在招不到满意的有经验的,所以让HR多招一些有强烈上进心的应届毕业生来培养。
我虽然入行的时间比较早,但只有前6年是在具体做技术开发,后边几年主要是做管理和为企业提供解决方案,较少具体写程序。我是从2014年又开始重新学习各类前端、后端技术,所以现在还是算一个新人,愿意向各位有经验的前辈学习,愿意与各位新人共同成长。
互联网上有很多好的经验分享,有很多好的开源项目,但相对也比较分散,我先列举一下这几个月以来学习并运用于项目的知识点,后面在详细写文章介绍我是怎么学习和应用的。
前端:
思想:响应式布局、单页面应用、图标字体、MVVM、JS模块化、JS模板引擎
技术/框架:HTML5、CSS3、LESS、Jquery、Bootstrap、Framework7
组件: Webuploader、Ueditor/Umeditor、Highcharts、Jquery.dataTables、Jquery.form、Jquery.validate、Jquery.Jcrop、Jquery.mCustomScrollbar、Spectrum、Toastr、BlockUI、SuperSlide,还有一大堆小的Jquery插件就省略了
后端:
思想: DDD(领域驱动设计)、TDD(测试驱动设计)、DI/AOP(依赖注入/面向切面编程)、模块化开发、异步编程、分布式架构、敏捷开发之SCRUM
技术/框架:Asp.net MVC5、C# 5.0、Entity Framework 6、xUnit+NSubstitute+Shouldly、aspnetboilerplate
工具:Git、VS2013、Sql Server、MongoDB、Redis
开源组件:AspNet.Identity、AutoMapper、Castle.Windsor、MiniProfiler
2015-3-16 16:00 补充:
本来想单独写一系列文章来分享abp框架,但今天有朋友问到,就提前补充分享一下,先发个git上的链接
https://github.com/aspnetboilerplate/aspnetboilerplate
顺便分享一些其他我认为有使用、学习和研究价值的项目:
https://github.com/OrchardCMS/Brochard Orchard的vNext版
https://github.com/h5bp/html5-boilerplate html5页面的样板
https://github.com/loresoft/EntityFramework.Extended EntityFramework的功能增强
https://github.com/HangfireIO/Hangfire 非常短小精悍的后台任务组件
https://github.com/MiniProfiler/dotnet 监测.NET后端和Web前端每一个步骤的耗时毫秒数,可查看EF生成的SQL
https://github.com/JeffreySu/WeiXinMPSDK 微信公众平台SDK的C#版,包括企业号的SDK
2015-3-16 17:40补充
有些朋友在问我们的招聘事宜,我刚在博客园发布了3个招聘岗位:
http://job.cnblogs.com/Enterprise/30971/
希望看到这篇博客的朋友多看看下面的评论,我在对评论的回复中写了很多信息。
感觉用互动的方式,表达起来效率会高很多。

由于时间关系,今天简单贴几张图,改天重新发布文章详细介绍开发框架的功能与特性。

项目结构(模块化开发)
|
代码风格:
|
![]() |
![]() |
|
Application层的代码简单得不需要写注释! 权限验证、数据验证、异常处理、事务处理、数据转换等全在基础架构上完成,模块开发者不需要写这些代码。 Application Service的方法可以自动生成Web Api的方法,客户端Ajax直接调用,不需要写Controller。 Application Service的方法都自动应用了UnitOfWork(工作单元)模式,除了以Get开头的方法,其他方法自动开启数据库事务。 |
|
|
|
|
|
权限验证、数据验证、异常处理、事务处理、数据转换等全在基础架构上完成,模块开发者不需要写这些代码。 Application Service的方法都自动应用了UnitOfWork(工作单元)模式,除了以Get开头的方法,其他方法自动开启数据库事务。 |
这段时间一直在优化开发框架、编码标准和流程,现在已经差不多了,明天开始对这周到岗的新人开始培训。
如果有正在找工作的朋友,也可以联系我来公司面试。
——————————————————————————————————————————————————————————————————————————
再贴一些以前项目中的前端界面截图:(以下不是上面那些后端代码 所对应的前端,不是同一个项目,但都是我亲自做的前端)









哇噻,时间已经太晚了,快快睡觉!
改天重新发布文章详细介绍开发框架的功能与特性。
新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序的更多相关文章
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->WinForm版本新增新的角色授权管理界面效率更高、更规范
角色授权管理模块主要是对角色的相应权限进行集中设置.在角色权限管理模块中,管理员可以添加或移除指定角色所包含的用户.可以分配或授予指定角色的模块(菜单)的访问权限.可以收回或分配指定角色的操作(功能) ...
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->Web版本新增新的角色授权管理界面效率更高、更规范
角色授权管理模块主要是对角色的相应权限进行集中设置.在角色权限管理模块中,管理员可以添加或移除指定角色所包含的用户.可以分配或授予指定角色的模块(菜单)的访问权限.可以收回或分配指定角色的操作(功能) ...
- SOA 新业务语言 新系统架构——什么是SOA
原文地址:http://blog.csdn.net/ichaos/archive/2008/01/20/2054377.aspx SOA的概念是Gartner在1996年提出来的,并于2002年12月 ...
- Linux 4.21包含对AMD Rome处理器中新的Zen 2架构重要的新优化
导读 Phoronix的Linux爱好者报告说,Linux 4.21里包含对AMD Rome处理器中新的Zen 2架构重要的新优化.AMD新推出的7nm EPYC Rome芯片带来了一种全新的独特架构 ...
- AI赋能抗疫!顶象入选“中关村第二批抗疫新技术新产品新服务清单”
新型冠状病毒疫情仍未到达拐点,要打赢这场疫情攻坚战,不仅需要全国人民共同努力,还要使用科技的手段,用科学来守护大家的安全.对病毒的识别需要运用生物学技术进行基因测序,病患需要依靠医学能力进行救治.与此 ...
- 新技术新框架不断涌现,目前学习web前端开发都要掌握什么?
web前端开发由网页制作演变而来,随着web2.0的发展,网页不再只是承载单一的文字和图片,各种丰富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现 ...
- 解密华为云FusionInsight MRS新特性:一架构三湖
摘要:华为云安全网关产品总监郭冕在"华为云TechWave云原生2.0专题日"上发表<华为云FusionInsight MRS,一个架构实现三种数据湖>的主题演讲,分享 ...
- 郑晔谈 Java 开发:新工具、新框架、新思维【转载】【整理】
原文地址 导语:"我很惊讶地发现,现在许多程序员讨论的内容几乎和我十多年前刚开始做 Java 时几乎完全一样.要知道,我们生存的这个行业号称是变化飞快的.其实,这十几年时间,在开发领域已经有 ...
- 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转
线程安全使用(四) 这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...
随机推荐
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
- C语言 · 4_2找公倍数
问题描述 这里写问题描述. 打印出1-1000所有11和17的公倍数. 样例输入 一个满足题目要求的输入范例.例:无 样例输出 与上面的样例输入对应的输出.例: 代码如下: #include< ...
- so 问题来了,你现在值多少钱?
年底了一大帮人都写着年底总结,总结一年做过的事.错过的事和做错的事.增长了多少本事,找没找到女朋友……来年做好升职加薪,要么做跳槽的准备,程序猿又开始浮躁了……. so 问题来了,你现在值多少钱? 这 ...
- javascript有用小功能总结(未完待续)
1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...
- 用angular怎么缓存父页面数据
angular做单页面应用是一个比较好的框架,但是它有一定的入门难度,对于新手来说可能会碰到很多坑,也有许多难题,大部分仔细看文档,找社区是能解决的. 但有些问题也许资料比较少,最近遇到过一个要缓存父 ...
- BPM SharePoint解决方案分享
一.需求分析 SharePoint作为微软推出的协同类平台产品,为客户提供了门户.内容.文档.流程.社区.搜索.BI等一系列的解决方案,然而其流程功能由于设计理念差异,不能完全满足客户的需求,主要原因 ...
- Android的Kotlin秘方(I):OnGlobalLayoutListener
春节后,又重新“开张”.各位高手请继续支持.谢谢! 原文标题:Kotlin recipes for Android (I): OnGlobalLayoutListener 原文链接:http://an ...
- django 第三天 有关库使用
项目中经常会用到第三方的lib和app,有些lib和app会进行不断更新,更新后可能会存在冲突,因此可以创建externals目录,下面欧app和libs.app存放django-cms,haysta ...
- 在开源中国(oschina)git中新建标签(tags)
我今天提交代码到主干上面,本来想打个标签(tags)的. 因为我以前新建过标签(tags),但是我现在新建的时候不知道入库在哪了.怎么找也找不到了. 从网上找资料也没有,找客服没有人理我,看到一个交流 ...
- Linux基础介绍【第六篇】
定时任务crond介绍 crond是什么? crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.一般情况下,安装完CentOS5/6 linux操作系统之后,默认便会启动cro ...




