Kategori arşivi: C#, VB.NET, ASP.NET

Asp.Net, C#, Vb.Net uygulama örnekleri, ipuçları, .Net Framework 1.1 – 2.0 – 3.0 – 3.5 – 4.0 ile ilgili notlar

ADO.NET Transaction İşlemi – III (Savepoint)

Gelişmiş veritabanı sistemleri, transaction işlemlerinde Savepoint denilen kaydetme noktaları tanımlama imkanı verir. Transaction birden fazla iş parçacığından oluştuğu için başarılı biten her iş parçacığının bitiş noktasını savepont olarak işaretlemek, özellikle karmaşık transaction işlemlerinde Rollback işleminin yükünü hafifletir. Çünkü bu durumda transaction içinde Rollback yapmak gerektiği zaman transaction, en başa geri sarılmak yerine sadece belirli bir savepoint noktasına geri döndürülür. Okumaya devam et

ADO.NET Transaction İşlemi – II [ADO.NET 2.0]

ADO.NET 2.0 ile birlikte programcının yerel ve dağıtık transaction işlemlerini daha kolayca yönetebilmesi için System.Transactions.dll kütüphanesi sunuldu. ADO.NET 2.0’da LightWeight Transaction(LT) ve OLE Transaction(OleTx) olmak üzere iki transaction modeli geliştirildi.
LightWeight Transaction, tek veri kaynağı üzerinde sorgulama yapılırken kullanılan transaction modeli, OleTx Transaction ise dağıtık transaction yapısında olup ayrı veri kaynakları üzerinde işlem yapılırken kullanılan modeldir.
Bu yeni transaction sistemini kullanabilmek için projemize System.Transactions.dll dosyasını referans olarak eklememiz gerekir. Okumaya devam et

ADO.NET Transaction İşlemi – I

DbTransaction nesnesi, veritabanı sistemine gönderdiğimiz sorguya ait transaction yönetimini sağlamak için kullanılır. Bilindiği gibi transaction(işlem) kavramı, veritabanı yönetim sistemlerinde önemli bir yere sahip olup birbirleriyle ilişkili iş parçacıklarının bulunduğu mantıksal bir birim olarak düşünebilir. Transaction yönetimi, aynı iş parçacığında seri bir şekilde yürütülecek sorguların hatasız bir şekilde sonuçlanıp sonuçlanmadığının kontrolünü sağlar. Klasik bir örnek olarak banka sisteminde havale uygulamasını ele aldığımızda ilk önce havaleyi yapan kişinin hesabından ilgili miktar düşürülür ve havale yapılan kişinin hesabına o kadar miktar eklenir. Dışarıdan basit görünen bu sürecin herhangi bir halkasında meydana gelecek bir hata kaynak veya hedef siteminde bilgi tutarsızlığına neden olacaktır. Bu yüzden bu işlemlerin transaction yönetiminde gerçekleştirilmesi gerekir. “Ya hep ya hiç” mantığıyla çalışan transaction işleminin esas amacı “veri bütünlüğü” olup, süreç içerisinde istenmeyen bir durum olduğu zaman önceki iş parçacıklarının geri alınmasıdır. Yani süreç, başlangıç noktasına geri döndürülür ve süreç içindeki hiçbir iş parçacığının gerçekleşmemiş olduğu kabul edilir. Büyük ölçekli VTYS’lerde dahili transaction yönetimi bulunmaktadır. Örneğin SQL Server’da çalıştırdığımız bir UPDATE veya DELETE işlemi esnasında herhangi bir kesinti olduğu zaman o zamana kadar gerçekleştirilmiş güncelleme veya silme işlemleri geri alınır ve veriler eski haline geri dönmüş olur. Bu geri alma işlemine ROLLBACK(geri sarmak), işlemler hatasız çalıştığı durumda değişikliklerin kalıcı hale getirilmesine COMMIT(işlemek) denilir. Okumaya devam et

Windows Formunda sistem menüsünü yönetmek

