6

不久前,我读了一本关于Naked Objects的书,并对这些想法感到兴奋。只编写我的核心业务逻辑并自动生成 UI?给我报名!

此外,潜力还不止于此。这可能是域建模中的一个很好的工具。通过直接调用自己的对象的能力,鼓励直接使用自己的领域对象,从而可以发现...

  • 缺陷
  • 有用的交互模式(对于 UI 实现,尤其适用于认为 UI 基本上是“为领域对象编写脚本”的观点)
  • 新功能。

为此,我对任何类似于 Naked Objects 的系统都感兴趣。我做了一些跑腿工作,比如在“Direct Manipulation UI”之类的字符串下搜索命中,但没有发现任何有用的东西。

你知道类似的工作吗?我更喜欢 PHP 或 JavaScript 中的一些东西,并且不假设我正在运行 Linux 机器。我知道 NakedPHP 和 Spiro(找不到相关文档),但它们基本上都是 PHP 和 javascript 的 Naked Object 实现。

你知道其他系统吗?

4

2 回答 2

9

作为 Naked Objects 这本书的合著者,我想补充一下我的观点。

人们非常喜欢裸对象模式的概念,但不喜欢特定的 UI,这种情况并不少见。您没有说多久前您查看了实现,或者实际上是哪一个。两个主要的开源实现(还有一些其他的,但不太成熟)是:

  • 用于 .NET 平台的裸对象框架
  • Apache Isis,用于 Java 平台

这两者都有不止一个用户界面。但是,让我们假设您已经查看了所有默认 UI 并且对其中任何一个都不满意。首先,大多数在企业环境中使用任一框架的人最终都会对默认 UI 进行相当多的自定义,无论是仅使用 .css 还是使用额外的 JavaScript,但仍然保持动态创建的“通用”UI 的概念。

最近,Dan Haywood 和我通过引入Restful Objects规范——一个适用于任何富域模型的超纯 REST API,将裸对象模式的想法进一步推进。这两个裸对象实现现在也都实现了 Restful Objects 规范。关于这一点的要点是,使用 RO API 现在可以相对容易地设计与 RO 的服务器实现对话的新的、完全不同的 UI(通用的或完全定制的)。换句话说,创建自己的裸对象概念的客户端实现相对容易,重用两个主要的服务器端实现中的任何一个。

您提到的 Spiro 是我们第一次尝试使用 JavaScript(实际上是 TypeScript)和 Angular.js 创建一个构建块库来创建这样的 UI。使用 RO 规范的一个很酷的事情是,您可以针对任何服务器实现运行相同的客户端。我建议你好好看看它。

于 2015-02-25T09:18:11.843 回答
2

我发现了一些其他可能的关键术语,并找到了一些,尽管不是所有的都在 javascript 中。

这些似乎更适合...

Metawidget 尤其有趣。它支持javascript,并且易于使用。您可以只为它提供您的域模型(一个 JSON 对象),它可以为它生成一个 UI。此外,它不会接管您的页面,因此它可以存在于预先存在的 UI 中,并且允许 UI 自定义。

它们还包括与类似产品的比较页面。

另一个有趣的是BlueJ;它是一个基于(概念?)裸对象的教育平台,但可用于较小的项目。基本上,您可以通过上下文菜单以图形方式创建类的实例,然后您可以通过相同的方式检查和调用生成的对象方法(可能在该过程中创建更多对象)。

更进一步,为了寻找任何 UI 自动生成,有与数据库相关联的 CRUD 可视化器。

我仍在研究这些,尤其是对象的,并对其他建议持开放态度。

于 2015-02-25T16:26:28.840 回答