Visual Studio Dotnet Core Web Api Proje Şablonu B3.Web.Template.V1

20 May

Bir aspnet core web api projesinde ihtiyaç duyulabilecek katmanları ve araçları bir araya getirerek B3.Web.Template.V1 bir proje şablonu hazırlayarak Github üzerinden yayınladım. Şablonu kullanabilmek için, projeyi Github üzerinden indirebilirsiniz.

Proje Katmanları

  • WebApi layer (B3.WebApi)
  • Application services layer (B3.Applcation)
  • Data access layer (B3.EntityFramework)
  • Domain layer (B3.Domain)
  • Infrastructure layer (B3.Infrastructure)

Katman ilişki şeması aşağıdaki gibidir.

Template Kullanımı

B3.Web.Template.V1 projesini indirin. Visual Studio 2019 için kullanılacak ise indirilen B3WebTemplate.zip dosyasını ProjectTemplates dizinine  ekleyin. Örneğin kenid bilgisayarımdaki yol şu şekildedir: (C:\Users\User\Documents\Visual Studio 2019\Templates\ProjectTemplates)

Visual Studio’yu açın ve yeni proje ekleme adımını uygulayın.

Proje adını girin.

Artık yeni web api projeniz tüm katmanlarıyla hazır hale gelmiştir.

Asp.Net Core ve ilk Web Api Projesi

13 Ağu

Microsoft tarafından alınan en radikal kararlardan biri olan açık kaynak dünyasına geçiş, tüm geliştiriciler tarafından olumlu bir şekilde karşılanmıştır. Hatta geç kalınmış bir karar olduğuna dair eleştiriler de yapılmıyor değil.

Microsoft tarafında açık kaynak geliştirmeye olanak sağlayan düşünce ile birlikte, geliştirme ve çalıştırma araçları da tamamen yenilenmiştir. Çünkü açık kaynak ürünler, en önemli özelliklerinden biri olan, platform bağımsız çalışabilme yeteneğine sahip olmalıdır. Bu nedenle, geliştirme ve çalıştırma tarafında yeni ürünlere yer verilmiştir.

Platform bağımsız(cross-platform) çalışabilme yeteneğini kazandıran ilk ürün .Net Core adı altında yaniden düzenlenen .Net çatısı olmuştur. Şu an yayınlanmış olan versiyon .Net Core 2.1 şeklindedir.

.Net Core

.Net Core projeleri geliştirme yapmak için .Net Core SDK indirilerek kurulum yapılmalıdır.

Geliştirme işlemi tamamlandıktan sonra projenin bir platformda (Sunucu, PC v.s) çalıştırılabilmesi için ise .Net Core Rutime indirilerek kurulumu yapılmalıdır.

Çalışma ortamında .Net Core SDK kurulumu yapıldıktan sonra yine platform bağımsız bir araç olan Visual Studio Code kurulumu yapılmalıdır. (.Net Core projeleri Visual Studio 2017 geliştirme aracı ile de yapılabilmektedir.)

Visual Studio Code

Visual Studio Code ortamı, yönetici olarak başlatıldıktan sonra, yeni bir klasöre bağlantı yaparak yani diskte boş bir çalışma dizin açarak ilk çalışma projesi oluşturulabilir. Bu örnekte Asp.Net Web Api projesi üzerinden çalışılacağı için proje adını FirstWebApi olarak düzenleyebiliriz. FirstWebApi dizinini Visual Studio ile açtıktan sonra Terminal penceresine aşağıdaki konutu yazarak ilk Asp.Net Core Web Api projesi oluşturulabilmektedir.

dotnet new webapi

Proje Görünümü

Yeni bir proje oluşturulduğunda, geliştiricilere yol göstermesi açısından,  varsayılan olarak ValuesController.cs dosyası otomatik olarak oluşturulmaktadır. ValuesController içerisinde basitçe bir değişiklik yaparak ilk projeyi çalıştırabiliriz.

Kod

Kodu çalıştırmak için aşağıdaki komutu girmek yeterlidir.

dotnet run

Proje çalıştırıldığında http://localhost:5000 portundan web uygulaması için dinlemeye geçilir. Tarayıcıdan http://localhost:5000/api/Values adresine girildiğinde aşağıdaki şekilde bir JSON response elde edilir.

{“FirstName”:”bayram”,”LastName”:”Üçüncü”}

Visual Studio Solution Template Oluşturmak

25 Mar

Visual Studio geliştirme aracında yeni proje oluşturma seçenekleri arasında proje türüne göre oluşturulmuş hazır şablonlar bulunmaktadır. Sunulan seçenekler Class Library, Console Application, Asp.Net, WCF v.s gibi uzayıp gider. Seçtiğimiz proje türüne göre bir çalışma ortamı otomatik olarak hazırlanır.

