Hizmet odaklı bir mimari (SOA), uygulama bileşenlerinin, tipik olarak bir ağ üzerinden bir iletişim protokolü aracılığıyla diğer bileşenlere hizmet sağladığı, bilgisayar yazılım tasarımında bir mimari modeldir. Hizmet odaklılık ilkeleri herhangi bir ürün, satıcı veya teknolojiden bağımsızdır.
SOA, çeşitli ağlar üzerindeki yazılım bileşenlerinin birbiriyle çalışmasını kolaylaştırır.
SOA mimarisine göre oluşturulan web servisleri, web servisini daha bağımsız hale getirme eğilimindedir. Web servisleri kendi aralarında veri alışverişinde bulunabilirler ve oluşturuldukları temel ilkeler nedeniyle herhangi bir insan etkileşimine ihtiyaç duymazlar ve ayrıca herhangi bir kod değişikliğine ihtiyaç duymazlar. Bir ağdaki web hizmetlerinin birbirleriyle sorunsuz bir şekilde etkileşime girmesini sağlar.
SOA, aşağıda belirtilen bazı temel ilkelere dayanmaktadır
- Standartlaştırılmış Hizmet Sözleşmesi - Hizmetler, bir hizmet açıklamasına bağlıdır. Bir hizmet, hizmetin ne hakkında olduğunu açıklayan bir tür açıklamaya sahip olmalıdır. Bu, istemci uygulamalarının hizmetin ne yaptığını anlamasını kolaylaştırır.
- Gevşek Kaplin - Birbirine daha az bağımlılık. Bu, web hizmetleri ile web hizmetini çalıştıran istemci arasında mümkün olduğunca az bağımlılık olması gerektiğini belirten web hizmetlerinin temel özelliklerinden biridir. Bu nedenle, hizmet işlevselliği herhangi bir zamanda değişirse, istemci uygulamasını bozmamalı veya çalışmasını durdurmamalıdır.
- Hizmet Soyutlama - Hizmetler, kapsadıkları mantığı dış dünyadan gizler. Hizmet, işlevselliğini nasıl yürüttüğünü ifşa etmemelidir; istemci uygulamasına nasıl yaptığını değil, ne yaptığını söylemelidir.
- Hizmetin Yeniden Kullanılabilirliği - Mantık, yeniden kullanımı en üst düzeye çıkarmak amacıyla hizmetlere bölünmüştür. Herhangi bir geliştirme şirketinde yeniden kullanılabilirlik büyük bir konudur çünkü açıkçası, aynı kodu, bunları gerektiren birden çok uygulamada tekrar tekrar oluşturmak için zaman ve çaba harcamak istemezsiniz. Bu nedenle, bir web hizmetinin kodu bir kez yazıldığında, çeşitli uygulama türleriyle çalışma yeteneğine sahip olmalıdır.
- Hizmet Özerkliği - Hizmetler, kapsadıkları mantık üzerinde kontrole sahip olmalıdır. Hizmet, sunduğu işlevlerle ilgili her şeyi bilir ve dolayısıyla içerdiği kod üzerinde tam kontrole sahip olmalıdır.
- Hizmetin Vatansız Olması - İdeal olarak, hizmetler vatansız olmalıdır. Bu, hizmetlerin bir eyaletten diğerine bilgi saklamaması gerektiği anlamına gelir. Bunun ya istemci uygulamasından yapılması gerekir. Bir alışveriş sitesine verilen sipariş buna bir örnek olabilir. Artık size belirli bir ürünün fiyatını veren bir web hizmetine sahip olabilirsiniz. Ancak ürünler bir alışveriş sepetine eklenirse ve web sayfası ödemeyi yaptığınız sayfaya giderse, ödeme sayfasına aktarılacak ürünün fiyatının sorumluluğu web servisi tarafından yapılmamalıdır. Bunun yerine web uygulaması tarafından yapılması gerekiyor.
- Hizmet Keşfedilebilirliği - Hizmetler keşfedilebilir (genellikle bir hizmet kayıt defterinde). Bunu, web hizmeti hakkında bilgi tutabilen bir kayıt işlemi gerçekleştiren UDDI konseptinde zaten görmüştük.
- Hizmet Birleştirilebilirliği - Hizmetler, büyük sorunları küçük sorunlara böler. Bir uygulamanın tüm işlevlerini hiçbir zaman tek bir hizmete yerleştirmemeli, bunun yerine hizmeti, her biri ayrı bir iş işlevine sahip modüllere ayırmalısınız.
- Hizmet Birlikte Çalışabilirliği - Hizmetler, çeşitli abonelerin hizmeti kullanmasına izin veren standartları kullanmalıdır. Web hizmetlerinde XML gibi standartlar ve HTTP üzerinden iletişim bu prensibe uyduğundan emin olmak için kullanılır.