Rails框架流行在他的设计理念

这两天看了一本书《Grails权威指南》,看了这个Java上Rails框架,其中有两条设计理念:

1、make simple thing easy and make complex possible -让简单的事情变的容易,同时让复杂的事情的实现成为可能。

2、Convention Over Configuration --约定高于配置

Rails几乎成了敏捷web框架的代名词,Java社区的Grails,.NET开源项目Mono Rails和Subsonic,还有微软ASP.NET Team正在做的ASP.NET MVC框架无不体现着上述两项设计理念。

看看在.NET进行Rails式的敏捷开发工具包:

1、MVC框架: 无论是Castle MonoRail还是ASP.NET 的MVC框架清晰,简洁,你要用这两个开发web框架,就一定要按他的方式做,model文件就放在models目录里,controller,view,helper分别放在特定名称的目录里,只要你按这个规则做了,那一切很简单,如果你较真抬杠非不这么放,那么也许能达到目标,但很累。不过在他的地盘上开发,为什么要不按人家的规则做呢,况且人家的目录结构,命名规则以及URL到action的映射都很合理很清晰,Mix上会发布的asp.net mvc 在URL Routing上会有很大的增强,MonoRail项目也在加强URL Routing这块的内容,看来自己要创建一套规则也容易。只是自己创建一套规则是否会更好。

2、O/R Mapping: NHibernate,IbatisNet等ORM架构都有至少有一个记录OR映射关系的配置文件,然而Rails框架没有,它使用Scaffold生成model,默认情况下就是英文复数的表名对应单数的Model,DB字段名对应Model字段名,表中必须有叫做ID的整形字段作为key等等很直觉的约定。这样开发者就不用为了“可能”存在的灵活性而维护一个大的OR Mapping配置了。这样简单的事情容易了。SubSonic项目和Castle的ActiveRecord的子项目,由于.net静态语言的原因,在动态特性的实现上没有RoR中那么灵活,它基于.net中的attribute来标识字段和关系,SubSonic 不是在运行时执行基于反射的映射,而是直接生成和编译数据访问层。他们的设计模式都是ActiveRecord,ActiveRecord做CRUD很简单,每个对象可以有自己的Fetch,FetchByxxx方法,从开发者的角度看这些对象,它们知道如何加载和保存自己,对象自己来维护IsDirty之类的标识,开发者不必关心这个对象应该被insert还是update。

3、Ajax,这年头,一个web框架肯定要支持ajax,asp.net mvc框架目前对ajax的支持方面很多人用jQuery做例子的很多。MonoRail之前默认用的是prototype库,MonoRail团队正在支持其他的javascript框架,可参看jQuery 和 MonoRail

4、Loger: 对一个web应用,log是很常用的,Castle 框架和spring.net,MS企业类库都有log,还有一个更通用的Log库,可参看通用日志

5、Mails: 对一个web应用,log是很常用的,Castle框架里面的支持很全面,从邮件模板到Mail发送的封装等

6、作业调度:对一个Web应用,用作业调度去完成一些系统维护和生成报表功能,是不可缺少的,这也有一个通用的项目支持开源的作业调度框架 - Quartz.NET

7、IOC容器:微软也在搞IOC,名叫Unity ,园子里有兄弟介绍了,可参看依赖注入容器Unity Application Block(1):快速入门。只是这还是一个婴儿,还没法和Castle、Spring.NET等开发了好几年的框架相提并论。

4、动态语言:随着DLR的到来,动态语言也来到了.NET,DLR现在发布Alpha 8, SliverLight 2.0的到来,DLR就将就充当一个重要角色,也就是IronPython、IronRuby这样的动态语言正式进入我们的工具箱。

这么多的工具包,就是没有一个完整包装的框架,最完整的框架算是Castle的MonoRail框架,借助Castle的4年来的积累,还在继续前行,微软要推出asp.net mvc而打断了MonoRail项目的开发步伐。SubSonic 本身是一个功能非常强大的应用程序工具集;如与 ASP.NET MVC 配合使用,它将成为非常有用的应用程序框架。总之,贯穿RoR的设计理念,这点对我们用.NET开发是很好的借鉴。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我有一个梦想

QT Creator 快速入门教程 读书笔记(一)

一 Qt简介 Qt 是一个跨平台的C++应用程序框架,支持Windows、Linux、Mac OS X、Android、iOS、Windows Phone、嵌入...

5776
来自专栏java一日一条

在 Visual Studio 上更好开发 Python 的六大功能!

Visual Studio 2013/2015 搭配 Python Tools for Visual Studio 扩充套件让 Visual Studio 能提...

1011
来自专栏听Allen瞎扯淡

解决 Windows10 笔记本关上后仍会掉电的问题

一开始我只是想在谷歌上搜索一下,为啥我的 Win10 笔记本在盖上盖子以后放入背包中,每次拿出来之后电量都会有所下降,结果就一下子看到了很多很神奇的东西,包括 ...

1.9K2
来自专栏技术沉淀

很赞的开源小工具

1332
来自专栏张善友的专栏

MSDN 杂志 Windows 8 特刊

Windows 运行时: 使用 Windows 运行时改变应用程序开发的面貌 Windows 运行时是创建 Windows 应用商店应用程序的核心。 了解它如何...

1847
来自专栏跟着阿笨一起玩NET

C# Xamarin移动开发基础进修篇

3752
来自专栏walterlv - 吕毅的博客

用 AppContext 解决类库的更新兼容问题

2017-09-30 15:45

2051
来自专栏安富莱嵌入式技术分享

【专题教程第8期】基于emWin模拟器的USB BULK上位机开发,仅需C即可,简单易实现

说明: 1、如果你会emWin话的,就可以轻松制作上位机。做些通信和控制类上位机,比使用C#之类的方便程度一点不差,而且你仅会C语言就可以。 2、并且成功将em...

1562
来自专栏张善友的专栏

NHibernate VS IbatisNet

  NHibernate是当前最流行的Java O/R mapping框架Hibernate的移植版本,当前版本是1.0 .2。它出身于sf.net..Ibat...

2047
来自专栏.NET开发者社区

(码友推荐)2018-07-09 .NET及相关开发资讯速递

4.为什么Kubernetes获得了胜利?--让Kubernetes成为开发人员最喜欢的容器编排平台的的秘诀是什么? - DockOne.io

1033

扫码关注云+社区

领取腾讯云代金券