tom*_*omo 0 wpf model-view-controller asp.net-mvc winforms
对于我学习中的 .NET 项目,我需要编写一个企业应用程序,该应用程序首先是一个桌面应用程序(WPF 和 Windows 窗体都可供我们使用),然后将扩展并用作 Web 应用程序(最好是 ASP .NET) )。我想使用 MVC 设计模式,这样我就可以在执行此操作时仅更改 UI,但这似乎有点困难。我读了很多书,发现 WPF 中的 MVC 思想是通过 MVVM 实现的,但我读到将其迁移到 ASP .NET MVC 并不容易,这就是我想在我的第二部分中使用的内容。项目。我将非常感谢任何有关此的提示,因为我不想从头开始重写整个应用程序......
对于数据处理,我想使用实体框架。我发现了一些关于如何将其与 ASP .NET MVC 结合的很好的教程,并且我可能会发现很多与 WPF 或 Windows 窗体以及一些 MVC 实现一起使用的教程。问题是,那应该是什么?对我来说,迁移到 ASP .NET MVC 最容易的是什么?
你的问题很广泛,但我会尽力给你一些指导。在处理企业应用程序时,通常有多个层。一般来说,您可以将应用程序分成的层越多越好。通常,您至少会有一个数据层、一个业务逻辑层和一个 UI 层。正确架构的应用程序将允许多个不同的 UI 层(WPF、Silverlight、ASP.Net MVC 等)与业务逻辑层进行通信,而业务逻辑层又会与数据层进行通信。如果您决定将存储从一种介质更改为另一种介质,例如从 SQL 更改为 MongoDB,那么这些更改将发生在数据层上,并且对业务逻辑几乎没有影响,并且对业务逻辑完全没有影响。用户界面。过去,WCF 因构建中间层而流行,但最近,ASP.Net WebAPI 由于其 RESTful 性质而变得流行。
因此,在您的设计的基本应用程序中,您可能有 5 个项目:
其他项目可能散布在其中,例如纯 JavaScript 项目或用于实时通知的 SignalR 项目。
编辑
对于非常小的项目,MVC 或 MVVM 模式都只是这个概念的扩展,归结为适合单个项目。
MVC 是 Web 框架,其中有模型(数据层)、视图(UI 层)和控制器(业务层)。MVVM 是模型、视图和视图模型。这种差异主要与以下事实有关:在 Web 上,页面导航由位于服务器端的控制器处理,而在 WPF 应用程序中,页面导航更有可能在视图中处理。即使在最小的项目中,您也需要在 Web 项目和 WPF/Webforms 应用程序之间重新创建 UI,并且 Controller / ViewModel 也是特定于平台的,但您没有理由不能重用模型层。事实上,桌面项目和 Web 项目之间没有足够的相似之处来进行重要的重用,这就是为什么分段和添加 WebAPI 项目可以最大限度地减少每个平台的重新实现量。