Castle ActiveRecored Beta4 的变化
[ 2006-09-11 20:43:26 | 作者: yuhen ]
Castle 的官方 Release 版本依然停留在 2006-1-1 发布的 Beta3,这个版本里面有很多设计不合理的地方。今天从其 Daily Builds 获取了最新的 Beta4 版本(2006-8-27 CASTLE-760-net-2.0-release.zip),发现变化非常大,泛型支持和继承关系总算正常了。
看来在 1.0 发布以前,结构变化可能还会发生,那些用 Beta3 开发项目的人恐怕有苦头吃了。
下面是我画的几个 Beta4 相关的 UML 图。
现在实现实体类应该更方便了,尤其是那几个泛型类,基本上我们再不用为实体类添加任何方法了。POJO?
ActiveRecordMediator<T> 总算继承自 ActiveRecordMediator 了,Beta3 里面 ActiveRecordMediator<T> 继承自 Object,而且还是个静态类,简直莫名其妙吗。
增加了新的 Query,尤其是 CountQuery 还是很必须的。
=== 查看完整大图 ===
不过也有不爽的地方,看看下面的代码片断。试想我们采用 IoC 模式载入多个 DataAccess Provider Assembly 时会有什么样的麻烦,我们不得不让 Main Assembly 引用 Castle.ActiveRecord.dll,然后调用 ActiveRecordStarter.Initialize() 来初始化所有载入程序集的 ActiveRecord Class。这似乎和 IoC 和 Provider 模型的本意有所背离吗。
评论Feed: http://www.rainsts.net/feed.asp?q=comment&id=324
看来在 1.0 发布以前,结构变化可能还会发生,那些用 Beta3 开发项目的人恐怕有苦头吃了。
下面是我画的几个 Beta4 相关的 UML 图。
现在实现实体类应该更方便了,尤其是那几个泛型类,基本上我们再不用为实体类添加任何方法了。POJO?
ActiveRecordMediator<T> 总算继承自 ActiveRecordMediator 了,Beta3 里面 ActiveRecordMediator<T> 继承自 Object,而且还是个静态类,简直莫名其妙吗。
增加了新的 Query,尤其是 CountQuery 还是很必须的。
=== 查看完整大图 ===
不过也有不爽的地方,看看下面的代码片断。试想我们采用 IoC 模式载入多个 DataAccess Provider Assembly 时会有什么样的麻烦,我们不得不让 Main Assembly 引用 Castle.ActiveRecord.dll,然后调用 ActiveRecordStarter.Initialize() 来初始化所有载入程序集的 ActiveRecord Class。这似乎和 IoC 和 Provider 模型的本意有所背离吗。
public static void Initialize(IConfigurationSource source, params Type[] types)
{
lock (ActiveRecordStarter.lockConfig)
{
if (ActiveRecordStarter.isInitialized)
{
throw new ActiveRecordInitializationException("You can't invoke ActiveRecordStarter.Initialize more than once");
}
// ........
}
}
[最后修改由 yuhen, 于 2006-09-12 15:44:49]
评论Feed: http://www.rainsts.net/feed.asp?q=comment&id=324
这篇日志没有评论。









