Mobil Stok Takibi Programı - KTÜ Bilgisayar Mühendisliği
Transkript
Mobil Stok Takibi Programı - KTÜ Bilgisayar Mühendisliği
Karadeniz Teknik Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Mobil Stok Takibi Programı Bitirme Tezi Gürsel ÖZLÜ Trabzon 2007 Karadeniz Teknik Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Mobil Stok Takibi Programı Bitirme Tezi Gürsel ÖZLÜ Tezin Bölüme Verildiği Tarih : 01.06.2007 Tezin Savunma Tarihi : 25.06.2007 Tez Danışmanı : Öğr.Gör. Ömer ÇAKIR Jüri Üyesi : Prof.Dr. Vasıf V. NABİYEV Jüri Üyesi : Yrd.Doç.Dr. Hüseyin PEHLİVAN Jüri Üyesi : Yrd.Doç.Dr. Tuğrul ÇAVDAR Bölüm Başkanı : Prof.Dr. Rıfat YAZICI İÇİNDEKİLER Önsöz..........................................................................................................................................1 BİRİNCİ BÖLÜM 1.MOBİL TEKNOLOJİLER HAKKINDA 1.1.PDA nın tarihçesi.............................................................................................................2 1.2.Türkiye ve dünyada mobil sektörü...................................................................................3 2.GÜNÜMÜZDE YAYGIN OLARAK KULLANILAN MOBİL CİHAZLAR 2.1.Dizüstü bilgisayarlar(Notebook)......................................................................................4 2.2.Türkiye ve dünyada mobil sektörü..................................................................................4 2.1.Dizüstü bilgisayarlar(Notebook)......................................................................................4 2.2.Tablet bilgisayarlar(Tablet PC).......................................................................................5 2.3.Avuçiçi bilgisayarlar(Pocket PC)....................................................................................5 2.4.Akıllı telefonlar................................................................................................................5 2.5.Taşınabilir Medya Oynatıcılar (Portable Media Center).................................................6 3.MOBİL TELEFON NESİLLERİ...........................................................................................6 4.MOBİL CİHAZLARLA İNTERNETE ERİŞİM OLANAĞI 4.1. GPRS (General Packet Radio Service) İletişim Teknolojisi...........................................7 4.2.Wireless (Wi-Fi) İletişim Teknolojisi..............................................................................8 4.3.Bluetooth İletişim Teknolojisi.........................................................................................9 4.4.Kızılötesi İletişim Teknolojisi........................................................................................10 5.MOBİL İŞLETİM SİSTEMLERİ 5.1.Gömülü işletim sistemleri..............................................................................................12 5.2.Windows Mobile...........................................................................................................12 5.3.Symbian.........................................................................................................................12 İKİNCİ BÖLÜM 1.VISUAL STUDIO 2005 ORTAMI VE C# HAKKINDA 1.1.Visual Studio.NET........................................................................................................12 1.2. .NET’in prensi C#........................................................................................................14 2..NET COMPACT FRAMEWORK......................................................................................17 3.WINDOWS MOBILE 5.0 3.1.Windows Mobile'in genel özellikleri............................................................................19 3.2.Windows Mobile sürümleri..........................................................................................20 І 4.VISUAL STUDIO 2005 MOBİL CİHAZ EMULATÖRLERİ 4.1.Pocket PC Emülatör.......................................................................................................21 4.2.Smarthpone Emülatör....................................................................................................21 4.3.Windows CE Emulator..................................................................................................22 4.4.Emülatör Ayarları..........................................................................................................23 5.VERİ ERİŞİMİ 6.XML WEB SERVİSLERİ 6.1.XML nedir?...................................................................................................................24 6.2.XML Web Servisleri Tarihçesi.....................................................................................25 6.3.XML Web servisleri standartları..................................................................................26 6.4.Basit bir web servis oluşturma......................................................................................27 7.WEB SERVİSLERİNDE GÜVENLİK 7.1.Virtual Private Networks(özel sanal ağ).......................................................................31 7.2.SOAP Header ları kullanarak güvenliği sağlamak.......................................................31 7.3.Secure Sockets Layer(SSL)..........................................................................................31 7.4.Network Authentication(belgeleme).............................................................................32 8.MS SQL SERVER 8.1.Mimarisi........................................................................................................................32 8.2.Database oluşturma.......................................................................................................33 9.SQL SERVER MANAGEMENT STUDIO......................................................................35 ÜÇÜNCÜ BÖLÜM 1.TASARIM GERÇEKLEME 1.1.Proje Hakkında.............................................................................................................36 1.2.Veri Tablolarının Oluşturulması..................................................................................37 1.3.Web servisin oluşturulması ve yayınlanması...............................................................38 1.4.XML dosyası içeriği.....................................................................................................40 1.5. SOAP Header ları kullanarak güvenliğin sağlanması.................................................42 2.TEST.....................................................................................................................................45 3.SONUÇ................................................................................................................................46 4.KAYNAKÇA.......................................................................................................................47 И ÖNSÖZ Mobil cihazlar günümüzün vazgeçilmezleri arasında yerini almayı başardı. Bir kaç yıl öncesine bakıp mobil cihazlardaki gelişimi seyrettiğimizde çok önemli adımların atıldığını görmekteyiz.Toplum içerisinde bu cihazların yaygınlaşmasındaki en önemli etkenler olarak, boyutlarının ve fiyatlarının düşmesinin yanında fonksiyonlarının artması gösterilebilir. Mobil cihazlar taşınabilir oldukları için birçok kolaylığı beraberinde getirmiştir.Öncelikle dizüstü bilgisayarlar hayatımıza girdi, bunlar hayatımızı bir nebze olsun kolaylaştırmayı başardı ancak yinede boyutları dezavantaj olarak karşımıza çıkmaktaydı . Ardından avuçiçi bilgisayar dediğimiz PDA’lar hayatımıza girdi. Boyutlarının ufak olması ve de bir dizüstü bilgisayarının fonksiyonlarına sahip olmasıyla bir anda dikkatleri üzerine çekti. Yakın zaman içerisinde 3G neslinin hayata geçmesi ve buna paralel olarak 3G destekli mobil cihazların üretilmesi sonucu, özellikle genç nüfusun çoğunlukta olduğu ülkemizde, bu tür cihazların kullanımının daha da artmasını bekleyebiliriz. Bu bağlamda önümüzdeki yıllarda mobil alanında söz sahibi olabilmek ve deneyimli eleman ihtiyacını karşılamak için lisans tezimi bu konu üzerine yaptım. Projede, PDA(Kişisel dijital asistan) üzerinden web servisleri aracılığıyla stok ve sipariş takip programı geliştirdim. Çalışmam boyunca desteğini esirgemeyen Öğr.Görevlisi Ömer ÇAKIR’a, bilgi ve tecrübelerinden yararlandığım tüm hocalarıma ve arkadaşlarıma teşekkürü bir borç bilirim. Güzel yarınlara ilk adımı atmanın sevinciyle... Trabzon 2007 Gürsel ÖZLÜ 1 BİRİNCİ BÖLÜM 1.MOBİL TEKNOLOJİLER HAKKINDA Günümüzde yaygın olarak kullanılan ayrıca önümüzdeki yıllarda önemli bir konuma gelmesi beklenen mobil cihazlar hayatımızın vazgeçilmezlerinden olmuştur.Mobil cihazlarla evde,işte,okulda,tatilde... internete girebilmenin keyfini yaşayabilirsiniz.Elbette tüm bunları zaten yapabiliyordunuz ama mobil cihazlar bunu bir adım daha öteye taşıyarak hareket halindeyken internete erişimi hayal olmaktan çıkarmışlardır. Bu sayede otobüste,trende,vapurda,uçakta...internete girebilirsiniz.Bu cihazlarla neler yapılabileceğine bakalım. • Otel,uçak rezervasyonları yaptırıp sinema bileti satın alabilirsiniz. • Bankacılık işlemlerinizi yapabilirsiniz. • Sahip olduğunuz şirketin stoklarını takip edebilir,gerekli düzenlemeleri yapabilirsiniz. • Gerekli altyapının sağlanması sonucu hareket halindeyken evdeki elektronik cihazlarınızı kontrol edebilirsiniz. 1.1.PDA nın tarihçesi PDA kelimesi ile kez Apple şirketi tarafından üretilen Newton MessagePad cihazı için kullanılmıştır, ancak Newton'dan önce de PDA özelliklerine sahip olduğu söylenebilecek cihazlar bulunmaktaydı (Psion ve Sharp Wizard). PDA'ların yaygınlaşması Palm tarafından 1996'da üretilen PalmPilot la birlikte başladı. Palm'in ilk modeli, kısa sürede PDA pazarının en popüler ürünü haline geldi. Cep bilgisayarlarının ilk örneklerinde; renksiz ekran, sınırlı işlem gücü ve düşük enerji tüketimleri sayesinde uzun pil ömrü özellikleri öne çıkar. Bu tür cihaz üretiminin öncülerinden Japon şirketi Casio’yu daha sonra birçok üretici takip etmiştir. İşletim sistemi basit ve alete özeldir. Genelde telefon defteri, adres defteri olarak ya da hesap makinesi olarak kullanılır. Casio FX-880P, PB-1000 ve PB-2000C gibi BASIC, Prolog, CASL, Assembler ve C dillerinde programlanabilir örnekleri de üretilmiştir. PB-2000C farklı ROM modülleri takılarak programlama dilinin değiştirilebildiği tek Casio ürünü olmuştur. 2 PB-2000C sonrasında üretilen FX-890 modelinde tüm diller ROM'un içinde hazır halde bulunmaktadır. PB-1000 ve PB-2000C modellerinde hafızadaki programlar, diğer ürünlerden farklı olarak bir dosya sistemi içinde saklanırlar. Böylelikle programların içinden dosya üretmek, ekran görüntülerini hafızada saklamak ve hafızadan geri okumak mümkün olmuştur. Bu özellikleri ile Casio zamanının ötesinde ürünler ortaya çıkarmıştır. Palm ve türevleri Monokromik ile başlayan renkli ekranlar, artan işlem gücü, görece uzun pil suresi ile karakterize edilir. Pocket PC'lerin piyasaya girmesi ile rakebet sonucu ekran renklenmiş, işlem gücü artmıştır. Doğal olarakta pil ömru azalmıştır. PalmOS denilen özel bir işletim sistemi kullanmaktadır. Palm'dan sonra birçok firma da bu tarz cep bilgisayarı üretimine yeltenmiş ama başarılı olamamıştır. En son Sony bu tür cihazların üretimini durdurduğunu duyurmuştur Pocket PC Genelde renkli ekran, yüksek işlem gücü ve düşük pil ömrü ile karakterize edilir. Microsoft'un PocketPC işletim sisteminin desteği ile piyasada yer bulmuştur. Renkli ekran ve güclü işlemci, multimedya işlemlerine (video gösterme ve müzik çalma) olanak verdiğinden yoğun ilgiyle karşılanmıştır. Ancak Palm'lara göre kullanımı daha karışıktır ve işletim sistemi sık değiştirilmiştir. Programların gerek işletim iştemleri arası uyumsuzluk ve gerekse işlemci versiyonları yüzünden sayısı çok daha kısıtlıdır. 1.2.Türkiye ve dünyada mobil sektörü:Hollanda’nın Amsterdam kentinde düzenlenen Nokia World konferansında mobil iletişim dünyasının geleceği tartışılıyor. Konferans’ın açılış konuşmasını yapan Nokia CEO’su Olli-Pekka Kallasvuo, cep telefonu pazarının beklenenden daha hızlı büyüyerek, 2007 yılında 3 milyar abone eşiğini aşacağını açıkladı. Dünya pazarında yüzde 40 civarında bir pazar payıyla lider konuma sahip Nokia tarafından yapılan araştırmalar, abone sayısının 2010 yılında 1 milyar kişi daha artarak 4 milyara çıkacağını gösteriyor. 1 milyar kullanıcı sınırını 2002, 2 milyar kullanıcı sayısını da 2005 yılında gören cep telefonu pazarı, Hindistan ve Çin pazarlarının hızla büyümesiyle 3 milyar kullanıcı sayısına tahmin edilenden 1 yıl önce ulaşacak. Türkiye’de ise mobil telefon kullanıcılarının sayısı 40 milyon rakamına ulaşmış durumda ve penetrasyon yüzde 65 civarında. 3 Halen mevcut telefon satışlarının yüzde 65 gibi yüksek bir oranını yenileme satışları oluştururken, 3. nesil ağların yayılması ve multimedya telefonlarının sayısının artmasıyla yenileme satışlarının 2010 yılında yüzde 80’lere çıkması bekleniyor. (kaynak:ntvmsnbc) Dünyanın her yerinde kabul gören GSM mobil telefon teknolojisi sadece 30 ay gibi kısa bir sürede 1 milyar kullanıcıyı daha ekledi. GSM Birliği’nin Haziran 2006’da yaptığı açıklamaya göre dünyadaki GSM cep telefonu kullanıcı sayısı 2 milyarı aştı.GSM Birliği Başkanı Craig Ehrlich, GSM teknolojisinin şimdiye kadar görülmüş en hızlı büyümeye sahip olduğunu belirti. Ehrlich, “Sadece 12 yılda endüstri 1 milyar kullanıcıya ulaştı. 2,5 yıl içinde ise 2 milyar kullanıcıya ulaştı. Çin, Hindistan, Afrika ve Latin Amerika gibi gelişmekte olan ülkelerde olağanüstü bir şekilde kullanıcı sayısı arttı ve bu 2 milyarın yüzde 82’sini oluşturuyor” dedi. GSM teknolojisi tabanlı mobil servisler ilk kez Finlandiya’da 1991 yılında tanıtıldı. Bugün 690’dan fazla mobil şebeke 213 ülkede GSM servisi sağlıyor. GSM tüm global mobil iletişimin yüzde 82.4’ünü kapsıyor.Çin bugün tüm dünyada 370 milyon kullanıcısı ile GSM pazarının en büyüğü. Çin’i 145 milyon kullanıcı ile Rusya, 83 milyon kullanıcı ile Hindistan ve 78 milyon kullanıcı ile Amerika takip ediyor. Türkiye’de ise cep telefonu kullanıcı sayısı 42 milyon rakamını aşmış durumda.(kaynak: GSM birliği) Telefon sayısının çok, kullanıcı sayısının az olduğu, dünya standartlarının gerisinde kalan Türkiye'de mobil sektörü 2007 için yüzde 35 büyüme hedefliyor.(kaynak: Mobil İletişim Sistemleri ve Araçları İşadamları Derneği (MOBİSAD)) 2.GÜNÜMÜZDE YAYGIN OLARAK KULLANILAN MOBİL CİHAZLAR 2.1.Dizüstü bilgisayarlar(Notebook) Dizüstü bilgisayarlar donanım ve yazılım olarak PC’nin sahip olduğu bütün öğelere sahip olabilir.Enerji kaynağı olarak şarj edilebilir pil bataryaları kullanırlar. Genel olarak 2–4 saat arası enerji desteği sağlarlar. 4 2.2.Tablet bilgisayarlar(Tablet PC) Tablet PC’ler, dizüstü bilgisayarlarla benzerliği dışında ek olarak el yazısınotlarını dosyalara dönüştürerek istenildiği zaman erişilmesini sağlar. 2.3.Avuçiçi bilgisayarlar(Pocket PC) Telefonu kullanabilir, cep bilgisayarları için tasarlanmış Word, Excel vb.birçok programda işlemlerinizi gerçekleştirebilirsiniz. Ayrıca senkronizasyon yazılımı ile telefonlu cep bilgisayarındaki e-posta, takvim, görev ve benzeri dosyalar bilgisayarınızdaki dosyalarla eşleştirilerek, her iki cihazda da güncel olmaları sağlanır. Microsoft Windows Mobile Edition ya da Palm OS işletim sistemini kullanan bu makineler 64 MB bellek, bellek kartlarıyla 8 GB’ ye kadar ek belleğe sahip olabilirler. 6–7 saate kadar sürekli çalışma olanağı bulunmaktadır. GPRS,wireless, bluetooth ve kızılötesi iletişim teknolojilerine sahiptirler. 2.4.Akıllı telefonlar Genelde Microsoft Windows Mobile Edition/Symbian OS işletim sistemini kullanan akıllı telefonlar en az 16 MB belleğe sahip olmalarına rağmen harici bellek kartlarıyla 8 GB ek belleğe sahip olabilirler. WAP, GPRS gibi çevrimiçi erişim olanağına sahiptir. 5 2.5.Taşınabilir Medya Oynatıcılar (Portable Media Center) Microsoft Windows Media Center Edition, Mac iPod işletim sistemi kullanan bu makineler bazı programlar aracılığı ile (Örneğin: Media Jukebox) wav dosyalarını mp3 formatına, mp3 formatındaki dosyaları da wav formatına dönüştürülebilme özelliğine sahiptirler. Bu sayede taşınabilir medya oynatıcıları ile e-Televizyon ve e-SesliKitap dosyaları aygıta aktarılarak, herhangi bir ortamda seyredilebilir/dinlenebilir. Taşınabilir medya oynatıcılar çevrimiçi erişim imkanı tanımadığı için diğer e-öğrenme hizmetlerinden yararlanılmamaktadır. 3.MOBİL TELEFON NESİLLERİ Mobil telefonlar sahip oldukları teknolojilere göre nesillere ayrılabilir.Bu nesiller ve kullandıkları teknolojiler şunlardır. • 1.Nesil: Mobil telefon ağlarının ilk sürümüne verilen addır. Bu sistem analog devre anahtarlamalı (circuit-switched) teknolojisini FDMA(Frequency Division Multiple Accsess) ile birlikte kullanır ve en çok 800-900 Mhz frekans bandında çalışır. • 2.Nesil: Bu teknoloji sayısal teknolojiyi kullanan ilk mobil teknolojidir. 1 nesilde çok sayıda telefon görüşmesinde çıkabilecek karışıklar bu 2. nesil teknolojilerine geçmeyi uygun kılmıştır.2. nesil teknolojileri 1g. Nesil teknolojilerine göre metin olarak mesaj yollama ve arayanın bilinebilmesi gibi üstünlükleri vardır. • 2.5 . Nesil: 2.nesil ile 3. nesil arasında bir geçiş teknolojisi olarak bilinir.2. nesil den farkı internet erişimi, paket-anahtarlamalı(packet-switched) bağlantı(GPRS) ve daha gelişmiş veri oranı(HSCSD ve EDGE)dır. 2G deki bu gelişmeler 64-144kbps’lık bir veri hızını destekler ve buda web-tarayıcı, harita tarama, sesli mesaj,faks ve büyük miktarda veri yollama ve almaya olanak sağlar. • 3.Nesil: 2.5 nesile göre çok daha fazla veri transfer hızına olanak sağlar. Ses sayısal olarak yollanır. paket-anahtarlama yapısı kullanılır.144kbps dan fazla veri transfer hızına olanak sağlar.Bu teknoloji TV seyretmeye , eğlence video konferansa olanak sağlar. 6 • 4.Nesil:3G nin bazı kısıtlamalarından dolayı 4G türü mobil teknolojiler geliştirilmeye çalışılıyor. Bu sistem çok daha güvenli.Günümüzde şirketler 4G iletişim sistemini geliştirmeye başladı. Bu teknoloji 200Mbps a kadar veri transferine olanak sağlar. Bu da çok daha rahat bir şekilde TV yayınına olanak sağlayacaktır. 4.MOBİL CİHAZLARLA İNTERNETE ERİŞİM OLANAĞI Mobil aygıtların tek başına ya da diğer aygıtlarla birlikte kullanılarak çevrimiçi iletişim olanağına kavuşmaları amacıyla GPRS, Wireless (Wi-Fi), Bluetooth ve Kızılötesi olmak üzere dört farklı iletişim ya da bağlantı teknolojisi kullanılmaktadır. Bu iletişim özellikleri mobil aygıtların bir bölümünde hazır olarak gelmektedir. Bu iletişim özelliklerine sahip olmayan mobil aygıtlara USB, Compact Flash Card ya da PC Card (PCMCIA) aktarım teknolojilerinden birisi kullanılarak iletişim yeteneği kazandırılmaktadır. 4.1. GPRS (General Packet Radio Service) İletişim Teknolojisi GPRS, GSM şebekesi üzerinden paket veri iletimi sağlayan bir teknolojidir. Bu teknoloji sayesinde aboneler GSM uyumlu telefonları ile e-posta, faks servislerine ulaşacak, rezervasyon, sanal alışveriş, finansal hizmetler, mobil bankacılık, kurumsal çözümler, lojistik hizmetler, filo yönetimi, teknik servis otomasyonu, v.b. işlemleri daha hızlı yapılabilecektir. Normal şartlarda GPRS teknolojisi ile 171.2 kilobit/saniye hızla internet bağlantısı sağlayabilirsiniz. Fakat bu hız GSM operatörlerinin alt yapısına ve doğa koşullarına bağlı olarak değişkenlik göstermektedir. Şu anda GPRS ile 56 K hızına ulaşabilmeniz mümkündür. GPRS'te kullanılan teknolojinin özelliğinden dolayı sabit bir iletişim hızından bahsedilemez. GPRS için de aynen internette olduğu gibi bir ortalama iletişim hızından bahsetmek daha doğrudur. GPRS iletişim hızı internette veya WAP’ ta ulaşılmaya çalışılan sitenin hızına bağlı olarak da değişim göstermektedir. GPRS özelliği bulunmayan bir mobil aygıta USB, Compact Flash Card ya da PCMCIA Card biçiminde GPRS modemi takılarak GPRS özelliği kazandırılabilir. 7 4.2.Wireless (Wi-Fi) İletişim Teknolojisi Wi-Fi (Wireless Fidelity kelimelerinin ilk iki harfinin kullanılarak ortaya çıkartılmış bir kısaltma) olarak bilinen 802.11 standardı, IEEE (Institute of Electrical and Electronic Engineers) tarafından kablosuz yerel ağlar için geliştirilmiş bir radyo transmisyon standardıdır. Wi-Fi, Bluetooth teknolojisi gibi 2.4GHz’ lik spektrumda çalışır. 100 metre yarıçap menzilindeki tüm Wi-Fi uyumlu cihazlarla 11Mbps - 54Mbps gibi yüksek hızlarda veri alışverişi gerçekleştirmektedir. Böylece Wi-Fi kullanılan evlerde, ofislerde ve mekânlarda kablo karmaşasından kurtulup, kullanıcılara özgürce hareket imkânı verilmektedir. Wi-Fi IEEE 802.11g, 802.11b ya da 802.11a diye bilinen telsiz teknolojilerini kullanıyor. Bu frekansları kullanmak için herhangi bir lisans alınması gerekmiyor. Özellikle bazı cihazlar her iki standardı da destekliyor. Aşağıdaki tabloda Wi-fi standartları ile ilgili bilgiler verilmiştir. 802.11x Teknolojilerini Karşılaştırma Tablosu: 8 Wi-Fi (802.11b) aşağıdaki kullanımlar için daha uygundur: • Yüksek bant genişliği (>2MB) gerektiren LAN uygulamaları • Daha geniş kapsama alanı gerektiren uygulamalar • Güvenilirlik gerektiren uygulamalar • Mevcut donanımdan faydalanmak • Dosya eklemeli e-mail alma-gönderme • Web Tarama • Dosya Paylaşım Kapsama alanı açısından bakıldığında Wi-Fi sınırlı bir standarttır. Bütün üretici firmalar ürünlerinin teorik olarak 150 metreyi desteklediğini söylemektedirler. Ancak bu sadece ortamda herhangi bir engelleme söz konusu olmadığında gerçekleşir. Dahası, maksimum uzaklıkta veri transfer hızı 1 Mbit/s'lere düşer. Aslında Wi-Fi bu tür uzaklıklara ulaşmak ve veri akışında sorunları engellemek için veri transfer hızını otomatik olarak dört ayrı seviyeye dönüştürebilir. Kapsama Alanı (m) Veri Transfer Hızı 150 1 Mbit/s 100 5.5 Mbit/s 80 8 Mbit/s 50 11 Mbit/s Wireless özelliği olmayan bir mobil aygıta USB, Compact Flash Card ya da PC Card biçiminde wireless adaptör takılarak wireless özelliği kazandırılabilir. 4.3.Bluetooth İletişim Teknolojisi Bluetooth kablo bağlantısını ortada kaldıran, ses ve veri haberleşmesini sağlamak için oluşturulmuş ve standart çalışmaları hala devam eden kısa mesafe Radyo Frekansı(RF) teknolojisinin adıdır. Bluetooth bilgisayar, çevre birimleri ve diğer cihazların birbirleri ile kablo bağlantısı olmadan görüş doğrultusu dışında bile olsalar haberleşmelerine olanak sağlar. Bluetooth teknolojisi 2.4 GHz frekans bandında çalışmakta olup, ses ve veri iletimi yapabilmektedir. 721 Kbps' a kadar veri aktarabilen bluetooth destekli cihazların etkin olduğu mesafe yaklaşık 10 metredir. 9 Bluetooth telsiz teknolojisi cihazlar arasında senkronizasyon sağlamak ve veri aktarmak amacı ile kullanılabilir. Bluetooth teknolojisi GSM telefonlarını kullanarak masaüstü ve mobile cihazlarınızı şirket ağlarına veya internete bağlayabilir, dosya alışverişi yapmasına olanak sağlar. Bluetooth küresel bir çözümdür. Dünyadaki tüm ülkelerin %95'i Bluetooth 2.4 GHz geniş spektrum bandını desteklemektedir. Bluetooth ile hemen hemen dünyadaki her yerden cep telefonunuz ve taşınabilir bilgisayarınız ile kuracağınız bir telsiz bağlantı yardımı ile internete ulaşabilirsiniz. Bluetooth özelliği olmayan bir mobil aygıta USB, Compact Flash Card ya da PCMCIA Card biçiminde bluetooth adaptör (bluetooth hub) takılarak bluetooth özelliği kazandırılabilir. 4.4.Kızılötesi İletişim Teknolojisi Kızılötesi, eş düzeyde ağ oluşturmaya yönelik başka bir yöntem olması açısından Bluetooth'a benzer. Bu yöntemde veriler kısa uzaklıklardaki cihazlar arasında radyo dalgalarıyla iletilir. (Verilerin kızılötesi ile gönderilebildiği kapsama alanı Bluetooth'dan kısadır.) Örneğin bir iş arkadaşınızla dizüstü bilgisayarlarınızı yaklaştırıp her ikisinin kızılötesi bağlantı noktasını kullanarak veri alışverişi yapar ve arkadaşınıza bir metin belgesi gönderebilirsiniz. Uyumlu bir telefonu, uyumlu bir PC’ye bağlamak için kızılötesi bağlantısını kullanabilirsiniz. Windows 2000 ve Windows XP işletim sistemlerinde kızılötesi bağlantıya Kablosuz Bağlantı adı verilir.Bağlantı, kızılötesi bağlantıyla sağlandığında, iki cihazın arasında engel bulunmaması gerekir. İki cihazın kızılötesi bağlantı noktaları karşılıklı olmalıdır. İki cihaz arasındaki tercih edilen uzaklık en çok bir metre olmalıdır. Kızılötesi bağlantıyı Windows 2000 ve Windows XP işletim sistemlerinde kullanabilmek için öncelikle Kablosuz bağlantı yazılımında Görüntülü Aktarım uygulamasını devre dışı bırakmanız gerekir. Kızılötesi özelliğine sahip olmayan bir mobil aygıta USB bağlantılı bir kızılötesi adaptör takılarak kızılötesi özelliği kazandırılabilir 10 Özetle mobil cihazdan internete erişmek için aşağıdaki akış şemasını gösterebiliriz. 11 5.MOBİL İŞLETİM SİSTEMLERİ 5.1.Gömülü işletim sistemleri Mobil cihaz üreticisinin özel olarak geliştirmiş olduğu işletim sistemidir.Üretici firma tarafından geliştirilen araçlarla yazılımlar yüklenebilir. 5.2.Windows Mobile Microsoft tarafından mobil cihazlar için geliştirilmiş işletim sistemidir. 5.3.Symbian Symbian şirketi tarafından mobil cihazlar için geliştirilmiş işletim sistemidir.Günümüzde symbianOS adıyla bilinmektedir. İKİNCİ BÖLÜM 1.VISUAL STUDIO 2005 ORTAMI VE C# HAKKINDA 1.1.Visual Studio.NET Visual Studio.NET, Visual Basic.NET, C++, C# dilleri ile görsel olarak program geliştirebileceğiniz programlama arabirimidir. Sürümleri: • Visual Studio.NET Proffessional. • Visual Studio.NET Enterprise Architect. • Visual Studio.NET Enterprise Developer. Visual Studio.NET Proffessional sürümü ile profesyonel bir programcının bütün gereksinimlerini karşılayan Visual Studio.NET, Visual Studio.NET Enterprise Developer sürümüyle bir grup programcının birlikte kod yazmasını sağlar. Visual Studio.NET Enterprise Architect(VSEA) sürümü ise Visual Studio.NET Developer ın bütün özelliklerine sahiptir.Buna ek olarak tasarım ve uygulama mimarisi geliştirmek için (UML tasarımı gibi) yetenekleri vardır. 12 IDE; NET çatısının en önemli bileşenlerinden biridir.IDE(Integrated Development Environment-Bütünleşik Geliştirme Ortamı),uygulama geliştirme için kullanılan bütünleşik görsel ortamı belirtir.Visual Studio.NET IDE içinde etkin uygulama geliştirme çalışmaları yapmak için çok sayıda gelişmiş özellik vardır.Kısaca bunlara değinelim. Properties Penceresi:Formun üzerinde herhangi bir kontrolü seçmeniz durumunda aktifleşir.İstediğiniz özelliğe istediğiniz değeri atayabilirsiniz. Kontrollere ait event ‘lara ulaşmak:Kod yazacağınız Events larada yine properties penceresinden ulaşabilirsiniz.Fakat bu pencerede Events yazan Button un tıklanmış olması gerekir. ToolBox Penceresi:Formunuzun üzerine sürükleyip bırakabileceğiniz kontroller bu pencerede bulunur.ToolBox penceresinde istediğiniz kontrolü Mouse ile sürükleyerek formunuzun üzerine bırakabilirsiniz. Solution Explorer Penceresi:Projenizin kullandığı tüm dosyalar (sınıflar,resim dosyaları,Xml dosyaları vs…) ile kaynak kodların yer aldığı diğer dosyalar bu pencereden kolayca takip edilir. Project->Add New Item veya Project->Add Existing Item menü seçeneklerini kullanarak uygulamanıza bir çok kaynak dosya ekleyebilirsiniz. Server Explorer Penceresi:Uygulamanızdan elde edeceğiniz verileri herhangi bir veritabanına kaydetmek isterseniz (veya daha önceden bir veri tabanına kayıt işlemi gerçekleştirdiyseniz) bu pencereden faydalanabilirisiniz Error List Penceresi:Programınızı çalıştırdığınız anda oluşan hataları gösteren çok yararlı bir penceredir.Burada oluşan hatalar program tarafından size izah edilir.sizde ona göre gerekli olan kodları ekleyebilirsiniz. Visual Studio.NET Uygulama Türleri • Windows Application(Windows uygulamaları). • ASP.NET(Web uygulama) • Web servisi • Mobil uygulama ve dağıtık uygulamalar. 13 Aşağıda Visual Studio 2005 platform arayüzü görülmektedir. 1.2. .NET’in prensi C# C#, modern, nesne yönelimli, tip güvenliğine büyük önem veren, temel hesaplama ve haberleşme gibi geniş bir yelpazedeki uygulamaları geliştirmek için .NET platformu için tasarlanmış yeni bir dildir. Intermediate Language(Ara dil) C# kaynak kodu MSIL(IL) koduna çevirir. IL dili .NET uyumlu bütün dillerde yazılmış olan programların ortak olarak derlendiği dildir.IL kodu derlenerek makina koduna çevrilir. Interoperability (Diller arası uyumluluk) C# diller arasındaki uyumluluğuda sağlar. Yani dil bağımsızlığı.C# ile yazılan bir kod diğer .NET uyumlu diller tarafından tekrar kullanılabiliyor.Örneğin ;bir dilde yazılan sınıf, diğer .NET uyumlu diller ile rahatlıkla kullanılabilir. 14 Bellek Yönetimi JAVA otomatik bellek yönetimi sağlamaktadır.(daha teknik bir deyimle gereksiz bilgi toplama mekanizması denir. ) Bu özellik programcılar tarafından takdirle karşılanmıştır. Fakat eski C/C++ programcıları JAVA diline geçmeye çalışınca bu özellik onları rahatsız ediyordu. Bu tür programcıların problemlerini de göz ardı etmeden, C# otomatik bellek yönetiminin yanında programcının belleği kendisininde yönetmesini sağlayan sistem sunmuştur. C#' ta hala pointer kullanabiliyoruz. Harici Kodlara Referans C# ta using anahtar kelimesi kullanılmaktadır. Veri Tipleri Bir dilin gücü, dilin desteklediği farklı veri türleri tarafından belirlenir. Veri tipleri programcılara güçlülüğü ve esnekliği sağlayan varlıklardır. C#,bütün veri tiplerini sağlamıştır,bunun yanısıra bazı türler de eklenmiştir, örneğin bazı işaretsiz(unsigned). Ayrıca C# ta kayan noktalı(floating point) bir veri türü olan 12 byte'lık decimal türü de mevcuttur. Alan Düzenleyicileri (Field Modifiers) Değiştirilemeyen ya da sabit bir değişken tanımlamak için read only ve const belirleyicileri kullanılır.Const olan alan düzenleyiciler, ilgili değerin IL kodunun bir parçası olduğu ve sadece çalışma zamanında hesaplanacağı anlamına gelir. Kontrol Mekanizması Oluşturma if-else, switch, while, do-while, for, break, contine deyimleri bulunmaktadır. Fakat C# ta yeni bir kontrol daha vardır. C# taki bu yeni yapı koleksiyonlar arasında dolaşmak için gerekli olan for each yapısıdır. int slist(Arraylist alist) ………. foreach (int j in alist) { …………. } 15 Yukarıdaki yapıda j döngü değişkeni olarak adlandırılır. Bu döngü değişkenine her terasyonda alist dizisinin int türden olan elemanı atanır. Arayüz ve Sınıf Bildirimi Miras tanımlama C# te iki nokta işaretine(:) şeklindedir.. İstisnai Durumları Ele Alma(Exception Handling) C# ta catch bloğundaki argüman isteğe bağlıdır. Eğer catch ile argüman belirtilmemişse,bu catch bloğu try bloğunda fırlatılacak herhangi bir hatayı yakalamak için kullanılır. Bütün catch bloğuda C# ta kullanılmayabilir.Ayrıca C# ta throw anahtar sözcüğü yoktur. Arayüzler C# ta bir sınıf isteğe bağlı olarak açıkca bir arayüzü uygulayabilir. Açıkca uygulanan metotlar arayüz ve sınıf arasındaki tür dönüşümü sayesinde çağrılabilir. Kalıtım C# ta sadece tekli türetme mevcuttur. Eğer çoklu türetme yapmak gerekiyorsa arayüzleri kullanmak tek yoldur. Çok Biçimlilik(Polymorphism) Sanal metotlar çok biçimliliği gerçekleştirmek için kullanılır. Bunun anlamı taban sınıfların, türemiş sınıflara ait aşırı yüklenmiş metotları çağırabilmesidir.C# ta türemiş bir sınıftaki metodu taban sınıf ile çağırabilmek için metodun açıkca virtual anahtar kelimesi ile işaretlenmesi gerekir. C# ta override anahtar kelimesi bir metodun türeyen sınıfta yeniden yazılacağını bildirmek için gereklidir. Sanal olmayan bir metodu yeniden uygulamaya çalışmak derleme zamanı hatasına yol açacaktır. Fakat eğer türemiş sınıftaki metot new anahar sözcüğü ile işaretlenirse program hata vermeden derlenecektir. 16 2. .NET COMPACT FRAMEWORK Visual Studio ortamında geliştirilen uygulamaların, mobil cihazlarda çalışabilmesine olanak sağlayan araçtır.Cihaza uygun sürümü kolaylıkla yüklenebileceği gibi günümüzde windows tabanlı çoğu cep bilgisayarında mevcut bulunmaktadır. .NET Compact Framework’un son sürümüyle birlikte XML web servisleri kullanmak mümkün hale gelmiştir.Bu sayede XML tipinde veri alışverişi sağlanabilir. .NET Framework, .NET Platformunda geliştirilen uygulamalar ile işletim sistemi arasında yer alır. .NET Framework içerisinde yer alan Ortak Dil Çalışma Zamanı (Common Language Runtime), .NET uygulamasını üzerinde bulunduğu işletim sistemi ve CPU’nun mimarisine göre yerli koda çevirerek çalıştırır. Bu sayede farklı platformlarda .NET Framework’ün yüklü olması sayesinde, .NET için geliştirilen uygulama çalışabilmektedir. Mobil .NET uygulamalarında da durum benzerdir ve .NET Compact Framework adıyla bilinir. Sürümleri: • .NET Compact Framework 1.0 Visual Studio 2003 ile birlikte gelmektedir. • .NET Compact Framework 2.0 Visual Studio 2005 ile birlikte gelmektedir. 17 .NET Compact Framework kütüphanelerinin uzantıları cabinet dosyaları olarak bilinen cab uzantısıdır.cab dosyaları mobil cihaza kopyalanır ve çalıştırıldıklarında kendisini yükledikten sonra koybolurlar. Şekil: .NET Compact Framework Class Kütüphaneleri. (Kaynak; Professional Microsoft Smarthpone Programming,Wiley publishing den alıntıdır.) Mobil cihazlar, PC lere göre bazı kısıtlamara sahiptir.Bu yüzden .NET Compact Framework ile uygulama geliştirirken dikkat edilmesi gereken hususları aşağıdaki gibi sıralayabiliriz. • Bellek sınırlaması:Geliştiriciyi kısıtlayan en önemli faktörlerden biridir.PC lerde bu miktar gigabyte’ları bulurken mobil cihazlarda bir kaç yüz megabyte ile sınırlı kalmaktadır. Bellek sınırlaması nedeniyle uygulamalar mümkün olduğunca az yer kaplamalıdır.Performansı da düşündüğümüzde mümkün olduğunca özyinelemeli fonksiyonlardan ve döngülerden kaçınılmalıdır. 18 • Bant genişliği:Önemli faktörlerden biride bant genişliğidir.Bant genişliğinin yüksek olması daha hızlı veri transferi yapabileceğimiz anlamına gelir.Günümüzde mobil cihazlar en fazla 125 Mbps hızı desteklemektedir.Yaygın olarak kullanılan ise 54 Mbps dır. • Sistem kaynakları:Uygulama geliştirirken dikkat edilmesi gereken bir diğer faktörse yükün ne kadarının istemciye ne kadarının server a yüklenmesi gerektiğidir.Eğer uygulama az veri kullanıp çok işlem yapıcaksa yükün büyük bir kısmı server a yüklenmelidir. • Güç:Mobil cihazlarda kısıtlı miktarda güç bulunduğu gözönünde bulundurularak, uygulamalar gerçekleştirilmelidir. • Ekran boyutu:Mobil cihazlarda ekran boyutunun küçüklüğünden dolayı tasarımlar sade yapılmalı gereksiz ayrıntılardan kaçınılmalıdır. ActiveSync Nedir? Mobil cihaz ile kişisel bilgisayarımızı birbirine bağlamak için Microsoft un ActiveSync programı kullanılır.Bu program sayesinde karşılıklı veri aktarımı sağlanır. En son sürümü MS ActiveSync 4.5 dir.Visual Studio 2005 kullanıcılarının MS ActiveSync 4.0 ve üzeri sürümleriyle çalışmaları gerekmektedir. 3.WINDOWS MOBILE 5.0 Microsoft firması tarafından mobil cihazlar için geliştirilmiş işletim sistemidir.Windows CE çekirdeği üzerine temellendirilmiştir.Şu günlerde Microsoft, Windows Mobile 6.0’ı çıkardığını duyurdu. 3.1.Windows Mobile'in genel özellikleri: 1. Cihaz başlatıldığında birçok işletim sisteminde bulunan "masaüstü" benzeri bir ortam yerine "bugün ekranı" (Today screen) gelir. Bugün ekranı randevuları, yapılacaklar listesini, e-posta mesajlarını gösterir. Bu ekrana daha fazla şey eklemenizi sağlayan programlar bulunmaktadır. Ayrıca artalan resmi değiştirilebilir. 19 2. Üstte bulunan görev çubuğu saati, ses düzeyini ve bağlantı bilgilerini gösterir. Çubukta bulunan "başlat" düğmesi Windows'un masaüstü sürümlerindeki başlat düğmesine benzer. 3. Windows Mobile ile birlikte (PDA'larda) Word Mobile, Excel Mobile, PowerPoint Mobile gibi programlar gelir. Bu programlar masaüstü sürümleri kadar özellik içermese de temel görüntüleme ve düzenleme işlemleri için yeterlidir. PowerPoint Mobile ise sadece sunumları görüntülemek için kullanılabilir, düzenlemeye izin vermemektedir. 4. Outlook ve Windows Media Player programları da Windows Mobile ile yüklü gelen yazılımlardandır. 5. Windows'un masaüstü sürümlerinin aksine görev çubuğu üstte, menüler altta bulunur. Ayrıca "kapat" düğmesi genellikle programları kapatmak yerine simge durumuna küçültür, ancak açık programlar görev çubuğunda listelenmediği için bu durum birçok programın açık kalmasına ve dolayısı ile sorunlara sebep olabilir. 6. Windows Mobile günümüz işletim sistemleri içinde en etkin ve sık kullanılan Windows XP ile tam uyumlu çalışması avantajını gün geçtikçe artırmakta, bununla birlikte üretilen GSM telefonlarının belli bir kısmında da işletim sistemi olarak tercih edilir konuma gelmektedir. (Ör: Motorola) 3.2.Windows Mobile sürümleri Windows Mobile işletim sisteminin Windows Mobile 2002, Windows Mobile 2003, Windows Mobile 2003 Second Edition (İkinci Sürüm), Windows Mobile 5.0 isimli sürümleri bulunmaktadır. Windows Mobile 2003 Second Edition ile VGA (640×480) ve kare (240×240 ve 480×480), ekran desteği eklenmiştir. Windows Mobile 5.0 sürümü ile kalıcı hafıza desteği eklenmiştir. 20 4.VISUAL STUDIO 2005 MOBİL CİHAZ EMULATÖRLERİ Visual Studio ortamında mobil uygulama yazmak için üç farklı seçenek mevcuttur.Bunlar Windows CE,Pocket PC ve Smarthpone dur. SDK(Software Development Kit) lar yüklendiği taktirde kullanılabilecek emülatör sayısı daha fazla olmaktadır. Niçin Emülatörler? • Her zaman aradığımız gerçek cihaza ulaşamayız bu durumda emülatör yardımımıza yetişir. • Farklı cihaz uygulamalarında kendimizi yetiştirmek istediğimizde, gerçek cihaz teminindeki maliyetin çok yüksek olması bizi emülatör kullanımına sevk eder. • Günümüzde, emülatörlerinde gerçek cihazlar kadar güçlü olması. 4.1.Pocket PC Emülatör Pocket PC uygulamalarını test etmek için basit farklılıkları olan dört ayrı emülatör vardır. • Pocket PC 2003 SE Emulator • Pocket PC 2003 SE VGA Emulator • Pocket PC 2003 SE Square Emulator • Pocket PC 2003 SE Square VGA Emulator VGA olanları normallerinden daha büyüktür. 4.2.Smarthpone Emülatör Smarthpone uygulamalarını test etmek için iki ayrı emülatör mevcuttur. • Smarthpone SE 2003 Emulator • Smarthpone SE 2003 QVGA Emulator 21 Pocket PC 2003 SE Square Emulator Pocket PC 2003 SE Emulator 4.3.Windows CE Emulator Windows CE Emülatörü Visual Studio 2005 ile birlikte gelmemektedir.Windows CE uygulaması yapılsa bile Pocket PC Emülatörlerinden birinde çalıştırılmaktadır.Ancak Windows CE 5.0 Emülatörü indirilerek kullanılmaktadır. Pocket PC Emülatörlerine benzeselerde yüksek performans için uygun olanın seçilmesi gerekmektedir. 22 4.4.Emülatör Ayarları Kişisel bilgisayarla kullanıyoruz.Visual emulatörü Studio 2005 birbirine bağlamak platformunda için ActiveSync Tools=>Device Emulator programını Manager seçilir.Aşağıdaki gibi emulatör yönetim ekranı gelecektir. İstediğimiz emulatöre bağlandıktan sonra cradle i seçelim. Emulatörümüz bağlandıktan sonra ActiveSync programı otomatikmen devreye girecektir. Bilgisayarıma girip Mobil Aygıt’a çift tıklayarak, emulatörün içine girebilir böylelikle hazırladığınız dosyaları ve uygulamaları elle emulatörünüze atabilirsiniz. 23 5.VERi ERiŞiMi Mobil cihazlarla veriye erişmek için üç farklı yöntem bulunmaktadır. • XML Web servislerinin kullanılması. Extensible Markup Language (XML) w3c tarafından standartlaştırılan işaretleme dilidir.Dolayısıyla veriyi bu standartda alabilmek için XML Web servisleri geliştirilmiştir. • SQL CE Veritabanının kullanılması.SQL CE ,mobil cihazlar için tasarlanmış Sql Server versiyonudur.Mobil cihazlardaki kısıtlamalardan dolayı herhangi bir sunucu çalıştırmazlar. • Uzaktaki sunucuya bağlanıp verilerin kullanılması. 6.XML WEB SERVİSLERİ 6.1.XML nedir? Extensible Markup Language (XML), w3c tarafından standartlaştırılan işaretleme dilidir.Web de veri alışverişini sağlar.XML,HTML gibi bir işaretleme dilidir. HTML, veriyi gösterir,XML veriyi tanımlar. XML de veriyi tanımlamak için doküman tipi tanımlaması DTD (Document Type Definition ) veya XML Schema kullanmanız gerekmektedir. Bu bölüm XML belgesinin içinde olabileceği gibi bir dış belge olarak XML belgesinde link edilmiş de olabilir. Bu DTD ler sayesinde XML belgeniz browser veya farklı bir program tarafından çözümlenerek görüntülenir. 24 6.2.XML Web Servisleri Tarihçesi Dağıtık uygulama geliştirme, ilk olarak Çeşitli RPC’lerle başlamıştır. Daha sonra DCE (Distributed Computing Environment) ile ilk defa RPC’ler Standard hale getirilmiştir. DCE’den sonra CORBA (Common Object Request Broker Architecture) geliştirilmiş ve dağıtık süreç teknolojisini standartlaştırmıştır. Bir topluluk tarafından geliştirilen CORBA’dan sonra, Microsoft’un DCOM uzak nesne protokolü ortaya çıkmıştır. Bu sıralarda en başarılı dağıtık mimariler web ve e-mail olarak gösterilebilir. CORBA ve DCOM (Distributed Component Object Model)’den sonra çok popüler bir dil olan Java, RMI protokolü ile dağıtık sistemlerde büyük bir başarı yakalamıştır. İlk web servisleri teknolojisi, işte bu gelişmelerden sonra, 1999 yılında HP laboratuarlarında http ve XML tabanlı olan e-Speak ile ortaya çıktı. Çok başarılı olmayan e-speak’den sonra, Userland, Dave Winter başkanlığında http ve XML’i birlikte kullanarak XML-RPC’yi yarattı. XML-RPC ile birlikte, XML ile yaratılan daha genel mesaj formatları da mevcuttur. Bunlara Allaine tarafından yaratılan WDDX (Web Distirubted Data Exchange)‘i örnek olarak verebiliriz. XML mesaj formatları konusunda yürütülen çalışmaların içinde Microsoft’un yönettiği SOAP (Simple Object Access Protocol) XML formatlı datanın yapısal alımını ve gönderimini sağladı. SOAP çalışmalarına paralel olarak, Sun şirketi de ebXML çalışmalarını sürdürüyordu. Bu iki büyük çalışma projesinin amacı sadece web servisleriydi. Yukarıdaki saydığımız aşamalardan sonra sıra, web servisleri meta datasını Standardlaştırma çalışmalarına gelmişti. İlk başta WIDL (Web Interface Definition Language), SDL (Service Description Language), SCL (SOAP Contract Language) gibi dillerden sonra IBM, Sun, Ariba ve diğer şirketler ortaklığıyla WSDL (Web Services Description Language) yaratıldı. Bu noktada, web servislerinin diğer dağıtık teknolojilerden neden daha iyi, başarılı olduğunun nedeninin standartlar olduğunu söyleyebilir. Daha önce dağıtık teknolojilerin hiçbirinde standartlaştırma çalışmaları bu kadar büyük çapta ve katılımla gerçekleşmemiştir. 25 6.3.XML Web servisleri standartları XML verilerinin karşılıklı kullanılabilmesi için XML Web servisleri geliştirilmiştir.XML Web servislerinin gelişmesindeki en önemli etkenlerden biride kuşkusuz güvenlik duvarlarına takılmamaları ve platform bağımsız olmalarıdır.Ayrıca sağladıkları fonksiyonları uygulamalarımızda kullanabiliriz. Bir web servisi, tek başına bir anlam ifade etmez. Web servisini kullanan istemcilerin de olması gerekir. İstemciler internet ortamında olabileceği gibi, çalıştığımız şirketin network sisteminde ya da evimizdeki makinenin yerel sunucusu üzerinde olabilir. Bir istemci, bir web servisini kullanmak istediğinde tek yapması gereken, bu web servisi ile konuşabilecek ortak bir takım standartları uygulamaktır. XML tabanlı bu standartlar sayesinde istemciler, web servisine ulaşabilir, bu servis üzerinden metodlar çağırabilir, bu metodlara parametreler gönderebilir ve metodlardan dönen değerleri elde edebilir.XML Web servisleri standartları aşağıdaki gibi sıralanabilir. 26 SOAP(Simple Object Access Protocol):XML temelli uygulamaların karşılıklı veri alışverişi için oluşturulmuş standarttır. Daha önceden uzaktan veriye erişim için birtakım standartlar mevcuttu, bunlar küçük ağlarda veya intranetlerde uygun sonuçlar verebiliyordu, DCOM, CORBA ve J2EE 'nin RMI standartları bunlara örnek verilebilir. RMI üzerinden ancak JAVA nesnelerine ulaşabiliyorduk, bir COM nesnesine RMI ile ulaşabilmek imkansızdı. Ayrıca bunlar TCP/IP portları üzerinden iletişime geçtikleri için internet gibi ortamlarda çalştırıldığında bir takım güvenlik sorunları ortaya çıkabiliyordu, mesela birçok firewall TCP/IP üzerinden bu tür erişimlere izin vermiyor. Halbuki SOAP ile artık bu aşılmış durumdadır. SOAP ile veriler HTTP üzerinden aktarıldığı için hiçbir güvenlik sorunu çıkmamaktadır. Çünkü hemen hemen butün firewall'lar 80 numaralı porttan veri geçisine müdahale etmiyor. (80, HTTP verilerinin aktarıldığı port numarasıdır.) WSDL(Web Service Definition Language): web servisinin sunduğu arayüzü tanımlamak için kullanılır, bir web servisinde bulunan fonksiyonların hangi parametreleri aldığını ve ürettiği bilginin türünü bu standartlar ile belirtiriz. DISCO(Dıscovery Protocol):Bu standart sayesinde ise bir sunucuda paylaşıma açılmış bütün web servislerinin organizasyonu sağlanır. UDDI(Universal Description, Discovery and Integration):İnternet üzerinde paylaşıma açılmış ve uygulamalar tarafından kullanılabilecek web servislerinin organizasyonunu sağlar. 6.4.Basit bir web servis oluşturma Kullanılan araçlar: • Visual Studio 2005 • Windows XP Visual Studio 2005 platformunda File->new->Web site dan yeni bir web servis oluşturmak için aşağıdaki pencereye gelinir. 27 ASP.NET Web Service seçeneği ile ortam hazırlanır.Solution Explorer penceresinde web servisine ait dosyalar bulunur. .asmx dosyası web servis yönergesini içerir.Bu yönerge programcının yazdığı kodun dilini,dosyanın adını ve servise başvurmak için kullanacağınız sınıf adını belirtir. Web.config yapılandırma dosyasıdır. cs uzantılı dosya ise kodlama kısmının yapıldığı dosyadır. 28 Yerel bir makinede web servis yayını için IIS(Internet Information Services) kullanılabilir.Bilgisayarınızda IIS kurulu değilse XP cd sini takıp seçime bağlı bileşenler linkinden IIS kurulumu yapabilirsiniz. Web servis yazmışsanız ilk olarak web servisini barındıracak sanal bir klasör oluşturulması gerekir.Böylelikle uygulamada, local(yerel) deki servisleri görme ve onlara referans verme imkanı kazanılır.Aşağıda adı sonServis olan web servisi için sanal klasör oluşumu anlatılmıştır.Öncelikle sonServis klasörü C:\Inetpub\wwwroot dizinine kopyalanır.Bu işlemden sonra bilgisayarım->yönet den aşağıdaki sayfaya gelinir.Hizmetler->IIS->Web siteleri->Varsayılan Web Siteleri tıklanır.Sağ tarafta oluşturulan servise sağ tıklanıp özellikler açılır.Açılan pencerede “oluştur” a tıklanarak işlem tamamlanır.Serviste girilen string değerin terisini döndüren metod tanımlanmıştır. Internet explorer dan adres satırına http://localhost/sonServis/Service.asmx girilerek aşağıdaki sorgu penceresi açılır.Burada, oluşturulan TersiniBul metodu görünmektedir.Bu linke tıklayarak, girdiğiniz argüman sonucunu elde edebilirsiniz. 29 sonuç 7. WEB SERVİSLERİNDE GÜVENLİK Web Servislerinde güvenlik aşağıdaki başlıklar altında toplanabilir. • Virtual Private Networks(özel sanal ağ) • Soap header ları kullanarak(özel) • Secure Sockets Layer (SSL) • Network Authentication(belgeleme) 30 Bu güvenlik türlerine kısaca değinelim. 7.1.Virtual Private Networks(özel sanal ağ) İki uç nokta (Web Service Client ve Web Service) arasındaki taşıma kanalı vasıtasıyla güvenlik sağlanır. Üç başlık altında inceleyebliriz. • IPSec(IP Security); IPSec kriptografik servisler sayesinde IP networkleri üzerinde güvenlik sağlar. IPSec özel networkler üzerinde ve Internet üzerindeki risklere karşı koruma sağlar. Network yöneticisi IPSec politikalarını konfigüre ederek istediği düzeyde ve kapsamda bir güvenlik sağlayabilir. • Point-to-point Tunneling Protocol (PPTP);Noktadan noktaya veri güvenliğini sağlar. • Layer 2 Tunneling Protocol (L2TP);Bir etki alanına dahil olan kullanıcılar için oluşturulmuş bu politikada veri güvenliği için şifreleme unsurları kullanılır. İki tünel iletişim Kuralı (L2TP/IPSec) L2TP paketlerinin güvenliğini sağlar. 7.2.SOAP Header ları kullanarak güvenliği sağlamak Bu yaklaşımda uygulama, güvenliği devralır ve özel (kişisel) güvenlik modellerini kullanır.Uygulama özel SOAP Header‘ı, kullanıcı bilgilerini (password,username...) doğrulamak için kullanabilir. Bu tip bir güvenlik yaklaşımı özellikle bütün veri akımını şifrelemek yerine mesajımızın belirli(istediğimiz) kısımlarını şifrelemede kullanabilecek bir yöntemdir. 7.3.Secure Sockets Layer (SSL) Bilginin bütünlüğü ve gizliliği (data protection) için, internet üzerinde iki taraf arasında oluşan trafiğin şifrelenerek, gizliliğinin ve bütünlüğünün korunmasını sağlayan SSL (Secure Sockets Layer) protokolü kullanılmaktadır. SSL protokolü bütün yaygın web sunucuları (server) ve tarayıcıları (browser) tarafından desteklenen bir protokoldür. 31 SSL gönderilen bilginin kesinlikle ve sadece doğru adreste deşifre edilebilmesini sağlar. Bilgi gönderilmeden önce otomatik olarak şifrelenir ve sadece doğru alıcı tarafından deşifre edilebilir. Her iki tarafta da doğrulama yapılarak işlemin ve bilginin gizliliği ve bütünlüğü korunur. Veri akışında kullanılan şifreleme yönteminin gücü kullanılan anahtar uzunluğuna bağlıdır. Anahtar uzunluğu bilginin korunması için çok önemlidir. SSL protokolünde 40 bit ve 128 bit şifreleme kullanılmaktadır. 7.4.Network Authentication(belgeleme) Authentication ,genel olarak kullanıcı kimliğini doğrulamadır.Bazı uygulamalarımız güvenlik nedeni ile kullanıcılardan belirli güvenlik katmanlarından geçmelerini isteyebilir.Bunlardan biri de kimlik denetimidir. 8.MS SQL SERVER Microsoft SQL Server; Client-Server ve web tabanlı uygulamalarda, ihtiyaç duyulan veri depolama çözümlerinde kullanılan bir server yazılımıdır. Günümüzde bir çok proje tek bir bilgisayardan kullanılmamaktadır.Bu yüzden ağ ortamında bir kullanıcının girdiği bilgiler diğer kullanıcılar için önem arz etmektedir.Her ne kadar bu işlemi diğer veri tabanları ile de gerçekleitirebilmemize rağmen ağ ortamında güvenlik ve hız açısından en performanslı sonucu “SQL Server” veri tabanı vermektedir. 8.1.Mimarisi 32 Relational Database Engine Veritabanı motorudur. XML desteği daha da artırıldı. Bu sayede XQuery kullanarak XML tipindeki alanlarınız içerisinde select ifadeleri çalıştırabilir hale gelindi. Bu nedenle XQuery Builder adında yeni bir araçta MS SQL Server 2005'e eklendi. Analysis Services Analysis Services çözümleri üretmek için Business Intelligence Development Studio oluşturuldu. Yenilenmiş designer, template, sihirbaz sayesinde çok daha kolay ve kullanışlı Analysis Services çözümleri oluşturabilmek mümkün hale geldi. SQL Server Integration Services Farklı veri kaynakları arasında verinin taşınması ve dönüştürülmesi işlemlerinde kullanılır. Eski versiyonlardaki DTS'in yerini alan teknolojidir. Notification Services Kullanıcıların uyarı sistemleri ile uyarıldıkları uygulamalar hazırlanabilmesi için kayıt tabanlı (subscription-based) bir framework'tür. Reporting Services MS SQL Server 2005 ile beraber gelen bu yeni teknolojiyle beraber MS SQL Server 2005 içersinden raporlar oluşturmanız mümkün. Farklı datasource lerede bağlanma olanağı veren bu teknoloji ile raporlarınızı ister Visual Studio.Net içersinden, ister Business Intelligence Development Studio içersinden istersenizde web arayüzlü Report Manager ekranından oluşturmanız mümkün. 8.2.Database oluşturma DataBase oluşturmak için iki faklı seçeneğimiz bulunmaktadır.Birincisi “SQL Server 2005” programını çalıştırıp database imizi oluşturmak.ikincisi ise “Visual Studio .Net 2005” içerisinden “SQL Server” a ulaşarak işlemlerimizi buradan gerçekleştirmek.Bu aşamada Visual Studio .Net 2005 editörünü kullanarak işlemlerimizi gerçekleştireceğiz. 33 View ->Server Explorer menüsünden aşağıdaki pencere açılır.”DataConnections” seçili iken Mouse a sağ tıklayarak açılan aşğıdaki menüden “Create New SQL Server DataBase” seçeneğine tıklayınız. Açılan aşağıdaki pencereden tabloların yer alacağı veritabanı ismi belirlenir. 34 Windows Authentication “Domain” bulunan ağlarda ,”SQL Server Authentication” ise “Domain” kurulmayan ağ ortamları için çok uygun olacaktır ”Server Explorer” penceresinde oluşturulan veritabanı sekmesi altında yer alan “Tables” klasörüne Mouse a sağ tıklayarak “Add new table” seçeriz.Tablolarımızı açılan pencerede oluştururuz. UYARI:Oturum açtığımız isimle Visual Studio, veritabanına erişime izin veriyor ama dışardan erişmeye çalıştığımızda, örneğin; Internet explorerın bağlantı hatası verdiğini görürüz.Bunun için makinemize “SQL Server Management Studio Express” i kuruyoruz ve veritabanı konfigurasyonlarını ayarlayarak dışardan açık hale getiriyoruz. 9.SQL SERVER MANAGEMENT STUDIO Microsoft SQL Server 2005, çok sayıda yönetim aracına sahiptir.Bunların büyük bir kısmı grafik arayüze sahiptir. Yönetim araçları: • Management Studio • SQL Management Objects • Computer Manager • Sqlcmd • Business Intelligence Development Studio Konfigürasyon araçları: SQL Server 2005 program grubunda; “Configuration Tools” menüsünde birçok konfigürasyon aracı vardır: • Configuration Manager • Surface Area Configuration • Reporting Services Configuration • Error and Usage Reporting Bunlardan biriside SQL Server Management Studio dur. SQL Server Management Studio, SQL Server 2005’in yönetiminde en çok kullanılan araçtır. 35 SQL Server Management Studio şu işlemleri yapmayı sağlar: • İstenilen SQL Server instance’ına, istenilen SQL Server bileşenine istenilen authentication modu ile bağlanmak. • Register (SQL Server’ların kaydedilmesi) işlemi. • Güvenlik ayarları. SQL Server’a erişim yönetimi,LoginID’ler ve User’ların yaratılması. • Veritabanı yönetim işlemleri (veritabanı yaratmak, tablo yaratmak, ilişkilerini düzenlemek vb). • Analysis Services, Reporting Services, SQL Server Integration Services (SSIS) servislerinin yönetimi. Bu servislere bağlanmak ve işlem yapmak. • Transact-SQL, XMLA, MDX, FC ve XQuery deyimlerini yazmak ve çalıştırmak. ÜÇÜNCÜ BÖLÜM 1.TASARIM GERÇEKLEME 1.1.Proje Hakkında Yapılan proje, gerçek hayattan esinlenerek geliştirilmiştir.Un fabrikası personeli, stok takip ve sipariş işlemlerini, XML web servisleri aracılığıyla mobil cihaz(PDA) üzerinden gerçekleştirebilmektedir. Fabrika personelleri kategorize edilmiştir,böylece sisteme girişleri farklı kullanıcı adları ve şifre ile mümkün olmaktadır.Depodaki personel sadece stok işlemleri için yetkilendirilmiştir.Saha personeliyse sipariş işlemlerini yapabildiği gibi müşteriye bilgi verebilmesi için stok durumunuda öğrenmeye yetkilendirilmiştir. Saha personelinide kendi arasında ikiye ayırmak doğru olacaktır.Bunlar taksiyle il il müşterileri gezerek siparişleri sisteme giren ve fabrikadan unları alarak müşteriye teslim eden şoförlerdir.Şoförler teslim ettikleri malları siparişten düşerler. Tabiki fabrika sahibi tüm yetkilere açık olmakla, yapılan her işten anında haberdar olabilecektir. 36 (Şekil:Personel-Yetkilendirme) 1.2.Veri Tablolarının Oluşturulması Stok takip ve sipariş işlemleri için iki adet veri tablosu oluşturulmuştur.Birincisi Siparişlerin tutulduğu SIPARIS tablosudur.Aşağıda da görüldüğü gibi müşteri bilgileri ve sipariş ettiği unun cinsi ve adedi bulunmaktadır. İkinci tablo ise stok bilgilerinin tutulduğu STOK tablosudur.Bu tabloda fabrikadaki depoda bulunan unun cinsi ve adedi tutulmaktadır. 37 1.3.Web servisin oluşturulması ve yayınlanması Veritabanında bulunan STOK ve SIPARIS tablolarında işlemler yapabilmek için oluşturulan web servisinde farklı metodlar bulunmaktadır.Bu metodlar yardımıyla istemci uygulamaları rahatlıkla gerçekleştirilir. Oluşturduğumuz web servisi yayınlamak için,web servisi oluşturan dosyaların IIS dizinine kopyalanmasıyla yapılır. Bu dosyalar şunlardır. • Web servis dosyaları:.asmx dosyaları • Yapılandırma dosyası:web.config • Assembly dosyaları:Servisi çağırmak için gerekli olan .dll dosyaları.Ayrıca diğer assembly dosyaları. UYARI:Sunucuya yerleştirdiğimiz web servis dosyalarından web.config dosyasının içeriğine aşağıdaki kodları eklememiz gerekmektedir.Bu kodlar sayesinde gerekli protokoller devreye girer ve web servisinin sağlamış olduğu hizmetten yararlanabiliriz. <system.web> <webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices> </system.web> Web servisin yayınlanmış olduğu adres: http://aliakay.ktu.edu.tr/gurcel/Service.asmx Şimdi bu web servisin içermiş olduğu metodları inceleyelim. 38 ekleSipariş:Sipariş tablosuna yeni sipariş eklerken kullanılır.Böylelikle alınan yeni bir sipariş sisteme girilebilir. getSiparis:Sipariş tablosundaki verileri çekmeye yarar. getStok:Stok tablosundaki verileri çekmeye yarar. sifreligetSiparis:İzinli kullanıcı adı ve şifre ile ulaşıldığında getSiparis in görevini yapar.Örnek olması amacıyla yapılmıştır. siparisGüncelle:Sipariş tablosundaki verileri güncellemeye yarar. siparisSil:Sipariş tablosundaki herhangi bir siparişi silmeye yarar. stokEkle:Stok tablosuna veri girmeye yarar.Böylelikle depoya yeni üretilmiş unların kaydı girilir. stokSil:Stok tablosundan veri eksiltmeye yarar.Böylelikle kamyon ve tırlar vasıtasıyla müşterilere gönderilen unlar depo kayıtlarından düşülür. 39 1.4.XML dosyası içeriği ve kullanımı Örnek olarak sipariş tablosundaki verileri çektik.Bu veriler dataset nesnesine atılarak uygulamarda kullanılır. <?xml version="1.0" encoding="utf-8" ?> - <DataSet xmlns="http://aliakay.ktu.edu.tr/"> - <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> - <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> - <xs:complexType> - <xs:choice minOccurs="0" maxOccurs="unbounded"> - <xs:element name="Table"> - <xs:complexType> - <xs:sequence> <xs:element name="ID" type="xs:int" minOccurs="0" /> <xs:element name="TIP" type="xs:string" minOccurs="0" /> <xs:element name="ADET" type="xs:string" minOccurs="0" /> <xs:element name="MUSTERI_ADI" type="xs:string" minOccurs="0" /> <xs:element name="ADRES" type="xs:string" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> 40 - <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> - <NewDataSet xmlns=""> - <Table diffgr:id="Table1" msdata:rowOrder="0"> <ID>1</ID> <TIP>1</TIP> <ADET>100</ADET> <MUSTERI_ADI>Ahmet Güneş</MUSTERI_ADI> <ADRES>Güneş Un, Değirmendere/TRABZON</ADRES> </Table> - <Table diffgr:id="Table2" msdata:rowOrder="1"> <ID>2</ID> <TIP>2</TIP> <ADET>150</ADET> <MUSTERI_ADI>Ali Kemal</MUSTERI_ADI> <ADRES>Kemal Un, Vona/ORDU</ADRES> </Table> - <Table diffgr:id="Table3" msdata:rowOrder="2"> <ID>3</ID> <TIP>1</TIP> <ADET>100</ADET> <MUSTERI_ADI>Yüksel Batuk</MUSTERI_ADI> <ADRES>Batuk Un, Çarşamba/ SAMSUN</ADRES> </Table> </NewDataSet> </diffgr:diffgram> </DataSet> 41 1.5. SOAP Header ları kullanarak güvenliğin sağlanması Web servisimizin sağladığı imkanlardan sadece bizim yararlanmamız için ve de veritabanında başkalarının işlem yapmasını engellemek için SOAP header ları kullanarak kimlik denetimi eklenmiştir. Sunucu tarafında yapılması gerekenler Birinci adım: using System.Web.Services.Protocols; isim alanını uygulamaya eklemek. İkinci adım: AuthHeader adında SoapHeader classından miras alma yoluyla türetilmiş yeni bir sınıf oluşturalım. // Kimlik denetimi için kullanılacak sınıf. public class AuthHeader : SoapHeader { public string Username; public string Password; } Sınıfımız iki public üyeye sahip. Bunlar string veri tipinde. Bu üyelerin amacı kullanıcıadı ve parola bilgilerini taşıyarak kimlik denetiminde kullanılmalarını sağlamak. Üçüncü adım: kimlik denetimi bilgilerini web servis uygulaması içinde kullanılabilir hale getirmek için, BasitAraclar sınıfı içerisinde, tasarladığımız AuthHeader veri tipinde public bir field tanımlamak. public AuthHeader KimlikDenetimi; 42 Dördüncü adım: kimlik denetimi yapmak istediğimiz servise bir attribute eklemek. [SoapHeader("KimlikDenetimi")] Beşinci adım: web servis uygulamamızda tanımladığımız ve SoapHeader attribute içerisinde referans gösterdiğimiz KimlikDenetim isimli değişkeni kullanarak kod içerisinde denetimimizi gerçekleştirelim. if (KimlikDenetimi.Username == "gursel" && KimlikDenetimi.Password == "12345*") {.................} } else // Kimlik denetimi: kullanıcı yetkisiz throw new Exception("giriş başarısız"); İstemci tarafında yapılması gerekenler // Metodu çalıştıracak nesne... sonEmul.localservis.Service ws= new sonEmul.localservis.Service(); // Kimlik bilgilerini taşıyacak nesne sonEmul.localservis.AuthHeader baslik = new sonEmul.localservis.AuthHeader(); // Kimlik bilgileri baslik.Username = "gursel"; baslik.Password = "12345*"; //Güvenlik bilgileri metodu çalıştıracak nesneye yükleniyor. ws.AuthHeaderValue = baslik; 43 localServis isim alanı web servisimizi temsil ediyor. Web servisimizin referansını eklediğimiz anda Visual Studio WSDL dokümanına bakarak iki sınıfı uygulamızda kullanabilmemiz için proxy olarak bizim için yapılandırdı: Service ve AuthHeader.Service getSipariş metodu içinde barındıran sınıf. AuthHeader ise kimlik denetimi için gerekli bilgileri taşıyacak olan sınıf. Bu iki sınıf, metod çağırılmadan hemen önce bir yerde buluşmak zorunda. Örnek teşkil etmesi sebebiyle oluşturulmuş sifreligetSiparis() metodunun gerçektende explorer da çalıştırılması sonucu açılmadığını görürüz. Tabiki yazdığımız istemci uygulamasında gerekli kullanıcı bilgileriyle metoddan faydalanmamız mümkün. 44 2.TEST Uygulamayı emülatörde çalıştırıyoruz.Öncelikle kullanıcı adı ve şifreyi isteyen arayüz karşımıza gelir.Burda saha elemanıysa farklı depo elemanıysa farklı kullanıcı adını kullanır.Girilen kullanıcı adına göre farklı arayüz gelmektedir.Aşağıda şifreli giriş arayüzü görülmektedir.Daha sonrasında saha elemanının işlemlerini yapabileceği arayüz görülmektedir. 45 3.SONUÇ Kısıtlamaların fazla olduğu mobil cihaz uygulamasına başlamada çekincelerim vardı.Ardından uygulamamı yaptığım Windows Mobile 5.0 işletim sistemi yüklü olan gerçek bir PDA bulmak zor olacaktı.Sonrasında ise Türkçe kaynak sıkıntısı. Ancak, öncelikle PDA nın temini ardından basit bir denemenin çalışması cesaret veren gelişmeler oldu. Öncelikle Web servisleri yazıldı sonrasında ise web servislerini kullanmaya başladım.Web servislerini local(yerel) de kullandığım için çeşitli sıkıntılarla karşılaştım.Örneğin;veritabanına farklı oturumla erişemiyordum.Karşılaşılan problemler giderilerek uygulama çalışır bir hale getirilmiştir.Ardından web servisi uzak bir sunucuya yerleştirildi.Tabi burdada sunucuya erişim sıkıntıları oldu.Bunlarında çözümleri sağlandıktan sonra uzaktaki sunucudan servis sağlamak mümkün hale geldi. Önümüzdeki yıllarda daha popüler hale geleceğini umduğum mobil uygulamalara böyle bir projeyle başlangıç yapmanın faydalı olacağı kanaatindeyim.Bitirme teziminde bu işe başlangıç aşamasındakiler için faydalı bir kaynak olmasını umuyorum. 46 4.KAYNAKÇA • Professional Microsoft Smarthpone Programming , Wiley Publishing • C#’ı Kavramak ,Tom Archer.Arkadaş yayınevi • .Net ve Mobil Teknolojileri,Aytaç Özay.Seçkin Yayınevi • .NET Framework Programlama,Faruk Çubukçu.Alfa Yayınevi. • AçıkÖğretimMobilÖğrenme Klavuzu 2006. • Visual C# .NET 2005 • http://www.csharpnedir.com • http://www.msakademik.net • http://www.yazgelistir.com • http://www.tayfunakcay.com • http://www.mobilnedir.com • http://msdn2.microsoft.com/en-us/downloads/default.aspx • http://geekswithblogs.net/ranganh/archive/2006/03/25/73301.aspx Nihat Demirli & Yüksel İnan 47