Windows ortamında geliştirdiğimiz desktop tabanlı exe programındaki her formun task barında standart pencere yönetim menüsü çıkar. Pencerenin ikonu tıklandığında, title bar veya taskbar sağ tıklandığında görünen bu sistem menüsü formun türüne göre farklılık gösterse de genellikle, Restore, Move, Size, Minimize, Maximize ve Close eventleri içerir. Uygulamalarımızda bu menüyü yönetmek isteyebiliriz örneğin oradaki default menüden bazılarını disable etme ihtiyacı doğabilir veya birçok programda gördüğümüz “About” bölümünü ekleyebiliriz. Sistem menüsünü yönetmek için .NET plaftormunda özel bir kütüphane bulunmamaktadır. Bunu sağlamak için Windows API’si kullanılır. Okumaya devam et

Windows Form’unu Yönetmek(ShowDialog-Show metodları)

Bir desktop uygulaması yazılırken uygulama içerisinde ana bir Form(Main Window) üzerinden birden fazla Form açıp kapatma ihtiyacımız doğar. İkinci formu açarken modal(kipli) veya modeless(kipsiz) pencere tipi kullanılır. Modal olarak açılmış pencereler, pencere kapatılmadığı sürece alttaki pencerelere erişime izin vermeyendir. Programlardaki “Dosya Aç” penceresi bu türden bir penceredir. Bu penceredeki işimizi bitirip pencereyi kapatmadığımız sürece programın diğer ekranlarına geçemeyiz. Modeless olarak tanımlanmış pencere tipinde ise ikinci pencere açıkken de alttaki pencereye erişilir (Non-Modal Windows). Word programındaki “Find and Replace” penceresi bu türden bir penceredir. Modal pencere tipini daha çok dialog window denilen iletişim kutuları için tercih ederiz. İletişim kutuları kullanıcıya bir uyarı vermek veya kullanıcıdan bilgi girişi almak için hazırlanmış özel pencerelerdir. Bir Main form üzerinde alt formları açmak için de Modeless pencere tipi yaygın olarak kullanılır ama bazen de Modal pencere tipi de tercih edilir. Peki bu durumda bu basit farkın dışında neye dikkat edilmelidir. Okumaya devam et

ASP.NET kontrollerin ReadOnly veya Disable edilmesi

Web uygulamalarımızda form kontrollerini, kullanıcının müdahelesini engellemek için readonly veya disable ederiz. Bütün ASP.NET Web kontrollerinin Enabled property’si bulunur. Bu property’inin değerini false olarak seçtiğimizde kontrol, HTML elementi olarak render edildiği zaman disabled niteleğiyle işaretlenmiş olur.

Server tarafında bu şeklinde tanımlanmış kontroller, aşağıdaki şekilde render edilir.

Bu durumda IE veya Firefox tarafında bu elementler gri modda görünecek ve kullanıcının bu kontrollere fokuslanması veya değerini değiştirmesi engellenmiş olacaktır.
Textbox kontrolünde bu property’e ek olarak ReadOnly property’si bulunur. CheckBox, RadioButton, DropDownList, RadioButtonList, CheckBoxList gibi kontrollerde bulunmayan bu property, TextBox kontrolünün sadece okunabilir olmasını sağlar. Bu durumda TextBox kontrolü browser içerisinde gri modda girmeyecek(içindeki metnin rengi gri olmayacak) aynı zaman kullanıcının bu kontrole fokuslanmasına izin verilmiş olacaktır. Disabled gibi readonly durumunda da kullanıcı, kontrolün değerini değiştiremez. Disable ile ReadOnly arasındaki bu basitten farktan daha önemli bir fark bulunmaktadır. Okumaya devam et

