2014-02-28 25 views
0

我参与了一个使用Silverlight的项目,对SL的几件事情我不太清楚。当我从silveright代码进行Web服务调用时发生了什么?

我知道SL将xap下载到客户端浏览器,并使得许多事情更容易。 aspx或html页面加载SL插件并在浏览器中下载xap。我在IIS中部署了我的Web应用程序,并且在IIS(http)上有很少的WCF Web服务,并且还有一些作为Windows服务(net.tcp)。

我从Silverlight代码制作的wcf服务调用如何?由于我可以直接从Silverlight代码调用基于WCF http或net.tcp的服务,这让我怀疑SL客户端是否能够直接与浏览器(或)SL服务器直接与Web服务通信,然后运行到网站,然后进行服务调用?

我猜我缺少理解这里的一些基础知识。请有人解释一下SL在这种情况下会发生什么。任何链接到一些更深入的了解,非常感谢。

谢谢。

+2

建议您运行Fiddler并观察流量。很教育。通常最容易使用* WCF RIA服务*与Silverlight,而不是简单的WCF直接。服务调用是直接从浏览器/ Silverlight(你实际上不关心)。该网站纯粹承载服务和Silverlight网页。 –

+1

PS。 XAP文件只是一个重命名的ZIP文件。随意重命名并解压缩一个,并查看下载到浏览器的内容。 –

+0

@真的 - 谢谢。我会尝试小提琴手。我想了解更多关于IIS工作进程参与w.r.到web服务调用。我假设如果Web服务托管在IIS中,那么SL调用Web服务将通过IIS工作进程?当一个服务作为独立托管时,例如在一个窗口服务中,SL不会在IIS中使用任何东西?这是我有点困惑。 –

回答

1

当tcp是底层协议时,Silverlight可以直接与本地或外部网络中的任何东西通信,禁止一些安全限制。

例如,当您使用基于tcp的本地WCF服务进行通信时,您仍然需要在保存主机上由http服务clientaccesspolicy.xml,或者使用提升的权限运行Silverlight。

对于http,Silverlight可以同时使用请求浏览器发出请求或直接发出请求(我不确定哪些用于wcf),tcp将始终直接从插件完成。

Silverlight应用程序必须由一个网站托管,但该网站不需要做任何事情,除此之外,Silverlight无法工作,或者无法访问WCF服务。您可以将纯Silverlight应用程序托管为纯静态文件。

+0

谢谢John。我很想接受。那么这是否意味着如果我托管一个tcp服务,那么我需要打开端口4503-4535以使SL应用程序与tcp服务进行通信。我认为绝对不适合面向外部的Web应用程序。 –

+1

@Mani如果客户端(即Silverlight)发起连接,则不是,因为家庭路由器通常会处理这种情况。您必须期望这会在企业环境中造成问题,其中端口80通常是唯一可靠的。 (虽然这不是Silverlight特有的)。如果你是该服务的作者,并且你正在寻找双向通信(我知道的唯一情况是我会被激励选择原始tcp over http,如果我是两个端点的作者),你可能需要考虑一下signalr,这是一个不属于wcf的新发展。 – John

相关问题