Bu, temelde bir sistem tasarlamanın kavramsal bir yoludur - yazılım şirketleri, 'ESB' etiketini yapıştırarak size daha fazla satış yapmaya çalışır ve yöneticiler, bir ESB'nin 'üst düzeyden' iyi görünmesinden hoşlanır.
ESB, temelde ek bir veri modeli ve yapı tanımlama yönetimi içeren bir MOM'dur (mesaj yönelimli ara yazılım). Bu veri yolundaki tüm uygulamalar ve bağdaştırıcılar için ortak bir veri tanımınız vardır (paylaşılan bir XSD ile XML olabilir). Bağlanan her şey, bilgilerini bu veri tanımına bağlı kalarak göndermelidir * ZORUNLU *. ESB, bu ortak veri tanımının yüklenmesini, paylaşılmasını ve versiyonlanmasını destekler. Bir ESB'ye yeni bir bileşen bağlarken, bir MOM'a bağlamaya kıyasla kutudan daha fazla 'uyumluluk' bekleyebilirsiniz. Bu veriyolundaki her bileşen kavramsal olarak bir 'kaynak' olarak ele alınır - bu nedenle göndericiyi alıcıdan ayırmak için ek bir soyutlama uygulanır.
Örnek: Diyelim ki standart bir mesaj odaklı ara yazılımda A uygulamasını B uygulamasıyla bağlamak istiyorsunuz, JMS'yi ele alalım. B uygulaması üzerinde çalışan meslektaşlarınızla konuşun, bir konu, mesaj türü ve alanlar üzerinde anlaşın ve gönderin (sözde kod): sendJms ("TRADE.MSFT", {MapMessage trader = "pete" price = 101.4 vol = 100})
Aynı şeyi hizmet odaklı bir mimaride yaparsanız,
- ek yazılım yükleyin
- birçok yeni kavram öğren
- ESB'nin yönetici kullanıcı arayüzünde yeni Java bileşeninizi tanımlayın
- ESB tarafından kontrol edilen bazı arayüzleri uygulayın
- sendJms (getDestination (), {MapMessage trader = "pete" price = 101.4 vol = 100}) - hedefin ESB'den enjekte edildiğine dikkat edin
İlk seferinde muhtemelen biraz acı verici, ama sanırım alışabilirsin, tıpkı EJB'lere alışabildiğin gibi ;-)
Bir ESB 'yazılırken' (statik yapı) MOM sisteminin 'türsüz' (dinamik yapı) olduğunu söyleyebilirsiniz. Ham Mesajlaşma ile ESB arasındaki ödünleşimler, diğer türlenmemiş / yazılan seçeneklere benzer:
- REST ve SABUN
- XSD ile doğrulanmış XML ile doğrulanmamış XML
- Groovy ve Java
- yorumlanmış dil ile derlenmiş dil
Daha küçük projeler için işlevselliğe hızlı bir şekilde hashing uygulamak güzeldir (örn. Groovy kodu), ancak daha büyük projeler için bir hata ayıklayıcıya (örneğin Java) sahip olmak, işler bozulduğunda önceden uyarılmak ve insanlar için taahhütte bulunmadan önce bir standarda sahip olmak iyidir . proje.
Öyleyse, projeniz, doğrulanmamış değişiklikleri kontrol ederek sistemi çok fazla insanın kırmasından muzdaripse - daha fazla yapıya doğru ilerleyin (MOM yerine ESB). Projeleriniz zamanında yeterince iş yapamamaktan muzdaripse - daha basit, türlenmemiş çözümü seçin. İkisi de varsa - bir danışman bulun (sadece şaka ;-)