Makale Özeti

Bu makalemizde birçok noktada fazlasıyla işimize yarayabilecek bir Web Servisini ; Xara3D Image Generator Web Servisini inceleyeceğiz.

Makale

Son yıllarda web servislerinin gelişimine baktığımızda, dağıtık uygulama senaryolarında esnekleklik ve performanslı çalışma prensipleri sayesinde başı çektiklerini rahatlıkla söyleyebiliriz. Internet üzerinde şirketler birbirleriyle Private & Confidential olarak ifade edilebilecek gizli bilgi transferleri gerçekleştirebildikleri gibi sadece Web Servisleri üzerinden para kazanan firmalara rastlamakta fazlasıyla mümkündür. Bu web servislerinin kimi ücretli hizmet verirken kimi de bu makalemizde inceleyeceğimiz web servisimiz gibi ücretsiz olarak hizmet vermektedir.

Bu makalamizde internet üzerinde ücretsiz hizmet veren bir web servisini ; http://ws.xara.com/graphicrender/render3d.wsdl adresi üzerinden yayın yapan Xara3D Image Generation web servisini mercek altına alacağız.

Makale bu noktada teoriden öte pratik ağırlıklı olacaktır. Web Servisi ile ilgili örnek bir uygulama geliştirmeye geçmeden önce Web Servisi hakkında bilgi sahibi olmak bu noktada daha doğru olacaktır.

Makalemizin konusunu ifade eden Web Servisimiz adındanda anlaşılabileceği üzere 3 boyutlu grafik üretmek amacı ile oluşturulmuş bir web servisidir. Hemen bu işin nasıl gerçekleştirildiğini açıklayalım. Web Servisi üzerinden gelen tek bir metoda gönderilen string tipindeki 3-4 parametre sonucunda Web Servisi üzerinden oluşturulan resmin URL bilgisi gelmektedir. Bu adrese erişilmeye çalışıldığında ise karşımıza bizim için oluşturduğu 3 boyutlu imajımız çıkmaktadır.

http://ws.xara.com/graphicrender/soap/render3d/info.asp üzerinden de anlaşılabileceği üzere servis çalışabilmek için kullanıcıdan bazı parametre değerlerini istemektedir. Bunlar Font ismi, Stil ismi, Arka Plan rengi, Yazı Rengi, Resim Formatı v.b. gibi sıralanabilir. Endişelenecek birşey olmadığını web servisini biraz daha derinlemesine araştırdığımız zaman rahatlıkla görebilmekteyiz. Web Servisimiz üzerinden sistemin desteklediği Font’ ları, Stil’ leri v.b. gibi diğer tüm parametre değerlerini döndüren 3-4 adet metot hazır halde bulunmakdatır. Tek yapılması gereken gerekli değerleri belirledikten sonra resim URL’ sini kullanıcıya getirecek olan metodu çalıştırmak olacaktır.

Lafı fazla uzatmadan konunun daha rahat anlaşılabilmesi için örnek bir uygulama geliştirmek daha doğru olacaktır. Örneğimizde basit bir form tasarımı üzerinden kullanıcı Web Servisiyle haberleşecek, girdiği değerler üzerinden oluşturulan imajı form üzerinde görecektir.

İşe standart bir C# - Windows Application uygulaması açarak başlayalım.

Bir sonraki adımda tek yapmamız gereken şekildeki formu tasarlamak olacaktır.

Uygulama ekranı üzerindeki kontrolleri kısaca açıklamak gerekirse ; amaç 3 boyutlu bir imajın oluşturulması olduğundan bazı gerekli parametrelerin bu noktada Web Servisimize gönderilmesi gerekmektedir. Bu konu ile ilgili makalemizin başında Font, Stil gibi parametre değerlerinin Web Servisimiz üzerinden hazır olarak geldiğinden bahsetmiştik Bir sonraki adımda yapmamız gereken tek şey web servisi referansını uygulamamızla ilişkilendirdikten sonra ilgili metotlar üzerinden Web Servisinin desteklediği font, stil v.b. değerlerini çekmek olacaktır.

