本人2014年从Java转行到C#从事BS项目的开发,刚开始接触的是ASP.NET WebForm,结果对于我这种从jsp+servlet时代的人很是的不适应,开发者不能自由的操做HttpContext及其原始的Web命名空间中的类库来开发,而是所有封装成基于事件的机制来操做,很是的别扭。后面就找到了ASP.NET MVC这个框架。发现不错,并且从Java Web方向转过来学习ASP.NET MVC仍是容易接受的。 在其的学习上纸质书籍我看了两本(因为公司的IDE是VS2010,因此我就用的MVC4啦):
javascript
注:其实光看书你也看不下去,由于仍是有点枯燥的,尤为是第二本。可是这个书当你在开发的时候遇到的问题上面有解决方案或者给你思路的时候,你就会豁然开朗,就像本人开发一年ASP.NET MVC项目以后我也没事就去看看这两本书,发现都有一番韵味。固然如今技术更新的快,ASP.NET已经到5了,MVC也是6了,可是这个你参透这个MVC 4版本,其余也好说。css
然而我写这篇文章的目的不是详细讲解ASP.NET MVC 框架的详细知识。html
而是总结归纳这一年我开发所用到的比较好的技术和知识,目的是为了之后我反过头能够快速的想起之前的所学知识,加快我开发新项目技术选型的速度。前端
因为本人以前就有相关Java Web开发经验,追求完善的项目架构也是我很是感兴趣的地方,在准备使用ASP.NET MVC做为框架来开发项目以前对本身的项目的架构选型和设计上也花了不少功夫。在对本身编程规范上严格遵循SOLID原则,详见SOLID Architecture principles using simple C# examples. 阿九在<让姑姑再也不划拳 码农也要有原则 : SOLID via C#>中用中文详细的对其解释。java
真正的项目开发中层次化和模块化的设计要体现出来。园子大牛圣殿骑士在其文章《最近架构随想》中说过“架构决定项目的成败以及高度,因此在编码以前必定要设计好项目的总体规划和架构。好的架构或者考虑比较全面到位的架构会极大的帮助团队,对项目起到灵魂的做用;糟糕的设计每每会把整个项目组带入泥潭或者恶性循环,对项目直接致命打击!”。jquery
首先简单的介绍下这个实际项目的内容,该项目是工厂内部实时监控整个工厂全部产线某种类型的工做站台的生产能力、效能分析、缺陷分析、报表统计、资产统计的解决方案,Web端负责业务逻辑处理以及呈现,Parse端负责机器与中央服务器的数据传输和存储。大体相似于Web端在数据库中取数据,Parse端在数据库中存数据。 Parse端用的WCF技术来实现通讯,这里暂且不去说起。css3
在Web端总体的架构方案以下所示:git
系统采用Bootstrap和ASP.NET MVC with Razor做为View,KnockoutJs做为MVVM框架。UI Designer设计好UI,而后由前端工程师绑定相应的UI Model到UI,后端工程师则负责相应的OOAD以及业务处理。这里所有的角色都是本人来作。。。SQL Server数据库做为数据存储,而且利用了ADO.NET Entity Framework做为进行数据访问的ORM框架,DBContext帮助咱们实现与数据库的交互。我采用Repository模式将单纯的数据访问操做封装在Repository中,它能够当作是针对某个Entity Data Model 的DbContext的封装。程序员
业务逻辑的实如今Service中并以服务的形式暴露出来,Service调用Repository完成针对数据的存取操做,服务的消费者是ASP.NET MVC的Controller。github
这里乃是大体的讲解了一下项目的基本架构,固然这篇文章是讲解技术选型的,因此在后面将会详细的涉及到内部所选择的很好的技术或者工具。
既然是BS项目,无论这个开发框架对应视图的语言好比说Razor视图引擎多么强大,你也不会所有使用它来渲染你的html,这个多是由于本人原先在CSS和JQuery用的比较多,因此Razor的HTML辅助方法我相对用得少,不习惯在方法的htmlAttribute属性中输入CSS style, 更加坑爹的是razor的html辅助方法没有data-bind参数来嵌入knockoutjs. 因此对razor的使用我只用在一些须要提交并跳转的表单页面上面。
本人开发的web项目因为异步Ajax比较多,有习惯了使用jquery的ajax方法,因此没有使用razor里面的Ajax辅助方法。好了不偏题,归纳使用过的比较好的CSS和JS框架: