C# 6.0 ile gelen 15 yeni özelliği inceleyeceğimiz bu makale 3 bölümden oluşmaktadır. Her bölümde 5'er özellik örneklerle beraber anlatılacaktır.
C# dilinin ilk versiyonu 2002 yılında ve daha sonra 2005 yılında ikinci versiyonu yayınlandı. 2007 yılına geldiğimizde ise Linq, lamda expression, implicit typing, query syntax, var keyword ve 2010 yılında 4. sürümle beraber dynamic keyword ve dynamic language runtime ile tanıştık. 2012 yılında 5. versiyon yayınlandı. Bu versiyonda ise async ve await keywordleri ile tanıştık. Önceki versiyonlarla bu sürümü karşılaştırdığımızda çok etkili değişikliklerin olmadığını görüyoruz. Aslında bu normal bir şey çünkü C# dili 13 yaşının üzerinde ve geçen yıllar içersinde gerekli olan önemli özellikler zaten eklendi. Şimdi C# 6.0 ile gelen 15 güzel özelliği inceleyelim.
11 Aralık 2015 Cuma
6 Aralık 2015 Pazar
Web.Config İçerisinde Ki Connection String’i Şifrelemek - 2
ConnectionStringsSection class :
Bu clasımızı oluştururken aşağıda ki adımları takip edeceğiz :
Bu clasımızı oluştururken aşağıda ki adımları takip edeceğiz :
- Configürasyon için WebConfigurationManager kullanımı
- Tüm connection stringleri GetSection metodundan getireceğiz
- Connection stringi şifrelemek için ProtectSection metodunu kullanacağız
- Son olarak web.config dosyamızı kaydedeceğiz.
Web.Config İçerisinde Ki Connection String'i Şifrelemek -1
.Net uygulaması geliştirirken Database Connection, Email ve SMTP gibi önemli bilgileri Web.Config dosyasında saklarız. Web.Config dosyası bu kadar hassas bilgileri barındırmasına rağmen içerisindeki bilgileri herhangi birisi kolayca görebilir. Web.Config dosyamızın birinin eline geçtiğini düşünürsek veritabanımız ve diğer önemli bilgilerimiz de eline geçecektir. Web.Config dosyamızda connection stringimizi şifreleyerek güvenliğini arttırmak iyi olacaktır. Bu makalemizde bunu nasıl yapacağımızı göreceğiz.
Connection stringi şifremenin iki yolu vardır.
Bu yöntemle şifreleme yapmak istediğimiz karşımıza iki seçenek çıkıyor
Connection stringi şifremenin iki yolu vardır.
- ASP.NET IIS Registration Tool (Aspnet_regiis.exe) kullanarak şifrelemek
- ConnectionStringsSection class
Aspnet_regiis.exe ile connection string şifreleme
Bu yöntemle şifreleme yapmak istediğimiz karşımıza iki seçenek çıkıyor
- Web.Config dosyasının fiziksel yolunun şifrelenmesi
- Web.Config dosyası ISS üzerinde host edildiği zaman şifrelemek
3 Kasım 2015 Salı
ASP.NET Razor Web Sayfalarında jQuery Sortables (Sıralama) Veritabanı Kayıt
jQuery Sortables : Öğelerin sürükle-bırak özelliğini kolayca yapmamızı sağlayan bir jQuery eklentisidir. Bu yazıda bu eklentiyi Razor Web sayfalarında kullanarak hem yeninden sıralama işlemi gerçekletirecek hem de sonuçları veritabanına kaydedeceğiz.
İhtiyacımız olan şey sadece jQuery Sortables eklentisini ve jQuery UI referanslarını almak. Her iki kütüphanede Visual Studio Razor Web sayfalarını yarattığında projeye eklenmiş olarak geliyor. Fakat WebMatrix ile çalışacaksanız Nuget paket indirme aracını kullanarak kurulumu gerçekleştirebilirsiniz yada sadece CDN-hosted dosyalarını Microsoft tarafından oluşturulan (http://www.asp.net/ajaxlibrary/cdn.ashx) veya Google tarafından oluşturulmuş (https://developers.google.com/speed/libraries/devguide) adreslerinden elde edebilirsiniz.
İhtiyacımız olan şey sadece jQuery Sortables eklentisini ve jQuery UI referanslarını almak. Her iki kütüphanede Visual Studio Razor Web sayfalarını yarattığında projeye eklenmiş olarak geliyor. Fakat WebMatrix ile çalışacaksanız Nuget paket indirme aracını kullanarak kurulumu gerçekleştirebilirsiniz yada sadece CDN-hosted dosyalarını Microsoft tarafından oluşturulan (http://www.asp.net/ajaxlibrary/cdn.ashx) veya Google tarafından oluşturulmuş (https://developers.google.com/speed/libraries/devguide) adreslerinden elde edebilirsiniz.
31 Ekim 2015 Cumartesi
ABSTRACT SINIFLAR & INTERFACES
Abstract class yada Interface : Programlama dünyasında ki en kararsız bırakan konulardan biri bu ikiliden hangisi kullanmaya karar vermektir. Şimdi bu sınıfıları teker teker detaylı olarak ele alalım.
Abstract class: Bir abstract sınıf diğer sınıflar gibi (properties, metodlar ve collectionlar gibi) bir sınıftır. Tek farkı abstract bir sınıfın nesnesinin yaratılamamasıdır. Tabi ki "abstract" anahtar kelimesi sınıfın bildirimde kullanılır.Abstract bir sınıf, gövdesi olan metodlara ve hatta sadece abstract ifadesi bulunan metodlara bile sahip olabilir. Örneğe geçelim :
[code lang="js"]
//1. Bir abstract sınıf onu tanımlayan "abstract" anahtar kelimesine sahiptir
namespace abstractClass_ve_Interfaces
{
public abstract class AbstractClassOrnegi
{
//2. Abstract sınıflar field içerebilir
int field;
// ve diğer sınıflar gibi property'ler içerebilir
public int Property1 { get; set; }
//3. Kendi gibi abstact bir metod içerebilir.
public abstract void AbstractMetod();
//4. Ayrıca somut metodlarda içerbilir
public void SomutMetod()
{
Response.Write("Somut metod");
}
}
}
[/code]
Şimdi çoğumuzun karıştırdığı noktalara geliyoruz. Abstract sınıfılar hakkında bilinen yanlışlar ve gerçekler.
Abstract class: Bir abstract sınıf diğer sınıflar gibi (properties, metodlar ve collectionlar gibi) bir sınıftır. Tek farkı abstract bir sınıfın nesnesinin yaratılamamasıdır. Tabi ki "abstract" anahtar kelimesi sınıfın bildirimde kullanılır.Abstract bir sınıf, gövdesi olan metodlara ve hatta sadece abstract ifadesi bulunan metodlara bile sahip olabilir. Örneğe geçelim :
[code lang="js"]
//1. Bir abstract sınıf onu tanımlayan "abstract" anahtar kelimesine sahiptir
namespace abstractClass_ve_Interfaces
{
public abstract class AbstractClassOrnegi
{
//2. Abstract sınıflar field içerebilir
int field;
// ve diğer sınıflar gibi property'ler içerebilir
public int Property1 { get; set; }
//3. Kendi gibi abstact bir metod içerebilir.
public abstract void AbstractMetod();
//4. Ayrıca somut metodlarda içerbilir
public void SomutMetod()
{
Response.Write("Somut metod");
}
}
}
[/code]
Şimdi çoğumuzun karıştırdığı noktalara geliyoruz. Abstract sınıfılar hakkında bilinen yanlışlar ve gerçekler.
4 Nisan 2015 Cumartesi
LocalDB
SQL Server 2014 LocalDB buradan indirilebilir.
SQL Server 2014 kurulumu için aşağıdaki adımları izleyiniz.
SQL Server 2014 kurulumu için aşağıdaki adımları izleyiniz.
3 Nisan 2015 Cuma
ASP.NET : Yaptıklarımız ne kadar doğru ? - 1
Bu makalede asp.net uygulaması geliştirirken sıklıkla düşülen hataların nasıl önüne geçileceği anlatılacaktır. Hemen ilk konumuzla başlayalım :
Önemli tavsiye : Uyarlama işlemleri için kontrol adaptörlerini kullanmayı bırakıp, bunun yerine CSS media ve Html uyumlu standart sorgulamaları kullanın.
Kontol adaptörleri ilk olarak farklı ortam ve cihazlar için özelleştirilebilen kod oluşturmak için .NET 2.0 ile beraber ortaya çıktı. Fakat bu adaptörlerin işlevleri CSS ve HTML ile yapılabilir. Bu nedenle kontrol adaptörlerini kullanmayı ve onları CSS ve HTML'e convert etmeyi bırakmalısınız.
Uyum standartları
Kontrol adaptörleri
Önemli tavsiye : Uyarlama işlemleri için kontrol adaptörlerini kullanmayı bırakıp, bunun yerine CSS media ve Html uyumlu standart sorgulamaları kullanın.
Kontol adaptörleri ilk olarak farklı ortam ve cihazlar için özelleştirilebilen kod oluşturmak için .NET 2.0 ile beraber ortaya çıktı. Fakat bu adaptörlerin işlevleri CSS ve HTML ile yapılabilir. Bu nedenle kontrol adaptörlerini kullanmayı ve onları CSS ve HTML'e convert etmeyi bırakmalısınız.
18 Mart 2015 Çarşamba
ASP .NET MVC Partial Views
Partial Views
Partial View ana view (parent view) içerisinde render edilen bir view tanımlanmasını sağlar. Partial View ASP.NET (.ascx) uygulamalarında kullanılan User Controller gibi çalışır.
Bir partial view oluşturulduğunda ana view içerisinde bulunan ViewDataDictionary nesnesinin bir kopyasını alır. Bu yolla ana viewin verisine erişir. Ancak partial view veri güncellemesi yaptığında bu güncellemeler sadece partial view'in ViewData nesnesini etkiler. Ana viewde bulunan veri etkilenmez veya değişime uğramaz.
Microsoft, Internet Explorer Markasını Öldürdü!
Artık zamanlarının büyük bir kısmını Project Spartan’a ayıracağını açıklayan şirketin pazarlama şefiChris Capossela, şirketin yeni bir isim ve marka üzerinde çalıştığını ortaya çıkardı. Capossela, Windows10’la birlikte yeni Spartan kod adlı Project Spartan üzerine yoğunlaşacaklarını belirterek, Internet Explorer’ı da yaşatmaya devam edeceklerini söyledi.
Yazının devamı için tıklayınız
14 Mart 2015 Cumartesi
ASP.NET MVC : Son eklenen kaydın ID'sini almak
Bir web uygulaması geliştirirken sıklıkla karşılaştığımız sorunlardan biri de son oluşturulan kaydın ID numarasını almaktır. Bunun MVC'de nasıl yapıldığını görelim :
Table
Bu senaryomuzda aşağıdaki tablomuzu kullanacağız
Table
Bu senaryomuzda aşağıdaki tablomuzu kullanacağız
ASP.NET MVC TempData Nedir ?
Basitçe ifade etmek gerekirse, ASP.NET MVC TempData Controller Action'lar arası veri paylaşımı amacıyla kullanılır. TempData içindeki veriyi, okunana kadar veya kullanıcı oturumdan çıkış yapana kadar saklı tutar. TempData içinde veri saklanmasının, basit bir request işleminden fazlasına ihtiyaç duyulduğunda (örn; redirection senaryosu olabilir) önemi ortaya çıkar.
TempData içindeki veriyi ve oturum durumunu default olarak kaydeder.
TempData içindeki veriyi ve oturum durumunu default olarak kaydeder.
8 Mart 2015 Pazar
ASP.NET Razor view engine
Razor C# veya Visual Basic .NET programlama dilleriyle dinamik web sayfaları oluşturmak için kullanılan bir programlama sentaksıdır (syntax). Razor 2010 yılında geliştirilmeye başlandı ve Visual Studio 2010 ile beraber 2011 yılında karşımıza çıktı. Razor ASP.NET MVC3'ün bir parçası olarak yayınlandı ve basit-sentaks oluşturmaya yarayan bir motor olarak tasarlandı.
17 Şubat 2015 Salı
Asp.NET : Login olduktan sonra önceki sayfaya dönme (redirect)
Şayet Forms Authentication kullanıyorsanız
[code lang="js"]var returnUrl = Request.QueryString["ReturnURL"];
if (string.IsNullOrEmpty(returnUrl)){
returnUrl = "~/";
}
Response.Redirect(returnUrl);
[/code]
Fakat kullanmıyorsanız yönlendirme (redirect) yapıtığınız sayfaya bir querystring göndermelisiniz.
ReturnUrl
querystring'ini Login sayfanızda kullanabilirsiniz :[code lang="js"]var returnUrl = Request.QueryString["ReturnURL"];
if (string.IsNullOrEmpty(returnUrl)){
returnUrl = "~/";
}
Response.Redirect(returnUrl);
[/code]
Fakat kullanmıyorsanız yönlendirme (redirect) yapıtığınız sayfaya bir querystring göndermelisiniz.
9 Şubat 2015 Pazartesi
ASP.NET MVC : Enable-Migrations : The term 'Enable-Migrations' hatası çözümü
MVC ile Enable-Migrations –EnableAutomaticMigrations komutunu çalıştırmaya çalışıyorum fakat :
hatası ile karşılaşıyorum. Çözümü nedir ?
Tools > Library Package Manager > Package Manager Console sekmesine tıklayarak açılan ekrana aşağıdaki komutu yazın :
Daha sonra Visual Studio'yu tekrar başlatın. Enable-Migrations –EnableAutomaticMigrations komutunu tekrar girdiğinizde çalışacaktır.
Enable-Migrations : The term 'Enable-Migrations' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or
if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Enable-Migrations –EnableAutomaticMigrations
hatası ile karşılaşıyorum. Çözümü nedir ?
Tools > Library Package Manager > Package Manager Console sekmesine tıklayarak açılan ekrana aşağıdaki komutu yazın :
Install Package EntityFramework -IncludePrerelease
Daha sonra Visual Studio'yu tekrar başlatın. Enable-Migrations –EnableAutomaticMigrations komutunu tekrar girdiğinizde çalışacaktır.
6 Şubat 2015 Cuma
SQL Express : LocalDB (.mdf)
Giriş
LocalDB developerlar için özel olarak geliştirildi. Kurulumu kolay ve yönetim gerektirmeyen, her zamanki SQL Server Express gibi client-side ve programlama alanı olan ve T-SQL diliyle kodlanabilen ortamı mevcut.
Geliştiricilerin laptop veya geliştirme yaptığı bilgisayarlarda SQL Server Express artık SQL Server'ın yaptığını yapmak zorunda. Bununla beraber LocalDB hedeflenen uygulama ortamının ihtiyaçlarına uygun olduğu takdirde, geliştirici uygulama geliştirmeye devam ederken, aynı zamanda LocalDB veritabanı entegrasyonunu yapacaktır.
3 Şubat 2015 Salı
ASP.NET : LoadXml(string) ile dinamik XML dosyası oluşturmak
ASP.NET'te sıfırdan XML oluşturmak için üç ana API'ye sahibiz. LINQ to XML, XmlWriter class ve W3C DOM. Bu makalede en basit metod olan, bir stringin W3C DOM Microsoft uzantısı olan LoadXml()'e yüklenmesiyle oluşturulan metodu kullanacağız.
Aşamalar şöyle olacak :
Aşamalar şöyle olacak :
- 1. products.xml oluştur
- 2. LoadXml(string)
- 2.1 olustur-xml-string.aspx
- 2.2 olustur-xml-string.aspx.cs
ASP.Net : Custom Validator ve JavaScript kullanarak CheckBox kontrol etmek
Bu makalede ASP.NET Checbox kontrolünü Custom Validator ve Javascript kullanarak nasıl kontrol ettiğimizi göstereceğim.
[code lang="js"]
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type = "text/javascript">
function ValidateCheckBox(sender, args) {
if (document.getElementById("<%=CheckBox1.ClientID %>").checked == true) {
args.IsValid = true;
} else {
args.IsValid = false;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Required" ClientValidationFunction = "ValidateCheckBox"></asp:CustomValidator><br />
<asp:Button ID="Button1" runat="server" Text="Submit"/>
</form>
</body>
</html>
[/code]
[code lang="js"]
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title></title>
<script type = "text/javascript">
function ValidateCheckBox(sender, args) {
if (document.getElementById("<%=CheckBox1.ClientID %>").checked == true) {
args.IsValid = true;
} else {
args.IsValid = false;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:CheckBox ID="CheckBox1" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Required" ClientValidationFunction = "ValidateCheckBox"></asp:CustomValidator><br />
<asp:Button ID="Button1" runat="server" Text="Submit"/>
</form>
</body>
</html>
[/code]
Yukarıdaki kodda ASP.Net Custom Validator kullanarak bir Checbox'ı kontrol ettik. ASP.NET Custom Validator için theClientValidationFunction özelliğini atadım ve bu özelliği JavaScript fonksiyonuna bağladım. JavaScript fonksiyonu içerisinde checkbox kontrolünü sağladım ve eğer checkbox seçilmemişse geriye "gerekli" uyarısı döndüren bir kontrol atadım.
30 Ocak 2015 Cuma
ASP.NET: Google yeni reCaptchA kullanımı (Server-SIDE)
Google API reCAPTCHA ASP.NET uygulaması
- Google reCAPTCHA sayfasına gidin. Sayfanın üzerindeki linklere göz atarak reCapthe ile ilgili daha fazla bilgi edinebilirsiniz ancak şimdi sayfanın en üstünde yer alan "Get reCaptcha " butonuna tıklıyoruz. Bu işlemi tamamlamak için login olmanız yada yeni bir hesap oluşturmanız gerekebilir.
- Burada sayfanızın api'sini ayarlamanız gerekiyor. Kodları kullanabilmek için Secret Key ve Site Key anahtarlarına ihtiyacımız var.
- Sonraki ekranda HTML tarafında yapılacaklar sırayla sunulmaktadır. Aslında kullanıcı onay checkbox'ının ve reCaptcha sorusunun formda görünmesini istediğiniz yere javascript dosyası için bir script ifadesi ve div ekleyebilirsiniz. Dikkat edilmesi gereken yer div bir Secret Key referansı alır, bu referansı doğru girdiğinizden emin olmalısınız. Devam edelim ilgili kodları yerleştireceğimiz bir aspx dosyası açalım.
28 Ocak 2015 Çarşamba
document.ready ve window.onload yada pageLoad arasındaki farklar
pageLoad() ve jQuery’nin $(document).ready() olaylarının aynı şeyi yaptığını sanırız. Her iki metod basit bir uygulamada kullanıldığında aynı sanılır fakat aralarında işleyiş olarak çok fark vardır. Bu makale bu farkları gösteremeye çalışacağım.
$(document).ready() metodunu tanıyalım
"UrlRewriting" Nedir ?
Kullanıcıya gösterilecek malumat yada bilgiler genellikle sitelerin URL'lerinde değişken olarak bulunur. Bu bir nevi koda, varsayalım bir eticaret sitesinde urunId'si 8 olan ürüne ait detaylarını getirmesini söylemek gibi bir şeydir.
Aşağıdaki linke bu kullanıma ait örneği görebilirsiniz :
http://www.eticaret.com/urunler.aspx?urunId=7
Aşağıdaki linke bu kullanıma ait örneği görebilirsiniz :
http://www.eticaret.com/urunler.aspx?urunId=7
16 Ocak 2015 Cuma
String, StringBuilder ve StringBuffer sınıfları arasındaki fark
Bu makalede String , StringBuilder ve StringBuffer sınıfları arasındaki farkı örnekler vererek göstermeye çalışacağım. Bu sınıflar arasındaki ufak ama önemli farkları anlamaya çalışacağız.
String sabittir (yani yaratıldıktan sonra değiştirilemez). String olarak yaratılan bir nesne Değişmez String Havuzunda (Constant String Pool) depolanır. C# dilinde her sabit güvenli bir nesnedir bu String nesnesinin de güvenli bir sabit olduğu anlamına gelir.
String
String sabittir (yani yaratıldıktan sonra değiştirilemez). String olarak yaratılan bir nesne Değişmez String Havuzunda (Constant String Pool) depolanır. C# dilinde her sabit güvenli bir nesnedir bu String nesnesinin de güvenli bir sabit olduğu anlamına gelir.
8 Ocak 2015 Perşembe
ASP.NET multiline maxLength çözümü
Normalde bir textbox içerisine maxlength (örneğin; maxlength="200") özelliği atandığında karakter sınırı belirlenerek, belirlenen karakterden fazla giriş yapılması engellenebilir. Ancak textbox textmode özelliği multiline veya başka bir özellikle değiştirildiğinde, her nedense bu komut çalışmıyor. Biraz araştırma yaptığımda gördüm ki bu sorun için JQuery ve JavaScript kodlar yazılarak çözüm bulunmuş. Aslında fazla kod yazmayı sevmeyen biriyim böyle bir işlemi tek bir özellik vererek çözmek daha çok işime gelirdi ama aşağıda vermiş olduğum JQuery scriptinden daha kısa bir çözüm yolu ben bulamadım, farklı bir çözüm yolu bilen varsa yorumlarda paylaşabilirse sevinirim.
Çözüm :
[code lang="js"]
$(document).ready(function () {
var MaxLength = 200;
// Asp textbox kullanıldığı için clientID ile çağrı yapılıyor
$('#<%=txtAdres.ClientID%>').keypress(function (e) {
if ($(this).val().length >= MaxLength) {
e.preventDefault();
}
});
});
[/code]
Kolay gelsin
Çözüm :
[code lang="js"]
$(document).ready(function () {
var MaxLength = 200;
// Asp textbox kullanıldığı için clientID ile çağrı yapılıyor
$('#<%=txtAdres.ClientID%>').keypress(function (e) {
if ($(this).val().length >= MaxLength) {
e.preventDefault();
}
});
});
[/code]
Kolay gelsin
6 Ocak 2015 Salı
CSS3 box-sizing Özelliği
Örnekte iki kutu yanyana getiriliyor :
Örnek için tıkla
CSS3 box-sizing özelliği browsera boyutlandırma (width ve height) özelliklerinin ne içerdiğini anlatmak için kullanılırlar.
Height ve width özelliklerinin varsayılan değerleri olan content-box ve border-box içermelidirler.
Örnek için tıkla
Tanım ve kullanım
CSS3 box-sizing özelliği browsera boyutlandırma (width ve height) özelliklerinin ne içerdiğini anlatmak için kullanılırlar.
Height ve width özelliklerinin varsayılan değerleri olan content-box ve border-box içermelidirler.
Kaydol:
Kayıtlar (Atom)