如何:初步使用运行时对象模型
运行时对象模型的设计初衷是供业务数据目录客户端和应用程序使用。运行时对象模型具有两个主要功能。
运行时对象模型提供了直观的、面向对象的接口来提取基础数据源。借助它,客户无需了解特定于适配器的编码范例,并且可以用单一、简化的方法访问所有业务应用程序。借助运行时对象模型,在 SAP 应用程序中调用方法与在 Siebel 中调用方法或执行 SQL 查询类似。但业务数据目录并不进行实际的方法执行或后端管道。它只会将客户端调用委派到数据库的相应 Microsoft ADO.NET 提供程序和 Web 服务的 Web 服务代理。
运行时对象模型遵循业务数据目录元数据模型。它定义所有 13 个元数据对象,并使您可以从元数据存储库中读取对象并执行元数据存储库中描述的业务逻辑。由于运行时对象模型是缓存的且速度快,因此那些只需要查询元数据存储库中元数据信息的客户端应该使用运行时对象模型。
运行时对象模型是在 Microsoft.SharePoint.Portal.dll 中的以下命名空间中定义的:
在本节中,我们看一看如何用 Microsoft Visual C# 编写简单的 Microsoft Visual Studio 2005 控制台应用程序,它们使用运行时对象模型浏览元数据存储库,并执行业务应用程序上的方法。
与在管理对象模型中一样,ApplicationRegistry 也是运行时对象模型中的顶级对象。它作为业务数据目录的入口点,您可以通过它读取元数据对象并执行方法。
备注
业务数据目录功能最初名为“应用程序注册表”,而现在更名为“业务数据目录”。因此您在对象模型中会看到 ApplicationRegistry 这个术语。当您看到该术语时,请记住它指的是业务数据目录。
示例
您可能已经了解,业务数据目录作为 Microsoft Office SharePoint Server 2007 共享服务实现,并且在整个共享服务提供程序中是共享的。因此,您必须先引用与业务数据目录关联的共享服务提供程序,然后才能使用 ApplicationRegistry 对象。
下面的代码示例将演示如何在您的本地服务器场设置默认的共享服务提供程序 (SSP) 以用于业务数据目录,并显示在业务数据目录中注册的系统的名称。指定 SSP 是设置控制台应用程序以使用业务数据目录的第一步。
指定了共享资源提供程序后,可以使用 ApplicationRegistry 对象获取向业务数据目录注册的 LOBSystemInstance 对象,如下例中所示。
先决条件
确保已创建共享服务提供程序。
用共享资源提供程序的名称替换代码中的常量值 EnterYourSSPNameHere。
项目引用
运行此示例之前,向您的控制台应用程序代码项目中添加以下项目引用:
Microsoft.SharePoint
Microsoft.SharePoint.Portal
Microsoft.Office.Server
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Microsoft.Office.Server.ApplicationRegistry.MetadataModel;
using Microsoft.Office.Server.ApplicationRegistry.Runtime;
using Microsoft.Office.Server.ApplicationRegistry.SystemSpecific;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;
namespace Microsoft.SDK.SharePointServer.Samples
{
class GetStartedAndDisplaySystems
{
const string yourSSPName = "EnterYourSSPNameHere";
static void Main(string[] args)
{
SetupBDC();
DisplayLOBSystemsinBDC();
Console.WriteLine("Press any key to exit...");
Console.Read();
}
static void SetupBDC()
{
SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
}
static void DisplayLOBSystemsinBDC()
{
NamedLobSystemInstanceDictionary sysInstances = ApplicationRegistry.GetLobSystemInstances();
Console.WriteLine("Listing system instances...");
foreach (String name in sysInstances.Keys)
{
Console.WriteLine(name);
}
}
}
}