14 Aralık 2010 Salı

VS Command Prompt olmadan Windows Service'leri yönetmek

Selamlar,

Geçenlerde Visual Studio Command Prompt yüklü olmayan bir ortamda, program-ekle kaldır ile kaldırılamayan bir Windows Service'i sistemden kaldırmam gerekiyordu.

Command Prompt yüklü olmadığından klasik -installutil yöntemini kullanamıyordum. Bu tip senaryolar için Windows Commnad'ini aşağıda ki şekilde kullanabiliriz.

-> Başlat - Çalıştır - cmd
-> sc delete "ServiceName"

Komutları işimizi görecektir.

Windows'un ServiceController'ı bizim için işlemleri yürütüyor. Servis oluşturmak ile ilgili makaleyi de buradan okuyabilirsiniz.

10 Kasım 2010 Çarşamba

burcakbas.com

Yapım aşamasında!

burcakbas.com

12 Ağustos 2010 Perşembe

Ölmedim, I'm alive !

Çok yoğunum ama burdayım yaşıyorum, yaşamaya çalışıyorum.

Yoğunluktan bloğa zaman ayıramıyorum. Zaten yakında burcakbas.com'a geçiş yapacağım.

Haydi blogcan kal sağlıcakla...

15 Nisan 2010 Perşembe

Microsoft - Visual Studio 2010 Released

En sevdiğimiz oyuncağın yenisi çıktı!!! Evet uzun süredir beklediğimiz Visual Studio 2010 ve .NET 4.0 nihayet resmi olarak sunuldu. :)

Ağzım sulanarak direk Installer'a saldırdım. 4.5 Mb'lık Installer'ı indirip kuruluma geçtim. İlk dikkatimi çeken bir önceki sürümüne göre kurulumun çok daha kolay yapılabilmesi. Neredeyse basit bir program yükler gibi next next diyerek kurulumu tamamlıyorsunuz.



Yüklemeyi tamamlayıp programı çalıştırıyoruz. Yüzler gülüyor "Waay. Güzel yapmış adamlar." tarzı sesler çıkararak yeni bir proje oluşturayım dedim.

ASP.NET Web Application seçeneğini ikiye ayırmışlar. Biri aynen bu isimde. Diğeri ise Create Empty ASP.NET Web Application olarak geçiyor. Normal Web uygulamamızı açtığımızda önümüze gelen bizi biraz şaşırtıyor.




Hani kuru html kodları ? Hani içi boş default.aspx ? O_o Çalıştıralım bakalım ne gelicek ?



Oda ne ? Hadi içeriği anladık da Login ?


Register ? Daha neler adamlar User Management yapmış :)

Evet fazla zaman bulamadan biraz inceledim. Sanıyorum buradan şu mesajı çıkarmak gerekir. Microsoft bize standart biz ASP.NET Web sitesinin bu yapıda olması gerektiğini anlatmaya çalışıyor. Örnek olarak kullanıcıları Membership Provider'ile yönetmiş. Bunlara ek olarak Script klasöründe JQuery dosyaları hazır geliyor. Bu da başka bir mesaj gibi.Web.config değişmiş. Bazı ayarların buradan yönetimini kaldırmışlar. Çok daha temiz bir web.config var karşımızda. Kısacası bakılması didik didik edilmesi gereken daha çok yenilik ve değişiklik var. Bakalım ne kadar zaman bulup araştırıp yenilikleri öğreneceğiz.

Tüm .net severlere selam eder aranızdan ayrılırım efenim. İyi geceler...

Unleash your creativity!

10 Nisan 2010 Cumartesi

ASP.NET - Xml WebServices (2 - Uygulamalı Örnek)

Tekrar merhaba,

Bu makale de basit bir Web Service yazıp nasıl kullanıldığını bir örnek üzerinde görmeye çalışacağız. Bir önceki yazımda anlattığım üzere çeşitli nedenlerden dolayı Web Service kullanma ihtiyacı ortaya çıkabilir. Peki nasıl ve nereden başlamalı? Gelin hep birlikte sıfırdan bir proje oluşturalım.

