XML ve Web Servisleri



Benzer belgeler
Bütün XML dökümanlarının bir kök elemanı olmalıdır. Diğer bütün elemanlar kök elemanı tarafından kapsanır.

Üst Düzey Programlama

Mobil Cihazlardan Web Servis Sunumu

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH.

ÖZGÜR YAZILIMLAR İLE J2EE

PHP 1. Hafta 1. Sunum

1.PROGRAMLAMAYA GİRİŞ

Üst Düzey Programlama

Öğr. Gör. Serkan AKSU 1

BTP208 İnternet Programcılığı II XML ve XML Uygulamaları. (2. Kısım)

XML. Ahmet Demirelli Sabancı Üniversitesi 2007

Üst Düzey Programlama

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

XML'in Temelleri. XML veri tanimlamayi saglayan ve verilerin alisverisinde kullanilacak standart bir format olarak kullanilan bir dildir.

MyFaces Özgür JSF Uyarlaması. Bora Güngören Portakal Teknoloji

IdeaSoft E-Ticaret ile LOGO Ticari Yazılım Entegrasyon Kullanım Kılavuzu

PAKET TRANSFER SİSTEMİ

Ağ Yönetiminin Fonksiyonel Mimarisi

solid; BORDER-LEFT: #1F9FFF 0px solid; BORDER-RIGHT: #1F9FFF 0px solid; BORDER-TOP: #1F9FFF 0px solid; COLOR: #1F9FFF; FONT-FAMILY: Trebuschet MS;

DNS Nedir? HİKMET TÜYSÜZ

Script. Statik Sayfa. Dinamik Sayfa. Dinamik Web Sitelerinin Avantajları. İçerik Yönetim Sistemi. PHP Nedir? Avantajları.

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

PAKET TRANSFER SİSTEMİ

AJAX nedir? AJAX nasıl çalışır? AJAX. Tahir Emre KALAYCI. Sunucu Yazılım Teknolojileri


TÜRKİYE ELEKTRONİK FON ALIM SATIM PLATFORMU WEB SERVİS İŞLEMLERİ

BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ

Üst Düzey Programlama

Compiere Açık kodlu ERP + CRM yazılımı. Hüseyin Ergün Önsel Armağan Serkan Demir

Java ve Linux. Bora Güngören Portakal Teknoloji Akademik Bilişim

BLGM 344 DENEY 3 * AĞ PROGRAMLAMAYA GİRİŞ

JAVA RMI ve Hibernate teknolojileri kullanılarak çok amaçlı bir yazılım altyapısı hazırlanması

AĞ HİZMETLERİ. Öğr.Gör.Volkan ALTINTAŞ. Version 4.0

EC-485. Ethernet RS485 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

ProFTPD FTP Sunucusu. Devrim GÜNDÜZ. TR.NET Sistem Destek Uzmanı.

DataExchangeService Tanım

Üst Düzey Programlama

Örnek bir kullanım ve bilgisayar ağlarını oluşturan bileşenlerin özeti

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

9. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

Web Uygulamaları Mimarileri ve Güvenliği

Programlama Kılavuzu. IPV Serisi IP Santralleri IPV10 IPV20 IPV50

Özgür Yazılımlarla Web Programlama. Özlem Özgöbek

İNTERNET PROGRAMLAMA II. Tanımlar

Üst Düzey Programlama

Üst Düzey Programlama

Woom Woom dünyasına hoşgeldiniz.

PHP ile İnternet Programlama

XML ile Mesaj İşlemleri

MCR02-AE Ethernet Temassız Kart Okuyucu

Web Uygulama Güvenliğinde Doğru Bilinen Yanlışlar!

e-fatura UYGULAMASI (Entegrasyon Kılavuzu) Şubat 2010 ANKARA e-fatura Uygulaması (Entegrasyon Kılavuzu) Şubat 2010 Versiyon : 1.

WebInstaller. 1. Kurulum Đçin Gereksinimler

State Yönetimi. Bir web sayfası ile sunucu arasındaki etkileşim ;

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011


PAKET TRANSFER SİSTEMİ

