在C#应用程序与Windows和Web UI之间共享表示逻辑

时间:2010-06-29 18:26:41

标签: c# windows model-view-controller mvvm

我需要在C#中构建一个具有多个UI的应用程序,2个用于Web,一个用于相同的应用程序,但能够在没有Internet访问的情况下使用。我倾向于MVC for web,然后MVVM / WPF for windows应用程序(Silverlight不是一个选项)。我应该能够为这两种范例注入不同的存储库实现,从而解决了与互联网脱节的问题。

我想知道的是如何最好地重用尽可能多的表示逻辑。理想情况下,我希望能够使用相同的控制器/演示者类型实体来运行这两个UI。我正在寻找一个很好的解决这个问题的例子。我没有看到重新使用MVC控制器的明确路径(他们似乎过于严格地绑定了MVC框架),但同时我对实现自定义MVVM或MVP模式所涉及的开销并不感到兴奋。对于网络(我担心的答案)。

或者,我是否疯狂甚至尝试重用这些组件?这不值得麻烦吗?我们可以轻松地共享支持UI的服务,但是编写类似的UI代码两次似乎很遗憾。

3 个答案:

答案 0 :(得分:1)

正确的做法是仅共享业务层数据库访问层。至少你会在所有客户之间保持一致。

然后利用每个平台的优势构建客户端(桌面应用程序的丰富性和Web应用程序的简单性)

当然这一切都取决于预算。

答案 1 :(得分:0)

您可以选择使用WPF进行最大程度的重复使用。 WPF可以部署为部分信任XBAP。

但也有缺点 *下载大小可能是个问题 *客户端需要正确的框架版本,并且只能在Internet Explorer中运行(Firefox通过插件(不适用于Windows 7))

我在使用小型XBAP客户端和更大的独立应用程序的解决方案上尝试过它 - 它实际上是一些无法重用的细节(应用程序中的窗口,XBAP中的页面等)。这也是一致的布局。

答案 2 :(得分:0)

这有点hackish(并不是真的推荐,除非你真的明白你在做什么:)),但你可以尝试创建一个嵌入浏览器的桌面应用程序。这使您可以重用GUI。您还需要打包Web服务器,但如果您使用的是C#/ MVC / .NET,则可能会出现问题。