Response | Engin Polat\'ın Windows 8 , Windows Phone 8 ve C# içerikli programcılık sitesi

Arşiv

Etiketlenen yazılar response

Asp.Net Core 1.0 ile web uygulama geliştirmeye başlamak

28 January 2016 7 yorum

Yeni adı ile Asp.Net Core 1.0 (eski adı Asp.Net 5) üzerinde geliştirdiğimiz web uygulamaları hem Windows hem MacOS işletim sisteminde hem de Linux işletim sisteminde çalıştırılabiliyor. Cross-Platform denilen bu tarz uygulamaları genelde cross-platform araçlar ile geliştiririz.

Microsoft, Asp.Net Core 1.0 ile web uygulamaları geliştirebilmemiz için ücretsiz olarak Visual Studio Code aracını da sağlıyor ve Visual Studio Code cross-platform çalışabilen bir uygulama geliştirme aracıdır.

Bu makale ile Visual Studio Code kullanarak Asp.Net Core 1.0 projeleri nasıl oluşturulur inceleyeceğiz ve ilk Merhaba Dünya uygulamamızı oluşturacağız.

Öncelikle Command Prompt (Windows) veya Terminal (MacOS, Linux) penceresi açıyoruz;

Projeyi oluşturmak istediğimiz dizine giderek komut satırına

yo aspnet

yazarak çalıştırıyoruz. Böylece Yeoman kullanarak Asp.Net Core 1.0 projesi oluşturacağız.

Eğer bilgisayarda Yeoman kurulu değilse yukarıdaki kod çalışmayacaktır. Öncelikle Command Prompt (Windows) veya Terminal (MacOS, Linux) penceresi içerisinde aşağıdaki kodu çalıştırarak yo aracını kurabilirsiniz;

npm install -g yo

Eğer bilgisayarda npm kurulu değilse, Node.js anasayfasından indirerek kurabilirsiniz.

Yeoman aspnet komutunu çalıştırırken bize ne tip bir proje oluşturmak istediğimizi sorar, listeden Empty Application seçeneğini seçebiliriz.

Yeoman çalışmaya devam ederken projemize vermek istediğimiz ismi sorar, bu makalede ben aspnetcoreornek ismini verdim;

Böylece Yeoman projeyi istediğimiz dizinde oluşturmuş oldu.

Komut satırında projenin dizinine giderek

dnu restore

komutunu çalıştırıyoruz. Böylece projedeki project.json dosyasında tanımlı olan paketler proje dizinine indiriliyor. Eğer bu komutu çalıştırmazsak, uygulamanın ihtiyaç duyduğu paketler eksik olacak ve uygulama çalışmayacak.

Proje kodlarını açmak için bir editöre ihtiyacımız var. Visual Studio Code cross-platform Asp.Net projeleri geliştirmek için gene cross-platform geliştirilmiş bir araç.

code .

komutunu çalıştırarak proje dizinini Visual Studio Code ile açıyoruz;

Visual Studio Code açıldığında soldaki panelde proje dizininde yeralan dosyalar listeleniyor.

project.json dosyası içerisine bakarsak, projenin çalışabilmek için ihtiyaç duyduğu paketlerin listesini görebiliriz.

Aynı şekilde Startup.cs dosyasını açacak olursak, gelen her request için yapılacak işleri görebiliriz. Empty Application projesi oluşturduğumuzdan gelen her request için geriye Hello World! döndürülüyor;

Projeyi bir tarayıcı içerisinde görmek istiyorsak projenin dizininde

dnx web

komutunu çalıştırmalıyız. Böylece http://localhost:5000 adresi üzerinde proje çalışmaya başlayacak.

Microsoft Edge, Internet Explorer, Google Chrome, Mozilla Firefox, Safari, Opera, vs gibi bir tarayıcıyı açıp adres satırına http://localhost:5000 yazacak olursak Hello World! cevabının görüntülendiğini görebiliriz;

Aslında gelen her request için Hello World! sonucunu döndürdüğümüzden, http://localhost:5000 ile başlayan hangi adrese gidersek gidelim hep aynı Hello World! sonucunu göreceğiz;

ASP.NET MVC Nedir, Ne İşe Yarar?

17 September 2013 Yorum yapılmamış