New Project
New Project Seçenekleri

Ancak birbirine benzer projeler oluştururken solution içerisine sürekli aynı proje türlerini seçerek oluşturmak zorunda kalırız.

Örneğin bir web projesi için her defasında arayüz katmanı, veri katmanı, test katmanı gibi proje türleri seçilerek işleme başlanabilir. Bunun dışında da katmanlar vardır ama bu yazıda basit olarak üç katmanı ele almak anlaşılırlık açısında uygun olacaktır.

Bu gibi durumlarda kendi proje şablonumuzu olşuturabilirsek işimiz biraz daha kolaylaşmış olacaktır. Yapmamız gereken şey öncelikle bir solution oluşturarak gerekli proje türlerini bu solution içerisine dahil etmek olacaktır.

Solution
Solution

Bu proje şeklini bir şablon haline getirmek için File->Export Template seçeneğini seçerek ilerleyebiliriz.

Export Template
Export Template

Bu işlemin ardından My Exported Templates içerisine DataLayer.zip şeklinde bir dosya oluşturulduğunu görebiliriz. Bu solution içerisindeki tek bir katmana ait şablondur.

vs4

MyTemplate.vstemplate içerisinde oluşturduğumuz şablona ilişkin bilgiler bulunmaktadır. İçeriği xml şeklindedir ve istediğimiz şekilde düzenleyebiliriz. Bu işlemi solution içerisindeki tüm projelere uygulayıp oluşan *.zip dosyalarını tek bir şablon içerisinde birleştirebiliriz.

Export Template işlemi ile tüm projelere ait şablonları oluşturup *.zip dosyalarını bir klasöre çıkartalım.

Template Şablonları
Template Şablonları

Klasörlerin yanına Root.vstemplate şeklinde bir dosya oluşturmamız gerekmektedir. Adının ne olduğu önemli değildir. Önemli olan *.vstemplate uzantısına sahip olmasıdır. İçerik bilgisi ise şu şeklide olmalıdır.

Roor.vstemplate
Roor.vstemplate

TemplateContent içierisindeki ProjectCollection bölümünde daha önce tek tek oluşturduğumuz proje şablonlarını listeliyoruz. Icon olarak belirlediğimiz template.png dosyasını da aynı klasör içine kaydetmemiz gerekmektedir. Son olarak bu klasörü zip şeklinde sıkıştırarak kaydetmemiz gerekmektedir.

Template.zip
Template.zip

Artık oluşturduğumuz My Web Template.zip dosyasını Visual Studio Project Templates içerisine taşıyarak çalışır hale getirebiliriz.

Şimdi Visual Studio ortamında yeni proje eklemeyi deneyelim. Proje adını da ETicaret olarak belirleyelim.

Yeni Proje Şablonu
Yeni Proje Şablonu

Ve mutlu son!

Proje
Proje

Yazılım Proje Dizin Yapısı Oluşturmak

4 Mar

Projelerimizi oluştururken kendimize bir dizin standardı belirleyip, belirlediğimiz bu düzene sadık kalarak ilerlemek işlerimizi bir nebze kolaylaştıracaktır. Şu an için kodlama standartları gibi geleneksel bir standart yayınlanmamış olsa da programcıların yaygın olarak kullandığı bir dizin yapısı vardır.  Bu dizin yapısına göre kaynak kodlar, dış kaynak kütüphaneleri ve dökümantasyon gibi kavramlar ayrı ayrı tutulmak üzere belirlenmiştir.

Proje Dizin Yapısı
Proje Dizin Yapısı

Bir çok açık kaynak projeyi indirip incelediğimizde bu yapıya benzer bir dizin ağacına rastlarız. Bu ağaçta belirtilen kavramlar:

  • doc: Kod ile ilgili dökümanların bulunduğu dizindir. Geliştiricinin karşılaştığı sorunlar, çözümler, resimler, ip ucu olabilecek kısa yollar v.s bu dizinde bulunur.
  • lib: Proje için gerekli olan dış kaynak kütüphaneleri bu dizinde bulunur. Örneğin Nuget paketleri, Github üzerinden indirilip referans alınabiliecek başka kaynak kodlar.
  • src: Porjemizin kaynak kodunu barındırdığımız yer bu dizindir. Örneğin Visual Studio Solution veya Eclipse projesini bu dizine olşutururuz.
Proje ve Kaynak Kod
Proje ve Kaynak Kod Yapısı

