SOA
Anahatlar SOA Nedir? SOA'nın Ayrıntıları Hizmet Arayüzleri Nasıl Olmalı? İstem ve Sunum Sonuç
SOA Tanım SOA, bir iş sürecinin ya da kullanıcının ihtiyaclarını gidermek üzere birbirinden bağımsız yazılım hizmetlerini bir araya getirmeye çalışan mimariyi ifade eder. SOA ortamında, ağdaki hizmetler alt yapılarından bağımsız bir şekilde ortak arayüzlerle erişime açıktır. SOA da sunulan hizmetler hiçbir teknolojiye bağımlılık göstermeden, arzulanan teknolojiler kullanılarak gerçekleştirilerbilir. (RPC, DCOM, ORB, WSDL) Aslında bunlara bile bağlı kalmadan, SOA bağlamını destekleyen bir arayüzü kullanan herhangi bir sistemle gerçekleştirilebilir. BAĞIMSIZ HİZMETLER + ORTAK ARAYÜZLER SOA
SOA (Ayrıntılar) Tam olarak tanımlanmış, kullanımı kolay ortak arayüzler Kendi içinde anlamlı bir bütün olan, başka hizmetlerden bağımsız hizmetler Devamlı erişilebilir Hizmetlerin davranışları öngörülerbilir Birleştirme maliyeti olmaksızın kullanıma hazır olmalı Hizmeti kullananlardan bağımsız Birden fazla hizmeti bir araya getirerek yeni hizmetler meydana getirme imkanı Hizmet kalitesi ölçülebilir
SOA Hizmet Arayüzleri Nasıl Olmalı? Kimsenin mülkiyetinde olmamalı Çok biçimliliğe uygun olmalı Gerçekleştirimler hizmet istemcilerinin hiçbirini dışlayacak şekilde değiştirilebilir olmalı
Hizmeti kullananlar istemini ifade eder İstem ve Sunum Hizmeti kullananlar istemini ifade eder Hizmeti sunanlar sunumlarını gerçekleştirir Bir aracı yönlendirme gerçekleştirebilir İsteme en uygun sunumu sağlar Değişik sunumları farklılaşmış istemler için ilan eder
Hizmetleri Nasıl Bulacağız? Pek çok hizmeti tamamen bağlantılı bir ağda hizmete açıyoruz. Peki bunlara nasıl ulaşacağız? Bir ya da birden çok kayıt merkezi olmalı. Hizmet sunanlar hizmetlerini bu noktalara kaydetmeli. Hizmet isteminde bulunanlar hizmetlerle ilgili erişim ve kullanım arayüzlerine buradan ulaşmalı.
Nasıl Gerçekleştireceğiz? Mevcut uygulamalarız nasıl? Mevcut uygulamalarız nasıl? MVC (Model View Controller) çerçevesinde çalışan Kendi iş mantığına göre işleyen Belirli bir kullanıcıya (request/response çerçevesinde) hizmet veren uygulamalar SOA'da nasıl olmalı? Eşgüdümü sağlayacak yapılar eklenmeli Hizmet arayüzleri sağlanmalı Bağımsız hizmet sunumları şeklinde gerçekleştirilmeli
Code Munger (2) Üreteç Yapısı
Satıriçi Kod Açılımı (Inline Code Expander) Satır içi kod üretim yöntemi yeni bir dilin tasarlanmasıyla başlar. Genellikle bu mevcut bir dile bazı eklentilerle gerçekleştirilir. Daha sonra bu üreteç, gerçekleştirim düzeyinde kullanılan dile dönüştürülür. (C++, Java, Perl, C#, Ruby gibi). Örnek: int main( int argc, char *argv[] ) { < SQL select * from users > return 0; } Sonuç: #include "db.h" DBHandle *db_handle = db_connect(); DBQueryDara *db_data = db_db_query( db_handle, "select * from users" ); for( int record = 0; record < db_data->length; record++ ) { // fetch and process data
Satıriçi Kod Açılımı (Inline Code Expander) (2) Üreteç Yapısı Çalışma Akışı
Birleşik Kod Üreteçleri (Mixed Code Generator) Örnek: #include "db.h" int main( int argc, char *argv[] ) { // SQL: select * from users // SQL end return 0; } Sonuç: #include "db.h" int main( int argc, char *argv[] ) { // SQL: select * from users DBHandle *db_handle = db_connect(); DBQueryDara *db_data = db_db_query( db_handle, "select * from users" ); for( int record = 0; record < db_data->length; record++ ) { // fetch and process data } // SQL end return 0;
Birleşik Kod Üreteçleri (Mixed Code Generator)(2) Çalışma Akışı Üreteç Yapısı Üreteç Yapısı
Kısmi Sınıf Üreteçleri (Partial Class Generator) Kısmi sınıf üreteçleri, bir tanım kütüğünde tanımlanan tasarıma göre bazı temel sınıfları üretir. Bu temel sınıflar platformca kullanılarak diğer etkin sınıfları üretmek için kullanılır. Bu temel sınıflar birçok alt düzey işlemleri gerçekleştirerek, diğer sınıfları bu tür işlerden soyutlarlar.
Kısmi Sınıf Üreteçleri (Partial Class Generator) (2) Üreteç Yapısı
Kısmi Sınıf Üreteçleri (Partial Class Generator)(3) Çalışma Akışı
Kod Üretme Yönteminin Açıkları Kopyalama-Yapıştırın gelişmiş bir şekli olması sebebiyle yeni tasarım örüntülerinin oluşmasını engeller. (Genel olarak)Kod üreteçlerini ancak kod üreteçini geliştiren takımca kullanılır. Yaşatılması güç olmaktadır. Kod Üreteçleri her derde deva bir yöntem değildir. Her şeyden önce kod üreteci kodlanmalıdır. Sadece belirli şartların meydana gelmesi durumunda başvurulacak bir yöntemdir. Her zaman elle kodlanması gereken kesimler vardır. Bunun ağırlığı projeden projeye değişir. Bir kod üretecinin ürettiği koda sonradan elle müdahale gerektiriyorsa, kod üreteci eksiktir. Kod üreteci asla yenilikçi değildir. Olanın tekrarını kolaylaştırır.
Sonuç Kod Üreteçleri belirli şartlar altında tam uygulandığında işleri kolaylaştıran araçlardır. Her yeni teknoloji ile yeni yapılar gerektirmekte, bir önceki kod üreteci geçersiz kalırken, yeni kod üretecin ömrü öngörülmesi güçleşiyor. İş mantığına yönelik bir kolaylık sağlamaz. Ancak, gereksiz yüklerden soyutlamasından ötürü odaklanmayı kolaylaştırır. Cahit Güngör http://cahit.wordpress.com
Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit Aenean vulputate sem id nunc Pellentesque nonummy sapien nec tortor. Suspendisse ultricies malesuada urna. Duis vel velit vitae felis sodales commodo. Vivamus congue fringilla leo. Morbi egestas hendrerit dolor. Nam vel libero sed tortor hendrerit consequat. Proin posuere erat in risus. In auctor erat et metus.
Illustration