ASP.NET MVC, MVC pattern‘ini ASP.NET‘e eklemek için Microsoft‘un geliştirdiği framework’tür. ASP.NET MVC‘nin ne olduğunu anlamak için öncelikle MVC‘nin ne olduğunu incelemekte fayda var.

MVC, uygulama geliştirmede (özellikle web uygulaması geliştirmede) önemli yere sahip mimari desenlerden biridir. Günümüzde MVC denince akla Microsoft‘un geliştirdiği ASP.NET MVC Framework gelmektedir, oysa 1979 yılından beri (Microsoft 1975 yılında kurulmuştur) yazılım dünyasında yer almaktadır.

MVC, Model, View, Controller kelimelerinin baş harflerinden oluşur ve her kelime MVC‘nin farklı bir katmanını ifade eder.

Model
MVC dünyasında model uygulama verisinin veya durumunun saklandığı yerdir, genellikle veritabanı veya xml/json dosyası formatındadır.

Model, veri katmanını (database, xml, json dosyası, vb.) uygulamadan izole eder, böylece diğer katmanlarda veri katmanının neresi olduğunun bilinmesine gerek kalmaz.

Model katmanı sıklıkla Entity Framework, Nhibernate, LLBLGen, vb. gibi araçlar kullanılarak oluşturulur.

View
View, istemcinin gördüğü arayüzü içeren katmandır, genellikle Model katmanındaki verinin kullanılması ile oluşturulur. View katmanının Model ve Controller katmanlarından ayrılması ile arayüz değişikliklerinin uygulamanın diğer katmanlarını değiştirmeye gerek kalmadan yapılabilmesi sağlanmıştır.

View katmanında HTML5 ve CSS3 gibi son versiyon teknolojiler kullanmak mümkündür. HTML5 ve CSS3 ile masaüstü ve mobil tarayıcılarda çalışabilen uygulamalar geliştirmek çok kolaylaşmıştır.

Controller
Controller, istemciden gelen isteği işlemek, Model ve View katmanları arasında köprü olmak gibi görevleri yerine getirir. Controller içerisinde bir veya daha fazla Action olabilir, genellikle her Action bir web sayfası üretmek için kullanılır.

MVC’nin diğer bir önemli yapıtaşı Routing mekanizmasıdır.

Routing
Routing, istemci’nin uygulamaya yaptığı isteği uygun Controller ve Action‘a yönlendiren yapıdır. İstemci, isteği uygulamanın belli bir adresine gönderir, routing mekanizması sayesinde ilgili adres için en uygun Controller ve içerisindeki Action tespit edilir ve çalıştırılır.

Neden ASP.NET MVC tercih etmeliyim?
MVC ile istemci’nin isteğine karşılık üretilen çıktı üzerinde çok büyük kontrol imkanı vardır. Bu sayede her alanına müdahele edebildiğimiz ve isteğe en uygun çıktının üretilebilmesi sağlanmıştır.

MVC ile tekrar kullanılabilir (reusable) kod üretmek mümkündür. MVC’nin katmanları birbirinden ayrıldığı için her bir katmanın başka projelerde kullanılabilmesi sağlanmıştır.

MVC ile istemci’nin istek göndereceği adresler üzerinde çok büyük kontrol imkanı vardır. Bu sayede adres’in içerik ile tam bir ilişki içerisinde olması sağlanmıştır. Arama motorları için adres-içerik ilişkisi önemli olduğu için uygulamanın bulunabilirliğine katkısı yüksektir.

MVC ile test edilebilir uygulamalar geliştirme çok kolaylaşmıştır. Katmanların birbirinden ayrı olması ve Test Driven Development yapmayı kolaylaştırıcı mimarisi sayesinde test edilebilir uygulama geliştirilebilmesi sağlanmıştır.

Sonuç
MVC uzun yıllardır bir çok framework’te ve programlama dilinde kullanılmış (Java, PHP, vb.) ve olgunlaşmış bir desendir. ASP.NET MVC sayesinde .Net framework dilleri ile MVC pattern kullanılarak hızlı çalışan, test edilebilir, tekrar kullanılabilir parçaları olabilen web uygulamaları geliştirilebilmesi sağlanmıştır.

Dosya boyutu almak için Head isteğinde bulunmak

05 October 2011 1 yorum

Uygulamalarımızda internet üzerindeki bir dosyanın boyut bilgisine ihtiyacımız olabilir.

