โครงการนี้มีชุดเครื่องมือ. NET สำหรับการจัดการการสมัครสมาชิกไปยังกิจกรรมการแปลงขั้นพื้นฐานและการแจ้งเตือนเหตุการณ์ที่เกิดขึ้น ( webhooks ): ในขอบเขตการออกแบบทั่วโลกแบบจำลองนี้ช่วยให้สถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์ทำให้กระบวนการระบบเกิดขึ้นเมื่อเกิดเหตุการณ์ที่เกิดขึ้นจากระบบอื่น ๆ
แม้ว่ารูปแบบการรวมนี้จะถูกนำมาใช้อย่างกว้างขวางโดยผู้ให้บริการรายใหญ่ (เช่น 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 Package Manager
เราต้องการช่วยให้คุณเริ่มต้นด้วยกรอบนี้และในที่สุดก็ขยาย: โปรดดูส่วน เอกสาร หรือไปยัง เว็บไซต์อย่างเป็นทางการ ที่เราผลิตให้คุณ
วิธีที่ง่ายที่สุดในการเริ่มต้นคือการทำตามคู่มือ การเริ่มต้นใช้งาน แต่คุณสามารถอ้างถึงส่วน คำถามที่พบบ่อย เพื่อรับคำตอบสำหรับคำถามที่พบบ่อยที่สุด
ในขณะที่ทำงานในโครงการ. NET Core 3.1/.NET 5 PAAS ( แพลตฟอร์ม -เป็นบริการ ) ที่ต้องการความสามารถในการใช้งานของผู้ใช้บริการที่สามารถสร้างการสมัครสมาชิกระบบกับระบบและการแจ้งเตือน เหตุการณ์ ผ่านช่อง HTTP ผิดหวังในความทะเยอทะยานดังกล่าว:
เอกสารของกรอบงาน จะให้รายละเอียดเพิ่มเติมเกี่ยวกับข้อกำหนดการกำหนดค่าการใช้งานและการขยายกรอบ
อย่างไรก็ตามเพื่อช่วยให้คุณเริ่มต้นกับเฟรมเวิร์กโปรดพิจารณาตัวอย่างต่อไปนี้ที่แสดงวิธีการสร้างบริการการจัดการ webhook อย่างง่ายที่จัดการการสมัครรับข้อมูลและการแจ้งเตือนและผู้รับลูกค้า
ในฐานะผู้ให้บริการห้องสมุดนี้มีฟังก์ชั่นในการจัดการสองด้านหลักของรูปแบบ webhook:
ตัวอย่างต่อไปนี้แสดงวิธีสร้างการสมัครสมาชิก 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 ( ) ;
}
}
} เฟรมเวิร์กยังมีชุดตัวรับสัญญาณในตัวที่สามารถใช้ในการจัดการการแจ้งเตือนที่เข้ามาจากจุดสิ้นสุดที่สมัครเข้ามาในแอปพลิเคชันของคุณ
ตัวอย่างต่อไปนี้แสดงวิธีสร้างตัวรับสัญญาณสำหรับ webhook ที่ได้รับการสนับสนุนจากข้อความ Facebook Messenger:
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