【问题标题】:What happens internally when I make a web service call from silveright code?当我从 silveright 代码进行 Web 服务调用时,内部会发生什么?
【发布时间】:2014-04-01 09:28:32
【问题描述】:

我正在参与一个使用 Silverlight 的项目,但对 SL 的一些事情不太清楚。

我知道 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 中这种情况下会发生什么。非常感谢任何有助于更深入理解的链接。

谢谢。

【问题讨论】:

  • 建议你运行 Fiddler 并观察流量。很有教育意义。通常最容易将 WCF RIA 服务 与 Silverlight 一起使用,而不是直接使用普通的 WCF。服务调用直接来自浏览器/Silverlight(您实际上并不关心哪个)。该网站纯粹托管服务和 Silverlight 网页。
  • 附言。 XAP 文件只是一个重命名的 ZIP 文件。随意重命名并解压,看看下载到浏览器的内容。
  • @True - 谢谢。我会尝试提琴手。我试图更多地了解 IIS 工作进程对 web 服务调用的参与。我假设如果 Web 服务托管在 IIS 中,那么对 Web 服务的 SL 调用将通过 IIS 工作进程?当服务作为独立托管时,比如在窗口服务中,SL 不会在 IIS 中使用任何东西?这是我有点困惑的地方。
  • 就我个人而言,我不必连接到 Silverlight 的自托管服务(我什至不知道它可以做到这一点)。为了方便起见,我总是使用 WCF RIA 服务 :)

标签: asp.net wcf silverlight silverlight-4.0 silverlight-5.0


【解决方案1】:

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

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

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

Silverlight 应用程序必须由网站托管,但该网站不需要执行任何操作,Silverlight 才能正常工作或访问 WCF 服务。您可以将 Silverlight 应用程序托管为纯静态文件。

【讨论】:

  • 谢谢约翰。我很想接受。这是否意味着如果我托管 tcp 服务,那么我需要打开端口 4503-4535 以使 SL 应用程序与 tcp 服务通信。我认为绝对不适合面向外部的网络应用程序。
  • @Mani 如果客户端(即 Silverlight)启动连接,则不会,因为家庭路由器通常会处理这种情况。您必须预计这会在公司环境中产生问题,在这种环境中,端口 80 通常是唯一允许可靠的东西。 (但这并不是 Silverlight 特有的。)如果您是该服务的作者并且您正在寻找双向通信(我所知道的唯一一种情况,如果我愿意选择 raw tcp 而不是 http 'm 两个端点的作者),您可能需要考虑 signalr,一个完全不是 wcf 的新开发。
猜你喜欢
  • 1970-01-01
  • 2018-01-04
  • 2019-12-13
  • 1970-01-01
  • 1970-01-01
  • 2016-11-11
  • 2021-07-23
  • 2011-09-03
  • 1970-01-01
相关资源
最近更新 更多