Yapmamız gereken; dosyaya istekte bulunup Length özelliğinden dosya boyutu bilgisini almak.

var DosyaKonum = "http://www.enginpolat.com/wp-content/uploads/2011/07/FPSOrnek.rar";

WebClient wc = new WebClient();
var Dosya = wc.DownloadData(DosyaKonum);

int DosyaBoyut = Dosya.Length;

Bu yöntemin en önemli dezavantajı, dosyanın boyut bilgisini alabilmek için dosyayı gerçekten download etmemiz gerekiyor. Özellikle büyük boyutlu dosyalarda bu yöntem büyük problemlere yol açacaktır.

Aslında yapılan isteğin sonucunun Başlık (Header) bilgisinde dosya boyutu yer alıyor. Eğer Başlık‘tan (Header) boyut bilgisine ulaşabilirsek dosyayı download etmemize gerek kalmaz.

var DosyaKonum = "http://www.enginpolat.com/wp-content/uploads/2011/07/FPSOrnek.rar";

var Request = WebRequest.Create(DosyaKonum);

Request.Method = "HEAD";

var Response = Request.GetResponse();

var DosyaBoyut = Response.Headers[HttpResponseHeader.ContentLength];

Öncelikle WebRequest sınıfının static Create() method’u sayesinde, parametresinde adresi verilmiş dosyaya bir istek oluşturuyoruz.

Request değişkeninin GetResponse() method’undan sonuç bilgisini almadan önce Method özelliğine HEAD değerini atıyoruz.

Böylece istek sonucunda, dosyanın içeriğinin değil sadece başlık bilgisinin bulunmasını sağlıyoruz.

HttpResponseHeader enum’ında yeralan ContentLength değeri ile Response değişkeninin Headers özelliğinden dosyanın boyut bilgisine ulaşabiliyoruz.

ASP.NET ile Mobil Kullanıcıları Mobil Sayfaya Yönlendirmek

27 February 2010 5 yorum

ASP.NET 4.0 ile aşağıdaki kod yardımıyla mobil kullanıcıları algılayabilir ve uygulamanın mobil sayfasına yönlendirebilirsiniz;

private static readonly Regex MobileRegex = new Regex(@"(nokia|sonyericsson|blackberry|IPHONE|samsung|sec-|windows ce|motorola|mot-|up.b|midp-)", RegexOptions.IgnoreCase | RegexOptions.Compiled);

public bool IsMobile
{
	get
	{
		HttpRequest r = HttpContext.Current.Request;

		if (r.Browser.IsMobileDevice)
			return true;

		if (!string.IsNullOrEmpty(r.UserAgent) && MobileRegex.IsMatch(r.UserAgent))
			return true;

		return false;
	}
}

protected void Page_Load(object sender, EventArgs e)
{
	if (IsMobile)
		Response.RedirectPermanent("Mobile.aspx", true);
}

ASP.NET 4.0 SEO Geliştirmeleri

12 January 2010 2 yorum

Search Engine Optimization (Arama Motoru Optimizasyonu), internette yayınlanan her site için çok önemlidir. Günümüzde sitelerin trafiklerinin büyük oranı arama motorlarından gelmektedir. Web sitelerinin arama sonuçlarında daha iyi yer edinmeleri alacakları trafik açısından gittikçe daha önemli hale gelmektedir.

Web sitenizin SEO-Uyumluluğunu Google Analytics ile kolaylıkla ölçebilirsiniz.

ASP.NET 4.0 SEO Geliştirmeleri

ASP.NET 4.0 SEO uyumluluğu ile ilgili olarak bir dizi yenilik-geliştirme ile birlikte geliyor. Bunlardan bazıları;

  • Yeni Page.MetaKeywords ve Page.MetaDescription özellikleri
  • ASP.NET Web Forms’ta yeni gelen URL Yönlendirme (URL Routing) desteği
  • Yeni Response.RedirectPermanent() methodu

Bu özellikleri inceleyelim;

Page.MetaKeywords and Page.MetaDescription Özellikleri

Arama motorlarının crawler dediği programcıklar, sitenizi indekslerken, <head> tagı içerisinde yeralan <meta name=”keywords”> ve <meta name=”description”> taglarını kullanarak sitenizi kategorize eder.

