İNTERNET BAĞLANTI KONTROLU

Tasarladığımız uygulamalarda bazı işlevlerin sorunsuz çalışabilmesi için uygulamanın çalıştığı cihazda internet bağlantısının olup olmadığı çalışma esnasında tespit edilmelidir. İnternet bağlantınsın mevcudiyeti tespit edildikten sonra internet erişimi gerektiren işlevler geçici olarak devre dışı bırakılabilir ve kullanıcı bir uyarı mesajı aracılığı ile durumdan haberdar edilebilir. Aksi takdirde uygulama çalışma esnasında hata verip sonlanabilir veyahut kullanıcı açısından sinir bozucu bazı durumlara sebebiyet verebilir.

 Aşagıda 5 farklı yolla internet bağlantısı kontrolunu anlatacağım.
Not: 4. ve 5. metod kullanımı daha yararlıdır.



Yukarıdaki örnekte ben Windows Internet API kullanımı ile internet bağlantısının olup olmadığını test ettim.

1- WebRequest Kullanımı
2- TcpSocket Kullanımı
3- PING Kullanımı
4- DNS Kullanımı
5- Windows Internet API Kullanımı






ASP# - Sayfa Adını Öğrenme

ASP.NET ile bulunduğunuz sayfanın dosya adını elde etmek isterseniz Page nesnesini kullanabilirsiniz. Yalnız tam olarak sayfa adını alabilmek için 2 basit işlem daha yapmanız gerekiyor.

