【问题标题】:Why use web service if it is consumed by one website?如果 Web 服务被一个网站使用,为什么还要使用它?
【发布时间】:2013-11-29 05:56:51
【问题描述】:

我见过很多次了,在一个解决方案中,哪里有一个 ASP.NET 网站,而一个 WCF 只由该网站使用?与让网站直接访问数据库相比,添加 Web 服务有什么优势?网站可以做web服务做的所有事情,不是多余的吗?

【问题讨论】:

  • “网站可以做网络服务所做的一切” - 不是
  • @Dismissile 你能说得更具体点吗?
  • 我能想到的一个例子是设置多个绑定。 WCF 中有大量不同的绑定可用。这只是原因之一。安德鲁回答了其他一些很好的理由。
  • @Dismissile 好点,但在这种情况下,它只被一个网站使用。绑定、配置和安全性(服务和网站之间)并不重要,因为您可以控制整个环境。

标签: wcf web-services web


【解决方案1】:

这取决于您想要什么,因为这是一个庞大的话题。我们倾向于在希望保持表示层和业务逻辑/数据层之间的关注点分离的地方使用 WCF。这也意味着我们可以将我们的服务托管在与托管网站不同的服务器上,从安全性和性能的角度来看,这很方便。

安全方面的 WCF 在处理流量加密方面要好得多,您无需任何实际工作即可使用 wsHttp 协议完成此操作。

如果您所做的只是一个非常简单的网站,那么 WCF 服务肯定是矫枉过正,但随着您变得越来越复杂 - 特别是如果涉及到数据库数据,它就会变得越来越有吸引力。

【讨论】:

  • “我们的表示层和业务逻辑/数据层之间的关注点分离”——很好,但我认为这可以通过网站的设计来完成,使用诸如 MVC 之类的模式。
  • “将我们的服务托管在与网站托管不同的服务器上”——您可以将服务托管在任何地方,但在我看到的情况下,它们要么在同一台服务器上,要么在同一台服务器上内部网络;我认为最重要的连接是与数据库服务器的连接。
  • 好吧,我不得不承认这似乎有点毫无意义——你总是会发现人们使用东西是因为它是新的和闪亮的,而不是出于任何真正的原因。我没有使用过 MVC,因此我无法评论它的功能,但我们始终将数据层放在与我们的网站不同的物理服务器上,并且它始终对我们有用。
  • 听起来你不是在寻找答案,而是在寻找你不想这样做的理由。
【解决方案2】:

如果网站和服务托管在同一台机器上,那么在我看来,它肯定是一个过度劳累的架构。

这样做的一个可能原因是,如果 Web 服务保留某种状态/缓存或执行您不希望在网站的应用程序池被回收时中止的后台任务。

但总的来说,它看起来像是糟糕的设计/架构。

【讨论】:

    【解决方案3】:

    SOA 是优势。 http://en.wikipedia.org/wiki/Service-oriented_architecture

    考虑这个例子。您的网站提供 3 项服务,例如 userservice1、userservice2 和 userservice3。每个服务都包含以下与数据库交互的步骤。 userservice1:登录、connectionconfig、servicedataexchange1。 userservice2:登录、connectionconfig、servicedataexchange2。 userservice3:登录、connectionconfig、servicedataexchange3。 和 servicedataexchange 包含各种活动或动作,例如, 服务数据交换1:con1、dataexch1、dataexch0 服务数据交换2:con2,dataexch1,dataexch2,dataexch0 服务数据交换3:con1 数据交换0

    现在要在没有 web 服务的情况下实现这 3 个服务,您需要使用冗余方法编写冗余程序。 这就是为什么我的朋友你会实现 web 服务来避免这种冗余。

    就像您必须编写一个登录方法或一个 con1 方法等,并且每个服务都可以在需要时使用它。

    而且没有人看到未来,如果您需要从其他服务器使用或托管您的网络之外的少量服务,那么无论如何您都必须实现此架构。

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 2010-10-21
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-22
      • 2012-08-03
      相关资源
      最近更新 更多