【问题标题】:wcf and knockout.js combinewcf 和 knockout.js 结合
【发布时间】:2011-12-24 20:11:32
【问题描述】:

我准备好了数据层和业务层。现在我想实现服务层。 我不想在 wcf ria 服务中实现这一层。有没有其他方法可以使用wcf以这种方式实现这一层,以便我使用js通过wcf获取我的模型。 例如,我有我的域“人”。 (在域项目中)。然后在我的“PersonRespository”中有 InsertPerson、GetPerson 等获取“Person”并将其存储在数据库中。

现在我想使用 asp.net mvc 来显示人员的详细信息。

所以接下来的两层将是表示层和服务层,并使用 knockout.js 在客户端操作数据,我被以下问题困住了。

  1. 我的展示层将在哪里。我正在使用 asp.net mvc 所以它应该在 mvc 应用程序的模型文件夹中,将相同的代码类(人)从域模型复制到模型文件夹是否明智。相同时的事件。

  2. 我将如何能够在 javascript 中获取“Person”模型类并能够将其从 javascript 更新到数据库。

我的架构风格是企业级的还是我遗漏了什么。

任何一点教程都会有所帮助。

如果您还有其他问题,请告诉我。

谢谢,

达尔吉特

【问题讨论】:

    标签: asp.net-mvc wcf architecture knockout.js


    【解决方案1】:

    问题一:

    不,您不应该重复您的代码。在 DRY (http://en.wikipedia.org/wiki/Don%27t_repeat_yourself) 的开发原则中有关于这个的讨论。

    问题2:

    建议您使用 json 序列化器序列化您的模型并将其发送到您的 UI。它将被更新等,然后发送回服务。 javascript 中的 Google MVVM 模式,看看这是如何完成的。 KnockoutJs 是实现你想要的一个很好的开始。最好查看在 knockoutjs 中完成的一些示例,看看发生了什么。在 MVVM for WPF 中也有许多示例,可能有助于在更高级别上理解该模式。我建议查看 codeproject.com 以获得深入的 MVVM 示例。

    就您的层而言,您有很多选择,但一般建议是:

    1) 演示必须通过 MVVM 绑定触发,即如果绑定更新,则 UI 将自行更新。
    2) asp.net 方面应该只在通过 ajax 向 UI 发送更新时更新模型。 (并非所有内容都需要通过 ajax 发送,我没有这么说。当它发送额外的 html 或 js 以放入页面时)。
    3) 你的模型应该真的来自 asp.net 到 html 页面。 (这将使以后的事情变得更容易,因为页面只会通过 asp.net 模型更新,并且您不会获得来自多个域的项目,这最终会很麻烦。
    4) 您的 asp.net 站点应该为您的 WCF 服务提供一个包装器,并且可以转发对 WCF 的调用。

    如果您不想用 asp.net 包装 WCF,并且需要您的 UI 直接通过 ajax 与 WCF 通信(应该是一个罕见的用例,例如使用小部件进行 igoogle 之类的页面,或者可能没有 asp.net 的移动开发。 net 交互,即完整的 js 应用程序)然后您可以研究 CORS 作为从 JS 到 WCF 和 JS 到 asp.net 的选项(这是一个很难的问题,易于编程,很难为 WCF 工作,因为有非常在我的情况下,非 IIS 托管的 WCF 的文档非常少)。有关信息,请参阅此页面:http://enable-cors.org/

    【讨论】:

    • 感谢回复,我正在考虑将域模型复制到 asp.net mvc 模型,因为 mvvm
    • 您的 MVVM 模型可能与您的数据访问层模型相似,但我认为它们最终会有所不同。视图模型最终将具有显示逻辑和交互,这些逻辑和交互最终将/应该与更纯粹的数据访问层模型不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    相关资源
    最近更新 更多