Benim önerim, bu konuda hızlı olmanız ve sadece WCF ile dayanıklı (bağlantısız) çalışmayı kolaylaştırmak için basit bir şeye ihtiyacınız varsa, WCF - MSMQ bağlarına bakmaktır. Daha geniş bir ortamda bir şeye ihtiyacınız varsa nServiceBus'a bakın.
Aklımda, nServiceBus daha geniş bir dağılmış ortamda parlamaya başlayacaktı. Örneğin, aşağıdaki örneği ele alalım (bu, WCF ile yeryüzünde cehennem olur, ancak nServiceBus ile basittir):
- Uygulama sunucusu katmanı, önbellek sunucusu katmanı, salt okunur veritabanı katmanı, okuma / yazma veritabanı katmanından oluşan altyapı
- Müşteri yeni bir giriş gönderdiğinde, bu katmanların bir kerede güncellenmesini gerçekten istersiniz
- WCF'de, her katman düzeyinde ayrı hizmetler sunmanız ve istemcinin hepsine göndermesini sağlamanız gerekir (veya aynı şeyi sizin için aynı şeyi yapması gerekir)
- NServiceBus'ta her katmanın bu bilgilere abone olmanız gerekir ve müşteri bunu bir kez yayınlar, böylece servis veriyolunun geri kalanıyla ilgilenmesini sağlar
WCF'de MSMQ Bağlamaları var
Bununla birlikte, çoğunlukla WCF ile yapışmanız gerekiyorsa (kısa zaman çizelgeleri, diğer WCF özelliklerine ihtiyacınız var), MSDN'deki bu makaleye göz atmanızı öneririm . MSMQ için WCF bağlarının nasıl kullanılacağını ve bir hizmetin HTTP'den MSMQ'ya nasıl geçirileceğini gösterir. Yol boyunca size bu senaryo ile ilgili bazı sorunları (ve bu sorunlara faydalı çözümleri) gösterir.
Bu önerilerin her ikisi de MSMQ'dan yoğun bir şekilde yararlanır, bu nedenle bununla ilgili bir not: Apache MQ, RabbitMQ ve diğer popüler kuyruk sistemlerinin aksine, MSMQ tipik bir aracı tabanlı kuyruk mimarisi değildir, bunun yerine dağıtılmış bir kuyruktur. Bu, WCF istemciniz, kuyruğu barındıran uzak sunucuya bağlanamadığında bir MSMQ aktarımı üzerinden bir ileti gönderirse, istemci makine bunun yerine yerel olarak "Giden Kuyruk" olarak adlandırılan iletide enqueque olacağı anlamına gelir. İleti, istemcinin MSMQ hizmeti uzak MSMQ hizmetine yeniden bağlanabileceğini algılayana kadar güvenli bir şekilde kalacaktır. Bu noktada, mesaj istemciden son hedefe akacaktır.
Yukarıdakilere en az bir uyarı verilir - uzak sunucu çok uzun süre çevrimdışıysa (MSMQ için belgelerinizi kontrol edin) istemci vazgeçer ve mesajı giden harften çıkmaz kuyruğa taşır. Ölü harf kuyruğuna aktarılan iletiler otomatik olarak yeniden gönderilemez, yeniden oluşturulmaları gerekir.
Şifrelemeye ihtiyacınız varsa ve ActiveDirectory yoksa, bu blog girişinde Sergey Sorokin, MSMQ'nun Active Directory olmadan WCF kullanarak iletişimini şifrelemek için gerekli adımları detaylandırır.