Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

Merhabalar bu yazımda Asp.NET Web API kullanımında Action Based Routing konusunu inceleyeceğim. Bir önceki makalede Convention Based Routing konusunu işlemiştik. Convention based routing konusunda GET-POST-PUT-DELETE işlemleri metod isimlerinden anlaşılıp aksiyon alıyordu. Bu makalede ise farklı isimlerdeki metodlarımızda routing yapısına müdahale ederek ilgili işlemleri nasıl yapacağımızı inceleyeceğiz ayrıca aynı proje üzerinden devam edeceğim.

Öncelikle WebApiConfig.cs dosyasında routeTemplate yapısında {action} eklemesini yapıyorum.

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional …

Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

Merhabalar bu yazımda Asp.NET Web API kullanımında Convention Based Routing konusunu inceleyeceğim. Yeni bir Web API projesini WEB API seçeneğini işaretleyip oluşturuyorum. App_Start klasörü içerisinde WebApiConfig.cs dosyasındaki default route ayarlarına bakabiliriz.

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}

Kod bloğunda gördüğümüz gibi domainden sonra api/{controller}/{id} tanımlamasıya projeyi çalıştırdığımızda verileri alabiliriz.

Image for post

ValueController üzerinde değişiklik yapıp bir List ekliyorum. …


Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

Merhabalar bu makalede restfull apilerimizi dökümante yapabildiğimiz son zamanlarda standart haline gelen Swagger’ ı self- host bir api da nasıl kullanabileceğimizi inceleyeceğiz. Ben uygulamayı bir console application üzerinde host yapacağım için bir console application oluşturuyorum. Daha sonra Nuget üzerinen Install-Package Microsoft.AspNet.WebApi.OwinSelfHost ile Owin kütüphanesini ekliyoruz. Kütüphane yüklendikten sonra yeni Startup.cs classını ekliyoruz.

Image for post

MapHttpRoute ayarlarımızı tanımlıyoruz. Startup sınıfımızı tamamladıktan sonra projemize ValuesController isminde bir class ekliyoruz.

Image for post

ValuesController içerisine ilgili metotlarımız tanımlıyoruz. Metotlar üzerinde comment eklediğimizde Swagger başığında bu commentler listelenecektir.

ValuesController tanımlaması bittikten sonra Program.cs içerisinde servisi ayağa kaldırmalıyız.

Image for post

Projeyi build yapıp çalıştıralım. …


Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

Merhabalar, bu yazıda son zamanlarda ilgilenmeye başladığım Asp.Net Core ile ilgili Web API projesinde EntityFramework.Core kullanımına değineceğim. PowerShell ile projemizi oluşturacağımız dizini mkdir komutuyla ekleyelim.

Image for post

.NET Core SDK kurulumunu yapılması gerekmektedir. Kurulum tamamlandıktan sonra komut satırına dotnet komutuyla versiyon numarasını kontrol edebiliriz.

Image for post

dotnet new webapi komutu ile yeni bir Web API projesi oluşturuyoruz. dotnet restore komutu ile ilgili package’lar indirilir. Daha sonra dotnet build komutu ile proje build yapılır.

Image for post

Projeyi Visual Stuido Code ile açmamız için . Code komutunu kullanabiliriz. Bu şekilde projemiz bulunduğu dizinden Visual Studio Code ile açılmış olur.

Uygulamayı çalıştırmak için dotnet run komutunu kullanıyoruz. …


Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

Merhabalar, bu makalede Asp.Net Web API ile RESTful servis geliştirirken Token Based bir Authentication işleminin nasıl yapıldığını ele alacağız.

Image for post

Öncesinde ORM aracı olan Entityframework’ü, en çok kullanılan yöntemlerden biri olan Code First yöntemi ile bir tablo oluşturma işlemini yapacağız. Öncelikle yeni bir boş Web API projesi oluşturuyoruz.

Image for post

Daha sonra “Install-Package Entityframework” yardımıyla Entityframework’ ü projemize yüklüyoruz. Projemize sorunsuz yükleme sonrasında Model klasorümüze yeni bir sınıf ekleyebiliriz.

Image for post

Book isimli sınıfımıza baktığımızda “[Required]” attributelerin olduğunu görmekteyiz. Bu attributeler ilgili alanların boş geçilemeyeceğini kontrol etmektedir ve “System.ComponentModel.DataAnnotations” altında bulunur. …


Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

