代码之家  ›  专栏  ›  技术社区  ›  JMarsch

MVVM、SOA和Ajax(噢,我的?)

  •  2
  • JMarsch  · 技术社区  · 14 年前

    我正在研究一个大型和非常复杂的系统的体系结构。我们v1.0的目标是构建一个具有现代N层架构的单一应用程序。我们可能会使用Silverlight构建UI,并且可能会使用MVVM模式。

    但是,在未来,我们希望提供一些应用程序逻辑作为服务(用于增值的ASPX应用程序、自定义扩展、支持iPhone/Windows Phone应用程序等)。(理想情况下,我们使用的任何UI技术都将利用与原始应用程序相同的服务器端逻辑)

    我一直在阅读有关将MVVM与WPF和Silverlight结合使用的文章。它看起来很棒,但看起来您的viewModel类是客户端的,并且是特定于平台的(例如,用.net/silverlight编写)。

    假设我将一个大型的Silverlight/MVVM应用程序构建为v1,然后使用v2,我希望将功能的一个子集公开为传统的ASPX网站。我必须用javascript重新编写所有的视图模型吗?在构建我的MVVM模式时,是否有一些指导,以便在服务器端代码中保留所有最重要的逻辑?

    4 回复  |  直到 14 年前
        1
  •  2
  •   Lex Lavnikov    14 年前

    我会说是的,你必须重写所有的视图模型。

    此外,对于普通的旧HTML版本,您可能会使用ASP.NET MVC,这是一种有点不同的方法。此外,HTML版本往往看起来不同,比RIA版本简单,所以您可能无论如何都需要不同的视图模型。

    对于本机iPhone版本,您可能可以重用相同的Web服务,Silverlight版本可以。但是,必须完全重写UI。

    通过WCF数据服务(OData)公开您的数据将使您在任何技术堆栈中访问数据更加容易(甚至比自定义REST更容易)。

        2
  •  1
  •   lightw8    14 年前

    不是对您的问题的完整答案,但是在客户端,您可能能够在spirit/structure中使用您的代码和knockout,一个用于javascript的MVVM库: http://knockoutjs.com/

        3
  •  1
  •   Kavet Kerek    14 年前

    我认为这取决于你如何写视图模型。如果它们只是具有属性的类,那么您应该能够将它们公开给ASP.NET MVC应用程序。但是,如果在视图模型中创建/使用Silverlight控件,那么它们当然需要重写。也许您可以以这样一种方式构建所有视图模型:它们具有ASP.NET MVC和Silverlight都可以使用的基本部分,然后具有特定的视图模型,该视图模型正在扩展基本部分并添加虚拟机的特定技术部分。您需要了解的另一件事是Silverlight具有Silverlight SP特定类文件。我不知道ASP.NET如何使用这些内容是否有限制,但是Do限制了.NET的哪些部分对您可用。

        4
  •  0
  •   Adrian K    14 年前

    我只是想知道你是否过于关注前端? 不是你的担心是“坏”或“错”,我只是认为你 可以 把马车放在马前面。

    首先,我要确保您的底层业务逻辑确实是合理的,然后继续讨论公开它们的服务/API。如果这个基础很好,那么构建下一个层就更容易了。

    在这个级别上,您可以得到的重用越多,在下一层的不同实现中复制/重写的次数就越少。