2

创建直接与服务层通信(执行 CRUD 操作、验证等)的“黑盒”用户控件是否被认为是糟糕的设计?

通过“黑匣子”,我的意思是他们独立于托管的页面检索/保留数据(使用 IoC 注入服务)。每个 UC 都可以放在一个页面上,它就可以工作。请注意,任何这些 UC 中都没有嵌入任何业务逻辑(这些都在域层中)。

这种方法是由两个因素驱动的:

  1. 我们的应用程序有许多页面,它们本质上是同一视图上的变体(布局略有不同)。
  2. 此外,我们的 UI 设计师喜欢允许打开页面的离散部分进行编辑。单击 此处以尝试说明此概念。

    无论如何,感觉就像赋予 UC 渲染和持久化自身的能力/责任将消除相当多的代码重复。

如果这种方法确实被认为是“讨厌的”,请随意建议一种更吸引人的替代方法(也许是 MVP?)在可预见的未来我会坚持使用 WebForms。

谢谢!

4

2 回答 2

2

假设您以这种方式为每个控件正确实现了 MVP 模式,这是完全可以接受的 IMO。

就我个人而言,我解决此类问题的方式是允许我的 MVP 模式拥有可以访问许多视图的混合视图演示者(想想IListViewIEditView),但是如果它们是真正的用户控件,这样做会更有问题,因为它们有一半存在于页面开始。如果它们是带有自己标签的用户控件,您可以按照您在问题中询问的方式实现它,或者您需要公开所有可能的事件以在您的页面上实现代码。

于 2010-03-01T20:08:44.143 回答
1

不,这实际上是如何做一个好的 SOA,你有水平耦合相对紧密的“堆栈”,与其他功能“堆栈”松散耦合。堆栈从 UI 一直绑定到持久层。想想亚马逊和 EBay 是如何拥有页面的,每个页面都是一个复合 UI,UI 的每个部分都独立于其他部分,但在每个部分中,层是相互依赖的。

于 2010-03-01T20:30:16.553 回答