ĐSTEMCĐ SUNUCU SĐSTEMLER DERSĐ FĐNAL ÇALIŞMASI SORULAR YANITLAR

Üst Düzey Programlama

İnternet Programcılığı

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

BIR ERP E-FATURA MODÜLÜ [BIR YAZILIM LTD ]

Eczane İlaç Satış Onay Bildirimi Web Servislerinin Kullanım Kılavuzu

UBL UBL Türkiye Özelleştirmesi TEMEL BİLGİLER

PAKET TRANSFER SİSTEMİ

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş. Internet Protokolleri ve Ağ Uygulamaları. Internet Protokolleri Üzerinden İletişim

Tarih Saat Modül Adı Öğretim Üyesi. 01/05/2018 Salı 3 Bilgisayar Bilimlerine Giriş Doç. Dr. Hacer Karacan

Sunum Planı. Django Nedir? Django projesi oluşturmak Basit bir blog uygulaması. Şablon Kullanımı Diğer özellikleri

Windows Live ID ve parolanızı giriniz.

Veri Tabanı-I 1.Hafta

Web Uygulama Güvenliği Kontrol Listesi 2010

TC KİMLİK NO SMS GÖNDERİM SOAP API

SİRKÜLER İstanbul, Sayı: 2015/015 Ref: 4/015. Konu: E-FATURA UYGULAMASINA DAİR DUYURULAR YAYINLANMIŞTIR

Öğr. Gör. Ümit ATİLA

Web Formlar ve Sayfalar Arasında Bilgi Gönderme. BATML İnternet Programcılığı 1

SMS API. KobiKom Telekomunikasyon A.Ş. SMS API Kullanım Bilgilerini İçerir. Tel: Fax:

5651 ve 5070 Sayılı Kanun Tanımlar Yükümlülükler ve Sorumluluklar Logix v2.3 Firewall. Rekare Bilgi Teknolojileri

Veri Tabanı Yönetim Sistemleri Bölüm - 3

VPN NEDIR? NASıL KULLANıLıR?

Veritabanı. Ders 2 VERİTABANI

PostgreSQL Veritabanı Sunucusu Devrim GÜNDÜZ.

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı

ile LOGO Ticari Yazılım Entegrasyon Kullanım Kılavuzu

PAKET TRANSFER SİSTEMİ

EC-232C. Ethernet RS232 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

WEB SERVS TABANLI GELTRLEN MOBL UYGULAMALAR: ODTÜ MOBL ÖRENC LER BLG SSTEM (MOBS)

JavaScript & DOM XML & JSON

Basit Mimari, Katmanlı Mimari ve doğrudan çalıştırma olarak üçe ayrılır.

BSOFTefat E-FATURA ÇÖZÜMÜ

Spring Ekosisteminde Kurumsal Yazılım Geliştirme. Kenan Sevindik Harezmi Bilişim Çözümleri A.Ş.

08217 Internet Programcılığı I Internet Programming I

Bilgisayarda Programlama. Temel Kavramlar

Ç NDEK LER 1 XML E G R fi 1 XML Nedir? 1 XML in Avantajlar 3 HTML ve XML Aras ndaki Farklar 4 XML Dosyalar n Görüntülemek 6 XML Dosyas Oluflturmak 9

WEB TASARIMINDA TEMEL KAVRAMLAR

Mobil Cihazlardan Web Servis Sunumu Özlem Özgöbek 1, R. Cenk Erdur 2 1,2

1 Temel Kavramlar. Veritabanı 1

NovaFortis Yazılım Danışmanlık. E-dönüşüm adaptörü

Transkript:

XML ve Web Servisleri 1

Bora Güngören - Portakal Teknoloji bora@portakalteknoloji.com XML ve Web Servisleri Sunum 4 Ağustos 2004 Çarşamba günü Ankara Üniversitesi'nde LKD adına verilmiştir. Sunum için hazırlanan slaytlar GPL lisansı ile dağıtılmaktadır. GPL lisansının detayları için LKD ile http://www.linux.org.tr/ adresinden bağlantıya geçebilirsiniz. Seminerin kendi bölgenizde tekrarı yada LKD'den benzeri başka seminer talepleri için seminer@linux.org.tr adresine bir eposta yollayabilirsiniz. 2

