大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

专访.NET 平台上类 RoR 开源项目 Castle

  • 2007-09-19
  • 本文字数:2100 字

    阅读完需:约 7 分钟

Castle Project 是一个运行在.NET 之上的开源项目,提供了类似流行的 Ruby on Rails 的 MVC (Model-View-Controller) 框架。Castle Project 自从 2003 年就开始开发,并在 2006 年 11 月发布了 1.0 RC2 。在这个项目临近 1.0 RC3 版本发布之际,我们采访了项目的创始人 Hamilton Verissimo,谈到了 Castle Project 是什么及未来的走向。

Castle Project 应被任何在.NET 平台上使用新方法来创建 Web 应用程序,感兴趣或特别好奇于实现 MVC 的应用程序的开发人员予以关注。它试图通过提供一系列工具和框架来让.NET 世界的开发变得更令人愉快、开心和富有成效。它提供的这些方法创建出的应用程序更具有良好的层隔离,和良好的设计。

首先我们来看一下 Castle Project 到底是什么:

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)来作为相关逻辑的视图被显示。

关于自从 RC2 发布以来的改变:

ActiveRecord 和 Windsor 有了一些加强和错误修正。MonoRail 被极大的改善,添加了缓存支持和 JS 生成。缓存能在控制器级别配置,最终是利用了 ASP.NET 的缓存基础功能。JS 生成是一种生成可以改变页面的 JavaScript 代码的方式。通常被用于 AJAX 中,可以想象一下,你有一个显示了某些内容的页面,用户点击了一个按钮改变了一些东西的状态。这个动作能使用 JS 生成功能生成 JavaScript 来更新页面中的元素。

这个项目明显和 Ruby on Rails 有些类似,当问到 Castle Project 是否是因为 Ruby on Rails 的流行才启动的:

Castle 首先以控制反转(IoC)容器开始的,我大概记得好像在 2003 年到 2004 之间。Castle ActiveRecord 和 MonoRail 是在我接触了 Rails(2004 年,Rails 那时还非常年轻)之后才开始的。那时我决定用它(Ruby on Rails)构建一个产品,可当时除了头痛的非标准需求外一无所有。 另外一方面而言,.NET 具有很好且文档齐备的函数库,很多像样的项目在各处都冒了出来。虽然我喜欢 Rails,但.NET 不只是框架和平台,我会把它用于我参与的各类项目当中。

而 MonoRail 开始于 Ruby on Rails ActionPack 的移植,是从以前来自用户的贡献和想法中分支出来。今天它拥有自己的特征,虽然它的基础和 RoR 类似,但我们支持的东西 RoR 不支持,反之亦然。

但问到 Castle Project 的未来和 Hamilton 看到的趋势在那里:

覆盖企业项目(开发)的所有方面是终极的目标。同时我们会平衡那些提供出来的产品具有一定的预见性,能让你轻松的工作并给你一定生产力的提高。这和提供某些复杂的编辑器或代码生成器工具有所不同,没有了他们你就无法工作。这也就是我们的工作为什么和微软的方式如此的不同。

Castle Project 是一个开源的项目,欢迎各位开发人员参与进来。参与方式包括提交修正错误的补丁,或添加新特性,添加测试用例或文档。参与的第一步是订阅开发邮件列表,并开始参与到讨论之中。

更多的信息能在 Castle Project 网站或在 wiki 上找到。Hamilton 也维护着一个有大量信息的Blog。

查看英文原文: Catching up with the Castle Project

2007-09-19 20:582258
用户头像

发布了 254 篇内容, 共 70.1 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

模块化和DID能让UBI惠及所有人吗?

石头财经

烟草行业专卖人员画像与队伍考评系统上线运行

中烟创新

技术贴 | 如何基于 KWDB 快速实现工业物联网智能电表系统设计?

KaiwuDB

数据库·

云上玩转 Qwen3 系列之三:PAI-LangStudio x Hologres构建ChatBI数据分析Agent应用

阿里云大数据AI技术

大数据 数据分析 人工智能、 PAI LangStudio

具身智能的下一步:如何构建跨场景通用训练数据集?

数据堂

人工智能 数据 数据标注 AI‘’ 具身智能

集成学习常用组合策略:让多个模型“合作”得更好

量贩潮汐·WholesaleTide

集成学习

游戏行业DDoS攻击类型及防御分析

网络安全服务

CDN 服务器 带宽 API接口 DDoS 攻击

MiniMax 新语音模型登顶 TTS 全球榜单;AI 会议笔记 Granola 融资 6700 万美元,估值 2.5 亿丨日报

声网

产品经理用什么软件做竞品分析?AI生成产品报告攻略奉上!

职场工具箱

AI 产品经理 竞品分析 办公软件 AIGC

龙蜥开发者说:从技术向往到生态共建的机密计算之路 | 第 30 期

OpenAnolis小助手

开发者 操作系统 龙蜥社区 龙蜥社区开发者说

iVX BI 引擎数据驱动优化全解析

代码制造者

BI

中小学人工智能通识教育指南已发布,高校如何承接

ModelWhale

深度解析智能体:从概念到应用的全方位洞察

Techinsight

智能体评估

Web前端入门:JavaScript 的应用领域

电子尖叫食人鱼

JavaScript 前端 Web

英特尔携手壳牌打造浸没式液冷认证方案,助力数据中心迈向高效未来

E科讯

模块化和DID能让UBI惠及所有人吗?

加密眼界

【Java持久层技术演进全解析】从JDBC到MyBatis再到MyBatis-Plus

不在线第一只蜗牛

Java 数据库

多校加快推进教育数字化,全校6000+学生共上的人工智能通识课长啥样

ModelWhale

小度X新京报共同发声,该学会适老的应该是年轻人

科技大数据

探秘企业级智能体:脱颖而出的秘诀何在?

Techinsight

AI 智能体

一个让成员认可、管理者省心的程序员数据评估系统,应该是什么样子?

思码逸研发效能

研发效能 绩效管理 效能度量 效能管理 研发效能度量

模块化和DID能让UBI惠及所有人吗?

BlockChain先知

测吧高校软件测试实训系统

测试人

软件测试

模块化和DID能让UBI惠及所有人吗?

西柚子

联想,让AI计算发生“钟摆革命”

脑极体

AI

模块化和DID能让UBI惠及所有人吗?

股市老人

如何医治一条慢SQL?

量贩潮汐·WholesaleTide

sql

AI 技术发展简史

不在线第一只蜗牛

人工智能 AI

【AI】我没写一行 SQL,就让 AI 查出了销售报表

非晓为骁

人工智能 AI BI MCP

OASA 年度工作会议落幕:2025 目标规划全票通过,国际安全厂商 Tenable 正式加入

OpenAnolis小助手

操作系统 软件安全 供应链安全 龙蜥社区安全联盟 硬件安全

偶遇龙蜥,2025 OceanBase 开发者大会即将在广州举办

OpenAnolis小助手

数据库 AI 操作系统 龙蜥社区 OceanBase 开发者大会

专访.NET平台上类RoR开源项目Castle_.NET_Robert Bazinet_InfoQ精选文章