【问题标题】:Silverlight WCF services: WCF is accessed through Client?Silverlight WCF 服务:WCF 是通过客户端访问的吗?
【发布时间】:2011-02-22 16:12:38
【问题描述】:

WCF 服务是从托管 silverlight XAP 的 IIS 服务器调用还是直接从客户端浏览器调用?如果您要将 WCF 服务放在离数据库更近的服务器上(而不是与 Silverlight / ASP.NET 页面相同的服务器),WCF 服务器的端口是否需要向全世界开放?

这听起来像是一个简单的答案,但实际上并不像听起来那么明显:

  1. ClientAccessPolicy.xml

此文件可帮助您控制哪些 域有权调用您的 WCF 服务。这是一个非常基本的例子 关于如何限制仅访问 那些在您的环境下运行的应用程序 所需的域。这允许某人 运行您的 Silverlight 应用程序 从安全和非安全 网址。

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
<domain uri="https://www.yourwebsite.com"/>
<domain uri="http://www.yourwebsite.com"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>

听起来好像调用返回到承载 Silverlight 应用程序的 Web 服务器,然后返回到 WCF 服务。

补充: 我知道我可能没有很好地传达我的问题。

如果您有用于 WCF 服务器的服务器(服务器 A) 和托管您的 Silverlight 应用程序的服务器(服务器 B

您的客户端是直接调用 Server A 还是向 Server B 发出请求,该请求用作与 Server A 通信的代理>?

服务器A在一个域中,服务器B在另一个域中,客户端通过互联网。

【问题讨论】:

  • XAP 直接访问 WFC 服务。您可以在服务器 A 上托管 Silverlight 应用程序,并在服务器 B 上拥有 WCF 服务。客户端可以从服务器 A 获取 XAP 并与服务器 B 上的 WCF 服务进行通信。您可以关闭服务器 A 上的 IIS,只要客户端保持 XAP 文件在本地打开,将不知道服务器 A 的状态。

标签: silverlight wcf iis


【解决方案1】:

在 silverlight 中,silverlight 应用程序完全在浏览器的上下文中运行。在正常的、互联网部署的 Silverlight 应用程序中允许的唯一通信是通过服务。

让 WCF 服务尽可能靠近数据库仍然很好,但这与场景的 silverlight 部分无关。

【讨论】:

  • 那么客户端浏览器直接调用 WCF 服务还是被路由回托管 Silverlight 应用程序的服务器?
  • 在一般情况下,Silverlight 应用程序几乎可以从任何地方使用服务。在您的场景中,如果您碰巧将 WCF 服务托管在同一个 IIS 实例上,则不会发生任何真正的变化。没有发生特殊的“路由”。它恰好指向提供您的 silverlight 文件的同一位置。
【解决方案2】:

Silverlight 无法托管服务,即使是在进程内,至少据我所知是这样。您的服务将与可能托管您的 Silverlight 代码的 ASP.NET 应用程序一起托管在 IIS 中。

关于您将服务放置在何处,除非您有充分的理由相信它属于数据库服务器,否则不要这样做。我将其比作使用业务逻辑编写存储过程,因为您关心从数据库传输的数据量 - 这通常是您有实际需求时使用的东西,而不是假设的需求。

即使这是您希望做的事情,请考虑数据将始终通过您的应用程序服务器。

【讨论】:

  • 不,我不想将 WCF 服务托管在与数据库相同的服务器上。但我确实希望将它托管在离数据库更近的地方——我们的数据库服务器与我们所在的建筑物/状态不同。
  • 我想这很大程度上取决于你在做什么。了解如果您离开相同的应用程序池模型,您将增加复杂性。您可能不会获得太多性能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
  • 2014-02-20
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 2011-11-10
相关资源
最近更新 更多