page_name = Page.ToString().Replace("_aspx", ".aspx").Remove(0, 4);   (C#)
page_name = Page.ToString.Replace("_aspx", ".aspx").Remove(0, 4)    (VB .NET)

page_name değeri o an bulunduğumuz sayfanın adını getirecektir.

ASP# - Online Ziyaretçi Sayısı

Ilk olarak ApplicationState kullanımını ele alalım.

ApplicationState Oluşturma

Application["Appisim"] = "Değer";
ApplicationState Değeri Alma

string appdegeri = (string)Application["Appisim"];

ApplicationState Silme

Oluşturmuş olduğumuz ApplicationState'ler Sunucu taraflı saklandığı için Sunucumuz üzerinde yük oluşturacaktır. Bu yüzden kullanmaya ihtiyacımız olmadığı durumlarda ApplicationState'leri Silmemiz gerekir.

Application.Remove("Appisim");

ApplicationState Tamamını Silme

Application.RemoveAll();

Online Ziyaretçi

Application State'lerin kullanımı hakkında en iyi örneklerden biri Online Ziyaretçi Sayısı Hesaplama uygulamasıdır. Bu uygulama ile Application State'lerin kullanılış mantığını anlamış olacağız.

Sitemize giren her kullanıcı Global.asax içindeki SessionStart'ı çalıştırmış olur ve sitemizden çıkan her kişide Session_End'i çalıştırmış olur. Biz Session_Start'a gelen her kullanıcı için Online Ziyaretçi sayımızı 1 artıracağız. Session_End'e gelen her kullanıcı için ise Online Ziyaretçi sayımızı 1 azaltacağız. Böylece Online Ziyaretçi sayımızı güncel olarak tutmuş olacağız. Kodlar aşağıda verilmiştir. Bu kodları Global.asax içine yazıyoruz.

void Application_Start(object sender, EventArgs e)
 {
    Application["OnlineZiyaretci"] = 0; //Burada OnlineZiyaretçi tanımı yapılmıştır.
 }

void Application_End(object sender, EventArgs e)
 {
    Application.Remove("OnlineZiyaretci"); //Burada uygulama sonlandırılmıştır ve OnlineZiyaretci State'imizi siliyoruz.
 }

void Session_Start(object sender, EventArgs e)
 {
    Application.Lock();
    Application["OnlineZiyaretci"] = (int)Application["OnlineZiyaretci"] + 1; //Burada sitemize yeni bir kullanıcı girdiğini anlıyoruz ve OnlineZiyaretçi sayımızı 1 artırıyoruz.
    Application.UnLock();
 }

void Session_End(object sender, EventArgs e)
 {
    Application.Lock();
    Application["OnlineZiyaretci"] = (int)Application["OnlineZiyaretci"] - 1;  //Burada sitemizden bir kullanıcının ayrılmış olduğunu anlıyoruz ve OnlineZiyaretçi sayımızı 1 azaltıyoruz.
    Application.UnLock();

  }

  • Sayıyı bir label da gosterelım.

 int onlineZiyaraetciSayisi = (int)Application["OnlineZiyaretci"];
 lbl_online.Text = "Online Ziyaretci Sayisi : " + onlineZiyaraetciSayisi.ToString();

ASP.NET Web Forms ve ASP.NET MVC Arasındaki Farklar

Bu yazımda iki teknoloji arasındaki farklılıkları, avantajlarını ve dezavantajlarını sonuç olarak hangisini seçmemiz gerektiğini anlatacağım.

ASP.NET Web Forms üzerinde bulunan datalist, gridview gibi componentler kullanıldıklarında kapladıkları yer o kadar çoktur ki, normal durumda arkaplanda çalışan kodlarımızdan bile daha çoktur. Ayrıca postback ve view state kullanımıda büyük bir yüktür.

ASP.NET MVC kullanırken sunucu taraflı kontrollerin olmadığını göreceksiniz,yine postback esasına dayanan bir yapı da yok, ViewState yok. (ASP.NET WebForms 4.0 ile de bu alanda çok şeyler yapıldı, ViewState önemli derecede küçültülebiliyor hatta bazı durumlarda devre dışı bırakılabiliyorda) Araştırdığınızda bazı kaynaklarda sunucu taraflı kontrollerin kullanılabileceğini görebilirsiniz, şahsen yapmadım ama yapılmasının önünde bir engel yok,yalnız o durumda viewstate gibi durumlar nasıl hallediliyor bilmiyorum. Bence hiç sunucu taraflı kontrol kısmına girmeyin ASP.NET MVC kullanmanızın bir anlamı kalmaz.

Hali hazırda kullandığınız Web Forms'ların avantajları çok derin HTML ve Javascript bilgisi olmadan bile iş gören siteler oluşturulabilmesi. Sunucu taraflı kontroller zaten istemciye gönderilecek HTML çıktısını geliştirici yerine oluşturuyorlar, ya da bu çıktıya dönüştürülüyorlar demek daha doğru. Bu kontroller ihtiyaçları karşılama noktasında gayet iyiler, özellikle toolbox'un Data sekmesindekilerin yetenekleri.
Yine olay bazlı (event-driven) bir programlama modeli olduğundan daha önce bu modeli kullanan kişiler için büyük kolaylık sağlayacaktır. Önceleri Windows Forms ya da Office üzerinde programlama yapan kişiler WebForms kullanarak yabancılık çekmeden geliştirme yapabilirler.
Birde 3. parti kontroller var piyasada,görsellik ya da standart kontroller ile sağlanamayan özellikleri bu kontrolleri kullanarak edinmek mümkün.

ASP.NET MVC'nin avantajları ise bir kere üretilen HTML çıktısı üzerinde hakim olmanız. KB larca ViewState bilgisini oradan oraya sırtınızda yük gibi taşımak zorunda kalmıyorsunuz. Model View ve Controller adında 3 temel yapı sunulduğundan SoC(Seperation of Concerns - İlgilenilmesi gereken işlerin birbirinden ayrılması) sağlanmış oluyor. View sadece sayfada görüntülenecek kısımla ilgilenirken, Controller sayfadan kullanıcının yaptığı işlemlere göre bir çeşit iş katmanı gibi davranıp iş mantığını yürüttükten sonra gösterilmesi için yeni bir View gönderiyor istemciye. Model ise veri ve veritabanı işlemlerini çağrıştırıyor olsa da burada bir DAL(Veri Erişim Katmanı) kurulması mümkün. Yani iş katmanında verinin nasıl kullanılacağı ve veritabanına verinin ne şekilde kaydolunacağını da Model içerisinde inceleyebiliyoruz.Okuyunca biraz karışık geliyor ama düşününce yapılan işi planlama noktasında,mimari de diyebiliriz daha iyi bir sistem gibi duruyor.

Şu da var, ASP.NET WebForms ile geliştirme yaparken temel HTTP protokolünün nasıl çalıştığını bilmeye gerek yok, bir şekilde kullanıyorsunuz ama bunu framework sizi devreye sokmadan yapıyor, o yüzden MVC kullanmanın bu noktada da bir avantajı var diyebilirim. HTTP ve hergün kullandığımız Web nasıl çalışıyor sorusuna MVC daha iyi cevap veriyor.

Bu durumu bir örnekle açıklayalım: Asp.Net WebForms ile oluşturulmuş bir butona tıkladığımızda, normalde çalışan sistemden 10 kat daha fazla performans harcaması gerçekleşiyor. Bu çok büyük bir performans düşüklüğüne sebebiyet veriyor. Bu yüzden hızlı bir web sitesi yapmak hayal olarak kalıyor.
Ancak MVC'de bu gibi durumlar söz konusu değildir. Performansı yüksek ve oldukça hızlıdır.
Şimdi bu iki yapının avantaj ve dezavantajlarından bahsedelim.

ASP.NET WEB FORMS

Amaç Windows ortamında uygulama geliştiren geliştiricilerin zorluk çekmeden Web ortamına adapte olmalarını sağlamaktır. Kısaca geliştiricilerin çabuk bir şekilde uygulama geliştirmesine imkan tanımaktır.
Server kontrolleri (textbox,listbox vs.) viewstate dediğimiz yapıyı kullanarak otomatik olarak ayarlar.(state of view) Ancak bu durum büyük bir sorunuda beraberinde getirir.
Server kontrollerinin çok olması avantajlarından birisidir.WebForms'lar ortaya ilk çıktığı andan beri yüzlerce kişi ve şirket bu yapıya bileşen yazdı. Bileşenlerin bolluğu vardır ve bu bize daha kısa sürede kod yazma imkanı verir.
Ayrıca Asp.Net Web Forms ile ilgili çok sayıda kaynak vardır. İnternetten kolayca yararlanılabilir.

ASP.NET MVC

Uygulama Model, View ve Controller'a bölerek karmaşıklığı önler.
View üzerinde HTML kontrolü vardır. MVC FrameWork içerisindeki View sayfalarında standart HTML kullanılır ki bu da bize HTML üzerinde tam olarak kontrol sağlar.
Test Edilebilirdir. ASP.NET WebFormlar'da test imkanı çok kısıtlıdır. Test için harici sınıflar eklememiz gerekmektedir. Nedeni ASP.NET WebForm'un IIS ve yaşam döngüsü(life circle) olmadan bunu çok zor bir şekilde yapabileceğidir. MVC'de durum böyle değildir. MVC FrameWork oluşturulurken bu durum göz önüne alınmıştır ve buna karşı Test Driven Developer(Test Sürüşlü Geliştirme) gelmiştir.

URL Routing  vardır. Microsoft MVC mimarisinde, Routing adı altında yeni bir düzenleme getirdi ve bunun büyük katkıları oldu. Daha kolay Seo'ya imkan verdi. Bu durumu ileride ele alacağım.
Sayfa döngüsü(life circle) yoktur. Hiçbir zaman overflow exception hatasına düşmez.

ASP.NET MVC3 Kurulumu ve Başlatılması

VisualStudio 2010 üzerine MVC3'nin nasıl kurulacağını anlatacağım. Öncelikle http://www.asp.net/mvc/mvc3 sayfasına  bağlanıyoruz. Burada şekilde sarı zemin ile gösterildiği gibi ASP.NET MVC3 installer yazısına tıklıyoruz.


Not:Eğer MVC4 yüklemek istiyorsanız ,http://www.asp.net/mvc/mvc4 adresini tıklayınız.

Daha sonra açılan pencereden sizin bilgisayarınıza uygun olan Download'ı seçip yüklüyoruz. İndirilen pakete çift tıklayıp installer'a tıkladıktan sonra 1-2 dakika kadar yüklenmesini bekliyoruz.

Yükleme işlemi tamamlandıktan sonra artık ASP.NET MVC3 projemizi başlatabiliriz. Visual Studio içerisinde File-New-Project tıkladıktan sonra Web katmanına tıklayarak şekilde gösterildiği gibi ASP.NET MVC'yi seçip projemizi başlatıyoruz.


C# - GÖREV YÖNETİCİSİNİ ENGELLEME (TASK MANAGER DISABLE)

Kod kayıt defterindeki değeri değiştirerek görev yöneticisini engellemektedir. Ayrıca görev yönetici CTRL + ALT + DEL Tuşu ve başlat ikonuna sağ tıkladığımızda çıkan görev yöneticisini aç kısmını da engellemektedir.
Visual studio da form application project acalım.Form üzerinde iki adet buton koyalım.Disable butonu görev yöneticisini engellerken , Enable butonu ise görev yöneticisini aktif hale getirecektir.
Kod tarafınıda aşagıdakı gibi olusturalım.

DisableTask_Click Metodu

Şimdi aşağıdaki kodda regedit ile gerekli yola gidip DisableTaskMgr Yolundaki veriyi “1″ olarak değiştiriyoruz. Böylece görev yöneticisini engellemiş olacağız.

EnableTask_Click Metodu

Eğer yeniden görev yöneticisini aktif etmek istiyorsak “1″ olan değeri “0″ yapmamız gerek.





C# - ASP# - XML VERİ OKUMAK ve YAZMAK

Öncelikle bu işlemleri yapmak için XmlClass isimli bir class olusturarak başlıyorum. Kodlar üzerinde anlatırsam daha verimli olacaktır.

Burada class içerinde yer alan değişkenler tanımlanıyor daha sonra constructor olusturuluyor. Class içerisinde yer alan okuma yazma işlemini yapan metotlar bulunmaktadır.Bu metotları aşağıda açıklayacağım.

Xml Dosyası Olusturma ve Veri Yazma

XmlWrite metodu:

Kod calıstırıldıgında Urunler.xml adında bir dosya olusur ve içerigine verdigimiz bilgiler yazılır.


Var olan Xml Dosyasına Veri Yazma -(Write2 metodu kullanılmaktadır.)

XmlWrite2 Metodu:
Kod calıstırıldıgında var olan Urunler.xml dosyasına verdiğimiz bilgileri ekler.

Xml Dosyasından Veri Çekme(Dropdownliste Yükleme)

XmlRead Metodu
Kod çalıştırıldığında ekran görüntüsü: