Skip To Content

サービスの拡張の概要

ArcGIS クライアントで実行できるカスタム ロジックを使用して、ArcGIS Server マップおよびイメージ サービス (フィーチャ サービスのようなマップおよびイメージ サービス エクステンションを含む) を拡張できます。 これらのサービス タイプを拡張するには、2 つの方法があります。

  • サーバー オブジェクト エクステンション (SOE) では、サービスのオペレーションを作成して、マップまたはイメージ サービスの基本機能を拡張できます。 明確に定義されたビジネス ロジックを実行するときに、ArcGIS クライアント API では簡単に実現できない場合は SOE を使用することが適切です。 ほとんどの SOE は、カスタム コードを使用して地理空間データとマップを操作することで、これらの拡張を行います。
  • サーバー オブジェクト インターセプター (SOI) では、マップまたはイメージ サービスの既存の組み込みオペレーションに対するリクエストをインターセプトできます。 これにより、既存のクライアントにシームレスな方法で、既存の操作を無効にすることで、カスタム ロジックを実行したり、これらのサービスの振舞いを変更することができます。 これらのクライアントは、ArcGIS Maps SDK for JavaScriptArcGIS Runtime SDK などで構築されたアプリケーションである場合があります。

サーバー オブジェクト エクステンション

サービスのオペレーションを作成して、マップおよびイメージ サービス (フィーチャ サービスなどのマップおよびイメージ サービス エクステンションを含む) の基本機能を拡張する場合は、SOE が適切です。 これには以下の利点があります。

  • SOE を REST または SOAP Web サービスとして公開し、ArcGIS クライアント API を基に構築されたカスタム クライアントおよびその他の REST または SOAP クライアントがこれらを呼び出せるようにできます。 実際に、REST SOE は ArcGIS Services Directory に表示され、ArcGIS クライアント API が認識できる一般的なオブジェクト タイプを (ほとんどの場合は、JSON 形式で) 公開できます。
  • SOE を構築するときには、ArcGIS Server で作業を実行する汎用的なメソッドを提供して、クライアントからサーバーに大量の呼び出しが発生しないようにします。 SOE はビジネス ロジックを効果的にカプセル化し、呼び出しをすばやく実行するための理想的な環境を提供します。

他の方法では使用できないか、すばやく実行する必要のある機能を公開する場合、SOE を開発できます。

SOE を開発する前の注意事項

SOE には、Web 開発、ArcGIS 開発ツール、Java などのプログラミング言語、C# などの .NET ベースの言語に関する知識が必要です。 Java で開発された SOE は Windows および Linux 上の ArcGIS Server にデプロイできますが、.NET で開発された SOE は Windows 上の ArcGIS Server にのみデプロイできます。

SOE は、ArcGIS Enterprise SDK を使用して開発できます。 この SDK を使用するとき、自動的に生成されるプロパティ ページのほかにエクステンション用に ArcGIS Server Manager のカスタム プロパティ ページを作成する場合、HTML と JavaScript を使用する Web フォームの知識が必要です。

特定のサービス タイプ (マップ サービスまたはイメージ サービス) 用の SOE のみを開発できます。 たとえば、マップ サービスおよびイメージ サービスの両方で動作する汎用的な SOE を開発することはできません。 この場合、マップ サービス用とイメージ サービス用の SOE を個別に開発する必要があります。

SOE の開発を行う前に、いくつかの代替手法を検討できます。 SOE 開発の代わりに、ビジネス ロジックを実行するジオプロセシング モデルを作成してから、これをサービスとして公開する方法もあります。 カスタム ビジネス ロジック コードを記述する代わりに、ModelBuilder を使用して必要なツールを対話的にドラッグ、ドロップ、および接続することができます。 ジオプロセシング サービスでは非同期実行も可能であるため、ジョブを開始してからも、他の作業をしながら、実行結果を確認することができます。

ジオプロセシング サービスの短所として、メモリのフットプリントが比較的大きく、SOE より実行に時間がかかることが挙げられます。 プロセスの実行回数が 1 日に数回だけであれば、これらの点は問題にならないでしょう。 ただし、プロセスを 1 日に何度も実行する場合や多数の同時ユーザーが発生する場合は、時間をかけて SOE を構築する価値があります。

