{Merhaba Dünya Ben Emre Kıyak}

 





ASP.NET proje hazırlama sırası

Share |


Her yiğidin bir yoğurt yiyişi vardır. Severim bu sözü. Her yazılımcının da kendine has bazı kuralları, alışkanlıkları vardır. Değişken tanımlamadan, tablo isimlerine, nesne oluşturmadan proje işlem sırasına, kullandığı editöre kadar pek çok konuda herkesin kendisine göre bir takım yöntemleri vardır. Hatta bunların içinde içtiği kahve, dinlediği müzik, atıştırmalıklara kadar olmazsa olmazları bile vardır (: Proje hazırlama sırası da bunların içinde önemli bir konudur. Projeye tasarımdan mı başlamalı yazılımdan mı ? Önce veritabanını mı hazırlamalı ? Ya da en iyisi admin paneli ... Bu soru işaretleri uzar gider. Ancak bu soruları önem derecesine göre sıralarsak proje hazırlama konusunda önemli bir yol haritası çıkarmış oluruz kendimize.
Bu yazımda kişisel bir web sitesi projesi hazırlayalım ve birlikte hangi aşamalardan geçtiğimizi irdeleyelim.
Öncelikle ne veritabanı hazırlayacağız ne grafik tasarım ne de admin paneli. Hatta bilgisayar başında bile olmayacağız. Önce temiz bir hava alalım (:

Temiz hava bol gıda

Ben hep bunu yaparım. Genellikle de haftasonları buna fırsatım olur. Cebimde kağıt kalemim başımda şapkam ya sahile atarım kendimi ya bir ağaç altına. Sessiz sakin ... Kafamı toparlamak, düşüncelere dalmak, karar vermek, motive olmak için kendimce bazı yöntemlerim vardır. Size de tavsiye ederim (: Ve bir projeye başlayacaksanız önce yapacağınız işe inanmanız, kendinizi ikna etmeniz, hedefinizi belirlemeniz ve ona odaklanıp motive olmalısınız. Özellikle projenin başarılı bir şekilde çalışacağına, sorumluluğunuzun üstesinden geleceğinize inanmak işin en önemli kısmıdır ve gerçekten gerisi teferruattır ama bu teferruatların da öncelikleri vardır ve bunun farkında olmak da çok önemlidir.


Kağıt kalem ile barışık olun

Hayalinizde canlandırdığınız projeyi bir kağıda çizmenizi öneririm. Genel olarak bir taslağını çıkarmalısınız. Hayalinizdekini somut bir şeylere dönüştürün. Zaten projenin sonunda somut olarak bu gerçekleşecektir ama gerçekleşmeden önce bir kağıt üzerinde tasarım olarak taslağını çıkarın. Bu size heyecan verecektir. Ayrıntılara inmeden nerede hangi uygulama olacak, banner alanı, footer, navigasyon, detay sayfası, reklam yeri gibi önce bir şablonunu çıkarın. Böylece düşündüklerinizi somutlaştırıp ne yapmaya çalıştığınızı daha net göreceksiniz. Hatta yazıp çizerken başka fikirler de aklınıza gelecektir.


Projenin amacı

Kendinize bir sorun : Bu projeyi kime ne için yapıyorum ? Amacım nedir ? Gelir elde edecek miyim ? Yoksa hayrına bir iş mi yapıyorum (: Hedef kitlem var mı ? Bu işi yapmak ne kadar sürer ? Bireysel mi hareket etmeliyim yoksa bu proje için bir başkasına da ihtiyacım var mı ? Ekip işi mi olacak ? Piyasada örnekleri var mıdır ? Yeteri kadar malzemem ve bilgi birikimim var mı ? Projeyi herkesten sır gibi saklamalı mı yoksa bir bilene de danışıp sormalı mı ? Bunlar ve bunlara benzer bir çok soruyu sorup cevabını aradığınızda ve doğru cevapları verdiğinizde artık ne yaptığınızın farkında, hedefinizi belirlemiş ve kafanızda bütün işin akışının nasıl olacağını canlandırmaya başlayacaksınız.

İhtiyaçları tespit ediyoruz

Temiz havamızı aldık, kafamızı toparladık, kağıt kalemle bir şeyler karaladık, düşüncelere daldık. Artık yavaş yavaş bulunduğumuz yerden kalkıp evimize ya da ofisimize doğru yol almanın vakti geldi. Dönüş yolunda da şöyle bir düşünelim : Projemi ASP.NET’te hazırlayacağım. .NET 2.0 mı .NET 3.5 mu ? AJAX kullanacak mıyım ? CSS menü işimi görecek olsa da jquery ile yapılmış örnekler de fena sayılmaz. Piyasada çok sayıda template var acaba tasarım ile vakit kaybetmesem de bir tane template seçsem mi ? Veritabanı Access mi olsa MSSQL mi ? Expression Web’de mi başlasam çalışmaya yoksa Visual Studio’da mı ? Aslında kafamı toparladım sanıyordum ama karar vermem gereken daha çok şey varmış. Hele bir oturalım bilgisayar başına gerisi gelir.


Herşeyin başı veritabanı !

Projemizin dinamik ve statik yapıda sayfaları olacaktır. Dinamik yapıdaki sayfalar için veritabanı ile iletişim kurmamız şarttır. Projeye adım atılcak ilk yer veritabanının tasarlanmasıdır. Kişisel bir web sitesi için günlüklerinizi tutacağınız bir tablo olmalıdır. Hatta gireceğiniz verileri kategorilerine ayrıcağınız için kategoriler tablonuz da olmalıdır. Yönetim paneline girerken kullanacağınız parola ve kullanıcı adını da veritabanında tutacağımız için bir de yönetici bilgileri tablosuna ihtiyacımız olacak. Sitemizde video – galeri – müzik – dosyalar gibi farklı medyalarımız da olacaksa bunların da adres bilgilerini tutacağımız bir tabloya ihtiyacımız olacaktır ya da ayrı ayrı da tablolayabiliriz. İçerik ve kategori tabloları arasında da bir ilişkinin olduğunu hatırlatalım.
Veritabanınızı tasarlarken üzerinde çok dikkatlice düşünmelisiniz. Sadece bugünü değil geleceği de düşünerek ileride yapmak isteyeceğiniz değişikliklere de cevap verecek yapıda olmalıdır. Çünkü veritabanı hazırlandıktan sonra ve proje çalıştırıldıktan sonra geriye dönüş çok zordur. Örneğin galeri ve video tablolarını ayırmalı mıyım ? Yoksa tek tabloda birleştirip “Tur” adında bir kolonla türünü mü belirtmeliyim ? Ya yarın öbür gün galeri için videolardan farklı kolonlara ihtiyaç duyarsanız ? Bu ve buna benzer sorgulamalar sıklıkla yapılıp nihai bir karara varılır. Hatta verilerinizi nasıl tutacağınızın tartışmasını bile yapmalısınız. Örneğin bir email adresi ya da url bilgisi saklayacaksanız bunun nvarchar(250) mi yoksa nvarchar(150) mi tutacaksınız. Ya da “Tur” bilgisini int mı yoksa string mi saklayacaksınız. Veritabanından bir kayıdı silerken gerçekten fiziksel olarak silecek misiniz yoksa bir field açıp burada true false değer tutup silinmiş gibi mi göstereceksiniz ? Küçük detaylar ileride önemli bir hal alabilir. O yüzden ayrıntıları da dikkate almalısınız.


Projeyi başlatalım

Veritabanımızı da hazırladığımıza göre artık Visual Studio’yu başlatıp yeni bir proje oluşturmanın zamanı geldi. Web projesi başlatırken tavsiyem “Create a new website” komutu yerine önce boş bir solution oluşturun. Bunu şunun için söyledim : Projenizde daha sonra bir DLL kütüphanesi yazmak isteyebilirsiniz, ya da mobil bir uygulamada geliştirebilirsiniz. Hepsi aynı projenin parçaları olacağı için tek bir solution altında birden fazla proje grubunu yönetebilirsiniz. Boş bir solution oluşturduktan sonra o solution içinde yeni bir web projesi başlatıyorum. Bunu da ajax-enabled-website olarak ayarlıyorum. .NET versionu olarak da örneğin Linq kullanacaksanız ya da C# 3.0’da çalışacaksanız Visual Studio 2008’de .NET 3.5 projesi başlatabilirsiniz ama .NET 3.5 ile ilgili yeniliklere fazla aşina değilseniz .NET 2.0’da da devam edebilirsiniz. .NET 2.0’da başlayıp daha sonra projeyi geliştirdikçe ve ihtiyaç duydukça .NET 3.5’a geçiş yapmak şu an için doğru bir karar olacaktır diyebiliriz. Projeyi Visual Studio’da başlattıktan sonra ilk yapılmasını tavsiye ettiğim şey klasörlerin hemen oluşturulmasıdır. Bunlar images-css-js-admin şeklinde dört ana klasördür. Stylesheet dosyalarını css klasörüne, javascript dosyalarını js klasörüne, imajları images klasörüne ve admin paneli uygulamasını da admin klasörü altında başlatacağız. Bunları ayarladıktan sonra projemize admin paneli ile devam edelim.


Admin paneli hazırlıyoruz

Hala tasarım ve grafik aşamasında değiliz farkındaysanız. Bana göre projenin görsel tasarımı ve erişilebilirlik konuları ayrı bir tartışma konusudur ve onun üzerinde de uzun uzun düşünülmelidir. Ama projemiz dinamik bir yapıdaysa veritabanını hazırlamak ve veritabanını işlemeye başlamak önceliğimiz olmalıdır. Eğer bir ekip işi yapıyorsak projenin görsel tasarım kısmına da bir tasarımcı başlayabilir tabiki.
Admin panellerinin tasarımlarını hazırlamak önceliğimizde yer almamalıdır. Sonuçta oraya sadece belli kişi ya da kişiler erişecek ve projenin içeriğini yönetecektir. Zamanımızda kısıtlıysa admin panelinin görsel tasarımı ile vakit kaybetmenin de anlamı yoktur. Daha sonra kullanımını kolaylaştıracak görsel düzenlemelere gidilebilir. O zaman ilk yapmamız gereken admin paneli altında bir masterpage oluşturmak olmalıdır. Masterpage içinde de hızlıca tablo ile çalışıp bir yanda menünün olacağı yeri belirtip diğer yanda da contentplaceholder alanınızı belirleyip çalışmanıza başlayabilirsiniz. Burada amacımız veritabanını admin panelinden nakış nakış işlemektir. Veritabanı tasarımı konusunda ihtiyaç duyacağımız ve düzeltmeye gideceğimiz konuları tespit etmektir.
Örnek proje olarak kişisel web sitesi demiştik. Veritabanımızda da günlüklerimizi tutacağımız bir tablomuz vardı hatta bir de içerikleri kategorilerine ayırmamıza yardımcı olacak kategori tablomuz vardı. Hatta ana kategori ve alt kategori diye de iki ayrı tablo ile çalışıyorsanız önce ana kategori tablosunu ardından o ana kategorideki içeriklere ait alt kategorileri ardından içerik tablosunu işlememiz gerekecektir. Yani tümdengelim yöntemi ile genelden özele doğru bir yol izliyoruz. Önce projeye makro açıdan bakıyoruz. En temel parçasına kadar iniyoruz. Veritabanındaki tabloları işlemeye de bu en küçük bölünmez parçadan başlıyoruz. Örnek projemiz küçük çaplı bir proje de olsa admin panelinde kategori tablosunu işlemeye başlamamız gerektiğini bu açıklamalardan anlayabilirsiniz. O zaman kategori tablosuna admin panelinden nasıl veri girişi yaparız ? İşin programlaması bu yazının konusu değildir ama hızlıca bir yöntem önermem gerekirse sadece bir textbox ve bir buton ile kategori tablonuza hızlıca kategoriler ekleyebilirsiniz. Kategori ekleme işlemleri bittikten sonra bunların listeleneceği bir sayfaya ihtiyacınız olacak. İster aynı sayfada çalışmaya devam edin ister farklı bir sayfada verilerinizi listeleyin ihtiyacınız olacak olan obje repeater, datalist ya da gridview olacaktır. Bunların içinde gridviewin edit, update özelliklerinin olması işinizi kolaylaştıracaktır. Böylece veritabanındaki bir kaydı tek satırda güncelleyebilirsiniz. Kategori yönetimi işlemi bittikten sonra içeriklerimizi eklemeye gelir sıra. İçerik tablomuzda da baslik-metin-ozet-etiket-resim-kategori gibi alanların olduğunu varsayarsak önce bunlarla ilgili textboxları formumuza ekleriz. İçeriğe bir resim eklemek istiyorsak bunu texteditör içinde kullanabileceğimiz gibi bir upload nesnesine de ihtiyacımız olacaktır. İçeriğin hangi kategoriye ait olacağını da bir dropdownlistten seçeceğiz. Formumuzu hazırladıktan sonra geri kalan işlem yazılım tarafına aittir. Tahmin edersiniz ki içerik eklemek yeterli değil. Bu içeriği listelemek ve tıklandığında da ayrı sayfada güncellenebilir bir formatta olması gerekir. Bu da işin yazılım kısmı ile alakalıdır. Burada işleyiş sıramız önemlidir.
Özetle tabloları işlerken en küçük birimden başlayıp en büyük birime doğru tabloları işlemeliyiz. Kaydedilen her datanın listelendiği sayfalar ve değişikliklerinin yapıldığı sayfalar olmalıdır. Bu da yazılımın konusudur. Burada bu konuya girmeyeceğim. Önemli olan veritabanı tasarımı yapıldıktan sonra bu veritabanının genelden özele doğru izlenecek bir yol ile admin panelinde işlenmesidir.


Artık arayüz tasarımına geçsek mi ?

Daha önce oluşturduğumuz css-js-images gibi klasörlerden sonra ana dizine bir de master page dosyası ekleyelim. Diğer sayfalarda bu masterpagei kullansın. İster grafik ağırlıklı bir çalışmanız isterseniz CSS tasarım ağırlıklı bir çalışmanız olsun. Bu size kalmış ya da ekipteki tasarımcıya kalmış. Ancak şu konuda önemli bir izahta bulunmak zorundayım. Bir web tasarımcısı tasarımını hazırlarken onun yazılımcı tarafından da nasıl programlanacağı sorumluluğunda olmalıdır. Mesela bununla ilgili bir örnek olarak üye girişlerinin yapıldığı login alanlarını söyleyebilirim. Geniş büyük login alanları programlama açısından da yazılımcıyı rahatlatır. Çünkü arayüzde rahat hareket eder. Ancak küçük bir alana sıkıştırılmış uygulamaların programlanması, html kodları ile uğraşılması yazılımcı için eziyet haline de gelebilir. Gerçi yazılımcılar grafik arayüzünün kendilerine html tepsisinde sunulup getirilmesini dilerler ama bu her zaman böyle olmayabilir. Bir .psd dosyasını parçalayıp tablolarına ayırma işi de yazılımcıya kalabilir ve tasarım içinde çeşitli uygulamalar dar alanlara sıkıştırılmışsa bu sıkıntı yaratabilir. Örneğin ben sade tasarımlardan ve uygulamaların alabildiğine rahatça yayıldığı çalışmalardan hoşlanırım. Bu da benim tarzım (:
Özetle tasarım konusunda çalışmanın nasıl uygulamaya çevrileceğini akıllıca düşünmek gerekir. Yapılan tasarım görsel olarak çok başarılı olsa da uygulama sırasında grafiklerin ve tasarımın yazılımcıyı kısıtlamamasına ve daha sonra tasarım çalışmasına geri dönüp sağını solunu değiştirmekle uğraşmamak ve zaman kaybetmemek için bu uyarıları dikkate alın her zaman.
Bugün milyarlarca web sitesi var. Milyarlarca da kullanıcı. Bu kullanıcılar web sitelerine girdiklerinde nelere dikkat ediyorlar. Onları sitede kalmasını sağlayan ya da tekrar ziyaret etmelerini sağlayan nedir ? Bütün kullanıcılar üzerinde bir anket yapıp bu soruların cevaplarını almak imkansız gibi ama kullanıcıların bir sitede ortalama ne kadar süre kaldıkları bilgisi aşağı yukarı 8-10 saniye kadardır. Tabi ortalamaya vurunca bu oran düşüyor. Şuna vurgu yapmak istiyorum. Kullanıcılar içinde “şu web sitesinin grafik tasarımı ne kadar mükemmel olmuş oraya tekrar gireyim” şeklinde bir bahane ile siteyi ziyaret eden kullanıcı profili genele oranla daha küçük yer kaplar. Kullanıcı siteyi ziyaret eder, aradığını bulur, bilgiyi elde eder, kullanır, tüketir ve gider. Örneğin benim web sayfamda içinizden hiç kimse “banner ne kadar güzel olmuş tekrar gireyim” diye girmeyecektir. Bunları şunun için söylüyorum. Bugün web projelerinde içeriğin, hedeflediği kitlenin, bu kitlenin site üzerinden birbiri ile iletişimi ve siteye interaktif katkıları, site üzerinde bilgiye en az maliyetle erişmeleri gibi konular daha ön plandadır. Tasarım şüphesiz çok önemlidir ama burada artık menünün rengi açık yeşil mi olsun yoksa mouse ile üzerine gelince yazı karakteri şöyle mi değişsin tartışmasıyla ve gereksiz detaylarla vakit kaybetmeyin. Kullanıcı sitenize girecek, aradığını bulacak, tüketip gidecektir. O bannerı ya da menüyü yapanın kim olduğunu asla düşünmeyecek ya da takdir etmeyecektir. Onun için önemli olan bilgiye erişmek ve onu kullanmaktır. Siz de projenizde bilgiye erişlebilirliğin en az maliyetle olacağı tasarımlar ve navigasyonlar üzerine yoğunlaşmalısınız.


Test yayınlarına başlayabiliriz

Projenin %100 bitmesini hiç bir zaman beklemeyin (: Çünkü bitmeyecektir. Her geçen gün aklınızı kurcalayacak bir şeyler olacaktır. Şunu ekleyeyim bunu çıkartayım acaba böyle mi güzel olur şöyle mi ? Bunların hepsine cevap verin ve uygulayın ama localde değil reelde (: Değişikliğinizi yapın ve çalıştırın. Çalışmanızı test ederken önceliğiniz güvenlik olmaldır. Eğer siteye üye girişleri yapılıyorsa, bu üyeler çeşitli yetkilerle işlemler yapıyorlarsa bir üyenin başka bir üyenin haklarını gasp edecek kurnazlıklara karşı sisteminizi koruyun ve ona göre programlayın. Test yayınlarında çalışmanızın arama motorlarında görüntülenip görüntülenmediğini kontrol edin ve sitenizi mutlaka arama motorlarına kayıt ettirin. Yaptığınız çalışmayı bir arkadaşınıza kullandırtın. Arkadaşınız sizin yanınızda olsun ve onun siteye girdiğinde ilk nerelere yönlendiğini, siteyi nasıl kullandığını izleyin. Böylece eksiklerinizi görebilirsiniz.
Beta aşamasını geçtikten sonra sitenizi cümle aleme duyurabilirsiniz (: Artık hiç bir zaman bitmeyecek bir projeniz var. Aklınız fikriniz onda olacak (:


Bu yazımda bana eposta ile sıklıkla sorulan admin paneli nasıl hazırlayacağım, projeme nereden başlamayalım gibi başlangıç aşamasında zorlanan kişilere yardımcı olması için yazdım. Faydalı olmasını dilerim. Başka yazılarda buluşmak dileğiyle iyi çalışmalar herkese ...


20 Haziran 2009 Cumartesi akşam 22:19

Mesajınızı yazabilirsiniz


Rumuz :  
 
Email :   
  
Mesaj :  
Bu konuya abone olmak ister misiniz ?

Güvenlik kodunu göremiyorsanız sayfayı yenileyin.
Güvenlik Kodu :





Mesajlar


Esma
24 Ağustos 2009 Pazartesi öğleden sonra 14:38
İlk mesaj yazan ben olıyım bu yazıda:) İlk gördüğümde bu ne uzun yazı dedim kendi kendime.Ama okumaya başlayınca hızlı gitti.Uzun,tek soluklu bi yazı olmuş.Faydalı da oldu,okuduğuma değdi... :)


Fatih ERİKLİ
28 Ağustos 2009 Cuma gece 5:34
güzel yazı emre abi :) "Projenin %100 bitmesini hiç bir zaman beklemeyin" kesinlikle katılıyorum. Proje bitti diyince kesinlikle bitmiyor:) Dediğin gibi aklın hem orda kalıyo hemde tam bitti diyosun ordan bişey çıkıyo düzenlemeler çıkıyo ekleme çıkıyo hata çıkıyo...


ugur
8 Eylül 2009 Salı akşam 18:45
Merhabalar; Tam da bahsettiğiniz şekilde bir script yazdım. Tek fark .NET 2.0 da yazmış olmam. :) Fakat bunu yazarken internet bağlantım olmadığından fazla araştırma yapamamıştım. İlk yazdığım scriptim. Sadece bir kitaptan teknik destek aldım. İnsanın ilk göz ağrısının önemli bir yeri vardır. 2 buçuk hafta uğraşıp bitirdim. Ama host a attığımda sorunla karşılaşıyorum. Sorun veri tabanında kullanıcı için user ve password tanımlamalırının olmayışından sanırım. 3-4 gündür uğraşıyorum. Emeğim boşamı gitti diye düşünmeye başladım. Bana yardımcı olur musunuz rica etsem? Mail adresim aynı zamanda msn olarak kullanıyorum. Eklerseniz çok mutlu olurum.


Emre Kıyak
8 Eylül 2009 Salı akşam 19:30
Sevgili Uğur projeni publish ederek yayınlamalısın. Tahmin ediyorum web.config dosyasında bir hata mesajı almışsındır. Eğer publish ederek yayınlarsan (ki doğrusu budur) hatasız olarak çalıştırırsın projeni. Projenin yayınlanması ile ilgili bir makale çalışması da yaparım kısa sürede.


ugur
8 Eylül 2009 Salı akşam 19:57
hocam projeyi publish ettim. ama veri tabanına bağlanılamadı gibi bir hata ekranı geliyor. Publish ettiğim projeyi hosta attığımda. Yaptığım veri tabanını hostta bir mssql hesabı oluşturup içersinemi attach etmem gerekli?


Emre Kıyak
8 Eylül 2009 Salı akşam 20:20
Aldığın hata mesajını yazarsan sebebini açıklarım. Veritabanı olarak nereye bağlanıyorsun ? Server nerede ? Uzaktaki bir servera bağlanıyorsun sonuçta. Localde çalıştığın veritabanını tablolarını uzak bir sunucuya göndermen (Export) lazım. Attach değil. Attach aynı makinada bir veritabanını sql servera tanıtmak için yapılır. Sen localdeki veritabanını uzaktaki bir servera export ile (veritabanına sağ tıkla tasks bölümünden export) bütün tablolarını dışarıya aktaracaksın ve projende veritabanına bağlantı cümleni de değiştireceksin. IP adresi, kullanıc adı ve parola belirteceksin.


emocan1991
8 Temmuz 2010 Perşembe sabah 11:36
slm üstad bu büyük web projleri nasıl yazılıyor binlerce sayfalık meynet bunları nasıl yapıyorlar...


Emre Kıyak
9 Temmuz 2010 Cuma sabah 11:34
anlatılmaz yaşanır :)