- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
2年前关闭。
Improve this question
我对 Robert Martin 的演讲很感兴趣 "Architecture: The Lost Years" .在其中,他讨论了 MVC 所基于的实体、边界、控制设计模式。我喜欢推迟架构决策的想法。他描述了在他自己的 wiki 应用程序 FitNesse 中推迟关于如何实现 DB 层的决定。我在自己的编码中有机地推迟了这样的决定,尽管没有先入为主的模块化设计带来了这一点。
我想从实际的角度更好地理解这个 EBC 架构(它似乎与 DCI 密切相关),以便我可以开始在一个小项目中使用。我想利用“推迟决定”和交换设计的各个方面(如 UI)的能力。
例如,Rails 使用了 EBC (MVC) 的一种形式,但它是如此严重,以至于人们无法轻易替代替代 UI,从而将 Rails 应用程序转换为控制台应用程序或桌面应用程序。对我来说,关于设计的有趣之处在于这种通过交换一个东西并插入另一个东西来转换应用程序的能力。 也就是说,我想知道设计一个架构的想法,这样人们就可以,从某种意义上说,换掉 UI或持久层。我觉得如果架构设计好,耦合度会低,这样的壮举就可以实现了。
我已订购 the book鲍勃在演讲中提到的伊瓦尔·雅各布森 (Ivar Jacobson)。我在网上搜索了很多,但我发现的所有示例都显示了简单的图表。我说代码。通过查看一些演示概念并展示如何通过使用边界类将一层(UI、DB)替换为其他一些实现的简单类,我会受益更多。
如果有人不能给我指出一个很好的资源来说明这一点,这会很难吗?也许我们可以使用许多软件书籍中使用的待机示例:视频租赁店(现在几乎是一个遗物)。请演示如何交换 UI 或 DB 层。让我感到困惑的一件事是观点。我无法从我看到的图表中分辨出 View 是边界类本身还是它们只是与它们通信。此外,Bob 提到 EBC 的初衷是我们有很多微 View 而不是单个宏 View (就像我们在典型的 MVC 中所做的那样);我很好奇这会是什么样子。 (我更喜欢 Ruby 或 JavaScript,但由于乞丐不能挑剔,任何例子都可以。)
谢谢你。
最佳答案
据我了解鲍勃叔叔使用“EBI”的视频( 实体 、 边界 和 交互者 你应该/完全脱离你的业务行为)框架/操作系统和服务。
因此,对于 Rails 应用程序,您的业务行为/状态完全不依赖于 Rails 框架,因此可以像使用 rspec 一样进行测试,而无需触发 Rails!
所以在业务方面你有 边界使用请求和响应模型与 Rails 端交互的类(非常简单的数据持有者,不与 Rails 的常用模型交换)。只有边界类与 交互互动者 实现(业务)用例/场景的类。只有 互动者 类与 交互实体封装业务状态的类。
在 Rails 一侧,您可以找到 Controller 与 交互的类边界类(使用请求模型)和向后 边界类与 交互主持人 (使用响应模型)。只有 演示者/ Controller 与 View 交互(在模型的帮助下(同样是简单的数据持有者)。请注意,在 Rails 领域 演示者 最有可能是 Controller 。
这让 AR 何去何从?那么AR只是提供持久化服务。与同级演示者/ Controller 级别你会发现服务为 提供服务的类边界类。因此,它们提供所有必要的服务,这些服务依赖于框架/操作系统/技术,如持久性、安全性、计时、通知等。
通过这种架构,您真的能够重用您的业务逻辑并完全取代 UI 或数据库技术。例如,移植到移动设备(iOS、Android、Windows)应该非常简单。
使用 Rails,您的 应用文件夹可能看起来像:
app/
controllers/ Only these interact with Boundary classes
models/ simple data-holders, no AR here! (see services)
views/
services/ AR-stuff
boundaries/ To be tested without Rails
models/ Request & Response
interactors/ use cases / scenarios, to be tested without Rails
entities/ "the real business model without technical dependencies"
EBI demands both sides to be decoupled & independent. It were as you are developing the EBI as a library with a defined API.
关于ruby-on-rails - 使用 EBC 的架构的实际示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8743937/
sanitize 是什么意思在 Rails 中是什么意思? 我正在阅读 CanCanCan 的文档.它说: When using strong_parameters or Rails 4+, you
在过去的几个月里,我感觉自己对 Ruby on Rails (RoR) 开发的了解达到了极限。我为大/小客户和 friend /爱好项目开发了大大小小的应用程序。我知道如何开发这些应用程序,但开始感觉
我昨天参加了一个关于扩展 Rails 的聚会,其中一个主题是 Hexagonal Rails。然而,我只做了一年的 Rails,对 MVC 结构非常满意(也许太舒服了),所以我不太了解适配器和消息队列
我使用多个 Rails 应用程序,一些在 Rails 3.2/Ruby 2.0 上,一些在 Rails 2.3/Ruby 1.8.7 上。 他们的共同点是,随着他们的成长和添加更多的依赖项/ gem
这个问题在这里已经有了答案: Using Rails-UJS in JS modules (Rails 6 with webpacker) (5 个答案) 关闭 3 年前。 我正在尝试使用 UJS
我正在开发一个当前使用 Rails 1.2 的 Rails 应用程序,所以我现在离最新的稳定版本(Rails 2.3)还有很长的路要走。 我应该如何进行迁移到更新版本的 Rails 的过程? 我应该一
尝试按照 Ryan Bates Backbone.js 教程构建抽奖应用程序,但我已经遇到了第一段代码的问题。在 application.js 的 init 函数中,他初始化了 Raffler 路由的
我正在使用 Rails 3.2 并且我有一个数据库表,我想在其中找到符合以下条件的所有行: a = true and b = true and ( 0 true, :b =>
我有一个用户类和一个联系人,其中联系人是用户的子类。这两个类都存储在用户表中。 我的联系人可能有也可能没有电子邮件地址,而我的用户需要一个电子邮件地址(我的用户模型定义中有 validates_pre
我正在编写一个教程,我在其中演示了一些 rails 命令。在我的机器上 rails和 script/rails两者都同样有效。有“首选”形式吗?两者中哪一个更普遍? 最佳答案 当您运行 rails 时
我正在寻找有关通过我的应用程序前进的最佳方式的建议,这是我首次开始集成Elasticsearch。我是一名初学者,但是热衷于深入研究,以便原谅任何明显的错误! 我遵循了http://www.sitep
我刚刚用 Rails new 启动了一个新的 Rails 应用程序,将默认数据库设置更改为 PostgresSQL。我用 bin/rails s 启动服务器,结果很奇怪 2016-04-21 05:0
我收到一个参数并希望它是这样的字符串: "abc,efg" 或者像这样的数组 ["abc","efg"] 在第一种情况下,我想将它转换成一个数组,什么是好的方法? 这是我的想法 if params[:
我刚刚用 Rails new 启动了一个新的 Rails 应用程序,将默认数据库设置更改为 PostgresSQL。我用 bin/rails s 启动服务器,结果很奇怪 2016-04-21 05:0
我收到一个参数并希望它是这样的字符串: "abc,efg" 或者像这样的数组 ["abc","efg"] 在第一种情况下,我想将它转换成一个数组,什么是好的方法? 这是我的想法 if params[:
我有 Rails 4,这是我的默认版本(我仍然希望它是)。但我不想在我的电脑上添加 rails 3.2。在以下命令中:gem install rails -v 3.2.16 我有这个警告: railt
您好,我想使用 Sheevaplug 构建一个“Rails Brick”来自 Marvell(操作系统是开箱即用的 Ubuntu,但您可以在其上安装其他发行版)。它将成为家庭服务器和静音、低成本(99
我需要能够从 Rails 控制台发送我的 Rails 应用程序的 Postgres 数据库中所有未接受的邀请。 (我有一个名为 Invitations 的表,其中包含一个名为 accepted 的 b
validate :cannot_modify_if_locked, on: :update def cannot_modify_if_locked if self.locked erro
我正在学习教程(学习 Rails 播客),需要更改以下路由语法,以便它与 Rails 3.0 兼容。谁能帮忙? map.view_page ':name', :controller => 'viewe
我是一名优秀的程序员,十分优秀!