İlk olarak, ne yapmaya çalışıyorsunuz? SOA, nispeten kolay bir şekilde değişmesi ve yeni bir programlayıcıya erişmesi gereken sistemler için yararlıdır. Öte yandan, bir performans tradeoffuna sahip olursunuz çünkü ayrıştırarak kalıcılığa son verirsiniz - böylece etkileşimi veritabanında değil, uygulama sunucusunda gerçekleşir. Genellikle bu performans trajmanı bir sorun değildir, ancak yüksek bir işlem sistemi üzerinde çalışıyorsanız, veritabanına bazı algoritmalar koyarak ve bunların hizmetlerinizi bozduğundan ödün vermeniz gerekebilir.
Yani artılarını istiyor ve eksileri ile özel olarak ilgili değildir eğer, konuyla ilgili bazı uygulanabilir kitaplar okuyarak başlayın:
Ne doğru eğilim istediğiniz ilişkiler service locator kabın içinden dependency injection aracılığıyla yönetilen üst düzey hizmet nesnelerle bir tasarımdır. ColdFusion'ın durumunda ColdSpring bir örnektir. Bu daha sonra object mocking için izin verir, böylece kolayca birim testi yapabilirsiniz. Örneğin, hizmetler diğer sunucularda yaşıyorsa, yerel olarak bağımlılık olarak aktarılacak proxy'leri olan hizmet nesneleri var. Test için bu vekiller alay edilmez, böylece uzak sunucu ile konuşmak zorunda kalmazlar. Hata işleme ve sunucu kesintileriyle ilgili olarak
. Öncelikle, yerel sunucunun kontrolü dışındaki konularla uğraşmaktan endişe duyuyorsunuz. Bu, bir hizmet proxy nesnesinin kullanılmasının başka bir nedenidir. Bu amaç, zaman aşımları, kötü tepki değerleri ve benzeri ile ilgilenmekle sorumludur - etkin bir şekilde bir anti corruption layer.
veritabanı paylaşımı gelince, benim hizmet nesne ilişkilerini yansıtacak şekilde benim tablo ilişkileri inşa edecek. Dolayısıyla, eğer söz konusu tabloların sadece hizmetlerle ilgili veriye sahip olması durumunda, yabancı anahtar kısıtlamalarını zorlamam. Yani aynı veritabanında olsalar da, önemli değil. Bu, başka yerlerde bu hizmetleri ve veritabanı tablolarını kodda nispeten az değişiklik olan bir yere taşımanıza olanak sağlar.
Ve ESB genellikle servis odaklı bir mimaride kritik bir bileşen olarak görüntülenir. Arabuluculuk ve yönlendirme görevlerini yürütmek için bir ESB'siz, sahip olduğunuz tek şey web servislerini kullanan bir noktadan noktaya mimaridir. –
@ Brooks-Bilson ama "web servislerini kullanan noktadan nokta mimarisi" zaten bir SOA mimarisi olarak nitelendirilebilir, değil mi? – Henry