我可以使用什么体系结构和模式来在 WPF 和 ASP.NET MVC 应用程序之间共享最多的模型和逻辑代码?
我试图在这里取得更多的成就,而不仅仅是将我的数据实体与两个演示项目分开。还有很多共同点,例如关于在什么条件下显示什么、什么时候需要什么等的 UI 逻辑,我想保留在共享代码中。
添加:我才刚刚开始真正喜欢 View 模型的概念,而 View 模型独立于驱动我的演示文稿的实体模型。虽然其中使用的一些注释位于特定于 MVC 的程序集中,但所提供的元数据实际上都不是特定于 Web 的。我非常想探索使用我的 MVC View 模型作为绑定(bind)到 WPF View 的数据源。在这方面的任何建议将不胜感激。
最佳答案
我个人最喜欢的配置类似于 Adam King 上面建议的配置,但我喜欢将逻辑 DLL 作为 Web 项目的一部分。我运行一个名为 CT Terminal 的项目遵循这种模式。我的 Terminal.Domain 项目包含所有应用程序逻辑,并简单地返回一个 CommandResult
对象,该对象具有充当指令的属性,告诉 UI 项目要做什么。 UI 是完全愚蠢的,只处理域项目告诉它的内容。
现在,按照 Adam King 的方法,我会将该域 DLL 放入 WPF 应用程序中,然后按照我返回的 CommandResult
对象中的说明对 UI 进行编码。但是,我更喜欢不同的方法。我编写了 MVC 3 UI 来公开 JSON API。任何应用程序都可以使用此 API。 JSON API 很简单,因为它基本上是我的 Terminal.Domain 项目 CommandResult
对象的包装器。返回的 JSON 将具有相同的基本属性。通过这种方式,我将编写 WPF 应用程序来使用此 API 而不是 DLL。现在,如果我对内部应用程序逻辑进行微小的更改,我只需将 Web 项目部署到实时服务器。所有使用 API 的客户端都会自动获得这个新逻辑。
显然,如果所做的更改会影响从 API 返回的属性,则需要发布新的客户端代码,但至少对于内部逻辑而言,您不必这样做。
关于c# - 如何在 WPF 和 ASP.NET MVC 应用程序之间共享最多的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9725438/