Sunum İçeriği Veri ve Meta-Veri XML Nedir? XML'i Nerede kullanabiliriz? Nelere İhtiyacımız var? XML Kuralları DTD ve XML-Schema Apache Xerces DOM ve SAX Web Servisi Kavramı XML-RPC PHP ile bir XML-RPC Örneği Web Servisi Mimarileri 3

Veri ve Meta-Veri Veri (data) herhangi bir konuda topladığımız değerlerdir. Verinin belli bir biçimde organize olması durumunda bu verileri bilgisayarda işleme şansımız olur. Veri yapıları, dosya yapıları, veri tabanlarındaki tablolar, vb. Yapılar hep bu organizasyonu sağlamak için yaratılmıştır. Ancak verinin anlamı söz konusu olduğu zaman bilgisayarlar yetersiz kalır. 10-10-2004 : 10 Ekim 2004 04-08-2004 : 4 Ağustos 2004? 8 Nisan 2004? 4

Veri ve Meta-Veri Meta-veri (meta-data) veri hakkında veri demektir. Meta veri sağlandığı zaman, bir bilgisayar programı bile verinin ne anlama geldiğini anlama şansına sahiptir. [Gün:04, Ay:08, Yıl:2004] Gün, Ay ve Yıl meta-veri olacaktır. Meta verinin açık seçik tanımlı olmadığı yerde programcı kendi kurallarını koymaya başlar. [Gün:04, Ay:08, Yıl:2004] İlk iki nokta üst üste den sonrası gün, ikinciden sonrası ay, üçüncüden sonrası yıldır. 5

Veri ve Meta-Veri Aynı veriyi kullanmak isteyen başka bir programcı da başka kurallar koyabilir. İlk virgül den önce gün, ikinciden önce ay, ] işaretinden önce de yıl verisi gelir. İki programcı aynı veriyi ve aynı kuralları kullanmakta anlaşsalar bile yine de sorunlar çıkabilir. Bitlerin yorumlanması farklı bilgisayar mimarilerinde farklı olabilir. Bu durumda, ortak tanımlanmış bir meta-veri tekniği gereklidir. 6

XML Nedir? XML, extensible Markup Language sözcüğünün kısaltmasıdır. XML bir işaretleme dilidir. Yani verileri işaretleriz. <işaret>veri</işaret> İşaretlenen her veriye eleman (element) adını veriyoruz. Bir XML belgesi belli kurallara göre organize edilmiş elemanlardan oluşacaktır. XML'in güzel yanı bu kuralların genişletilmesidir. Yeni işaretler tanımlayabiliriz. Her elemanın içerdiği verinin doğrulanması için kurallar koyabiliriz. Bu tanımları ve kuralları ortak kullanmak için mekanizmalar tanımlayabiliriz. 7

XML'i Nerede Kullanabiliriz? XML sayesinde veri aktarımı yapılan heryerde, aktarılan veri, meta-verisi ile birlikte aktarılabilir. Meta-veri hakkındaki kurallar, yalnızca bir kez, ayrıca aktarılır. Bankacılık işlemleri başta olmak üzere bütün finansal işlemlerde XML standart veri aktarım tekniğidir. Gelişmiş ERP yazılımları aralarındaki haberleşmeyi XML kullanarak yaparlar. Bir çok sistem yazılımının ayar dosyaları XML dosyasıdır. Java Serileştirme (serialization) mekanizması nesneleri XML kullanarak kaydeder. 8

Nelere İhtiyacımız Var? XML Belgeleri birer metin belgesidir. Bu belgenin okunması ve bellekteki bir modele eşlenmesi gerekir. Belgeyi bu modele eşlemek için bir XML Ayrıştırıcısı (XML Parser) gereklidir. Apache Xerces. Belleğe eşlenmiş modeli işlemek için bir programlama aracı gereklidir. Dile ait DOM ve SAX API'leri. C/C++, Java, PHP, Python, ASP, VB, C#, vs. için var. Okunan belgelerin doğrulanması için bir mekanizma gereklidir. DTD ve XML-Schema 9

