【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

专访.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:581727
用户头像

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

关注

评论

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

上网冲浪总是慢?试试华为云CDN,高效加速真体验!

路过的憨憨

架构实战训练营模块 3 作业

atcgnu

Kafka生产者客户端几种异常Case详解

石臻臻的杂货铺

kafka Kafka实战 10月月更

node版本管理器:nvm 和 n区别

乌龟哥哥

10月月更

阶段三作业

Johnny

#架构实战营

使用NeuVector开展云原生安全测试

QE_LAB

云原生 安全测试

“程”风破浪的开发者|学习力是这个时代的终极竞争力

石云升

学习方法 知行合一 10月月更 “程”风破浪的开发者

ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?

程序员欣宸

Java Docker 10月月更

Laravel-EloquentORM高级部分解析

乌龟哥哥

10月月更

Impala基本架构

穿过生命散发芬芳

impala 10月月更

华为云CDN为什么能够打通数据传输阻碍?

路过的憨憨

华为

网络畅通的“无名英雄”:华为云CDN,让数据传输又快又稳

路过的憨憨

华为

String源码分析(一)

知识浅谈

10月月更

面试官:聊聊长连接下的负载均衡

小小怪下士

Java 负载均衡 程序员 TCP

架构实战营 - 学生管理系统架构设计

π

#架构实战营

模块三作业-外包学生管理系统架构设计

Diana S

架构训练营

如何快速解决恶意进程导致CPU飙升问题 | Linux | 运维

Appleex

Linux centos 运维 cpu 服务器

OverOps在根本原因分析中重要性

阿泽🧸

10月月更 OverOps

【web 开发基础】PHP 的流程控制之多向条件分支结构 -PHP 快速入门 (14)

迷彩

10月月更 PHP基础 if条件分支 多条件分支

“程”风破浪的开发者|Web3.0去中心化预言机网络技术剖析

小明Java问道之路

架构 预言机 Web3.0 10月月更 “程”风破浪的开发者

揭开epoll面纱:Nginx,Redis等都在用的多路复用,到底是什么?

董哥的黑板报

源码 高并发 多路复用 C语言 网络

技术同学如何面对裁员浪潮?

老张

职场发展 求职面试

线性表数据结构和使用数组实现顺序表

石柒

10月月更

【web 开发基础】PHP 的流程控制之嵌套(巢状)条件分支结构 -PHP 快速入门 (15)

迷彩

嵌套条件表达式 10月月更 web开发基础 PHP基础

高效IO之零拷贝技术

乌龟哥哥

10月月更

一文带你了解 Python 中的继承知识点

宇宙之一粟

Python 面向对象 继承 10月月更

“程”风破浪的开发者|数据包分析思路方法分享

穿过生命散发芬芳

学习方法 数据包分析 10月月更 “程”风破浪的开发者

数据湖(十二):Spark3.1.2与Iceberg0.12.1整合

Lansonli

数据湖 10月月更

速度快、时延低、更安全,华为云CDN助力企业创新发展!

路过的憨憨

华为

“程”风破浪的开发者|OpenHarmony 开发环境搭建

鸿蒙之旅

OpenHarmony 10月月更 “程”风破浪的开发者

3分钟快速了解什么是千兆以太网?

wljslmz

网络技术 以太网 10月月更 千兆以太网

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