本エントリはASP.NET Advent Calendar 2015の1日目のエントリです。 今年はなぜかASP.NET Advent Calendar 2015を立てることになったので(とはいえ言い出しっぺではありません)、とりあえず1日目を担当させていただきます。
ASP.NET WebHooks
少し前のことですが、ASP.NET の新しいフレームワーク?として、ASP.NET Web Hooks (Preview)というのが登場しました。
アナウンスのエントリはこちら:
Introducing Microsoft ASP.NET WebHooks Preview
Webフック(WebHooks)とは?
WebHooks(Webフック)とはWebサービス同士を連携させるパターンというか方式というか……などど僕が説明するまでもなく、githubやSlackなど、開発者が利用するサービスではをはじめ色々なwebサービスで利用されているものですね。
参考:Webhook - Wikipedia, the free encyclopedia
そういえば、去年のASP.NET Advent CalendarでVS Online(現Visual Studio Team Services)のService Hookを受け取るサンプルを作ったエントリ書きましたが、まさにこれですね。
ASP.NET MVC と Azure Web Sites で VS Online のカスタムService Hookを作成してサクッとリモートデバッグする - きよくらの備忘録
ASP.NET WebHooksとは
詳細は上記のアナウンスのエントリや、少し前にいさみさんが翻訳されたInfoQの記事などを読んでいただくのが良いと思いますが、ざっくりいえば、
- (いろんなWebサービスの)Webフックによる通知を受信する機能をサクっと実装する
- 自分でWebフックを発行する機能をサクっと実装する
ためのインフラを提供するライブラリというかフレームワーク…ととらえて貰えれば良いように思います。
現時点では、 ASP.NET Web API 2 と ASP.NET MVC 5、つまるところ.NET Framework 4.xがターゲットになっているようです。
Receiverによるサービス対応
受信側の機能はサービスごとにReceiverを作成することで、プラガブルかつ再利用可能な形でいろいろなサービスに対応できる構造になっています。 現時点でも以下のReceiverが実装・NuGet経由で提供されています。
- for Azure WebHooks
- for BitBucket
- for Dropbox
- for Github
- for MailChimp
- for Paypal
- for Pusher
- for Salesforce
- for Slack
- for Stripe
- for Trello
- for Wordpress
- for your custom WebHooks implementation
- for generic WebHooks with special validation logic or security requirements
…Visual Studio Onlineに対応したWeb Hooksが無い当たりどうよ、とは思いますがまあ言わないでおきます*1。 もちろん上記のようなドンピシャのReceiverが存在しないサービスであっても、RESTなWeb Hooksのサービスであれば最後の二つのパッケージを利用して(一からやるよりは)楽して実装できそうですし、オリジナルのReceiverを実装することも可能です。
また、Visual Studio 2015向けのExtension、ASP.NET WebHooks Connected Serviceもリリースされています。 このExtensionを利用すると、受信したいサービスを選択するだけで必要なReceiverのパッケージを取り込むなどの下準備を整えてくれます(後ほど実際に試してみます)。
もちろんOSS
ASP.NET Web HooksはもちろんOSSで、github上のリポジトリはこちら。 aspnet/WebHooks
Receiverのソースも含まれているので、独自にReceiverを実装する場合も参考にすればよさそうです。
リソース
オフィシャルなリソースを以下に整理しておきます。チュートリアル的な記事もあるので軽く目を通して手を動かすのもよさそうです。
- リポジトリ
- ドキュメント
- 関連するオフィシャルなBlogエントリ
- Introducing Microsoft ASP.NET WebHooks Preview
- Integrating with Slack Using ASP.NET WebHooks Preview
- Integrating with Salesforce using ASP.NET WebHooks Preview
- Sending WebHooks with ASP.NET WebHooks Preview
- Integrating with Instagram using ASP.NET WebHooks Preview
- Announcing the ASP.NET WebHooks Visual Studio Extension Preview
- Receive WebHooks from Azure Alerts and Kudu (Azure Web App Deployment)
- Updates to Microsoft ASP.NET WebHooks Preview
- Using ASP.NET WebHooks with IFTTT and Zapier to Monitor Twitter and Google Sheets
試してみる(Slack連携)
ではさっそく、少し試してみます。 公式のエントリにもありますが、まずはSlackでサクっとやってみます。
*1:言ってる