サービスを登録する
最終更新日: 2010年9月1日
適用対象: SharePoint Foundation 2010
SharePoint 2010 には、サーバー ファームでサービスの統合インストールおよび管理を行うためのプラットフォームが用意されています。サービスを SharePoint 2010 に統合することで、ファーム内の他のサービスと一致したインターフェイスを使用してサービスを管理できます。また、SharePoint Foundation 2010 には高性能のランタイム API が用意されており、これを使用して、サービスを検出し、サーバー ファーム トポロジに基づいてサービス要求をルーティングできます。さらに、SharePoint Foundation 2010 は、インターネット インフォメーション サービス (IIS) で Web サービスをホストするための完全なフレームワークを提供し、たとえば、サーバー ファームの複数のコンピューター上に Web サービスを展開したり、フロントエンド Web サーバーからの要求の負荷を分散したりするほか、サービス設定のプロパティ ストアを提供します。
構成データベース オブジェクトについて
サービスを検出および管理できるようにするには、そのサービスを SharePoint 構成データベースに登録する必要があります。SharePoint 構成データベースに格納されているオブジェクトはすべて、Microsoft.SharePoint.Administration.SPPersistedObject から派生する Microsoft .NET Framework オブジェクトです。各 SPPersistedObject オブジェクトの要件を次に示します。
一意の System.Runtime.InteropServices.GuidAttribute 値。この値を使用して、構成データベース内での種類を識別します。
既定のパブリック コンストラクター。構成データベース オブジェクト シリアライザーによる内部使用のみを目的としています。
以下の例は、既定のパブリック コンストラクターを示しています。
using System.Runtime.InteropServices;
[Guid("213A8448-2B39-4B37-A39C-1B444600000")]
public class MyObject : SPPersistedObject
{
/// <summary>
/// For internal use only.
/// </summary>
public MyObject()
{
}
}
Imports System.Runtime.InteropServices
<Guid("213A8448-2B39-4B37-A39C-1B444600000")>
Public Class MyObject
Inherits SPPersistedObject
''' <summary>
''' For internal use only.
''' </summary>
Public Sub New()
End Sub
End Class
注意
簡単にするために、このトピックの移行のコード例には、GUID および既定のパブリック コンストラクターは示されていません。
サービスを SharePoint Foundation に登録する
以下の例では、SharePoint 2010 サーバー ファームの複数のサーバー上で開始および停止できるサービスを登録する方法を示します。SharePoint プラットフォームでサービスを実装する必要はありません。たとえば、SharePoint service クラスを使用すると、サーバーの全体管理サイトに外部の基幹業務 (LOB) サービスを表示できます。
手順 1: サービス クラスを作成する
SPService からクラスを派生させます。このクラスを使用して、SharePoint 2010 サーバー ファーム上でサービスを登録します。このクラスには、ファーム内のサービスのすべてのインスタンスに適用する設定をオプションで含めることができます。
public sealed class MyService : SPService
{
public MyService(
SPFarm farm)
: base(String.Empty, farm)
{
}
}
Public NotInheritable Class MyService
Inherits SPService
Public Sub New(ByVal farm As SPFarm)
MyBase.New(String.Empty, farm)
End Sub
End Class
手順 2: サービス インスタンス クラスを作成する
SPServiceInstance からクラスを派生させます。このクラスを使用して、サーバー ファーム内でサービスがインストールされているコンピューターを登録します。また、このクラスには、サーバーの全体管理サイトからサービスを開始および停止するためにファーム管理者に必要な管理フックも用意されています。
Provision メソッドおよび Unprovision メソッドをオーバーライドし、ローカル コンピューターでサービスを開始および停止するコードを実行します。Service Application Framework によって適切なサーバーでメソッドが呼び出されます。
public sealed class MyServiceInstance : SPServiceInstance
{
public MyServiceInstance(
SPServer server,
SPService service)
: base(String.Empty, server, service)
{
}
public override Provision()
{
// Start the service on the local computer.
}
public override Unprovision()
{
// Stop the service on the local computer.
}
}
Public NotInheritable Class MyServiceInstance
Inherits SPServiceInstance
Public Sub New(ByVal server As SPServer, ByVal service As SPService)
MyBase.New(String.Empty, server, service)
End Sub
Public Overrides Sub Provision()
' Start the service on the local computer.
End Sub
Public Overrides Sub Unprovision()
' Stop the service on the local computer.
End Sub
End Class
この例では、サービス インスタンスの名前は String.Empty です。これは、既定のサービス インスタンスに適しています。1 つのコンピューターで複数の物理インスタンスがサービスによってサポートされている場合は、名前付き (既定以外) のサービス インスタンスが適しています。各インスタンス (既定のインスタンスを除く) に名前があり、それぞれを個別に開始および停止できます。この場合は、次の例で示すように、追加のコンストラクターが必要です。
internal MyServiceInstance(
string name,
SPServer server,
SPService service)
: base(name, server, service)
{
}
Friend Sub New(ByVal name As String, ByVal server As SPServer, ByVal service As SPService)
MyBase.New(name, server, service)
End Sub
手順 3: サービスをインストールする
SharePoint Foundation 機能を作成します。この機能により、セットアップ後の構成フェーズで、サービスとサービス インスタンス オブジェクトが構成データベースにインストールされます。詳細については、「パッケージ化および展開」を参照してください。