Yukarıda lib dizininde dış kaynaklı kütüphanelerin bulunacağını belirtmiştik. Burada Visual Studio ile çalışanların Nuget paketlerini otomatik olarak lib dizinine indirebilmesi için gerekli bir ayar yapılmalıdır. Proje kaynak kod dizini içerisine yani yukarıda ki şemada src olarak adlandırılmış olan dizine nuget.config adında bir ayar dosyası oluşturulmalıdır . Bu ayar dosyasına şu satırları eklemek yeterlidir.

<settings>
    <repositoryPath>..\lib</repositoryPath>
</settings>

Artık Nuget Package Manager tarafından indirilen dosyalar doğrudan lib dizinine kaydedilir.

Bu yapıda oluşturulan çalışmaları versiyon kontrol sistemlerine derli toplu bir şekilde aktarmak mümkün hale gelmektedir.

NOT: Bu ayarlar Visual Studio 2013 üzerinde başarıyla denenmiştir. Sonraki çıkacak versiyonlarda bu ayarların değişme olasılığı vardır.

Resharper Visual Studio Eklentisi

12 Ara

Bu yazıda Visual Studio eklentisi olan Resharper kodlama aracına bir göz atalım istedim. Bugüne kadar gördüğüm en akıllı eklentidir diyebilirim. Resharper aracı kod denetimlerini yaparak bize rehberlik eden bir uygulamadır. Yazdığımız kodu kontrol ederek hata, uyarı, eksik referans, gereksiz satır, işletilemeyen satır gibi eksiklikleri bize bildirir. Bir diğer özelliği refactoring konusunda geliştiriciye yardımcı olmasıdır. Kodun yerinden düzenlenmesi için yol gösterici özelliklere sahiptir. Ayrıca navigasyon özelliği sayesinde tüm solution bünyesinde aradığımızı bulma konusunda çok etkilidir. Kendi bünyesinde bulunan unit test aracı sayesinde testleri de çalıştırabilmektedir. Gelen olarak başlıca özelliklerini liste halinde verecek olursak:

  • Kod analizi
  • Navigasyon ve arama
  • Kodun yeniden yapılandırılması (Refactoring)
  • Kod düzenleme ve temizleme
  • Kod üretimine yardımcı olma

Visual Studio proje tiplerinden C#, VB.NET, ASP.NET, Javascript, Typescript gibi proje türlerine destek vermektedir.

Programcılar açısından bir baş ucu aracıdır diyebilirim. Ancak şunu belirtmeliyim, sizi kendine çok kolay bir şekilde bağlar ve bir süre sonra Resharper olmadan kod yazmak size çok sıkıcı gelebilir.

Visual Studio – Paste Special JSON

14 Nis

Visual Studio ortamında JSON nesneleriyle haşır neşir olanlara kolaylık sağlayacak bir özelliği hatırlatmak istiyorum. Diyelim ki elinizde bir JSON nesnesi var ve bu JSON nesnesini  temsil eden C# tiplerini oluşturmak istiyorsunuz. Bu durumda oturup tek tek sınıfları yazmanıza gerek yok. Visual Studio bizim yerimize bu işlemi yapıyor. Nasıl mı?

JSON nesnemiz şu şekilde olsun:

{
   "Employee": {
     "Id": 1,
     "Name": "bayram",
     "salary": 100,
     "Department": {
           "Id": 12,
           "Name": "Development"
      }
   }
 }

Bu nesneyi kopyalayıp Visual Studio penceresinden Edit-> Paste Special -> Paste JSON as classes seçeneğini seçelim.

Paste Special JSON
Paste Special JSON

Sonuç:

Paste JSON as Clasess
Paste JSON as Clasess

Umarım faydası dokunur.

TFS online üzerindeki bir takım projesi nasıl silinir?

24 Tem

Microsoft’un sunduğu TFS(Team Foundation Service) sayesinde online ortamın takım projeleri(Team Project) oluşturmak mümkündür. Şimdilik 5 kişiye kadar olan takımlar için ücretsiz kullanabilen bir hizmettir. Sistemi biraz kurcaladım ve gayet başarılı bir ürün olduğunu gördüm. Şimdilik şu açıdan söylüyorum sistem üzerinde bir kaç defa proje oluşturup silerek denemeler yaptım henüz “TFS online takıldı!” diye bir mesajla karşılaşmadım. Hız konusunda yine gayet başarılı.

Gelelim bu yazımızın konusuna. TFS online üzerinde takım projesi oluşturmak çok kolay. Ancak  TFS online arayüzü üzerinden veya Visual Studio üzerinden takım projelerinizi silme hizmeti verilmemiş ya da ben göremedim. Hal böyle olunca Command Prompt üzerinden silme işlemlerini gerçekleştirdim. Silme işlemini aşağıdaki gibi adımlar halinde özetlemek istedim.

