0

为了获取数据,我们的项目具有以下结构。

使用实体框架访问数据库

  • 项目名称.DAL

调用实体框架的服务。(UoW)

  • 项目名称.服务

我们在控制器中的操作调用服务并返回所需的数据。

  • 项目名称.Web

问题:

我们的服务直接使用 Entity Framework 获取信息,创建 WebServices 以替换与 EF 的连接有哪些优点和缺点?“在这种情况下,只有 WebServices 可以访问实体框架,”

  • 项目名称.DAL
  • 项目名称.WebServices
  • 项目名称.服务
  • 项目名称.Web
4

2 回答 2

2

主要优点是您将拥有更加解耦的设计

通过 Web 服务公开您的 DAL,您可以将其与前端“断开”。例如,移动应用程序、Web 应用程序和 WPF 桌面应用程序都可以通过相同的 Web 服务访问您的 DAL。因此,您可以在不同的应用程序中重复使用您的 DAL,这可以为您节省大量的开发时间。看看ServiceStack及其Web 服务的优势

缺点?不得不做一些额外的开发工作和测试。如果您的应用程序很简单,并且不会在不同的环境中使用,那么使用 Web 服务可能会过大。

于 2013-09-17T13:59:01.580 回答
1

缺点:

与项目中的普通 CLR(又名 dll)层相比, Web 服务往往会从您的服务器消耗更多资源。无论您打算使用什么 Web 服务(旧版 Web 服务、服务堆栈、wcf、Web API 等),您都会发现它们都必须使用一个流程来序列化数据,并且您可能需要这种情况在您的前端应用程序中执行相反的过程。

您必须非常仔细地设计您的 ws,因为您必须考虑如何公开这些服务以及您必须实施的封装/抽象级别,Web 服务层中的糟糕设计肯定会令人头疼在开发和生产期间为您服务。

安全性:在大多数情况下,您还必须验证这些 Web 服务中的每个输入

优势 与优势非常相关,它更多地取决于您的应用程序要求,您需要回答的一些问题如下:

  • 我是否需要与其他应用程序(移动、桌面、其他网络应用程序)共享数据?
  • 我是否需要向其他企业(第三方)公开某些功能?

推荐 如果你打算做一个 CRUD 应用程序,我会推荐使用 REST,因为它的架构(POST、DELETE、GET、ETC),它绝对是最好的选择。

如果您现在不需要 Web 服务,您可以尝试开发您的服务层,类似于服务堆栈中的服务实现,但尽量保持 POCO,如果由于某种原因您需要 Web 服务您可以尝试反射服务层,以便在中间有另一个级别的间接性。

只是我的两分钱...

于 2013-09-17T22:47:12.453 回答