【问题标题】:Using Web Services with EF Code First approach将 Web 服务与 EF 代码优先方法一起使用
【发布时间】:2015-05-17 23:15:53
【问题描述】:

我已经使用 Entity Framework code first 方法开发了一些 MVC 应用程序,现在我正在开发一个新的应用程序,该应用程序也将使用 Web 服务 对于我们将创建的移动应用程序。所以,我对以下问题有疑问。您能否就这些问题一一澄清我?

  1. 我应该使用哪种 Web 服务技术,即 Web API、WCF 等? (我在我的项目中使用 MVC5 和 EF 版本 6)
  2. 我可以对我的 Web 应用程序和 Web 服务使用相同的 CRUD 方法吗?如果是这样,应该对方法和其他领域(即模型等)进行哪些修改?
  3. 对于当前使用 EF 代码优先方法的 MVC 应用程序,是为 Web 服务创建新方法更好,还是应该通过添加支持 Web 服务的能力来更新当前方法?

提前谢谢...

【问题讨论】:

  • @SteveGreene 感谢您的回复。但它是有限的,似乎适用于 Azure。我认为最好使用 Web API 而不是 WCF,因为我们使用此 Web 服务与我们的移动应用程序共享数据。那么,你能澄清一下我在这个问题上提出的问题吗?
  • 好的,这里有一个不同的教程 (mikesdotnetting.com/article/261/…) - 根据您的需要有很多选项可供选择。关于1,这里是一个简单的比较矩阵。 msdn.microsoft.com/en-us/library/jj823172(v=vs.110).aspx
  • @SteveGreene 非常感谢这些有用的链接。文章中的程序和WebAPI2一样吗?另一方面,它们是否足够,或者您是否建议将 OData 端点与 WebAPI 一起使用?对于最后一个问题,我认为在控制器类中同时在 web 和服务上使用 WebAPI 方法是不可能的。因此,我们需要在不同的控制器上创建一个用于 Web 的方法和另一个用于 Web 服务的方法。这是真的吗?
  • 嗯,有很多方法可以去,但仍然可以最大限度地减少冗余。我正在开始一个新项目,并计划使用 Web API 2 和 Angular 作为前端。

标签: asp.net-mvc entity-framework web-services wcf ef-code-first


【解决方案1】:

我强烈建议使用命令和查询。 thisthis 文章中对此进行了介绍。

Command 是简单的 DTO 对象,可以很容易地通过网络发送。在这种情况下,您可以控制要公开的字段和行为。

因为命令是没有行为的简单数据容器,所以它是 很容易序列化它们(例如使用 XmlSerializer)或 通过网络发送它们(例如使用 WCF),这样就不会 只容易将它们排队以供以后处理,但也可以做到 很容易将它们记录在审计跟踪中 - 另一个原因 分离数据和行为。所有这些功能都可以添加,无需 更改应用程序中的一行代码(可能除了 应用程序启动时的行)。

【讨论】:

  • 感谢您的回复。但是,我最常在数据库层使用 EF 方法,即 SaveChanges 等。如果我使用这些方法,在这一点上是否有问题?另一方面,由于我们还将开发移动应用程序并在其上使用 Web 服务,我认为使用 Web API 而不是 WCF 会更好。你怎么看?能否一一说明以上几点?
  • 没有问题,因为您不会序列化并通过网络发送您的 EF 实体。他们将保持私密。如果您要开发移动应用程序,请确保遵循 SOLID 原则(在您的情况下为“I”字母)。这意味着您需要为移动应用程序提供单独的接口/api。而Web API 是WCF 的一种新的、更可取的版本。所以最好从一开始就使用 Web API。
  • 在尝试使用 WebAPI 2 时也有一些不同的方法,我对这个问题真的很困惑。例如:#1) 我将使用 WebAPI2,但也可以选择使用 OData 端点。我看了一下,但我不确定是否值得在 WebAPI2 中使用它。你有什么建议? #2) 如何将 WebAPI2 集成到我现有的 MVC 项目中?我应该创建一个新项目还是可以通过创建新控制器和更改一些配置(即路由)来集成它? >>>
  • #3) 据我所知,在控制器类中使用 WebAPI 方法是不可能的。因此,我们需要在不同的控制器上创建一个用于 Web 的方法和另一个用于 Web 服务的方法。这是真的吗?
  • 非常感谢您的回答(投票+)。最后,我决定将 WebAPI 2 与我的 MVC5 项目集成在Integrating ASP.NET Web Forms, MVC and Web API 上。另一方面,请记住 安全维护问题,您是为 WebAPI 创建一个单独的项目,还是在同一个 MVC 项目的 UI 层(表示层)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 2021-07-11
相关资源
最近更新 更多