【问题标题】:Should I use a web service or wcf service with various endpoints? (Web service calling another web service on same server?)我应该使用具有各种端点的 Web 服务还是 wcf 服务? (Web 服务调用同一服务器上的另一个 Web 服务?)
【发布时间】:2013-02-27 09:04:55
【问题描述】:

我目前正在开发一个 Web 服务应用程序项目,该项目将在 Windows Server 2008 上的 IIS7 中运行。Web 服务将被各种客户端、服务器外部以及同一服务器内的其他组件调用。 (其他网络服务和windows服务)

我的观点是,Web 服务的目的是公开功能,以便外部客户端可以调用它。我真的认为在同一台服务器上调用另一个 web 服务的 web 服务或在同一台服务器上调用 web 服务的 windows 服务没有多大意义。如果我错了,请纠正我?

我已经开始研究 WCF,但我很困惑。

做以下事情会更合适吗?

  • 实现 WCF 服务,而不是 Web 服务项目。
  • 公开两个端点:
    1)一个,它将使用传统的 Web 服务绑定公开,该绑定将从外部客户端调用。
    2)另一个端点,以便内部服务(其他 Web 服务或 Windows 服务)可以调用它们,假设更有效,超过安全层,因为这些是已经在服务器上运行的应用程序。

我的方法是正确的还是我把事情复杂化了?

任何可以为我指明正确方向的建议或链接表示赞赏。

谢谢

【问题讨论】:

  • 不可以直接在服务器上使用其他web服务的业务层吗?
  • 不,我宁愿服务作为它自己的应用程序运行,因为它需要初始化,在内存中存储一​​组配置参数,这些参数会一直使用。如果其他客户直接调用业务层,他们将不得不自己处理所有这些。此外,任何更新都需要他们更新那里的引用、重新安装等。
  • 使用 TCP 端点然后我认为仅在本地主机上没有安全性将是我认为的最佳方式。不确定您是否可以获得比这样做更好的性能。查看统计链接stackoverflow.com/questions/4519963/…
  • 当服务和客户端在同一台机器上时,使用命名管道而不是“没有安全性的 TCP”。

标签: c# wcf web-services iis iis-7


【解决方案1】:

一个 Web 服务调用另一个 Web 服务?

如果他们有不同的职责,我认为将他们分开是个好主意。您可以更好地分离关注点(更容易与其他项目/代码库共享)、更容易维护和独立部署。

我会使用 WCF 并为不同的消费者设置两个不同的端点,例如使用 net.pipe 在同一台服务器上进行通信(如果客户端支持它)和使用 http 用于外部客户端。

我认为 WCF 为您提供了比旧的 xml Web 服务更多的功能和灵活性,并且配置部分非常好。

【讨论】:

  • 我想知道这是否是服务器的常见场景,其中一个 wcf 服务具有多个端点,具体取决于使用者(一个用于“BasicHttpBinding”,另一个用于“net.pipe”。 ),因此 Windows 服务或另一个 wcf 服务将调用“net.pipe”和外部客户端“BasicHttpBinding”。
  • 我没有任何硬数据来支持它,但我会说是的,这很常见。我自己用。
【解决方案2】:

BasicHttpBinding 将为您提供与外部客户端的最大互操作性。 当两个服务都托管在同一台机器上时,命名管道将为您提供最佳效率。

BasicHttpBinding 类似于旧的 asmx 和 XML Web 服务。

暴露两个端点是正常的!

一个服务调用另一个服务并不罕见。

在同一台机器上托管多个服务很常见。在企业中,运行多个 SQL-Server 实例是司空见惯的。当然,这取决于硬件、服务和响应时间。

【讨论】:

    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2013-03-27
    • 2011-02-16
    相关资源
    最近更新 更多