Servis'i yazmadan önce Web Service'leri ile ilgili biraz hatırlatma yapmak isterim. Web Service'ler daha doğrusu Xml Web Service'ler adı üstüne Xml (eXtensible Markup Language) yapısını taşıdığı için data gönderim ve almada bize kolaylıklar sağlarlar. Bu kolaylığı sağlamaları için kullandıkları bazı protokoller vardır. Xml Web Service'leri de Xml tabanlı olduklarından SOAP (Simple Object Access Protocol, Basit Nesne Erişim Protokolü) protokol'ünü kullanırlar.

SOAP protokolünde taşınacak her bir datanın belli bir standartta olması gerekir. Bunun için SOAP ile taşınan bir datayı üç aşamada inceleyebiliriz.

Envelope - Header - Body

Envelope : Bu yapının en geniş kümesidir. Şekilde de görüldüğü gibi her bir SOAP Envelope'u bünyesinde Header ve Body'i içermelidir.

Header : Gönderilecek olan datanın ön bilgisini taşır.
Body : Gönderilecek olan datanın içeriğini taşır.


Artık projeyi geliştirmeye başlayabiliriz. Her zaman ki gibi Visual Studio arayüzünden yeni ve boş bir Solution oluşturuyorum. İsmide blogWebService olsun. Bu Solution'ıma bir adet Web Service ve bir adet de bu Web Service'i tüketecek yani test edeceğimiz bir Web Projesi ekleyeceğim

İlk olarak servisimizi yazalım. Solution'a sağ tıklayıp Add sekmesinden NewProject diyorum ve karşıma gelen arayüzden ASP.NET Web Service Application sekmesini seçip ismine de blogService adını veriyorum.

Web servisimizi oluşturduğumuz anda Visual Studio bize standart bir Web Service'te olması gereken yapıları ve de bir metot örneği ile oluşturup getiriyor.

Şimdi gelelim asıl soruya. Peki bu servis ne iş yapacak?

Gelin basit bir metot yazalım ve metot bizden string bir değer alıp bunu içinde işleyip tekrar string olarak geri döndürsün. HelloWorld metodunu silip yerine kendi Hosgeldin metodumuzu ekleyelim.



Kural 1 - Eğer bir Web Service için metot yazıyorsanız, her zaman metodun başına [WebMethod] etiketini koymanız gerekir. Bu, metodun sisteme tanıtılmasını sağlar.

Kural 2 - Web Service'te yazdığımız metotlar Public olmalı ki dışarıdan çağırılabilsinler.

Kural 3 - Ve son olarak metodun geri dönüş tipinin Serializable (Serileşebilir) bir tip olması gereklidir. Serileşme'yi başka bir makalede uzun uzun anlatmak daha doğru olur.

Evet gelelim metodumuza. Metot bizden string "ad" ve "soyad" olarak iki değer alıp bunları işleyip, tekrar string olarak geri veriyor olsun.

























Metodumuzu yazdık. Test edelim bakalım servis çalışıyormu. ".asmx" uzantılı Web Service'imize sağ tıklayıp "View in Browser" diyoruz. Ve evet yazdığımız metot çağırılmak üzere üretilip getirilmiş. Tıklayıp değerleri girelim bakalım çalışacak mı ?





Güzel. Sıra geldi bu servisi kullanmaya. Peki bu servisi nasıl kullanacağız?

Servisi kullanabilmek için önce ona ulaşmak gerekir öyle değil mi? Peki bu nasıl olacak?

Bu noktada bazı hatırlatmaları yapmakta fayda var. Web Service'ler bir web sayfası gibi ulaşılabilirdir. Yani temelinde her web sayfasında olduğu gibi URL (Uniform Resource Locator)' i mevcuttur. Ve bu URL üzerinden ulaşılırlar.

Şimdi gelelim WebService'imizi dışarıya açmaya. Bu işlem için tabiki IIS (Internet Information Server)' ı kullanacağız. WebService'imizi dışarı açmak için (Publishing) Visual Studio arayüzümüzü de kullanabiliriz. Bunun için servisimize sağ tıklayıp Publish diyoruz.


Açılan arayüzden "..." diyip


