XML Kuralları XML belgeleri, doğrulama dışında, katı biçimsel kurallara sahiptir. Bir XML belgesinin iyi biçimlenmiş (well formed) olması zorunludur. <bir>veri</bir> doğru <bir özellik= değer /> doğru <bir>veri yanlış <bir><iki>veri</iki></bir> doğru <bir><iki>veri</bir></iki> yanlış 10

DTD ve XML-Schema DTD (Document Type Descriptor) ve XML- Schema, XML belgelerini doğrulamak için kullanılan iki alternatif yoldur. Her iki teknikte de şunları doğrularız Elemanların özelliklerini (attributes) Elemanların aldıkları verileri ve bu verilerin türlerini İstenirse elemanların aldıkları veriler üzerinde sayı aralığı, düzgün deyim işleme gibi karmaşık doğrulamalar yapılabilir. Ayrıca elemanların aldıkları değerleri bir sıralama (enumaration) olarak tanımlama şansı da vardır. Bir şifrenin 19xx biçiminde olmamasını doğrulatabiliriz. Bir banka hesap numarasının biçimini ve şube no alanlının değerini XML'de doğrulatabiliriz. 11

DTD ve XML-Schema DTD ve XML-Schema sayesinde belgelerin değerleri daha okunurken ve standart doğrulama teknikleri kullanılmadan (örneğin VT bağlantısı) biçimsel doğrulama tamamlanır. Biçimi uygun olmayan bir elemanın verilerinin doğrulanmaya çalışılmasına zaten gerek olmaz. 12

