专访.NET平台上类RoR开源项目Castle[转载]
MicroKernel/Windsor - 这是一个控制反转(Inversion of Control,IoC)容器。实际上,Windsor仅仅是封装了MicroKernel并提供了一些外部的配置信息和代理支持。IoC的核心思想是通过消除直接的代码编写并配置需要依赖的服务,来促进松散耦合设计。
Castle ActiveRecord - 一个构建于NHibernate之上的ORM。它无需创建XML映射,并简化了NHibernate的一些复杂基础功能。虽然基于基类的使用是标准的方式,但这不是必要的,你可以以不同的模式来使用ActiveRecord,如Repository。Castle MonoRail - 一个构建于ASP.NET(不要和ASP.NET中的WebForms混淆)之上的Web框架。它以控制器作为Web应用程序中的主要角色,决定流程,委托到其他层并选取视图来呈现,因此它只关心应用程序的流程逻辑。视图,另一方面也只关注表现逻辑。这是和标准的WebForms模式最大的不同之处。对于那些来自其他平台下的Web框架的人们,这是标准的选择,可以让你完全的控制HTML的生成,而WebForms和它的控件是无法做到的。有一些不是顶级的但依然很重要的项目,如DynamicProxy(它允许代理接口和类,被用于好几个开源项目中,如NHibernate和Rhino.Mocks)。NVelocity也是我们为Sourceforge上已关闭的NVelocity提供的一个分支。我们修正了几个错误、添加了一些有意思的特性并进行了优化。
Castle MonoRail提供了几个不同的视图引擎用于开发呈现到浏览器的视图。NVelocity和Brail随着Castle发布包一起提供,尽管这样,还有一些来自于社区的视图引擎实现,名为AspView的项目和一个基于StringTemplate的项目。
从这些视图引擎的差异得出的一个事实就是,他们不具有像WebForms那样复杂的页面生命周期。我们也不会试图重新创造一个有状态的不够清晰的Web模型。坚信Web开发是简单的,我们也受益于简单的方式。通过使用模型(Models)和控制器(Controllers )处理数据/状态和流程/应用逻辑,我们就可以依靠视图来作为简单显示内容的角色,由此我们不需要任何复杂的语法,使用if和foreach足够了。但是,内容也能被重用,只须把视图分割到不同的文件中或创建视图组件(ViewComponents)来作为相关逻辑的视图被显示。
ActiveRecord和Windsor有了一些加强和错误修正。MonoRail被极大的改善,添加了缓存支持和JS生成。缓存能在控制器级别配置,最终是利用了ASP.NET的缓存基础功能。JS生成是一种生成可以改变页面的JavaScript代码的方式。通常被用于AJAX中,可以想象一下,你有一个显示了某些内容的页面,用户点击了一个按钮改变了一些东西的状态。这个动作能使用JS生成功能生成JavaScript来更新页面中的元素。
Castle首先以控制反转(IoC)容器开始的,我大概记得好像在2003年到2004之间。Castle ActiveRecord和MonoRail是在我接触了Rails(2004年,Rails那时还非常年轻)之后才开始的。那时我决定用它(Ruby on Rails)构建一个产品,可当时除了头痛的非标准需求外一无所有。
另外一方面而言,.NET具有很好且文档齐备的函数库,很多像样的项目在各处都冒了出来。虽然我喜欢Rails,但.NET不只是框架和平台,我会把它用于我参与的各类项目当中。而MonoRail开始于Ruby on Rails ActionPack的移植,是从以前来自用户的贡献和想法中分支出来。今天它拥有自己的特征,虽然它的基础和RoR类似,但我们支持的东西RoR不支持,反之亦然。
覆盖企业项目(开发)的所有方面是终极的目标。同时我们会平衡那些提供出来的产品具有一定的预见性,能让你轻松的工作并给你一定生产力的提高。这和提供某些复杂的编辑器或代码生成器工具有所不同,没有了他们你就无法工作。这也就是我们的工作为什么和微软的方式如此的不同。
- 不需要扩展ARBase就能支持多数据集
- 使用新的Castle Validation实现重构验证支持
- InPlaceConfigurationSource.Build()
- 添加HqlNamedQuery
- 大量的错误修正
- RC3第一次包含DynamicProxy 2(其支持泛型)
- 比版本1快很多
- 支持泛型集合
- 转而使用DynamicProxy 2
- 添加一些小功能到IKernel和IWindsorContainer的add/resolve方法中
- 子容器支持得以提升,但是依旧需要一些检查——你可能会在编译的时候得到警告
- 添加了一个很简单的计算(Eval)支持,你能进行配置
- DefaultKernel 和 WindsorContainer现在都实现了IServiceProvider
- 添加了缓存(Cache)支持(查看新的Cache属性)
- 添加IsPost/IsGet/IsPut/IsHead到Controller
- 添加自动窗体验证(Auto Form Validation)
- FormHelper接近完美,依然缺乏多条选择的支持
- 支持一次注册多个视图引擎(可以和混合视图引擎说拜拜了)——但是还不够好,在内部还有很多不协调的情况
- 添加了少量视图组件
- 添加测试控制器、视图组件、向导的支持,而无须使用ASP.NET
- 添加了JS生成器支持,及UpdatePage/UpdatePageTag视图组件
- Format支持set操作,例如$Form.Select(”price”, [1..100], “”)是用货币格式来显示选择的元素
- 添加PaginationHelper.CreateCustomPage,其是处理分页最优化的方式
- 添加DiggStylePagination视图组件,基于Alex Henderson运作
- 添加了如下成员到SmartDispatcherController(和验证有关):ValidationSummaryPerInstance : IDictionary、GetErrorSummary(对象实例) : ErrorSummary、HasValidationError(对象实例) : bool
- 添加ViewComponentDetails属性(就像ControllerDetails)
- 添加ViewComponentParam属性,它可以告知MonoRail把参数作为属性绑定到你的视图组件上——减少了重复的代码规则
- 添加UrlHelper/UrlBuilder概念
- 已经发布
- 添加Castle.Validator
- 添加Castle.DictionaryAdapter——对这个特性还有点拿不准
- 加强了Binder(这是它的实现的另外一种重写代码)
- 创建了using.castleproject.org
- 创建了api.castleproject.org
- 在Castle.Services.Transaction和微软System.Transactions之间进行了初步集成
- 创建了Castle.Core命名空间
专访.NET平台上类RoR开源项目Castle[转载]相关推荐
- 我发起了一个 用 物理服务器 和 .Net 平台 构建云平台 的 .Net 开源项目
大家好 , 我发起了一个 用 物理服务器 和 .Net 平台 构建云平台 的 .Net 开源项目 . 对 , 用 物理服务器 和 .Net 平台 构建 云平台 . 通过 .Net 构建 分布式 计算集 ...
- ImageSharp一个专注于NetCore平台图像处理的开源项目
今天大家分享的是一个专注于NetCore平台图像处理的开源项目,老实说为这篇文章取名字想了5分钟,可能是词穷亦或是想更好的表达出这款开源项目的作用:这个项目在图像处理方面有很多功能,如:缩放,裁剪,绘 ...
- 阿里云机器学习平台PAI+AI开源项目测评来啦
一.背景介绍 阿里AI(阿里灵杰)依托阿里领先的云基础设施.大数据和AI工程能力.场景算法技术和多年行业实践,一站式地为企业和开发者提供云原生的AI能力体系.帮助提升AI应用开发效率,促进AI在产业中 ...
- GitHub上优秀的开源项目(转载)
GitHub上优秀的开源项目(转载) 转载出处:https://github.com/Trinea/android-open-project 第一部分 个性化控件(View) 主要介绍那些不错个性化的 ...
- 老板心血来潮要自己搞低代码平台?这个开源项目试一试!
大家好,我是TJ 一个励志推荐10000款开源项目与工具的程序员 平日里大家编码的时候肯定想着如何能提高自己的工作效率,那么一种方法肯定是提高自身的编码水平,但是同时工欲善其事必先利其器,如果有一款好 ...
- J2EE学习中一些值得研究的开源项目(转载天极网)
J2EE学习中一些值得研究的开源项目 这篇文章写在我研究J2SE.J2EE近三年后.前3年我研究了J2SE的Swing.Applet.Net.RMI.Collections.IO.JNI--研究了J2 ...
- 从0开始学习 GitHub 系列之「08.如何发现优秀的开源项目」----转载自stormzhang 原创文章
之前发过一系列有关 GitHub 的文章,有同学问了,GitHub 我大概了解了,Git 也差不多会使用了,但是 还是搞不清 GitHub 如何帮助我的工作,怎么提升我的工作效率? 问到点子上了,Gi ...
- NET开源项目链接(转载)
NET开源项目链接 项目 网址 简介 Rainbow http://www.rainbowportal.net/ http://sourceforge.net/projects/rainbowport ...
- 如何学习开源项目(转载)
作者资料:章宇于2002年及2007年分别于清华大学电子工程系获得学士及博士学位,其后一直从事计算机系统领域的研究与开发工作,目前供职于华为技术有限公司云操作系统部门,从事OpenStack相关工作. ...
最新文章
- LeetCode实战:字符串转换整数 (atoi)
- spring mvc mysql配置_spring mvc配置数据库连接
- (转载)JavaScript一些实用技巧(http://it.chinawin.net/softwaredev/article-261f.html)
- discuz!x2.5登录管理面板
- 嵌入式数据库 HSQLDB
- 第十一节(单例模式初步、类的继承)
- Babel 陷财务困境,负责人13万年薪遭质疑,Vue.js作者尤雨溪发文力挺
- 汉字书写解码_汉字密码 | 500个字根即可解码10万个汉字,《说文解字》的神功...
- 增长黑客手册——03
- Google Chrome常用插件推荐
- java 自定义语言 解析_视频讲解 Java 语言基础编程题(自定义异常类,IO 流)
- oracle reco进程停止,oracle的后台进程能否杀掉
- Redisson封装及应用实例
- 如何在信息不完备下进行快速决策?
- 你对MySQL中的索引了解多少?
- 使用python求解特征值与特征向量
- 无限法则服务器错误代码,电脑打个无限法则没事儿重启,看系统管理器。提示如图错误代码,发现看不懂...
- 关于密码学中不可区分性的一些问题
- Array方法、String方法
- html标签生成的快捷键
热门文章
- GF(2^8)上的多项式乘法(Matlab实现)
- 8086CPU常见汇编指令、debug命令
- [转] ROS-I simple_message 源码分析:MessageManager
- 关于AppCompatDelegate的使用
- 5.6 Column Attribute
- 基于weblogic 的EJB 学习笔记-JSP教程,资料/其它
- 中国古代天文星象学的入门书:《步天歌》
- JSON javascript 使用
- C# 使用Epplus导出数据到Excel
- dax 计算某一列重复出现次数