エンタープライズ検索カスタム Web パーツの基礎知識

ここでは、エンタープライズ検索 カスタム Web パーツを開発する場合の前提条件について説明します。

Web パーツの開発

Windows SharePoint Services 3.0 の Web パーツは、以前のバージョンの Web パーツ テクノロジから強化されています。Microsoft ASP.NET 2.0 Web パーツに加えて、Windows SharePoint Services 3.0 Web パーツを使用できます。

注意

Windows SharePoint Services Web パーツを作成するときに使用する基本クラスは、Microsoft.SharePoint.WebPartPages.WebPart クラスです。ASP.NET Web パーツを作成するときに使用する基本クラスは、WebPart クラスです。

基本クラスは、Title や Description などの、すべての Web パーツに共通する基本的なプロパティを提供します。派生クラスにはカスタム プロパティを追加できるので、実行時には 2 セットのプロパティが表現されて、単一のプロパティのセットとして実行されます。

基本的に Web パーツは、Windows SharePoint Services 形式 (.dwp) または ASP.NET 2.0 形式 (.webpart) のどちらかである Web パーツ記述ファイルを使用する .NET Web カスタム コントロール アセンブリです。Web パーツ記述ファイルは、任意のコンピュータに格納して参照することができ、Web パーツのインスタンスについて記述する XML メタデータを含んでいます。Web パーツ .NET アセンブリは、Web パーツを使用するそれぞれの Windows SharePoint Services コンピュータにインストールし、登録する必要がある DLL です。

ASP.NET Web パーツまたは SharePoint Web パーツの選択

一般には、ASP.NET 2.0 WebPart クラスを継承する新しい Web パーツを設計する必要があります。ASP.NET Web パーツの記述ファイルの名前には, .webpart という拡張子が使用されます。ASP.NET Web パーツは柔軟性に優れており、Windows SharePoint Services と緊密には結合されていない Web サイトとの互換性を提供します。

Windows SharePoint Services 3.0 Web パーツは、Windows SharePoint Services 2.0 との下位互換性を提供します。SharePoint Web パーツの記述ファイルの名前には, .dwp という拡張子が使用されます。SharePoint Web パーツには、追加の機能が含まれていますが、SharePoint サイトでしか使用できません。以下に、SharePoint Web パーツの追加機能の一覧を示します。

  • SharePoint サイトでのページ間接続

  • Web パーツ領域の外側にある Web パーツ間の接続

  • Web Part Page Services コンポーネントを使用したクライアント側の接続

  • Web パーツ データ キャッシュ

  • Web パーツ作業項目を使用した非同期処理

Web パーツの開発と接続、ASP.NET Web パーツの Windows SharePoint Services サイトへのインポート、および SharePoint Web パーツのオブジェクト モデルの詳細については、Windows SharePoint Services 3.0 SDK を参照してください。

クエリのオブジェクト モデルを使用する

エンタープライズ検索 は、検索コンポーネントに対してプログラムから検索クエリを実行するために使用できるオブジェクト モデルを備えています。Microsoft.Office.Server.Search.Query 名前空間には、この機能を提供する 2 つのクラスが含まれています。

エンタープライズ検索のクエリ オブジェクト モデルの使用方法の詳細については、「Getting Started with the Enterprise Search Query Object Model (英語)」を参照してください。

開発環境をセットアップする

Web パーツ開発環境をセットアップする場合にサポートされる方法は、Office SharePoint Server 2007 サーバー上でローカルに開発することです。

Microsoft Office SharePoint Designer 2007 を使用すると、Web ページに Web パーツをインポートすることはできますが、新しい Web パーツを作成することはできません。カスタム Web パーツ アセンブリを開発するには、Microsoft Visual Studio 2005 などの開発ツールを使用する必要があります。Visual Studio 2005 を使用すれば、高機能の開発環境とデバッグ機能の恩恵を受けられます。Web パーツの作成のために Visual Studio 2005 を使用することの詳細については、以下を参照してください。

Web パーツのプロジェクトを作成する

Web コントロール ライブラリ テンプレートを使用すると、Web パーツ用の Visual Studio 2005 プロジェクトを作成できます。このテンプレートは、C# と Visual Basic のどちらの場合も、[Windows] ノードの、[新しいプロジェクト] ダイアログ ボックスにあります。

プロジェクト参照

Web コントロール ライブラリ テンプレートから作成されたプロジェクトには、ASP.NET Web パーツに必要なアセンブリへの参照が含まれています。ただし、エンタープライズ検索のクエリ オブジェクト モデルを使用して検索コンポーネントにアクセスすることになるため、特定のアセンブリについては、プロジェクトに参照を追加する必要があります。

エンタープライズ検索のクエリ オブジェクト モデルを使用しているため、Microsoft.Office.Server.Search.dll への参照を含める必要があります。以下に示す他のアセンブリへの参照は省略できますが、エンタープライズ検索のクエリ オブジェクト モデルを操作する場合には、たいていの場合、これらのアセンブリも必要になります。

プロジェクトに以下の参照を追加してください。

  • Microsoft.SharePoint.dll

    このアセンブリは、カスタム Web パーツのクラスが Microsoft.SharePoint.WebPartPages.WebPart クラスを継承している場合に必要です。Web パーツをホストしているサーバーに関する情報を、SPFarm オブジェクトを使用してプログラムから取得する必要がある場合は、このアセンブリが必要になることがあります。

  • Microsoft.Office.Server.dll

    検索コンポーネントの共有サービス プロバイダに関する情報を、Office サーバー管理オブジェクト モデルを使用してプログラムから取得する必要がある場合は、このアセンブリが必要になることがあります。

  • System.Data.dll

  • System.Xml.dll

Web パーツのクラスを作成する

