Silverlight WCF服务:是否通过客户端访问WCF?

Silverlight WCF服务:是否通过客户端访问WCF?,silverlight,wcf,iis,Silverlight,Wcf,Iis,WCF服务是从承载silverlight XAP的IIS服务器调用还是直接从客户端浏览器调用?如果要将WCF服务放在靠近数据库的服务器上(而不是与Silverlight/ASP.NET页面相同的服务器),WCF服务器的端口是否需要对外开放 这听起来可能是一个简单的答案,但实际上并不像听起来那么明显,例如: ClientAccessPolicy.xml 此文件可帮助您控制 域有权调用您的WCF 服务这是一个非常基本的例子 您如何将访问权限限制为 那些应用程序运行在您的 所需域。这允许某人 运行Si

WCF服务是从承载silverlight XAP的IIS服务器调用还是直接从客户端浏览器调用?如果要将WCF服务放在靠近数据库的服务器上(而不是与Silverlight/ASP.NET页面相同的服务器),WCF服务器的端口是否需要对外开放

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

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

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

    附加: 我知道我可能没有很好地表达我的问题

    如果您有用于WCF服务器的服务器(服务器a) 以及承载Silverlight应用程序的服务器(服务器B

    您的客户端是直接调用服务器A还是向服务器B发出请求,后者用作与服务器A通信的代理


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

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


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

    silverlight无法承载服务,即使在proc中,至少据我所知不是这样。您的服务将与ASP.NET应用程序一起托管在IIS中,该应用程序可能托管您的Silverlight标记

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


    即使这是你想做的事,也要考虑数据总是要经过你的应用服务器。

    这样,客户端浏览器直接调用WCF服务,或者它被路由回托管Silverlight应用程序的服务器吗?Silverlight应用程序几乎可以在任何地方使用服务。在您的场景中,如果您碰巧在同一个IIS实例上托管WCF服务,那么实际上没有什么变化。没有发生特殊的“路由”。它恰好指向silverlight文件的服务位置。不,我不想在与数据库相同的服务器上托管WCF服务。但是我确实想把它放在更靠近数据库的地方——我们的数据库服务器与我们所在的建筑/状态不同。我想这在很大程度上取决于你在做什么。要明白,如果您离开相同的应用程序池模型,您将增加复杂性。您可能没有获得多少性能。XAP直接访问WFC服务。您可以在服务器a上托管Silverlight应用程序,并在服务器B上提供WCF服务。客户端可以从服务器a获取XAP,并与服务器B上的WCF服务通信。您可以关闭服务器a上的IIS,只要客户端在本地保持XAP文件打开,就不会知道服务器a的状态。
    <?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>