このプロジェクトは、イベントへのサブスクリプションの管理、基本的な変換、およびそのようなイベントの発生( Webhooks )の通知のための一連の.NETツールを提供します。グローバルな設計範囲では、このモデルでは、他のシステムからの予想される発生時にイベント駆動型アーキテクチャ、システムプロセスをトリガーします。
この統合モデルは、主要なサービスプロバイダー( SendGrid 、 Twilio 、 Github 、 Slackなど)によって広く採用されていますが、コンプライアンスを強制する正式なプロトコルや権限はありません(OpenID、Openapiなどの他のケースなど)。
とにかく、典型的な実装は次の要素で構成されています。
このリポジトリ内のこのページで、このページで概念をより詳細に表現しようとしました(教育を受けられるという野心なし)。
フレームワークによって現在提供されているライブラリは次のとおりです。
| 図書館 | ヌゲット | github(prerelease) |
|---|---|---|
| deveel.webhooks | ||
| deveel.webhooks.sender | ||
| deveel.webhooks.service | ||
| deveel.webhooks.mongodb | ||
| deveel.webhooks.entityframework | ||
| deveel.webhooks.dynamiclinq | ||
| deveel.webhooks.receiver.aspnetcore |
次のライブラリは、特定のプロバイダーのレシーバーを使用してフレームワークを拡張します。
| 図書館 | ヌゲット | github(prerelease) |
|---|---|---|
| deveel.webhooks.receiver.twilio | ||
| deveel.webhooks.receiver.sendgrid | ||
| deveel.webhooks.receiver.facebook |
Nuget公式チャンネルからこれらのライブラリの安定したバージョンを取得できます。
パッケージの最新のプレリリースバージョンを取得するには、Deveelパッケージマネージャーから復元できます。
このフレームワークを始めて、最終的に拡張するのを手伝いたいと思います。ドキュメントセクション、または私たちがあなたのために作成した公式ウェブサイトを参照してください。
開始する最も簡単な方法は、 Getting Start Guideに従うことですが、最も一般的な質問への回答を得るために、よくある質問セクションを参照することもできます。
.NET Core 3.1/.NET 5 PAAS ( Platform-as-a-service )プロジェクトに取り組んでいる間、サービスのユーザーの機能を機能的に必要とするプロジェクトでは、HTTPチャネルを通じてシステム間サブスクリプションとイベントの通知を作成できることを機能させることができました(通常はWebhooks 、またはHTTPコールバックと呼ばれます)。そのような野望に不満を抱いています:
フレームワークのドキュメントでは、フレームワークの要件、構成、使用、および拡張性の詳細が提供されます。
とにかく、フレームワークを始めるのを助けるために、シンプルなWebhook管理サービスを作成する方法、サブスクリプションと通知を処理する方法、クライアントレシーバーを示す次の例を検討してください。
サービスプロバイダーとして、このライブラリは、Webhookパターンの2つの主要な側面を処理する機能を提供します。
次の例は、WebHookサブスクリプションの作成方法と、サブスクライバーエンドポイントに通知を送信する方法を示しています。
using Microsoft . AspNetCore . Builder ;
using Deveel . Webhooks ;
namespace Example {
public class Program {
public static void Main ( string [ ] args ) {
var builder = WebApplication . CreateBuilder ( args ) ;
// ...
builder . Services . AddWebhookSubscriptions < MongoWebhookSubscription > ( subs => {
subs . UseMongoDb ( "mongodb://localhost:27017" )
. UseSubscriptionResolver ( ) ;
} ) ;
builder . Services . AddWebhookNotifier < MyWebhook > ( notifier => {
notifier . UseSender ( sender => {
sender . Configure ( options => {
options . Timeout = TimeSpan . FromSeconds ( 30 ) ;
} ) ;
} ) ;
} ) ;
var app = builder . Build ( ) ;
// ...
// ... and notify the receivers manually ...
app . MapPost ( "/webhooks" , async ( HttpContext context ,
[ FromServices ] IWebhookSender < MyWebhook > sender , [ FromBody ] MyWebhookModel webhook ) => {
var destination = webhook . Destination . ToWebhookDestination ( ) ;
var result = await sender . SendAsync ( destination , webhook , context . HttpContext . RequestAborted ) ;
// ...
return Results . Ok ( ) ;
} ) ;
// ... or notify the webhooks automatically from subscriptions
app . MapPost ( "/webhooks/notify" , async ( HttpContext context ,
[ FromServices ] IWebhookNotifier < MyWebhook > notifier , [ FromBody ] MyEventModel eventModel ) => {
var eventInfo = eventModel . AsEventInfo ( ) ;
var result = await notifier . NotifyAsync ( eventInfo , context . HttpContext . RequestAborted ) ;
// you can log the result of the notification to all receivers ...
return Results . Ok ( ) ;
} ) ;
app . Run ( ) ;
}
}
} このフレームワークは、アプリケーションのサブスクライブエンドポイントからの着信通知を処理するために使用できるビルトインレシーバーのセットも提供します。
次の例は、Facebookメッセンジャーメッセージに裏付けられているWebhookのレシーバーを作成する方法を示しています。
namespace Example {
public class Program {
public static void Main ( string [ ] args ) {
var builder = WebApplication . CreateBuilder ( args ) ;
// ...
builder . Services . AddFacebookReceiver ( )
. AddHandler < MyFacebookWebhookHandler > ( ) ;
var app = builder . Build ( ) ;
// ...
// ... you can handle all the incoming webhooks at "/webhooks/facebook"
// invoking all the handlers registered in the service collection ...
app . MapFacebookWebhook ( "/webhooks/facebook" ) ;
// ... or you can handle the incoming webhooks manually ...
app . MapFacebookWebhook ( "/webhooks/facebook2" , async ( FacebookWebhook webhook , IService service , CancellationToken ct ) => {
// ...
await service . DoSomethingAsync ( webhook , ct ) ;
} ) ;
app . Run ( ) ;
}
}
} Deveel Webhooksのようなオープンソースプロジェクトへの貢献は、一般に、製品とサービスの使用に関心があります。
このプロジェクトの品質を貢献し、改善する最良の方法は、それを試して、問題を提出し、デザインの会話に参加し、プルレクストを作成することです。
貢献ガイドラインを参照して、このプロジェクトに貢献する方法の詳細を受け取ります。
ドキュメントを提供し、よくある質問に答え、バグレポートや機能リクエストなどの問題についてフォローアップすることにより、ほとんどの質問に対処することを目指しています。
このプロジェクトは、Apache 2オープンソースライセンス契約に基づいてリリースされます。