0

对于我学习中的 .NET 项目,我需要编写一个企业应用程序,它首先是一个桌面应用程序(WPF 和 Windows 窗体都可供我们使用),然后将被扩展并用作一个 Web 应用程序(最好是 ASP .NET )。我想使用 MVC 设计模式,这样我就可以在这样做时只更改 UI,但这似乎有点困难。我读了很多,发现 WPF 中的 MVC 的想法是由 MVVM 实现的,但我读到将它迁移到 ASP .NET MVC 并不是很容易,这就是我想在我的第二部分中使用的项目。我将不胜感激有关此的任何提示,因为我不想从头开始重写整个应用程序...

对于数据处理,我想使用实体框架。我找到了一些关于如何将其与 ASP .NET MVC 结合使用的不错的教程,并且我可能会发现很多与 WPF 或 Windows 窗体以及一些 MVC 实现一起使用的教程。问题是,那应该是什么?什么会使我最容易迁移到 ASP .NET MVC?

4

1 回答 1

5

你的问题很广泛,但我会尽量给你一些指导。在处理企业应用程序时,您通常有多个层。通常,您可以将应用程序分成越多的层越好。通常,您至少会有一个数据层、一个业务逻辑层和一个 UI 层。一个适当架构的应用程序将允许多个不同的 UI 层(WPF、Silverlight、ASP.Net MVC 等)都与业务逻辑层通信,然后业务逻辑层将与您的数据层通信。如果您决定将存储从一种介质更改为另一种介质,例如从 SQL 更改为 MongoDB,则这些更改将发生在数据层上,对业务逻辑几乎没有影响,对业务逻辑完全没有影响。用户界面。在过去,

因此,在您的设计的基本应用程序中,您可能有 5 个项目:

  1. 数据项目,包含实体框架和相关数据库实体,公开 CRUD 操作以供 WebAPI 项目使用。
  2. WebAPI 项目,包含 RESTful API,用于对 UI 项目使用的数据进行通用访问。这些方法在调用数据项目中的 CRUD 操作之前执行业务验证、错误检查等。
  3. WPF 项目,提供桌面 UI 和桌面特定功能。
  4. ASP.Net MVC 项目,提供 Web 访问和 Web 特定功能。
  5. 单元测试项目,用于功能验证一个项目中的更改不会导致另一个项目中的功能中断。

其他项目可能会散布在其中,例如纯 JavaScript 项目或用于实时通知的 SignalR 项目。

编辑

对于非常小的项目,无论是 MVC 还是 MVVM 模式都只是这个概念的扩展,归结为适合单个项目。

MVC 是一个 Web 框架,你有一个模型(数据层)、一个视图(UI 层)和一个控制器(业务层)。MVVM 是一个模型、视图和视图模型。这种差异主要是因为在 Web 上,Page 导航由位于服务器端的 Controller 处理,而在 WPF 应用程序中,Page 导航更可能在 View 中处理。即使在最小的项目中,您也需要在 Web 项目和 WPF/Webforms 应用程序之间重新创建 UI,并且 Controller / ViewModel 也是特定于平台的,但完全没有理由不能重用模型层。确实,桌面项目和 Web 项目之间没有足够的相似性来进行大量重用,

于 2013-10-22T19:04:08.350 回答