NonStandBusPurchaseReqsWP.cs
using System.ComponentModel;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
namespace PurchasingMgrWP.NonStandBusPurchaseReqsWP
{
[ToolboxItemAttribute(false)]
public class NonStandBusPurchaseReqsWP : WebPart
{
protected override void CreateChildControls()
{
base.CreateChildControls();
SilverlightObjectTagControl slhc =
new SilverlightObjectTagControl();
slhc.Source = SPContext.Current.Site.Url +
"/ClientBin/NonStandBusPurchaseReqsSLOM.xap";
slhc.InitParameters = "url=" + SPContext.Current.Web.Url;
this.Controls.Add(slhc);
}
}
}
图 12 中的代码可以创建 SilverlightObjectTagControl 的实例,将 Source 属性设置为 Silverlight 应用程序在 ClientBin 中的 URL,设置 InitParameters 属性来存放当前站点(可在其中找到“非标准业务购买请求”列表)的 URL。要向 NonStandBusPurchaseReqsSLOM 中的 MainPage 类的构造函数传递 URL,打开 App.xaml.cs,然后将以下代码添加到 Application_Startup 事件中:
private void Application_Startup(object sender, StartupEventArgs e) { string url = e.InitParams["url"]; this.RootVisual = new MainPage(url); }
要测试 Web 部件,请将 PurchasingMgr.wsp 程序包部署到内部部署购买站点,以部署“非标准业务购买请求”列表(当前面列出的调试会话结束时,即会删除该列表),然后在 Visual Studio 2010 中调试 PurchasingMgrWP 解决方案。将 Web 部件添加到 \Purchasing\Home.aspx 中后,我就可以利用 Web 部件从 Silverlight 将项目直接添加到该列表中,如图 13 和图 14 所示。
图 13 运行中的 NonStandBusPurchaseReqsWP
图 14 更新后的“非标准业务购买请求”列表
基于内部部署站点进行开发和调试使我可以使用 Visual Studio 2010 来调试 SharePoint 和 Silverlight 4 代码,直至我测试完整个解决方案。此时,我要将 PurchasingMgrWP.wsp 上载到 SharePoint Online 中的解决方案库。
SharePoint 客户端 OM 提供了一种人们熟悉的、一致的面向对象的 API,用于访问 SharePoint Online 中的列表和库。该 API 是 Microsoft.SharePoint API 的一个子集,其作用域是网站集及其以下级别,这完全符合 SharePoint Online 开发工作的需要。
云中的 SharePoint 解决方案
综上所述,SharePoint Online 为 SharePoint 开发人员提供了一个少有的机会,使他们能够利用自己已经拥有的技能和工具来面向云构建 SharePoint 解决方案。理解了 SharePoint Online 自定义功能(包括支持的功能和不支持的功能)、沙盒解决方案、SharePoint 客户端 OM 和使用 SharePoint Designer 2010 构建的声明性工作流后,您便可以使用 SharePoint Online 构建在云中运行的 SharePoint 解决方案。要了解 SharePoint Online 开发在整个测试阶段的最新消息,请查看 SharePoint Online 开发人员资源中心 (msdn.com/sharepointonline)。