你的问题很广泛,但我会尽量给你一些指导。在处理企业应用程序时,您通常有多个层。通常,您可以将应用程序分成越多的层越好。通常,您至少会有一个数据层、一个业务逻辑层和一个 UI 层。一个适当架构的应用程序将允许多个不同的 UI 层(WPF、Silverlight、ASP.Net MVC 等)都与业务逻辑层通信,然后业务逻辑层将与您的数据层通信。如果您决定将存储从一种介质更改为另一种介质,例如从 SQL 更改为 MongoDB,则这些更改将发生在数据层上,对业务逻辑几乎没有影响,对业务逻辑完全没有影响。用户界面。在过去,
因此,在您的设计的基本应用程序中,您可能有 5 个项目:
- 数据项目,包含实体框架和相关数据库实体,公开 CRUD 操作以供 WebAPI 项目使用。
- WebAPI 项目,包含 RESTful API,用于对 UI 项目使用的数据进行通用访问。这些方法在调用数据项目中的 CRUD 操作之前执行业务验证、错误检查等。
- WPF 项目,提供桌面 UI 和桌面特定功能。
- ASP.Net MVC 项目,提供 Web 访问和 Web 特定功能。
- 单元测试项目,用于功能验证一个项目中的更改不会导致另一个项目中的功能中断。
其他项目可能会散布在其中,例如纯 JavaScript 项目或用于实时通知的 SignalR 项目。
编辑
对于非常小的项目,无论是 MVC 还是 MVVM 模式都只是这个概念的扩展,归结为适合单个项目。
MVC 是一个 Web 框架,你有一个模型(数据层)、一个视图(UI 层)和一个控制器(业务层)。MVVM 是一个模型、视图和视图模型。这种差异主要是因为在 Web 上,Page 导航由位于服务器端的 Controller 处理,而在 WPF 应用程序中,Page 导航更可能在 View 中处理。即使在最小的项目中,您也需要在 Web 项目和 WPF/Webforms 应用程序之间重新创建 UI,并且 Controller / ViewModel 也是特定于平台的,但完全没有理由不能重用模型层。确实,桌面项目和 Web 项目之间没有足够的相似性来进行大量重用,