Proper Case (VB.NET, C#, T-SQL)

Kullanıcı tarafından veritabanına girilmek üzere olan bilgileri, standart bir formatta düzenlemek verilerin hem doğru raporlanmasını sağlar hem de okunabilirliğini artırır. Bu bilgiler arasında genellikle tarih, para, ad soyad ve adres gibi bilgileri bulunmaktadır. Bu yazıda veritabanına girilmiş veya girilecek “ad soyad” bilgilerinin Proper Case formatına nasıl dönüştürüleceğine dair fonksiyonları vereceğiz. ProperCase olarak tanınlanan format, her kelimenin ilk harfinin büyük diğer harflerin küçük yazılmasıdır. Örneğin kullanıcının yazdığı “ahMEt kaYMAZ” şeklindeki veriyi “Ahmet Kaymaz” olarak dönüştürmektir. Bu dönüştürmeyi C#, VB.NET ve SQL tarafında birçok farklı şekilde yapabiliriz. Okumaya devam et

DPAPI ile string şifrelemesi ve SecureString class

Bir uygulama geliştirirken göz önünde bulundurmamız gereken önemli konulardan biri de hiç şüphesiz “güvenlik”tir. Güvenlik konusu deyince nedense aklımıza daha çok network tabanlı bir koruma gelir. Oysa birçok saldırının kaynağı uygulama içerisindeki açıklardan kaynaklanmaktadır. Bir uygulamayı güvenli kılmanın birçok yöntemi bulunmaktadır. Hakların düzenlenmesi, doğru ayarların yapılması, kullanıcıdan gelen bilgilerin doğrulanması, etkili validation işlemlerinin yapılması, gizli-kritik bilgilerin uygulama içerisinde saklanmaması, etkin hata yönetiminin sağlanması, aktif bir test gerçekleştirilmesi, veritabanının koruma altına alınması, .NET platformunda unmanaged kaynaklarının doğru yönetilmesi bu yöntemlerden sadece bir kaçı. Bu yazıda uygulama güvenliğini sağlayan yöntemlerden biri olan ve Windows işletim sisteminin 2000 ve sonraki sürümleri tarafından desteklenen DPAPI (Data Protection Application Programming Interface) arabiriminin .NET cephesi hakkında konuşacağız. Okumaya devam et

C# / VB.NET – MD5 fonksiyonu(String To MD5)

MD5(Message Digest algorithm 5), MIT’de profesör olan Ron Rivest tarafından selefi olan MD4 üzerine geliştirilmiş hash algoritmasına dayalı bir fonksiyondur. 128 bit’lik çıktı üreten ve tek yönlü bir şifreleme sistemi olan(ki bu yüzden kırılması mümkün değildir) MD5 fonskiyonu, transfer edilmiş bilgilerin doğru, eksiksiz bir şekilde yerine ulaşıp ulaşmadığının kontrol edilmesinde ve public-key şifrelemesinde kullanılır. Matematiksel bir model üzerine kurulan MD5’in kırılmamazlığı, input olarak aldığı değerin uzunluğuyla orantılır. Özellikle database işlemlerinde kullanıcılara ait bazı özel bilgilerin MD5 ile şifrelenecek tutulması tavsiye edilir. Bu veriler kötü niyetli kişiler tarafından çalınsa bile geri döndürülemediği için ciddi bir tehlike oluşturmaz. Okumaya devam et

ASP.NET’te Meta Tag’ların dinamik yüklenmesi

Bir html sayfası hakkında bilgi içeren, özetini sunan, hangi temel sözcükler üzerinde durduğunu bildiren, sayfanın ne zaman ve kimin tarafından hazırlandığını gösteren etiketlere meta tag denilir. Bir sayfaya ait üst veriler olarak tanımlanan meta tag etiketleri, description, keywords, author, classification, copyright, robots gibi değerlerden oluşur. Aşağıda, bu sayfanın örnek meta tagları bulunmaktadır;

Meta tagları ziyaretçiler için değil daha çok arama motorlarının o sayfayı doğru ve kolayca analiz etmesi için düzenleriz. SEO(Search engine optimization – Arama motoru optimizasyonu) uygulamalarında en önemli işlemlerinden biri de sitedeki sayfaların meta taglarının güncellenmesidir. Okumaya devam et