Referansımızın başarılı bir şekilde eklenmesinden sonra ilk adımda gerçekleştirecek olduğumuz adım Web Servisi ile birlikte gelen metotları tanımak ve bu metotları gerekli noktalarda çağırmak olacaktır. Web Servis referansımızın yeni bir kopyasını ürettiğimizde “Get” ön eki ile başlayan ve Web Servisimiz ile ilintili (Asenkron versiyonları saymadığımız zaman) 3 adet metot bulunmaktadır. Bu metotlardan GetExportTypes metodu resmin hangi formatlarda saklanabileceği ile ilgili değerler döndürmektedir. GetFonts metodu ise web servisimizin hangi font değerlerini desteklediğini kullanıcıya liste halinde getirmektedir. Son olarak GetTemplates metodu ise web servisimizin desteklediği stil listesini kullanıcıya getirmektedir.

Bu noktada yapmamız gereken bu metotlardan gelen değerleri ilgili ComboBox’ lar içerisine eklemek ve imajı oluşturtmak olacaktır. Devam etmeden önce belirtmemiz gereken bir önemli nokta ise bu metotların kullanıcıya “liste” olarak ne getireceğidir. Metotların hepsi uygulama geliştiriciye object[] tipinde ilgili listeyi getirmektedir. Bu objeler aslında temelde birer string tipidir. Şekildeki kodlar üzerinden uygulamamıza devam ediyoruz.

Kodu incelediğimiz zaman gerçekleştirilen tek yapınınımetotlar üzerinden gelen object[] dizilerini ilgili ComboBox’ lar içerisine eklemek olduğunu farkedebiliriz. Uygulamamızı çalıştırdığımızda metotların başarılı bir şekilde çalıştığını ve ComboBox’ lar içerisinde Web Servisi üzerinde desteklenen değerlerin geldiğini rahatlıkla görebiliriz.

Font listesi. Sırada Stil Listesi :

Ve son olarak oluşturulabilecek olan imaj tiplerinin listesi :

Bu noktada değinmemiz gereken birkaç adım daha bulunmaktadır. Az sonra üzerinde çalışacak olduğumuz RenderURL metodu kullanıcıdan üretecek olduğu imajın arka plan rengi, metin rengi ve metin boyutu değerlerini istemektedir. Bu değerlerin girilebilmesi açısından form üzerine iki adet metin kutusu ve bir NumericTextBox kontrolü daha ekliyoruz. Belirtmemiz gereken önemli bir unsur daha ise girilecek olan renk değerlerinin Hexadecimal değeri oluyor olmasıdır. Renk tonlarının HEX karşılıklarını Adobe Photoshop gibi bir resim işleme uygulaması üzerinden rahatlıkla bulabiliriz.

Makalemize kaldığımız yerden devam ediyoruz. Tek yapmamız gereken ComboBox’ lar üzerinden değerleri belirleyip RenderURL metodunu çağırmak olacaktır. Metot sonucunda kullanıcıya üretilen imajın URL değerini gönderektir. Bizde bu URL değeri ile PictureBox kontrolünü ilişkilendireceğiz.

Kodları incelediğimizde RenderURL metoduna sıra ile stil bilgisi, yazdırılacak metin bilgisi, arka plan değeri, font bilgisi, yazı boyutunun değeri, tip değeri, üretildikten sonra çekebilmek için out tipinde resmin genişliği yüklenecek olan değişkenin adı ve resmin yüksekliğininin yükleneceği out tipindeki değişkenin adı girilmiştir.

Bu değerlerin ışığında uygulamamızı çalıştırıyoruz :

Dikkat edilirse renk değerleri HEX değerleri cinsinden girilmiştir. İmaj üret buttonuna bastığımızda ise :

Ve sonuç ! Bir örnek daha geliştirelim :

Makalemizin burda sonuna geldik. Başka bir makalede daha görüşmek üzere.


Ekin ÖZÇİÇEKÇİLER
Microsoft Certified Trainer
ekin.ozcicekciler@bilgeadam.com
MCP, MCAD.NET, MCSD.NET, MCSD.NET, MCTS, MCPD Ent.