.Net ile işlem yaptığımız nesneyi, sınıfı saklamak yada transfer etmek istediğimiz formata dönüştürme işlemine Serialization denir. Serileştirdiğimiz nesneyi yada sınıfı fiziksel olarak diskimize kaydedebilir yada web servisler aracılıyla gönderilebiliriz.Bu serileştirme işlemi sonrasında verilerimizin boyutları küçülecek ve transferlerde performanslı aktarımlar yapabileceğiz. Serialization yapılmış bir nesneyi daha sonra açabilmemiz için ise Deserialization yapmamız gerekmektedir. Serialization BinarySerialization ve SoapSerialization yöntemleri ile yapılabilmektedir. Serileştirme işlemini uygulayabilmek için System.Runtime.Serialization namespace kullanılmaktadır. Bir sınıfın tamamını serileştirmek için [Serialization] özniteliğini kullanmamız gerekmektedir.

BinarySerialization : Serileştirilecek veri .NET ortamında yazılmış bir uygulama ile deserialization yapılacak ise BinarySerialization kullanmak performans açısından faydalı olacaktır. System.Runtime.Serialization.Formatters.Binary


Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

Devexpress componentleri arasında bulunan ReportDesigner componenti ile raport tasarımları oluşturabilirsiniz. Bu makalede dışarıdan DataSet yükleyerek bir raporu runtime dizayn nasıl yapılabilir olduğunu inceleyeceğim. ReportDesigner ile bir raporu oluşturmak için New Item => Reporting => Devexpress Report Wizard ile bir rapor oluşturup bunun üzerinden işlem yaptım. Ben runtime da rapor tasarmak istediğim için bu şekilde bir base rapor oluşturdum. Tabiki siz raporunuzu wizard ile de oluşturabilirsiniz. Rapor görüntüleme sayfasından dizayn sayfasına rapor ismini url üzerinden parametre olarak alıyorum. Bu şekilde daha önceden eklenmiş bir .repx …


Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

Singleton (Tek Nesne) tasarım deseni, bir sınıfın uygulama yaşam süresince tek bir örneğini oluşturmak için kullanılır. Ayrıca sınıfın global bir erişim seviyesine sahip olmasını garanti eder. Singleton ile tasarlanan sınıfın yapıcı metodu private olarak tanımlanacağı için “new” anahtar kelimesi ile bir sınıf örneği oluşturulamaz. Aşağıdaki örnekteki gibi kullanımı mevcuttur.Uygulamayı çalıştırdığınızda Random sayıların aynı olduğunu göreceksiniz. Proje örneğine buradan ulaşabilirsiniz.

Image for post


Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

Factory (Fabrika) Tasarım Deseni soyut birbiriyle ilişkili yada bağlı n tane sınıfların tek bir arayüz ile oluşturulmasını sağlar. Aşağıdaki örnekte farklı veritabanı bağlantı yapılarımızın olduğunu düşünelim. Bu yapıları OracleDbConnection,MySqlDbConnection,MsSqlDbConnection isimli sınıflarımızda tanımlıyoruz. Bu sınıflarımızdan hangisinin oluşmasına karar veren DbConnectionFactory sınıfımızın içerisinde bulunan createConnection metodu bu görevi üstlenmiştir. Enum ile tanımladığımız tiplerimize göre createConnection metodu aldığı parametreye göre ilgili sınıfı oluşturmuş olacaktır. Projeye buradan ulaşabilirsiniz.

public interface IDbConnection
{
String getConnection();
}
public class OracleDbConnection : IDbConnection
{
public string getConnection()
{
return "Oracle Data Connection";
}
}
public class MySqlDbConnection : IDbConnection
{
public string getConnection()
{
return "MySql Data Connection";
}…


Not: Diğer tüm yazılarımı kendi bloğumda muratsuzen.com adresinde paylaşmaktayım.

Chain of Responsibility kod karmaşasını önlemek amacıyla oluşturulmuştur. Bir işlemi yapabilecek birden fazla sınıftan hangisinin yapacağına karar veren tasarım desenidir. Projelerimizde birden fazla koşullu metotlar yazmak istediğimizde her koşul için if else blokları açılır ve ilgili metotlar çalıştırılmaktadır.Aşağıdaki örnekte buna benzer bir yapı oluşturmaya çalıştım. Bu yapıyı if else blokları yerine chain of responsbility ( sorumluluk zinciri ) tasarım desenini kullanacağım. Bu tasarım deseninde 3 ana yapı vardır.

Handler : Kendisinden türeyecek ConcreteHandler’ ların, işleyebilmesi için gerekli olan arayüzdür. Abstract class yada Interface şeklinde tanımlanabilir.

ConcreteHandler : Gelen isteğe cevap verebilecek gerekirse isteği kendisinden sonra gelen nesneye iletir. …

About

Murat Süzen

Main blog is muratsuzen.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store