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

标签 c# .net asp.net-mvc wpf

我可以使用什么体系结构和模式来在 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/

相关文章:

c# - 对数据库更改执行 .NET 操作

c# - 图片路径绑定(bind)gridview时有特殊字符

c# - 使用线程池时如何判断线程何时完成?

c# - 为什么 VB.NET 中的实现属性必须具有匹配的 'ReadOnly' 说明符?

asp.net-mvc - 这是 ASP.NET MVC 2 Preview 1 的错误吗?解决方法是什么?

c# - 找不到windows服务(刚刚安装)

c# - 获取传递给方法的参数的名称

reactjs - 从 React Azure 静态 Web 应用程序向 .NET Azure Function 发出请求时,为什么会收到 'blocked by CORS policy' 错误?

c# - mvc c# 文件上传为字节数组

javascript - RenderBody 未渲染我的 View