Düzenle:
Ayrıca Karışıklığı önlemek için: Ben am değil web hizmetleri ve bu tür bahsediyor. Uygulamaları dahili olarak yapılandırmaktan bahsediyorum, bu bilgisayarların nasıl iletişim kurduğundan değil. Programlama dilleri, derleyiciler ve zorunlu programlama paradigmasının nasıl genişletildiği ile ilgilidir.
Orijinal:
Zorunlu programlama alanında, son 20 yılda (veya daha fazla) iki paradigma gördük: nesne yönelimli (OO) ve hizmet yönelimli (SO) aka. bileşen tabanlı (CB).
Her iki paradigma da kendi modül kavramlarını sunarak zorunlu programlama paradigmasını genişletir. OO onlara nesneleri (ve sınıfları) çağırır ve hem verileri (alanları) hem de prosedürleri (yöntemleri) birlikte kapsüllemelerine izin verir. SO, aksine, verileri (kayıtlar, fasulye, ...) koddan (bileşenler, hizmetler) ayırır.
Bununla birlikte, yalnızca OO'nun paradigmasını yerel olarak destekleyen programlama dilleri vardır: Smalltalk, C ++, Java ve diğer tüm JVM uyumlu, C # ve diğer tüm .NET uyumlu, Python vb.
SO'nun böyle bir ana dili yoktur. Sadece yordamsal dillerin veya OO dillerinin üzerinde ortaya çıkar: COM / DCOM (ikili, C, C ++), CORBA, EJB, Bahar, Guice (tüm Java), ...
Bu SO çerçeveleri, kavramlarının eksik ana dil desteğinden açıkça muzdariptir.
- Hizmet ve kayıtları temsil etmek için OO sınıflarını kullanmaya başlarlar. Bu, yalnızca yöntemi olan (hizmetler) ve yalnızca alanları olan (kayıtlar) sınıflar arasında açık bir ayrımın olduğu tasarımlara yol açar. Hizmetler veya kayıtlar arasında kalıtım, daha sonra sınıfların kalıtımı ile simüle edilir. Teknik olarak, kesinlikle katı tutulmaz, ancak genel olarak programcılar, iki rolden sadece birini oynamak için sınıflar yapmak için tavsiye edilir.
- Eksik kısımları temsil etmek için ek harici diller kullanırlar: IDL'ler, XML yapılandırmaları, Java kodundaki ek açıklamalar ve hatta Guice'deki gibi gömülü DSL. Bu özellikle gereklidir, ancak bunlarla sınırlı değildir, çünkü hizmetlerin bileşimi hizmet kodunun kendisinin bir parçası değildir. OO'da, nesneler başka nesneler oluşturur, böylece bu tür tesislere gerek kalmaz, ancak SO için hizmetler diğer hizmetleri başlatmaz veya yapılandırmaz.
- Programcının SO'yu "sürmek" için gerekli olan tüm kodları yazması gereken OO (erken EJB, CORBA) üstünde bir iç platform etkisi oluştururlar. Sınıflar bir hizmetin doğasının sadece bir bölümünü temsil eder ve birlikte bir hizmet oluşturmak için birçok sınıf yazılmalıdır. Tüm bu kazan plakası gereklidir, çünkü programcı için yapacak bir SO derleyicisi yoktur. Bu, bazı insanların C ++ olmadığında OO için C'de yaptığı gibi. Sadece nesnenin verilerini ilk parametre olarak tutan kaydı yöntem olan prosedüre geçirirsiniz. OO dilinde bu parametre örtüktür ve derleyici sanal işlevler vb. İçin ihtiyaç duyduğumuz tüm kodu üretir. SO için bu açıkça eksiktir.
- Özellikle daha yeni çerçeveler, eksik parçaları bir OO diline eklemek için AOP veya içgözlemi kullanır. Bu, gerekli dil ifadesini getirmez, ancak önceki noktada açıklanan kazan platform kodundan kaçınır.
- Bazı çerçeveler, kazan plakası kodunu üretmek için kod üretmeyi kullanır. XML'deki yapılandırma dosyaları veya OO kodundaki ek açıklamalar bunun için bilgi kaynağıdır.
Yukarıda bahsettiğim tüm fenomenler SO'ya atfedilemez, ancak umarım bir SO diline ihtiyaç olduğunu açıkça gösterir. Bu paradigma çok popüler olduğundan: neden bir tane yok? Ya da belki bazı akademik olanlar da vardır ama en azından endüstri bir tane kullanmaz.