<head runat="server">
	<title>Örnek Sayfa</title>
	<meta name="keywords" content="aspnet, engin polat, geliştirme, framework" />
	<meta name="description" content="ASP.NET 4.0 ile yeni gelen özellikler" />
</head>

ASP.NET 4.0’dan önce, bu taglara programatik olarak erişmek mümkün değildi. ASP.NET 4.0 ile birlikte aşağıdaki kodları yazabiliyoruz;

public void Page_Load(object sender, EventArgs e)
{
	Page.Title = "Örnek Sayfa";

	Page.MetaKeywords = "aspnet, engin polat, geliştirme, framework";
	Page.MetaDescription = "ASP.NET 4.0 ile yeni gelen özellikler";
}
<%@ Page Title="Örnek Sayfa"
	Keywords = "aspnet, engin polat, geliştirme, framework"
	Description = "ASP.NET 4.0 ile yeni gelen özellikler"
	CodeBehind = "OrnekSayfa.aspx.cs"
	Inherits = "OrnekWebSitesi.OrnekSayfa" %>

Yukarıdaki kodlar sayesinde Page sınıfının Keyword ve Description özelliklerine programatik olarak erişmek mümkündür.

ASP.NET Web Formlarında URL Yönlendirme (URL Routing)

URL Yönlendirme özelliği ilk olarak ASP.NET 3.5 SP1 ile gelmişti ve ASP.NET MVC ile zaten kullanabiliyorduk. URL Yönlendirme özelliği sayesinde, web uygulamasına gelecek tüm isteklerin fiziksel dosyalara gelmesi zorunluluğu ortadan kalkıyor. Artık aşağıdakiler gibi Arama Motoru Uyumlu (SEO – Friendly) URL’ler tanımlayabiliyoruz;

http://www.orneksite.com/sayfa.aspx?id=5
yerine
http://www.orneksite.com/sayfa/hakkinda

veya

http://www.orneksite.com/urunler.aspx?kategori=yazilim
yerine
http://www.orneksite.com/urunler/yazilim

ASP.NET 4.0 URL Yönlendirme (URL Routing) ile ilgili detaylı bir yazıyı yakında yayınlayacağım.

Response.RedirectPermanent() methodu

Web uygulamalarımızda, belli durumlarda akışı başka bir sayfaya yönlendirmek sıklıkla yaptığımız birşeydir. ASP.NET ile genellikle Response.Redirect() method’unu kullanırız. Aslında Response.Redirect() method’unun yaptığı şey, browser’a HTTP 302 (Temporary Redirect – Geçici Yönlendirme) sonucu döndürmektir. Böylece browser yönlendirmek istenen sayfadan akışa devam eder.

Arama motorlarının sayfaları indexlemeye yarayan crawler uygulamaları, bir sayfadan diğerine geçici olarak yönlendirme olduğunu gördüğünde (HTTP 302 mesajı) akışa yeni sayfadan devam etmez. Bu da sitenizde bulunmasına rağmen indexlenmeyen sayfalar oluşmasına yol açar.

ASP.NET 4.0 ile birlikte Response.RedirectPermanent() method’u geliyor. Bu method çağırıldığında, browser’a HTTP 302 mesajı yerine HTTP 301 (Moved Permanently – Kalıcı Olarak Taşındı) mesajı döndürür. Crawler’lar, HTTP 301 mesajı gördüklerinde akışa yeni sayfadan devam ettikleri için, web sitesinin tamamı indexlenecektir.

Response.Redirect(“YeniSayfa.aspx”); // HTTP 302 mesajı ile YeniSayfa.aspx’ten akış devam eder. Crawler indexlemez.

Response.RedirectPermanent(“YeniSayfa.aspx”); // HTTP 301 mesajı ile YeniSayfa.aspx’ten akış devam eder. Crawler indexler.

ASP.NET MVC ile kullanılmak üzere Response.RedirectToRoutePermanent() methodu geliyor.

Response.RedirectToRoute(“Urunler-Listele”, new { kategori = “yazilim” }); // HTTP 302 mesajı döner. Crawler indexlemez.

yerine

Response.RedirectToRoutePermanent(“Urunler-Listele”, new { kategori = “yazilim” }); // HTTP 301 mesajı döner. Crawler indexler.

Sonuç olarak, ASP.NET 4.0 Arama Motoru Dostu ( SEO – Friendly ) uygulama yazmayı kolaylaştıran araçlara sahip olarak geliyor.