您的位置:首页 > 其它

后台管理框架之二:技术选型

2014-09-15 21:37 501 查看
  确定了整个项目的目标和拟定了初步的工作思路,下一步的工作将是技术选型。

  其实所谓的技术选型,对我来说都一样,我有好久没有真正做过WEB开发,各项技术我基本只是了解,还不太熟悉。这部分工作也只是找一套自己比较顺手的技术进行整合,不会有真正的深层次研发,就像我在『个人小记』中说的那样,我更适合做事,而不适合做研究,如果不是项目需要,特别深层次的我也不会花太多时间去研究,毕竟项目要充分考虑『效率』和『效益』这两大因素。以下就是我技术选型的基本情况:

  一、开发语言

  这个选择C#.NET是肯定的。我虽然也了解JAVA语言,我也知道JAVA语言是很强大的或者说很伟大的开发语言,但我不太喜欢她。一来是2011年做项目时受伤太深

;二来Java语言很多工作需要自己动手,而我更喜欢用现成的。很多人非常看好Java,觉得Java语言开源、跨平台、开源框架多,能更多地深入学习技术,而Microsoft的开发语言闭源、不能跨平台、开源的框架少,很多技术都被封装,不能很好地学习架构。而我觉得其实无所谓,我不需要特别深入的去学习某些技术(除非项目需要),也不可能成为那些技术大拿,对我来说技术不是最重要的,什么能最大限度满足项目需要,什么能最大限度的提升『效率』和『效益』,就是最重要的,这个就是我要的。毕竟我们只是程序员,只是应用那些技术大拿的研究成果。当然,这些都是题外话,扯远了。

  二、开发框架

  我完全放弃了Asp.net,虽然她也是一个划时代的框架。一来主要是对Server端控件的数据处理和页面刷新技术比较不感冒;再者是对Java里的Mvc框架理念非常信服。MVC可以使得整个项目在结构规划上非常清晰,所以这个项目上我选择了Mvc4。(为什么选择Mvc5,呵呵,主要是因为我的参考书是4的!)。以下就是Mvc的参考图例:



  三、页面框架

  动态页面使用C#+Mvc4,页面技术当然是CSHTML。选择它的还有一个好处是:Mvc4中对View的操作做了很多封装,可以减少项目工作量。

  ajax技术当然首选JQuery,一来是Mvc4默认的ajax框架,二来易学好用,三来用户量超级大。好用的东西当然选它。

  js页面框架选择基于JQuery的JeasyUI。刚开始的时候一直在Extjs和JeasyUI这两个框架中选择,Extjs框架是一个很强大的框架,功能甚至比较JEasyUI更强大,控件也较多。为什么不选择Extjs,主要有以下几点考虑:1、Extjs 脚本功能强大带来的JS编写特别费劲;2、Extjs 富客户端对终端机器性能的要求高(我机器配置低);3、商业版本和免费版本的差异性;4、我打不开Extjs的英文官方网站,我不能深入了解它。而JeasyUI相对有以下几点优势:1、核心基于JQuery,和Mvc4项目无缝集成,这是最大优势;2、提供Html和JS两种页面布局设计方式;3、轻量级的富客户端框架;4、完善的Demo和API文档,方便快速学习;5、丰富的插件系统,完全满足我的需要;6、我能打开它的官方网站; 

  其它的页面技术就是常规的Html+DIV+CSS。

  四、持久化框架

  我个人了接触过的持久化框架包括NHibernate、iBATIS.NET,再就是一些持久化代码生成器(生成SQL)。NHibernate在一个项目中使用过,但没有深入研究,不过知道它功能非常强大;iBATIS在11年的Java项目中使用过,后来没接触过。这两个框架都需要做配置文件,个人觉得挺麻烦的。而持久化代码生成器虽说可以很快生成持久化代码,但是会导致项目代码臃肿、阅读繁琐,一直都不喜欢用。后来了解了EF框架,没有配置文件、极少代码、操作灵活、和Linq关系紧密、能够自动生成数据库及表,非常符合我的要求,所以就选它了。项目中使用的是EF6.1,其实是一不注意从5升上来的,将就用吧。

  EF有三种工作模式:数据库优先、模型优先、代码优先。我选择了『代码优先』模式,因为我不想关注我的数据库如何设计,也不想在项目中多加一些非代码文件(我希望我的项目结构清晰,项目文件相对较少)。

  五、IOC框架

  IOC框架在项目中是必不可少的,因为我已经厌倦了new。使用New会使得项目依赖关注过早确定,业务变更时大量修改原代码,增加了项目变更的风险。而IOC依赖注入减少项目耦合性,使得各种依赖在运行时确定,通过灵活的依赖管理能极大的增加项目灵活性,减少业务变更时的风险。

  IOC框架我接触了两个开源框架(是否开源其实无所谓),Ninject和Autofac。最初在参考书上接触的是NInject,Ninject框架不需要配置文件,非常灵活方便,可以快速实现对构造器、属性(包括私有)的注入,而且支持多重依赖的管理,但是不知道为什么,我在项目中无法对过滤器构造进行注入,所以后来改用Autofac。目前Autofac使用正常。这两个框架的具体功能我就不多说,大家如果需要了解可以去访问官网,或者在网上搜索,相关资料还是很多的。

  六、其它

  WEB项目中核心的一部分功能框架就是用户认证,ASP.Net就MemberProvider模型,功通挺强大,但我估计并不能完全满足我的要求,所以权限认证我准备自己写。

  另外还有一块就是数据模型和实体模型的映射框架(这两部分模型后述会提到),本来自己写了个实现此功能的类库,后来发现了AutoMapper,就用上它了。

  基本上到此为止,项目技术都已经选定,下一步就着手进行设计了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: