为了获取数据,我们的项目具有以下结构。
使用实体框架访问数据库
- 项目名称.DAL
调用实体框架的服务。(UoW)
- 项目名称.服务
我们在控制器中的操作调用服务并返回所需的数据。
- 项目名称.Web
问题:
我们的服务直接使用 Entity Framework 获取信息,创建 WebServices 以替换与 EF 的连接有哪些优点和缺点?“在这种情况下,只有 WebServices 可以访问实体框架,”
- 项目名称.DAL
- 项目名称.WebServices
- 项目名称.服务
- 项目名称.Web
为了获取数据,我们的项目具有以下结构。
使用实体框架访问数据库
调用实体框架的服务。(UoW)
我们在控制器中的操作调用服务并返回所需的数据。
问题:
我们的服务直接使用 Entity Framework 获取信息,创建 WebServices 以替换与 EF 的连接有哪些优点和缺点?“在这种情况下,只有 WebServices 可以访问实体框架,”
主要优点是您将拥有更加解耦的设计。
通过 Web 服务公开您的 DAL,您可以将其与前端“断开”。例如,移动应用程序、Web 应用程序和 WPF 桌面应用程序都可以通过相同的 Web 服务访问您的 DAL。因此,您可以在不同的应用程序中重复使用您的 DAL,这可以为您节省大量的开发时间。看看ServiceStack及其Web 服务的优势。
缺点?不得不做一些额外的开发工作和测试。如果您的应用程序很简单,并且不会在不同的环境中使用,那么使用 Web 服务可能会过大。
缺点:
与项目中的普通 CLR(又名 dll)层相比, Web 服务往往会从您的服务器消耗更多资源。无论您打算使用什么 Web 服务(旧版 Web 服务、服务堆栈、wcf、Web API 等),您都会发现它们都必须使用一个流程来序列化数据,并且您可能需要这种情况在您的前端应用程序中执行相反的过程。
您必须非常仔细地设计您的 ws,因为您必须考虑如何公开这些服务以及您必须实施的封装/抽象级别,Web 服务层中的糟糕设计肯定会令人头疼在开发和生产期间为您服务。
安全性:在大多数情况下,您还必须验证这些 Web 服务中的每个输入
优势 与优势非常相关,它更多地取决于您的应用程序要求,您需要回答的一些问题如下:
推荐 如果你打算做一个 CRUD 应用程序,我会推荐使用 REST,因为它的架构(POST、DELETE、GET、ETC),它绝对是最好的选择。
如果您现在不需要 Web 服务,您可以尝试开发您的服务层,类似于服务堆栈中的服务实现,但尽量保持 POCO,如果由于某种原因您需要 Web 服务您可以尝试反射服务层,以便在中间有另一个级别的间接性。
只是我的两分钱...