SharePoint Services + JQuery - 并行加载(iGoogle样式加载)

时间:2011-04-22 06:48:17

标签: c# ajax sharepoint asynchronous sharepoint-2010

我有一个自定义的SharePoint应用程序页面,我在其中加载了不同的用户控件(或者甚至可以称为Web部件)。

每个控件/ Web部件从不同的数据源提取数据并呈现数据。因此,当请求页面时,所有控件都会按顺序加载数据并花费更多时间传递给客户端。

我需要的是iGoogle加载方式,页面立即传递,页面的不同部分(天气,体育新闻,股票详细信息等)异步(并行)加载并提取数据。

我们都知道Asp.Net Ajax无法同时为多个异步请求提供服务。所以我想到了以下选项 -

  1. 用于获取数据的用户SharePoint客户端对象模型
  2. 使用JQuery为OOTB SharePoint服务创建ajax请求并获取数据。
  3. 使用JQuery创建ajax请求自定义SharePoint Web服务并获取所需的数据
  4. 但上面是SP客户端对象的缺点 -

    1. 客户端对象模型仅适用于SP 2010
    2. 无法从其他网站提取数据
    3. 仅适用于SharePoint页面
    4. JQuery / SP Services的想法只适用于IE。我无法使用Firefox。我想这应该是一个身份验证问题。此外,JQuery / SP服务无法实现跨站点脚本编写。我不知道这种方法有任何其他漏洞/问题。

      对这些有何见解?

2 个答案:

答案 0 :(得分:1)

这里有一些选择。

  1. 使用iframe加载您的内容孤岛。每个iframe内部页面的处理将在服务器上的不同线程上进行,您可以将页面存储在数据来源的服务器上(无跨域问题)。浏览器本身一次只能处理来自同一域(包括您的iframe)的两次下载。加载iframe可能会与其他下载(css / js / images)竞争。您可以在不同的域上托管iframe,或者在javascript中编写一些逻辑以延迟iframe的加载,直到下载其他页面资源之后(稍后设置iframe的src)。
  2. 使用Silverlight作为跨域访问的垫片。如果您可以在要访问的服务器上放置clientaccesspolicy.xml文件,则可以使用Silverlight检索数据跨域,并在结果返回时操作DOM。
  3. 使用JQuery和JSONP检索您的数据跨域。您可能需要编写安装在SharePoint框上的自定义Web服务以此方式返回数据。

答案 1 :(得分:0)

您对SPServices的跨站点问题有何看法?我遇到的唯一问题是不在Web应用程序之外,它应该在Same Web App中正常工作。即使这样,您也可以使用页面查看器Web部件显示来自其他Web应用程序的SPServices数据。

也许我只是困惑。