【IT168 技术文档】面向.NET的Naked Objects作为一个框架,提供了针对.NET框架下裸对象架构模式的 一种实现。裸对象背后隐藏的基本概念是在编写一个业务应用程序时,开发者只需要编写领域对象以及封装在领域对象中的业务逻辑。而该框架就会将领域对象以丰 富的面向对象样式的用户界面形式暴露给用户,同时还会处理这些对象的持久化与管理,这通常通过一个ORM实现。
对于那些提出领域驱动设计的人,这一模式可能正是投其所好。除了消除编写用户界面层和数据访问层的需求,裸对象模式还有助于良好的对象建模——因为你可以瞬间将一个原型领域模型转换为一个能够为业务用户评估的应用程序。
很多人听及此的第一反应就是它无法在大规模的复杂业务应用程序下工作。然而在爱尔兰政府的一个员工人数超过1000人的部门DSFA,使用的应用程序就是Naked Objects开发的,它能够支持每年价值数亿欧元的社会保障金管理。
历史
Naked Objects框架最初脱胎于Java平台。最早的版本是用Java 1.1编写的。在软件开发的历史长河中,一个最伟大的偶然事件是我们发现它能够未经修改就能够以J#语言运行在.NET平台上。然而,当Naked Objects的后期版本迁移到Java 1.5后,它与.NET的兼容性就消失了。让人大吃一惊的是在2007年1月,微软证实从.NET 3.5之后将不再支持J#。
为解决这一问题,面向.NET的Naked Objects就作为框架的完整重现应运而生。它使用C#进行编写,设计时完全利用了.NET平台的功能,包括泛型和LINQ。而面向.NET的Naked Objects创建的通用用户界面则使用WPF编写。
Naked Objects的工作原理
通用用户界面并不依赖于代码生成:它是动态创建的。在运行时,框架使用了反射技术将领域对象呈现在用户界面上。这一技术被称之为“内省”技术,它支 持开发人员快速地将域模型转换为可用的应用程序。下面的截图展示了一个对象的打开视图,该对象包含了几个关联对象的链接(每个图标表示一个域对象);用户 可以通过单击浏览这些关联对象:
(文中所有的截图和代码示例都节选自一个简单的费用处理程序,该程序是Naked Objects下载示例中的一部分。)