【问题标题】:Where Does JQuery/Client-Side Programming Fit Into MVP and DDDJQuery/客户端编程在哪里适合 MVP 和 DDD
【发布时间】:2011-06-06 07:33:51
【问题描述】:

我现在正在从事一个相当大的项目,并正在尝试实施 MVP 架构。我开始遇到一个我认为 JQuery 或 Javascript 可能比服务器端代码更适合的实例。我正在寻找有关其他人如何在其企业应用程序中实现客户端编程的反馈。您如何构建客户端代码以及如何确定何时使用它?

【问题讨论】:

    标签: asp.net jquery architecture domain-driven-design mvp


    【解决方案1】:
    1. 可以让用户说“哇”的东西。例如 - 在用户刚刚输入 3-4 个字符的搜索词时填充搜索结果。回到过去,想想当您单击“创建消息”时曾经回发到服务器的 Yahoo 或 Hotmail。但是当谷歌来的时候,他们只是在客户端做而不去服务器。我敢打赌你会对此说“哇”。至少我做到了。
    2. 可以减少服务器负载的事情。例如 - 在 HTML 表格中添加额外的数据输入行,而不是通过往返、增加/减少数量等来完成。

    这些只是一些示例。即使要正确地做这些事情,您也需​​要使用服务器,但这将在幕后使用 ajax。除此之外,您需要选择更多将在项目中使用的 jquery 插件。举个例子,jQuery UI、jQuery Validation、jQuery AnythingSlider 等等。它们太多了。

    Http://ClearTrip.com 是我羡慕他们的 UX 的一个网站。从移动设备访问他们的网站,您将获得有关他们的 UX 工作的更多线索。除了编码之外,您的团队中还需要有一个可以从事这些 UX 方面工作的人。

    【讨论】:

    • 感谢 Pradeep。我同意,cleartrip 非常漂亮!我正在寻找的更多的是一个如何在解决方案中构建他们的 javascript/客户端代码的示例。我正在开发一个基于 MVP 的应用程序,它将几乎所有的内容(视图)作为用户控件动态加载。我只是不确定我应该如何/在哪里构建或调用客户端代码。
    【解决方案2】:

    关于这如何融入 DDD:我最近刚刚开始了我的 DDD 之旅,但在那个圈子里听到了很多关于命令/查询分离的信息。当然,如果您正在做一些与您的域相关的事情(例如获取自动完成功能,或者如果您允许部分页面提交来完成域命令),您必须决定它如何到达那里以及域的结构如何处理它。

    我认为两个决定最相关。

    首先,完全在浏览器中的位,甚至那些专门在您的应用程序层中的位都在您的域之外,因此,尽管在 DDD 讨论的分层架构部分中有所涉及,但不要落在实体/值/事件/服务中,等讨论。但是,如果您使用 AJAX 与您的应用程序层进行交互,进而需要访问您的域,那么我需要再次考虑两件事。

    (a) 您是否只是在您的域中使用不同的方法来分离命令和查询?如果您对查询或命令的需求相对较小,并且这在您的域 API 中看起来不像“噪音”,那很好。否则,您将拥有一个单独的有界上下文......另一个域建模仅用于您的 UI 需要避免域混乱的查询。无论如何,您正在执行类似 JS->AJAX 处理程序中的应用程序层->域(包括域服务)。

    (b) 这是命令还是查询?一旦你 (a) 弄清楚了,这会让你知道访问将在哪里登陆......然后使用表示层的用例来详细说明域概念并将其放入你的通用语言中。

    其次,您有 DTO 与直接到域的决策。这可能是一个宗教战争聚集话题,但通常答案是“视情况而定”。我认为有使用 DTO 的案例和不使用 DTO 的案例(在同一架构内)......只需搜索围绕该主题的所有讨论,并仅在增加价值的地方应用该模式;我不会在这里尝试详细介绍。

    希望这能提供一些见解或至少是对话磁石,其他人会加入。

    【讨论】:

      【解决方案3】:

      我想这个问题有点太主观了。看来我只是要查看有关高级 javascript 的书籍并学习 JQuery 库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-16
        • 2012-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-26
        相关资源
        最近更新 更多