Dış Servislerle Entegrasyon
#
WebService Entegrasyonu#
WebService ÖrneğiWebservice entegrasyonu örnek uygulaması için https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx servisi kullanılmıştır. Bu servisin beklediği bilgiler aşağıda bulunan şekilde işaretlenmiştir.
#
KullanımıConnected Services eklendikten sonra dış servislerle iletişim noktası olarak Business -> Adapters klasörü kullanılır.
#
UygulanmasıBelirli bir düzen sağlamak için Adapters klasörü altında PersonService isminde bir klasör oluşturulur. Bu servisi temsil eden bir IPersonService Interface'i ve VerifyCid isminde dış servisin beklediği propertyleri temsil eden bir metot ile ilk giriş noktası oluşturulur.
IPersonService Interface'inin implementasyonu aşağıdaki şekilde gösterilmiştir.
#
SonuçBu şekilde dış bir servis DevArchitecture mimari yapısına uygun çalışır ve metotlar tarafından erişilebilir hale getirilir.
#
RESTful API Service Entegrasyonu#
Refit KurulumuBu örnek RESTful API Service için https://jsonplaceholder.typicode.com/todos açık apisini kullanır.
DevArchitecture ile RESTful API Service entegrasyonu için Refit kütüphanesi kullanılır.
(https://www.nuget.org/packages/Refit/)
#
RESTful API Service Örneğihttps://jsonplaceholder.typicode.com/todos/1 adresi üzerinden tek bir kayıt getirilerek api modelinin yapısı incelenir.
#
DTO OluşturmakBu modele göre Entities -> Dtos içinde TodoDto.cs isminde bir DTO (Data Transfer Object) sınıfı oluşturulur.
Bu sınıf IDto Interface'ini kullanarak Implemente edilir.
#
RESTful Servis UygulanmasıDış servisleri DevArchitecture mimarisine dahil etmek için Business -> Adapters klasörü kullanılır. Bu klasör altında kullanılacak olacak olan servisin ismini temsil eden TodoService isminde bir klasör oluşturulur.
Refit yapısı gereği bir Interface ile haberleşmeyi mümkün kılar. ITodoDataService ve implementasyonu için TodoServiceManager isminde bir interface ve bir sınıf oluşturulur.
ITodoDataService bir Get metot çağıracağı için Refit kütüphanesinin Get metotunu kullanır. İçine api url adresinin ana url kısmından sonra gelen url parametlerini / işareti ile birlikte alır. örnek: https://jsonplaceholder.typicode.com /todos
Bu interface implemente edileceği TodoServiceManager sınıfına miras verilerek kullanılır. Bu örnek için kullanımı aşağıdaki gibidir. (Refit kullanımı için https://github.com/reactiveui/refit adresini inceleyiniz.)
#
Handler Sınıfının Oluşturulması ve Sınıfın ÇağırılmasıBusiness -> Handlers -> klasörü altına TodoDto Todos ve altına Query isminde bir klasör oluşturulur için bir List Query template oluşturulur.
Bu klasör altına GetTodosQuery isminde bir Query Sınıfı oluşturulur. GetTodosQuery sınıfı aşağıdaki gibi düzenlenir.
GetTodosQuery sınıfı Handle metodu altında TodoServiceManager sınıfından yeni bir instance tanımlanır.
var todos = new TodoServiceManager();
GetTodos() metodu çağırılır.
var data=await todos.GetTodos();
data değişkeni dönüş değeri olarak belirlenir.
return new SuccessDataResult<IEnumerable<TodoDto>>(data);
#
Controller OluşturulmasıWebAPI -> Controllers altında yeni bir TodosController oluşturulur.
TodosController aşağıdaki gibi düzenlenir. [[AllowAnonymous]] ile işaretlenir böylelikle kullanıcı testi aşamalarında sürekli yetki problemlerinin yaşanması engellenmiş olur.
#
Projenin ÇalıştırılmasıProje IIS_Development ortam değişkeni seçilerek çalıştırılır.
#
SonuçSonuç olarak Swagger ekranında getall metodu çalıştırılır ve tüm sonuçlar dış bir RESTful API Service üzerinden çağrılmış olur.
author: Kerem VARIŞ