微軟發布了ASP.NET WebHooks預覽版
英文原文:Microsoft Releases ASP.NET WebHooks Preview
微軟近期發布了 ASP.NET WebHooks 的預覽版,這是一個可用于創建及使用 Webhook 功能的庫。WebHooks 支持 MVC 5 及 WebApi 2。
Webhook 是一種通過 HTTP 實現用戶自定義回調函數的模式。客戶可以選擇訂閱某些類型的事件,并在這些事件實際發生時以 POST 請求的方式接收這些事件。Webhook 的一大要點在于它是使用 HTTP 實現的,這也意味著利用或實現這項技術無需任何新的基礎設施的支持。
ASP.NET WebHooks 為 Webhook 的發送與接收操作提供了基礎構建塊。在接收端,它提供了一種通用的模型,用于接收并處理來自于 Webhook 提供者的事件。而在發送端,它則提供了對管理訂閱與發送事件功能的支持。
InfoQ 與來自微軟 ASP.NET 團隊的 Henrik F Nielsen 和 Brady Gaster 進行了一次訪談,以了解該項目更多的細節信息。
InfoQ:成立 ASP.NET WebHooks 這一項目的動機是什么?
ASP.NET WebHooks 成立的動機有兩方面
1、WebHooks 為 HTTP 服務的整合提供了一種協議模式,從而能夠通過 HTTP 請求的形式建立一種非常簡單的事件通知模型。通過對某個 Webhook 的訂閱,你就能夠關注其他服務上的更新,并在更新時獲得通知。這樣一來,就有大量的整合場景成為可能。你將能夠與其他的服務進行交互、在變更時獲得通知、并進行相應的操作。這種整合可以包括任何形式,例如在 Dropbox 中上傳了某個新文件、在 Trello 中新建了一個 Issue、或是通過 PayPal 進行了一次支付操作。隨著 WebHooks 的應用不斷增多,這種應用場景也將產生指數級的增長。
2、雖說這一模式本身并不復雜,但還是有一些基本的規則需要處理。包括安全模型、數據格式、以及基于這一基本模式的各種變體。麻煩的地方在于,目前大多數的 Webhook 提供者在處理這些基本規則時都存在著細微的差別。這種差別就像雪花一樣,雖然每片雪花看起來都很相似,但多多少少存在著一些特別之處。ASP.NET WebHooks 的目的就是處理所有這些繁瑣的部分,提供一個統一的用戶模型,并讓用戶能夠快速開始進行在服務間進行整合的任務
InfoQ:Webhook 除了 HTTP 之外并沒有其他任何確立的協議,那么在發送方是否會存在某些方面的限制因素?(作為接收者來說)ASP.NET WebHooks 是否能夠自動兼容那些目前已經提供 Webhook 的服務呢?
HN:我們已經在項目中提供了針對各種服務的 Webhook,例如 Azure
Alerts、BitBucket、Dropbox、GitHub、Kudu、Instagram、
MailChimp、 PayPal、Pusher、Salesforce、Slack、Stripe、Trello,以及 WordPress,不過要添加對其他提供者的支持也是很簡單的,并且所支持服務的名單還在不斷地增長中。事實上,對于 Kudu 和 BitBucket 的支持是來自于社區所提交的 pull 請求,我們也正在添加對更多的提供者的支持。
InfoQ:到 WebHooks 正式發布為止,它的路線圖是怎樣的?
HN:關于正式發布的計劃,我們現在還沒有什么正式的說法,不過我們很樂于傾聽來自社區的反饋,并接受他們的貢獻,包括 pull 請求和各種建議
BG:我們從社區中獲得了一些反饋,他們希望能夠對 WebHook 接收消息的功能進行調試,就像在本地進行調式一樣。他們也欣賞遠程調試的想法,但更愿意能夠通過點擊“F5”來啟動他們的項目并發送 Webhook。我們目前正在為某些想法設計原型,爭取為 Visual Studio 帶來這一特性。
ASP.NET WebHooks 是一個開源項目,托管在 GitHub 平臺上。