Silme işlemine başlamak için öncelikle Visual Studio Command Prompt aracını yönetici olarak çalıştırmalıyız. Komut satırına aşağıdaki düzende silme komutunu girmeliyiz. Ek bilgi olarak şunu belirteyim, bu işlemleri gerçekleştirdiğim makine üzerinde Windows 8 ve Visual Stuido 2012 mevcut.

tfsdeleteproject /collection:https://YOUR-ACCOUNT-URL.visualstudio.com/DefaultCollection "Your project name"

Yukarıdaki desene örnek olması açısından bizim kodumuzu şu şeklide yazabiliriz.

tfsdeleteproject /collection:https://rabitelli.visualstudio.com/DefaultCollection telekome
Delete Command
Delete Command

Komutu çalıştırdığımızda eğer TFS üzerinde oturum açılmamışsa oturum açma penceresi belirecektir.

Login TFS Online
Login TFS Online

Oturum açma işleminin ardından karşımıza çıkan pencerede silme işleminin sonuçlarında oluşacak durumları onaylamamız istenecektir.

Silme işlemini onyala
Silme işlemini onayla

Silme işlemi başarılı bir şekilde gerçekleşirse aşağıdaki şekilde bir pencere ile karşılaşmamız gerekmektedir.

TFS Online Silme işlemi tamamlandı
TFS Online Silme işlemi tamamlandı

Artık projemiz TFS üzerinden silinmiştir.

Visual Studio 2012 Update Enkazı

28 Mar

Visual studio ürün ailesine dahil edilen 2012 sürümünü çoğumuz kurup çalışmaya başlamışızdır. Bu versiyonda dikkatimi en çok cezbeden nokta Update süreleriydi. Daha Visual Studio ürününü yükler yüklemez bir Update uyarısı verdi. Yeni ürünün yeni güncellemesini yüklemek istedim. Aman Allah’ım! Tam üç saat. Tabi bu internet hızı ile alakalı bir durum mu yoksa bilgisayar donanımı ile alakalı mı diye bir düşünce sardı beni hemen. Derken güncelleme işlemi hayırlısıyla sona erdi.

Visual Studio Update
Visual Studio Update

Aradan bir iki ay geçti, Visual Studio’yu başlattığımda bu sefer de Update1 diye bir uyarı belirdi Windows’un sağ alt köşesinde. Eyvah! dedim içinden. Gene kabus başladı. Tam 2 saatte Update1 için zaman harcadım.

Bu kadar uzun süren Update yapacaklarına yeni versiyon çıkarsalar daha isabetli olurdu bence. Çünkü Visual Studio ürününü sıfırdan yükleme süresi zaten yarım saat. Bu yarım saat üzerine 5 saatlik güncelleme yükü çok can sıkıcı oluyor. Bu kadar can sıkıcı olmasaydı bu yazıyı ele almazdım inanın.

Ürünün önceki sürümlerinde böyle bir durumla karşılaşmamıştık. Umarım buna bir önlem alırlar ve Update 2 çıkmadan ürün yenilenir. Yeni bir güncellemeye ayıracak vaktim yok.

Bir sonraki yazıda görüşmek üzere.

NCrunch Visual Studio Eklentisi

6 Kas

NCrunch, kodlama esnasında birim testleri (unit tests) otomatik ve eş zamanlı olarak çalıştıran bir Visual Studio eklentisidir.

Projelerini teste dayalı geliştirenler için mükemmel bir araç diyebilirim. Performans konusunda donanımınızın yeterliliğine ve test sayınıza göre NCrunch analiz süresi değişiklik gösterebilir.

NCrunch aracı, siz kodunuzu yazarken arka planda otomatik olarak kodu testlerden geçirerek durumu size bildirir.

İsterseniz testleri otomatik olarak değil de el yordamıyla da yaptırabilirsiniz. Testlerin durumunu aşağıdaki pencereden de görebilirsiniz.

Büyük projeler düşünülerek, Visual Studio IDE performansı üzerindeki etkileri en aza indirmek için, proje mimarisindeki bağımlılıkları analiz ederek,  testleri yürütme işlemi için öncelik sırasına koyar ve asenkron süreçler, ek işlemci çekirdeği kullanır.

Bir diğer özellik ise test kapsamına girmeyen kodların belirlenmesidir.

Siyah noktayla işaretlenen satırların test edilmediğini anlayabilmekteyiz. Yeşil noktayla işaretlenen kod satırlarının testlerden başarıyla geçtiğini göstermektedir.

Testlerin çalıştırılma süresini ölçen özelliği sayesinde ise uzun sürebilecek testler işaretlenir.

NCrunch aracının noktasal işaretleme özelliğinin renkleri isteğe göre değiştirilebilmektedir.

Test Driven Development yapanlar için çok iyi bir araçtır.