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

Pro*_*ofK 15 .net c# wpf asp.net-mvc

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

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

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

Che*_*hev 6

我个人最喜欢的配置类似于上面提到的Adam King,但我喜欢将逻辑DLL作为Web项目的一部分.我运行一个名为CT Terminal的项目,遵循这种模式.我的Terminal.Domain项目包含所有应用程序逻辑,并简单地返回一个CommandResult对象,该对象具有作为指令的对象,以告知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返回的属性,则需要释放新的客户端代码,但至少对于内部逻辑,您不必这样做.