Burada ilk olarak Local IIS'i seçiyoruz. Ardından Web Service'i hangi dizin altında oluşturmak istediğimizi seçiyoruz. Ben test amaçlı olduğundan Default Web Site (Varsayılan Web Sitesi)'ı seçtim siz tabiki istediğiniz bir dizin oluşturabilirsiniz.
Daha sonra sağ üstte bulunan Create New Web Application diyip URL'imizin ismini veriyoruz. Ve son olarakda Open'ı diyip ilk karşımıza gelen menüde seçimlerimizin oluştuğunu görüyoruz.

Burada da Publish diyip servisimizi Local IIS'e açmış bulunuyoruz.



















Gördüğünüz gibi artık Web Service'imize "http://localhost/blogHosgeldinService/" adresinden erişebiliriz. Tabiki sonuna servisi ekleyerek. Yani "http://localhost/blogHosgeldinService/Service1.aspx"'i bir browser'da açar iseniz servisin çalıştığını göreceksiniz.

Artık servisi test edecek projeyi geliştirmeye başlayabiliriz. Bunun için Solution'ımıza yeni bir Web Project ekliyorum. İsmide blogServConsumer olsun.

Tüketici (Consumer) projemize bir adet Label, iki Textbox ve Button koyuyorum. Button'un click olayında Web Service'i de ki metodu çağırıp girdiğimiz değerleri Label'da göstereceğim.

Sıra Web Service'i projemize eklemeye geldi. Bunun için References kısmına sağ tıklıyorum. Gördüğünüz gibi karşımıza Add Reference, Add Web Reference, Add Service Reference isimli üç adet referans ekleme seçeneği çıktı. Peki neden üç farklı yol var ? "Neden ?" sorusu bir yazılımcı için olmazsa olmaz fakat bu sorunun cevabını başka bir makalede uzun uzun anlatmam gerekecek.

Bunu şimdilik geçip Add Service Reference diyorum.



















Karşımıza referans ekleme arayüzü geliyor. Burada referans eklemenin çeşitli yolları var. Örneğin sağ üstte bulunan Discover'a tıklayarak bu Solution içinde eklenebilecek servisleri listeleyip ekleyebilirsiniz. Veya Address kısmına direkt servisinizin URL'ini yazmak. Başka bir yol sol altta bulunan Advanced... seçeneğini seçerek
























Karşımıza gelen Service Reference Settings arayüzünden Compatibility kısmında bulunan ve açıklamasına yine girmeyeceğim Add Web Reference...'ı kullanmaktır.


































Karşımıza gelen arayüzden Web services in this solution'ı seçip bu solution içinde ki Web Service'leri listeliyoruz. Buradan da servisimizi seçtikten sonra çağırırken kullanmak üzere ismini verip (Web reference name : "blogServis") Add Reference diyip işlemimizi bitiriyoruz. Evet nihayet servisi ekleyebildik :)

Bir kaç saniyelik işlemden sonra servisin referenslara eklendiğini göreceksiniz. Gelin şimdide servisimizi kullanalım. Eklediğimiz Button'a çift tıklayıp kod tarafına geçiyorum. Servisi her event içinde çağırmamak için Page_Load metodunun üstüne servisimizin yeni bir Instance'ını alıyorum.

blogServis.Service1 blogServis = new blogServConsumer.blogServis.Service1();

Sırada button'a tıklanında metodu çağırmak kaldı. Click eventinde blogServis ismiyle oluşturduğum servisimizi çağırıp gerekli işlemleri gerçekleştiriyorum.

LabelSonuc.Text = blogServis.Hosgeldin(TextBoxAd.Text, TextBoxSoyad.Text);























Bakalım çalışıyor mu? Default.aspx sayfamı çağırıp gerekli bilgileri giriyorum ve "Göster" diyorum...













Web Service kullanarak ilk uygulamamızı geliştirdik. Bundan sonra ki dönem de Web Service ipuçlarını (Güvenlik, Performans, Asenkron Çözümler, Gerçek bir Web Service için gerekli ayarlar...) ele alacağım.

Tekrar görüşmek üzere.

Download : blogWebService