Copyright© 2017  Aiprovide Corporation all Right Reserved.

  • Aiprovide Coroporation
  • Aiprovide Corporation

Provider Hosted App + Azure[オンライン]

2017/05/07

​この記事は、SharePointアドインのProvider Hosted Appの利点と、それをMicrosoft Azureを利用して構築することの提案を記載しています。

SharePoint 2013版のSharePoint Onlineが登場した際に、プログラムによる機能拡張は、アプリ(SharePointアドイン)で行うことになりました。


実際の開発現場でのプログラムによるカスタマイズは、スクリプトエディターWebパーツを配置し、そこにJavaScriptでプログラムを記載する方法が、簡単で使い勝手が良かったりします。
ですが、当然、SharePointアドインを利用する利点がある筈で、特に、Provider Hosted Appは従来のオンプレミスの業務アプリケーションの開発技法を置き換えるものになり得ます。

 

1.SharePointアドイン(アプリの3形態 → 2形態)
 SharePointアドイン(アプリ)の場合は、これとは実装形態が全く異なっています。実装形態としては、当初、次の3形態から採用できました。


①SharePoint Hosted App

  • アプリは、サイトコレクション内に実装される。

  • アプリがサイトコレクションに登録される際に、専用のサイト(App Web)が作成される。

  • プログラムはこの専用サイト(App Web)上で動作する。

  • この専用のサイト(App Web)は、アプリを登録したサイトコレクションとは別のドメインが割り当てられる。

  • プログラムは、Javascriptでしか書けない。

 

②Provider Hosted App

  • アプリの実行環境として、アプリの開発元が、SharePointとは別に専用のWebサーバーを用意する。

  • プログラムは、上記のWebサーバー上で動作する。

  • プログラムの開発に、任意のサーバーサイド技術が使える。(ASP.NET、PHP、etc)

  • リモートイベントレシーバーを実装できる。


③Auto Hosted App

  • アプリをインストールする際に、SharePoint Onlineが自動で「Microsoft Azure」上にWebサーバーを用意する。

  • 同時に、SQL Databaseも「Microsoft Azure」上に用意する。

  • プログラムは、上記のAzure上のWebサーバー上で動作する。

  • プログラムの開発に、ASP.NET技術が使える。

  • リモートイベントレシーバーを実装できる。


「③」の「Auto Hosted App」ですが、SharePoint Onlineの契約をしてテナントを所有すれば、利用できました。
この「Auto Hosted App」ですが、「テナント毎に、Webサーバーを持つので、アクセスの集中が緩和される。」という利点があります。


 アプリは開発元が販売できることを目指していたため、開発元が「Auto Hosted App」ではなく「Provider Hosted App」を採用してアプリを開発し販売すると、Webサーバーはその開発元が所有することになります。

「Provider Hosted App」を採用したアプリが爆発的に売れて、そのアプリを利用するユーザーが非常に増加した場合、その開発元のWebサーバーにアクセスが集中します。結果、負荷の程度によっては充分な応答性能を満たせなくなり、ユーザビリティに問題がでる可能性もあります。
 

 しかし、「Auto Hosted App」の場合は、テナント毎にWebサーバーがありますので、この負荷の集中はテナント内に収まります。つまり、他のテナントの利用ユーザーには影響が及びません。結果、ユーザビリティの問題は解消されます。
この様な利点を持った「Auto Hosted App」ですが、Microsoft社としてもサポートし続けることが困難との判断からか、現時点では「Auto Hosted App」の開発および実装はできなくなっています。

 

 

2.Provider Hosted Appの利点
 「Auto Hosted App」の廃止に伴い、アプリの開発は「SharePoint Hosted App」か「Provider Hosted App」のいずれかで行うことになりました。

 上記のように「Provider Hosted App」を採用した場合は、別途にWebサーバーを用意する必要があります。しかし、個人的な意見としては、特に、業務アプリを開発する場合は、別途にWebサーバーが必要であるとしても、以下の理由から「Provider Hosted App​」の方が向いていると考えています。

 

 

 


​①リモートイベントレシーバーが実装可能

 オンプレでシステムを開発する際に、イベントレシーバーを実装する場合が多々あります。

イベントレシーバーを使用するとアイテムの追加/変更/削除のイベントを捉まえて起動するプログラムを記述することができます。

 同様なことを、Java scriptプログラムで実装する事は不可能です。

リストでは、NewForm.aspx、EditForm.aspxの[保存]ボタンや[OK]ボタンに、Java scriptプログラムを追加することでカスタマイズを実装したりしますが、削除のイベントに対応することはできません。ドキュメントライブラリの場合は、さらに難しく、アイテムはOffice文書であることがほとんどであり、変更はクライアントPCのOfficeアプリケーションで行われることがほとんどです。また、アイテムの追加はビュー画面上へのドラッグアンドドロップであったり、エクスプローラービューによるローカルPC上でのコピーだったりします。

 それに対して、「Provider Hosted App」を使用すると、このイベントレシーバーの実装が可能となります。アイテムの追加/変更/削除のイベントは、外部Webサーバーに実装したWeb Serviceが受けることになりますが、オンプレのイベントレシーバーに実装したものと同様な機能の実現が可能となります。

 

②C# + CSOMが使える

 外部Webサーバー上では、任意のサーバーサイド技術(ASP.NET、PHP、Node.js、etc)が使えることにはなっていますが、開発現場では、それまでオンプレで開発してきた技術者が引き続き開発を行うのが実情ではないでしょうか。この際は、「C# + CSOM(Client Side Object  Model)」で開発を行いのが普通だと思います。

 CSOMは、オンプレのサーバーサイドAPIとは異なるものの基本的な考え方は踏襲しており、それまでオンプレドで開発を行ってきた技術者が取り組み易いものとなっています。

 また、賛否両論があると思いますが、上記の技術者は、Java scriptで開発するよりもC#で開発した方が開発効率が高いと想像されます。

 

 

 

3.Provider Hosted App + Azure

 「Provide Hosted App」の利点は解ったとして、

  別途に外部Webサーバーを用意する必要がある。

というハードルがあります。外部Webサーバーとしては、社内のローカルLan上にWebサーバーを立てることも可能ですが、特に、SharePoint Onlineを使用してインフラ側の維持コストの抑制を図っている場合、このWebサーバーでインフラ側のコストを増大させることは得策ではありません。

 そこで、このWebサーバーを「Microsoft Azure」上に構築する方法が推奨されます。これにより、インフラ側のコストを抑えつつ、上記の「Provide Hosted App」

実際の「Provider Hosted App + Azure」の実装方法について、

Provide Hosted App + Azure No.2 [online]

に記載しました。

 

Share on Facebook
Share on Twitter
Please reload

RECENT POST
Please reload