如何在 WPF 和 ASP.NET MVC 应用程序之间共享最多的代码

本文关键字:共享 之间 代码 应用程序 MVC WPF NET ASP | 更新日期: 2023-09-27 18:27:52

可以使用哪些体系结构和模式在 WPF 和 ASP.NET MVC 应用程序之间共享最多的模型和逻辑代码?

我试图在这里实现更多目标,而不仅仅是将数据实体与两个演示项目分开。还有很多共同点,例如 UI 逻辑关于在什么条件下显示什么、何时需要某些东西等,我想保留在共享代码中。

补充:我刚刚开始真正喜欢独立于我的实体模型驱动我的演示文稿的视图模型的概念。虽然其中使用的某些批注位于特定于 MVC 的程序集中,但所提供的元数据实际上都不是特定于 Web 的。我非常想探索使用我的 MVC 视图模型作为绑定到 WPF 视图的数据源。在这方面的任何建议将不胜感激。

如何在 WPF 和 ASP.NET MVC 应用程序之间共享最多的代码

我个人最喜欢的配置类似于上面建议的Adam King,但我喜欢将逻辑DLL保留为Web项目的一部分。我运行一个名为CT终端的项目,它遵循这种模式。My Terminal.Domain 项目包含所有应用程序逻辑,并且只返回一个 CommandResult 对象,该对象具有充当指示 UI 项目要执行的操作的指令的属性。UI 是完全愚蠢的,只处理域项目告诉它的内容。

现在,按照 Adam King 的方法,我将把该域 DLL 放入 WPF 应用中,然后编写 UI 代码以按照返回的 CommandResult 对象中的说明进行操作。但是,我更喜欢不同的方法。我编写了MVC 3 UI来公开JSON API。任何应用程序都可以使用此 API。JSON API很简单,因为它基本上是我的Terminal.Domain项目CommandResult对象的包装器。返回的 JSON 将具有相同的基本属性。通过这种方式,我将编写 WPF 应用来使用此 API 而不是 DLL。现在,如果我对内部应用程序逻辑进行微小的更改,我只需将 Web 项目部署到实时服务器。所有使用该 API 的客户端都会自动获取此新逻辑。

显然,如果所做的更改影响从 API 返回的属性,那么这将需要发布新的客户端代码,但至少对于内部逻辑,您不必这样做。

最广泛使用的模式之一似乎是将实体放在单独的 DLL 程序集中,然后从其他每个项目中引用它。

MVC 3 非常适合存储库模式,它可以是首先采用的干净路线,并且适用于 WPF 和 ASP.net

实际上,

我发现Rocky Lhotka关于这个主题的书籍,软件和视频非常有帮助。以下是他内容的一些链接:

http://www.lhotka.net/

http://channel9.msdn.com/Events/Speakers/Rockford-Lhotka

http://www.amazon.com/Expert-C-2008-Business-Objects/dp/1430210192/ref=sr_1_2?s=books&ie=UTF8&qid=1331834548&sr=1-2

通过指定具有表示需要执行的所有操作的方法的接口,为应用程序创建服务层。此外,在此服务层中,定义应用程序使用的所有数据类型。这些数据类型类应仅包含属性,而不包含操作。将这些接口和类单独放在程序集中。此程序集应在 Web 应用、WPF 应用和实现它的代码之间共享。

最后,一旦有了这种分离,您就可以自由开发应用程序的内部结构,并将 UI 操作的责任(例如,单击 xyz 按钮时会发生什么(留给相应的 UI。

另外,您可以通过 WCF 和 Web 服务公开服务层。您可以使用它通过javascript从Web浏览器进行调用。您可以执行客户端验证之类的操作,甚至可以动态查找下拉填充的值。同时在两个应用程序之间重用它。

从显而易见的开始。将业务逻辑和域模型封装在单独的程序集中。

就表示层和共享UI行为而言,最接近的是MVVM设计范式,实现将是WPF/XAML中的C#,并且Javascript适用于 ASP.NET MVC Web前端。

对于Web前端,你可以接近WPF(MVVM(做事的方式,http://knockoutjs.com/由Microsoft的Steve Sanderson编写。它的浏览器 MVVM。另请查看 http://www.asp.net/mvc/mvc4 以获取更多信息。

使用 Web

Api,让 WPF 和 Web 应用程序都使用 Web API 中的服务。做。

您是否尝试使用可移植类库。有了这个,您可以制作数据层并在MVC,WPF,Windows Phone,Silverlight ASP.Net 中使用它。