DTD ve XML-Schema DTD Örneği <!DOCTYPE SEMINER [ <!ELEMENT SUNUM (TANISMA, SLAYT+, SORU+)> <!ELEMENT TANISMA (#PCDATA)> <!ELEMENT SLAYT (#PCDATA)> <!ELEMENT SORU (#PCDATA)> <!ATTLIST SUNUM SUNAN CDATA #REQUIRED> <!ATTLIST SUNUM TARIH CDATA #IMPLIED> <!ENTITY SUNUM "XML ve Web Servisleri"> ]> 13

DTD ve XML-Schema XML-Schema Örneği <!-- XML dosyası --> <?xml version="1.0" encoding="iso-8859-9"?> <gonderi id="889923" xmlns:xsi="http://www.linux.org.tr/2004/xmlschema-ornegi" xsi:nonamespaceschemalocation="gonderi.xsd"> 14

DTD ve XML-Schema XML-Schema Örneği <gonderen>bora Güngören</gonderen> <alici> <ad>cem Vedat Işık</ad> <adres>portakal Teknoloji</adres> <sehir>ankara</sehir> <ulke>türkiye</ulke> </alici> 15

DTD ve XML-Schema XML-Schema Örneği <kalem> <adi>usb Kahve Isıtıcısı</adi> <not>hediye Paketi</not> <adet>1</adet> <eder>10000000</eder> </kalem> 16

DTD ve XML-Schema XML-Schema Örneği <kalem> <adi>cd</adi> <adet>50</adet> <eder>20000000</eder> </kalem> </gonderi> 17

DTD ve XML-Schema XML-Schema Örneği <!-- XSD Dosyası --> <?xml version="1.0" encoding="iso-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> <xs:element name="gonderi"> <xs:complextype> <xs:sequence> <xs:element name="gonderen" type="xs:string"/> 18

DTD ve XML-Schema XML-Schema Örneği <xs:element name="alici"> <xs:complextype> <xs:sequence> <xs:element name="ad" type="xs:string"/> <xs:element name="adres" type="xs:string"/> <xs:element name="sehir" type="xs:string"/> <xs:element name="ulke" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> 19

DTD ve XML-Schema XML-Schema Örneği <xs:element name="kalem" maxoccurs="unbounded"> <xs:complextype> <xs:sequence> <xs:element name="adi" type="xs:string"/> <xs:element name="not" type="xs:string" minoccurs="0"/> <xs:element name="adet" type="xs:positiveinteger"/> <xs:element name="eder" type="xs:decimal"/> </xs:sequence> </xs:complextype> </xs:element> 20

DTD ve XML-Schema XML-Schema Örneği </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> </xs:complextype> </xs:element> </xs:schema> 21

Apache Xerces XML'in artan önemi Apache grubunun kendi uygulamalarında XML desteğini sağlamak için kendi XML projelerini başlatmalarına neden oldu. Elbette ki bütün projeler açık kaynak kodludur. Xerces bu projelerin en çok duyulanı ve en çok kullanılanıdır. Xerces bir XML ayrıştırıcısıdır (XML Parser). Dünyada en yaygın kullanılan ayrıştırıcı olduğu tahmin edilmektedir. DOM Seviye 2 (3 test ediliyor) ve SAX 2 desteği verir. C++ ve Java için API'leri vardır. Bunlara Perl ve COM ile de ulaşılabilir. 22

Apache Xerces Apache Xerces'in Java kitaplıkları Java 2 Sürüm 1.4 ile birlikte gelmektedir. Java'da XML kullandığınızda aslında Apache Xerces'i otomatik kullanırsınız. Apache Vakfı'nın bazı XML projeleri Xalan: Bir XSL İşleyicisi AxKit: Apache için XML eklentisi yazmaya yarayan bir araç kutusu. FOP: XSL tabanlı bir yazdırma biçimleyicisi. Forrest: Belgeleme motoru. Batik: SVG yaratmak için bir kitaplık. XML Security: XML belgeleri için sayısal imza desteği. Xindice: XML veritabanı. 23

DOM ve SAX DOM (Document Object Model) ve SAX (Simple API for XML) iki değişik belge modeli sunar. DOM belgeyi bir belge ağacı olarak görür. Ağacın her seviyesinde çeşitli DOM nesneleri olur. Örneğin bir HTML belgesi bir DOM nesnesi olarak alt nesnelerden oluşur. <body> elemanının altında bir <table> elemanı, onun altında çok sayıda <tr> elemanı, her <tr> elemanını altında da bir yada daha fazla <td> elamanı olabilir. DOM ağaç üzerinde alt ağaçları blok halde işlemeye izin verir. Yani tablonun satırlarının yerini değiştirdiğimizde <td> elemanları da <tr> yi takip eder. 24

DOM ve SAX DOM tamamı doğrulanmış bir belgenin yapısı üzerinde işlemler yapmak yada karmaşık yapılı elemanları kullanmak için ideal olabilir. SAX ise daha farklı bir bakış açısı sunar. Belgeyi bir insanın okuduğu gibi sıra ile okur. Örneğin ardışık gelen siparişlerin işlenmesi için SAX daha uygun olabilir. SAX arada hatalar geldiği zaman hatalı elemanın atlanacağı ve sıradakine geçileceği uygulamalarda ideal olabilir. 25

Web Servisi Kavramı Bir uygulamanın dağıtık yazılması yeni bir kavram değildir. Bir işlemin bir kısmının uzakta yapılıp sonucunun alınması için nedenler olabilir: İşlem yükünün fazlalığı İş kurallarının sürekli değişmesi Emir komuta zinciri türü yapılar. 1970'lerden bu yana Uzaktan Yordam Çağırma (Remote Procedure Call - RPC) teknikleri çeşitli alanlarda kullanılmaktadır. Askeri Uygulamalar ERP Uygulamaları Finans Uygulamaları 26

Web Servisi Kavramı RPC teknikleri genellikle soketler üzerinden uygulamaya özel paketlerin aktarılması ile uygulanır. Bu durumda iki yabancı uygulamanın haberleşmesi çok büyük bir sorun olmaktadır. Bu sorun haberleşmesi gereken kişilerin kullandığı sistemlerin sayısı arttıkça büyür. TCMB ile bankaların (bir kaç on tane) haberleşmesi. Gümrükler ile dış ticaret şirketlerinin (bir kaç yüz tane) haberleşmesi. Bir otomotiv şirketinin tedarikçileri (bir kaç bin tane) ile haberleşmesi 27

Web Servisi Kavramı Bir web servisi (web service) temel olarak klasik RPC tekniğini uygular. Ancak onu ayıran çok önemli bazı kavramlar vardır. Web servisleri HTTP üzerinden çalışır. Özel hatlar ve sözleşmeler kullanmazlar. Bir web servisini aramak, sunduğu olanakları tanımak için yollar vardır. Web servislerinde karşınızdaki kişiyi ve gelen sonuçları doğrulamak için yollar bulunmaktadır. Ortadaki adam (man in the middle) saldırılarına karşı güvenlik önlemi alınabilir. Aktarım XML tabanlı yapılır. Bu nedenle değişik dillerde yazılmış uygulamalar da web servisleri aracılığı ile haberleşebilir. 28

XML-RPC XML-RPC, bir web servisi yazmanın en ilkel yoludur. Bir istemci (client) ile bir süreç (process) arasında eş zamanlı iletişimden oluşur. Her XML-RPC isteği daima bir XML-RPC yanıtı ile karşılanır. İstemci, bir başka uygulama tarafından kullanılır. Süreç de bir dinleyici (listener) tarafından kullanılır. Ayrıca bir web sunucusunun kurulmasına gerek vardır. 29

Kısaca özetlersek. XML-RPC RPC hizmetlerinden yararlanması gereken uygulama yazılımı XML-RPC istemcisinden bir yöntem (işlev) çağırır. Bunu yöntemin adı, parametrelerin değerleri ve hedeflediği sunucuyu (bir URL ile) belirterek yapar. İstemci, yöntemi çağırmak için bir HTTP POST isteği oluşturur. Bu POST isteğini sunucuya yönlendirir. POST isteğini alan sunucu basit bir web sunucusudur. Ancak sunucu URL'inde bir XML-RPC dinleyicisi bulunmaktadır. Web sunucusu dinleyiciye XML belgesi olarak isteği aktarır. Dinleyici XML belgesini ayrıştırır. Buradan yöntemin adını, parametrelerini alır. Süreci kullanarak yöntemi çağırır. 30

Kısaca özetlersek (devam ediyor). XML-RPC Süreç, gereken işlemleri yapar ve bir sonuç elde eder. Sonuç XML-RPC'ye uygun bir XML belgesine çevrilir. Bu XML belgesi web sunucusu tarafından kendisine verilen HTTP POST isteğine bir yanıt olarak yollanır. XML-RPC istemcisi, XML belgesini HTTP yanıtı olarak alır. Ayrıştırır ve yöntemin sonucunu kendisini kullanan uygulamanın istediği biçime çevirir. Uygulama normal bir yöntem (işlev) çağrısının sonucunu almış gibi çalışmasına devam eder. 31

XML-RPC İletişim ağ üzerinden olduğu için, uygulama yazarken dikkat edilmesi gereken yerler vardır. XML-RPC istemcisini kullanarak sonuç bekleyen uygulamaların, bu sonucun gelmesinin zaman alacağını düşünerek yazılması gerekir. Çok kanallı uygulama geliştirme pratikleri önem kazanır. MVC mimarisinde XML-RPC istemcisi bir model, uygulama yazılımı ise bir denetleyici olacaktır. Denetleyicinin uyuması yada bir mekanizma ile bloklanması uygun bir pratiktir. Görünümün denetleyiciden soyutlanmış olması gereklidir. 32

XML-RPC XML-RPC'nin eş zamansız yazılması mümkündür. Ancak bu durumda her iki taraftda da bir istemci ve bir sunucu bulunmalıdır. Bu da her iki uygulamayı da karmaşık hale getirir. İstemci uygulamalarının çok basit bir doğaya sahip olması istemci-sunucu mimarisinin gereğidir. XML-RPC için varsayılan kapı 80 yada 8080 olacaktır. Bu kapılar için gerekli güvenlik ayarlarının yapılması servisin taciz edilmemesi için gereklidir. Buna ek olarak XML biçiminde olmayan GET ve POST istekleri için basit bir işleyici yazılarak sunucu URL'ini korumak da mümkündür. 33

XML-RPC XML-RPC web tabanlı çalıştığı için, kodlar genellikle PHP, Java Servlet, ASP gibi dillerde yazılır. Ancak kullanılan veri tipleri XML-RPC'nin izin verdiği veri tipleri olacaktır. <value><int>25</int></value> <value><double>-2.9</double></value> <value><boolean>1</boolean></value> <value><string>büyüktür işareti: > </string></value> Standart sadece ASCII metinlerini destekler. Ancak uygun bir XML ayrıştırıcınız varsa, diğer ISO ve UNICODE kodlamaları da desteklenir. <value><datetime.iso8601>20040804t18:30:00</dat etime.iso8601></value> 34

XML-RPC standart veri tiplerine ek olarak üç değişik veriyi de aktarmaya izin verir. İkili kodlama olarak yollanmış metinler Diziler Yapılar XML-RPC 35

Bir XML-RPC isteğinin XML'e çevrilmiş hali <methodcall> <methodname>ekle</methodname> <params> <param> <value><int>12345</int></value> </param> <param> <value><int>67890</int></value> </param> XML-RPC 36

XML-RPC <param> <value><struct> <member> <name>kullanici</name> <value><string>bora</string></value> </member> <member> <name>dogum</name> <value><datetime.iso8601> 19790819T08:00:00 </datetime.iso8601></value> </member> </struct></value> </param> </params> </methodcall> 37

Peki istemcinin HTTP isteği neye benzer? XML-RPC POST /servis.php HTTP/1.0 User-Agent: PHP XMLRPC 1.0 (xml@sunucum.com) Host: xml.sunucum.com Content-Type: text/xml Content-Length: 340 XML-RPC sunucusu başka (düz HTTP) hizmetleri ile aynı IP üzerinden verilebilir. Bu durumda, web sunucusunda isim tabanlı sanal sunucu (name based virtual host) ayarının yapılması gereklidir. 38

XML-RPC Sunucu tarafında işlemler yapıldıktan sonra gelecek olan yanıt da XML olarak biçimlendirilmiş olacaktır. <methodresponse> <params><param> <value><int>1</int></value> </param></params> </methodresponse> Bir XML-RPC yanıtında bir ve yalnız bir değer verilmesi zorunludur. XML-RPC void yöntem desteği vermez. Kullanılmayacak bir değer dönerek bunu aşabiliriz. 39

XML-RPC XML-RPC hata durumları (exception) desteği verir. Bu durumda yanıt aşağıdaki gibi olur. <methodresponse> <fault> <value>... </value> </fault> </methodresponse> Ancak hata durumlarına destek olup olmaması, yada var olan desteğin farklılığı nedeni ile XML- RPC'de bu konu ucu açık bırakılmıştır. 40

XML-RPC yanıtlarında HTTP başlığı web sunucusu tarafından yaratılır. XML-RPC XML-RPC yanıtının Content-Type başlık elemanının text/xml olarak ayarlanması yeterlidir. Geri kalan kısımları web sunucusu halledecektir. 41

PHP ile bir XML-RPC Örneği Kolaylık olması açısından aşağıdaki kitaplığı kullanacağız. http://xmlrpc.usefulinc.com/php.html http://sourceforge.net/project/showfiles.php? group_id=34455 Bu kitaplıkta PHP'de XML-RPC kullanımı için gerekli tüm detaylar, PHP sınıfları olarak tasarlanmıştır. İstemci sınıfı Sunucu sınıfı Sık kullanılan XML elemanları için sınıflar 42

PHP ile bir XML-RPC Örneği include( xmlrpc.inc ) $sorgu = Bora ; $istemci = new xmlrpc_client( /RPC, xml.sunucum.com, 80); $mesaj = new xmlrpcmsg( yontem, array( new xmlrpcval($sorgu, string ) ) ); $mesaj->addparam( new xmlrpcval( Güngören, string ) ); $zamanasimi = 200; $yontem='http'; $sonuc = $istemci->send($mesaj, $zamanasimi, $yontem); // $sonuc xmlrpcresp sınıfından if (! $sonuc->faultcode() ) { $deger = $sonuc->value(); //$ deger xmlrpcval sınıfından echo $deger->scalarval(); } 43

PHP ile bir XML-RPC Örneği PHP genelllikle XML-RPC istemcilerini yazmakta kullanılır. Sunucularda ise güvenlik konusunda daha güçlü bir dil olan Java kullanılabilir. Örnek olarak kullandığımız kitaplıkta son derece gelişmiş XML-RPC sunucu sınıfları da bulunmaktadır. 44

Web Servisi Mimarileri XML-RPC ile çizdiğimiz resmi genişletmek istersek ve tam ölçekli web servislerine göz atarsak neler göreceğiz? Web servislerinin kaydedildiği ve üzerinde arama yapılan bir servis aracısı (service broker) XML dışında SOAP, WSDL, UDDI ve ebxml standartları. SOAP (Simple Object Access Protocol), XML tabanlı haberleşme için hafif bir sözleşmedir. SOAP mesajları XML biçimli bir zarf içerisinde saklar ve mesajlar hakkında meta-veri sağlar. Web servisleri arasındaki mesajlar SOAP ile yollanır. 45

Web Servisi Mimarileri WSDL (Web Services Definition Language) ağ kaynaklarını ve onlara erişimleri tanımlamakta kullanılan bir dildir. Yine XML tabanlıdır. WSDL olarak ifade edilen bilgi hizmet sağlayıcı tarafından otomatik yaratılır ve depolanır. UDDI (Universal Description, Discovery and Integration) ağ servislerinin tanımlarını XML biçiminde saklamak ve yayınlamak isteyen mekanizmalar için ortak arabirimler tanımlar. UDDI servis aracısı tarafından yoğun olarak kullanılır. İstemciler servis aracısının UDDI hizmetini SOAP mesajları ile kullanırlar. 46

Web Servisi Mimarileri ebxml(ebusiness XML) Birleşmiş Milletler'in girişimi ile ortaya çıkartılmış standart XML elemanları tanımları ve bunları doğrulamak için geliştirilen DTD ve Schema'lardır. Ancak ebxml ayrıca iş süreci tanımlaması, iş olaylarının tanımlanması gibi başka çalışmaları da içerir. Uzun dönemde her türde iş akışı uygulamasının ebxml uyumlu olması beklenmektedir. ebxml, diğer standartlardan farklıdır. UDDI, WSDL gerektirmez. 47

Web Servisi Mimarileri Bir web servisi, daha farklı bir yazılım mimarisi sunar. Veri tabanlı (data oriented) mimariler, verilerdeki değişiklikler tarafından güdülenir. Yani bir eyleme geçilmesi için verilerde bir değişiklik olması gerekir. Olay tabanlı (event oriented, event driven) mimariler, bir eyleme geçilmesi için bir olayın olmasını beklerler. Servis tabanlı (service oriented) bir mimaride ise uygulama bileşenleri ağ üzerinde dağılmış ve her biri de bir servis olarak soyutlanmıştır. Var olan uygulamalar (legacy applications) bir sarıcı (wrapper) ile sarılarak yeni yazılan uygulamalara kolayca entegre edilebilir. 48

Web Servisi Mimarileri Web servislerinin çalışması aşağıdaki gibi olur. Web servisini sağlayan sunucuda servis için bir SOAP arabirimi ve WSDL tabanlı servis tanımlayıcısı oluşturulur. Servisler servis aracısına kaydedilir. Servis aracısı servis tanımlarını bir şablonda tutar. Her servis için bir de bağlantı URL'i bulunur. 49

Web Servisi Mimarileri Web servislerinin çalışması aşağıdaki gibi olur (devam ediyor.) Web servisi istemcisi, servis aracısına SOAP mesajları ile UDDI sorguları geçer ve servis arama isteğini belirtir. İstemci servisin yerini (URL) ve diğer bağlantı bilgilerini aracıdan alır. İstemci aracıdan aldığı bilgiler ile sunucuya bağlanır ve sunucudaki WSDL tanımlayıcılarını alır. Bu tanımlayıcıları kullanarak kendisinde bir vekil oluşturur. İstemci sunucu haberleşmesi bu vekil üzerinden sağlanır. Sadece SOAP haberleşmesi değil RPC haberleşmesi de kullanılabilir. Bu nedenle XML-RPC de bir web servisidir. 50

Sorular 51