Web Kancalarına genel bakış ASP.NET
Web Kancaları, Web API'lerini ve SaaS hizmetlerini birbirine bağlamak için basit bir pub/sub modeli sağlayan basit bir HTTP desenidir. Bir hizmette bir olay gerçekleştiğinde, kayıtlı abonelere HTTP POST isteği biçiminde bir bildirim gönderilir. POST isteği, alıcının uygun şekilde davranmasını mümkün kılan olay hakkında bilgi içerir.
Basitliklerinden dolayı, Web Kancaları Dropbox, GitHub, Bitbucket, MailChimp, PayPal, Slack, Stripe, Trello ve daha birçok hizmet tarafından zaten kullanıma sunuldu. Örneğin, Web Kancası Dropbox'ta bir dosyanın değiştiğini veya GitHub'da kod değişikliğinin işlendiğini ya da PayPal'de bir ödeme başlatıldığını veya Trello'da bir kart oluşturulduğunu gösterebilir. Olasılıklar sonsuzdur!
Microsoft ASP.NET Web Kancaları, web kancalarını ASP.NET uygulamanızın bir parçası olarak göndermeyi ve almayı kolaylaştırır:
Alıcı tarafında, herhangi bir sayıda Web Kancası sağlayıcısından Web Kancalarını almak ve işlemek için ortak bir model sağlar. Dropbox, GitHub, Bitbucket, MailChimp, PayPal, Pusher, Salesforce, Slack, Stripe, Trello, WordPress ve Zendesk desteğiyle kullanıma sunulur, ancak daha fazlası için destek eklemek kolaydır.
Gönderen tarafta, abonelikleri yönetme ve depolamanın yanı sıra doğru abone kümesine olay bildirimleri gönderme desteği sağlar. Bu, abonelerin abone olabileceği kendi olay kümenizi tanımlamanıza ve olaylar gerçekleştiğinde onları bilgilendirmenize olanak tanır.
Senaryonuza bağlı olarak iki parça birlikte veya ayrı ayrı kullanılabilir. Yalnızca diğer hizmetlerden Web Kancaları almanız gerekiyorsa yalnızca alıcı bölümünü kullanabilirsiniz; Web Kancalarını yalnızca başkalarının kullanması için kullanıma açmak istiyorsanız, bunu yapabilirsiniz.
Kod, ASP.NET Web API 2 ve ASP.NET MVC 5'i hedefler ve GitHub'da OSS olarak kullanılabilir.
Web Kancalarına Genel Bakış
Web Kancaları, hizmetten hizmete nasıl kullanıldığının değiştiği ancak temel fikrin aynı olduğu anlamına gelen bir desendir. Web Kancalarını, kullanıcının başka bir yerde gerçekleşen olaylara abone olabileceği basit bir pub/sub modeli olarak düşünebilirsiniz. Olay bildirimleri, olayın kendisi hakkında bilgi içeren HTTP POST istekleri olarak yayılır.
Genellikle HTTP POST isteği, Web Kancası'nın tetiklemesine neden olan olay hakkındaki bilgiler de dahil olmak üzere Web Kancası göndereni tarafından belirlenen bir JSON nesnesi veya HTML form verileri içerir. Örneğin, GitHub'daki bir Web Kancası POST istek gövdesi, belirli bir depoda açılan yeni bir sorunun sonucu olarak şöyle görünür:
{
"action": "opened",
"issue": {
"url": "https://api.github.com/repos/octocat/Hello-World/issues/1347",
"number": 1347,
...
},
"repository": {
"id": 1296269,
"full_name": "octocat/Hello-World",
"owner": {
"login": "octocat",
"id": 1
...
},
...
},
"sender": {
"login": "octocat",
"id": 1,
...
}
}
Web Kancası'nın gerçekten de hedeflenen gönderenden geldiğinden emin olmak için POST isteğinin güvenliği bir şekilde sağlanır ve alıcı tarafından doğrulanır. Örneğin , GitHub Web Kancaları , alıcı uygulaması tarafından denetlenen istek gövdesinin karması ile bir X-Hub-Signature HTTP üst bilgisi içerir, böylece bu konuda endişelenmeniz gerekmez.
Web Kancası akışı genellikle şöyle gider:
Web Kancası göndereni, bir istemcinin abone olabileceği olayları kullanıma sunar. Olaylar, sistemde gözlemlenebilir değişiklikleri, örneğin yeni bir veri öğesinin eklendiğini, bir işlemin tamamlandığını veya başka bir şeyi açıklar.
Web Kancası alıcısı, dört şeyden oluşan bir Web Kancası kaydederek abone olur:
Olay bildiriminin HTTP POST isteği biçiminde gönderileceği URI;
Web Kancası'nın tetiklenmesi gereken belirli olayları açıklayan bir filtre kümesi;
HTTP POST isteğini imzalamak için kullanılan gizli anahtar;
HTTP POST isteğine eklenecek ek veriler. Bu, örneğin EK HTTP üst bilgisi alanları veya HTTP POST istek gövdesine dahil edilen özellikler olabilir.
Bir olay gerçekleştiğinde eşleşen Web Kancası kayıtları bulunur ve HTTP POST istekleri gönderilir. Genellikle, alıcı herhangi bir nedenle yanıt vermiyorsa veya HTTP POST isteği bir hata yanıtıyla sonuçlanıyorsa HTTP POST isteklerinin oluşturulması birkaç kez yeniden deneniyor.
Web Kancaları İşlem Hattı İşleme
Gelen Web Kancaları için Microsoft ASP.NET Web Kancaları işlem hattı şöyle görünür:
Buradaki iki temel kavram Alıcılar ve İşleyiciler'dir:
Alıcılar , belirli bir gönderenden gelen Web Kancası'nın belirli bir türünü işlemekten ve Web Kancası isteğinin hedeflenen gönderenden olduğundan emin olmak için güvenlik denetimleri uygulamaktan sorumludur.
İşleyiciler genellikle kullanıcı kodunun belirli bir Web Kancasını işlerken çalıştığı yerdir.
Aşağıdaki düğümlerde bu kavramlar daha ayrıntılı olarak açıklanmıştır.