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

时间:2011-02-22 16:12:38

标签: silverlight wcf iis

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

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

  
      
  1. ClientAccessPolicy.xml
  2.         

    此文件可帮助您控制哪个   域有权调用您的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

您的客户是直接拨打服务器A 还是向服务器B 发出请求,该请求用作代理与服务器A进行通信

服务器A 位于一个域中,服务器B 位于另一个域中,客户端位于互联网上。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

即使您希望这样做,也要考虑数据始终必须通过您的应用程序服务器。

相关问题