これまで多くの開発者がさまざまなタスクに対してカスタム コードを作成してきましたが、これらのタスクは現在、カスタム コードを使用しなくても達成することができます。 エクステンションを開発しなくても、Web マッピングを利用する方法の詳細については、「サーバー オブジェクト エクステンションの代替手法」をご参照ください。

サーバー オブジェクト インターセプター

既存のマップおよびイメージ サービス (フィーチャ サービスのオペレーションなど、マップおよびイメージ サービスのエクステンションを含む) の振舞いを変更する場合は、SOI を使用することが適切です。 たとえば、クエリまたはマップ イメージのエクスポート リクエストの振舞いを変更できます。

SOI を開発して、デフォルトのマップまたはイメージ サービスでは満たせないセキュリティや監査上の要件などのカスタム ビジネス ロジックを実装することもできます。

  • すべてのリクエストを監査し、記録する。デバッグする目的の場合、リクエストで渡される入力パラメーターおよびユーザーの認証情報の詳細情報など、受信するリクエストなどの詳細情報を記録する一連の SOI を作成することができます。
  • サーバーによって作成されたすべてのマップ イメージにウォーターマークを含める。一連の SOI を作成して、サーバーによって作成されたマップ イメージにカスタム ウォーターマークを重ね合わせます。 これにより、組織またはホスティング企業は、すべての画像に対して適切にブランディングすることができます。
  • プロセス後の応答。空間データとその他のタイプのビジネス インテリジェンス データを統合するために、ArcGIS Server でサポートされていない各ビジネス システムの追加情報を、発信する応答に追加することができます。
  • マップ サービスにおける操作レベルのアクセスの制御。ArcGIS Server は、サービスのすべてのユーザーのサービス操作の有効化またはアクセスの完全な無効化のみをサポートします。 一連の SOI は、サービスに対する操作レベルのアクセスを実装するために、ユーザーのロールに基づいた受信リクエストをフィルタリングすることができます。
  • マップ サービスにおけるレイヤー レベルのアクセスの制御。ArcGIS Server は、サービス レベルのデータ アクセスのみをサポートします。ユーザーに、すべてのサービスに対するフル アクセスが付与されているか、アクセスがまったく付与されていないかのいずれかです。 一連の SOI を実装して、特定のレイヤーへのアクセスをフィルタリングしたり、ユーザーのロールに基づいてレイヤー内のデータをフィルタリングすることもできます。

一連のエクステンションを使用して 1 つ以上のタスクを実行したい場合、SOI を使用して実現することができます。 複数の SOI を、1 つ以上のサービスで一緒に連結することができます。 SOI のリストと、それらがチェーン内で実行される順序を、いつでも変更できます。

SOI を開発する前の注意事項

SOI には、Web 開発、ArcGIS 開発者ツール、Java などのプログラミング言語、C# などの .NET ベースの言語に関する知識が必要です。 Java で開発された SOI は Windows および Linux 上の ArcGIS Server にデプロイできますが、.NET で開発された SOI は Windows 上の ArcGIS Server にのみデプロイできます。

SOI は、ArcGIS Enterprise SDK を使用して開発できます。 この SDK を使用するとき、自動的に生成されるプロパティ ページのほかにエクステンション用に ArcGIS Server Manager のカスタム プロパティ ページを作成する場合、HTML を使用する Web フォームの知識が必要です。

特定のサービス タイプ (マップ サービスまたはイメージ サービス) 用の SOI のみを開発できます。 たとえば、マップ サービスおよびイメージ サービスの両方で動作する汎用的な SOI を開発することはできません。 この場合、マップ サービス用とイメージ サービス用の SOI を個別に開発する必要があります。

SOI を開発する前に、これが、必要としている機能かどうか検討してください。 新しい機能でサーバーを拡張する予定の場合、SOE またはジオプロセシング モデルおよびスクリプトを検討してください。 SOI は、既存のクライアント アプリケーションを意識しない方法で、既存の ArcGIS Server 操作に新しいビジネス ロジックまたは振舞いを追加する場合に最適です。