Web パーツのクラスは、Web コントロール ライブラリ テンプレートから作成された既定のクラスを変更して作成します。加える変更の内容は、ASP.NET Web パーツと SharePoint Web パーツのどちらを作成しているかによって異なります。これらの変更については、後のセクションで説明します。

どちらの種類の Web パーツの場合も、Microsoft.Office.Server.Search.Query に対する using 名前空間ディレクティブをクラスに追加する必要があります。使用する構文は次のとおりです。

using Microsoft.Office.Server.Search.Query;

ASP.NET Web パーツのための変更

Query 名前空間に加えて、ASP.NET Web パーツのクラスのために名前空間ディレクティブを追加する必要があります。使用する構文は次のとおりです。

using System.Web.UI.WebControls.WebParts;

SharePoint Web パーツのための変更

Query 名前空間に加えて、SharePoint Web パーツのクラスのために名前空間ディレクティブを追加する必要があります。使用する構文は次のとおりです。

using Microsoft.SharePoint.WebPartPages;

注意

作成する Web パーツのクラスが、予期したクラスから派生されるようにするため、これらの名前空間ディレクティブの両方を同じクラスに含めないでください。

SharePoint Web パーツを作成している場合は、Web パーツの XML ルート名前空間も指定する必要があります。使用する構文は次のとおりです。

...
using Microsoft.SharePoint.WebPartPages:
namespace CustomSearchWebPart
{
    [XmlRoot(Namespace = "CustomSearchWebPart")]
    public class customSearchQuery : WebPart
...

Web パーツを展開する

プロジェクトをコンパイルするときに、Web パーツのアセンブリに厳密な名前を指定するオプションを使用できます。グローバル アセンブリ キャッシュに Web パーツを展開している場合は、アセンブリに厳密な名前を指定する必要があります。Web パーツの展開先がグローバル アセンブリ キャッシュではなく、Office SharePoint Server 2007 サイトの _app_bin ディレクトリである場合、アセンブリの厳密な名前の使用は省略できます。

Web パーツ アセンブリの厳密な名前と展開場所の詳細については、「Managing Web Parts on Virtual Servers (英語)」を参照してください。

Web パーツをコンパイルしたら、Web パーツの展開に必要なファイルを作成できます。SharePoint Web パーツの場合は .dwp ファイルを作成し、ASP.NET Web パーツの場合は .webpart ファイルを作成します。

.dwp ファイルを作成する

メモ帳などのテキスト エディタを使用して、簡単な .dwp ファイルを作成し、編集することができます。次のコード例に、厳密な名前を使用しない、簡単な SharePoint Web パーツの XML 構文を示します。

<?xml version="1.0"?>
<WebPart xmlns="https://schemas.microsoft.com/WebPart/v2">
   <Assembly>CustomWebPart, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=null</Assembly>
   <TypeName>CustomWebPart.customSearchQuery</TypeName>
   <Title>Custom Search Web Part</Title>
</WebPart>

これらのファイルの作成方法の詳細については、以下を参照してください。

.webpart ファイルを作成する

メモ帳などのテキスト エディタを使用して、簡単な .webpart ファイルを手動で作成し、編集することができます。次のコード例に、厳密な名前を使用しない、簡単な Web パーツの XML 構文を示します。

<?xml version="1.0" encoding="utf-8"?>
<webParts>
  <webPart xmlns="https://schemas.microsoft.com/WebPart/v3">
    <metaData>
     <type name="CustomASPNETWebPart.customSearchQuery, CustomASPNETWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      <importErrorMessage>Cannot import this Web Part.</importErrorMessage>
    </metaData>
    <data>
      <properties>
        <property name="Title" type="string">Custom Search Query</property>
      </properties>
    </data>
  </webPart>
</webParts>

ASP.NET ページから Web パーツをエクスポートし、動的に .webpart ファイルを生成することもできます。

SafeControl として Web パーツの登録とインポートを行う

作成した Web パーツをサイトで使用する前に、Web パーツを SafeControl の一覧に登録し、次に、その Web パーツをサイトにインポートする必要があります。

Web パーツを SafeControl の一覧に登録するには

  1. サイトのルート フォルダにある web.config ファイルを開きます。

  2. SafeControls タグを見つけます。

  3. 作成した Web パーツのタグを追加します。

次のコード例に、厳密な名前を使用せず、BIN ディレクトリにインストールされている簡単な Web パーツのタグ構文を示します。

<SafeControl Assembly="CustomSearchWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
 Namespace="CustomSearchWebPart" TypeName="*" Safe="True" />

展開の最後の手順は、Web パーツをサイトにインポートすることです。

Web パーツをサイトにインポートするには

  1. ブラウザで、Web パーツの追加先のページを開き、[サイトの操作] メニューの [ページの編集] をクリックします。

  2. ページが編集モードになったら、右または左の、必要な Web パーツ領域の [Web パーツの追加] をクリックします。

  3. [Web パーツの追加] ダイアログ ボックスで、[Web パーツ ギャラリーとオプションの詳細設定] リンクをクリックします。

  4. [参照] をクリックし、[インポート] をクリックします。

  5. [参照] をクリックして .dwp ファイルまたは .webpart ファイルを保存した場所へ移動し、目的のファイルを選択して [開く] をクリックします。

これで Web パーツがダイアログ ボックスの一覧に表示されるようになります。Web パーツは、ダイアログ ボックスからページ上にドラッグできます。

See Also

タスク

[ウォークスルー] カスタム エンタープライズ検索 Web パーツを作成する

[ウォークスルー] AdventureWorks ビジネス データ アプリケーション サンプル用の ASP.NET Web パーツを作成する

概念

カスタム エンタープライズ検索 Web パーツを構築する