Microsoft Visual Studio Lightswitch ve WCF RIA Services Kardeşliği

Visual Studio Lightswitch iş uygulamaları oluşturmak için Microsoft tarafından geliştirilmiş olan bir ürün olarak hayatımıza girmiştir. Lightswitch verilere bağlanma ve işleme konusunda kolay ve güçlü bir ortam sunmaktadır. Yalnız verilerin işlenmesi konusu tek bir Entity üzerinden yapıldığından aynı anda iki veri kümesinin işlenmesi durumu Lightswitch ile karışık bir durum oluşturmaktadır.

 

Verilerin görüntülenmesi aşamasında bir sorun veya karışıklık yaşanmaması ile birlikte bu verilerin işlenmesi Lightswitch tarafından tek tek ele alınmaktadır. PreProcess Query kullanımı ilk akla gelen yöntemler arasında olabilir fakat PreProcess Query Entity içinde bulunan kayıtları filtrelemek için kullanılan bir yöntemdir.

 

Aynı anda birden fazla Entity ile çalışabilmek için Lightswitch ve WCF RIA Service kardeşliğinden yararlanmamız doğru bir çözüm olarak görünmektedir. Hali hazırda Lightswitch WCF RIA Services için bizlere destek sunacağından yapılacak işlemler bizim tarafımızdan çok basit bir şekilde halledilebilecektir.

 

İlk önce yeni bir Lightswitch projesi oluşturalım ve PersonelBilgileri ismini verelim.

 

 

image001

 

 

Projemizde iki adet tablo oluşturarak bu tablolar içerisinde Personel ve Dış Personel bilgilerinin tutulmasını sağlayacağız.

 

 

 

 

Personel_Bilgileri isimli tablomuz aşağıdaki gibi olacaktır.

 

 

 

 

Dis_Personel_Bilgileri isimli tablomuz da aşağıdaki gibi alanlara sahip olacaktır.

 

 

 

 

Entity bilgilerimizi oluşturduktan sonra Lightswitch içerisinde mevcut entitylerimiz için birer ekran tasarlayarak (Editable Grid Screen) veri giriş işlemlerimizi yapabiliriz.

 

Ekran tasarlama işlemlerini Solution Explorer penceresinde bulunana Screens bölümünden yapabileceğimizi hatırlatmak isterim.

 

Personel Bilgileri verileri aşağıdaki gibi oluşturulmuştur.

 

 

 

 

Dış Personel Bilgileri verileri ise aşağıdaki gibi oluşturulmuştur.

 

 

 

 

Visual Studio Lightswitch içerisinde mevcut iki Entity verilerini aynı ekran üzerinde göstermek gibi bir durum söz konusu olmamaktadır. Bunun nedeni ise Lightswitch’in ekranlar üzerinde – özellikle bir tablo ilişkisi olmaması durumunda – tek bir Entity ile çalışabilmesidir.

 

Bu tarz bir sorunun çözüm yolu olarak WCF RIA Services kullanımı uygun bir durum olabilmektedir.

 

WCF RIA Service

 

Şimdi WCF RIA Servicisimizi oluşturarak nasıl Lightswitch ile entegre edeceğimize bakalım.

 

Visual Studio üzerinden Lightswitch projemize yeni bir Class Library projesi ekliyoruz.

 

 

 

 

 

 

Projemiz içerisinde Visual Studio tarafından oluşturulmuş olan Class1.cs dosyasının sildikten sonra projemize bir adet Domain Service Class eklememiz gerekmektedir.

 

 

 

 

 

 

 

 

Yeni bir Domain Service Class’ın projemize eklenmesi ile birlikte karşımıza Add New Domain Service Class ekranı açılacaktır. Açılan ekran üzerinde Enable client access işaretinin kaldırılması gerekmektedir.

 

 

 

 

Pencere onaylandıktan sonra projemize eklenen Domain Service Class ile birlikte referans olarak yeni kütüphanelerin de eklenmesi sağlanacaktır. Ayrıca Domain Service Class kod bilgiside projemize eklenerek hazır olarak karşımıza çıkacaktır.

 

Servis işlemlerinin yapılabilmesi, Lightswitch içerisinde oluşturduğumuz Entity bilgilerine ulaşabilmek için ek olarak projemize yeni referans bilgileri eklememiz gerekmektedir. (Var olanların eklenmesine gerek yoktur.)

 

Bunlar;

·         System.Runtime.Serialization

·         System.ServiceModel.DomainServices.Server

·         System.Web

·         System.Data.Entity

·         System.ComponentModel.DataAnnotations

·         System.Configuration

 

 

 

 

Microsoft Lightswitch projesi içersinde oluşturduğumuz Entity’lerin WCF RIA Servis üzerinden kullanılabilmesi için servis projemize Lightswitch projemizin bilgilerinin referans olarak gösterilmesi gerekmektedir.

 

Bu işlemi yapabilmek için projemize varolan Lightswitch ApplicationData isimli sınıf bilgisini eklememiz gerekmektedir. Bu sınıf dosyası projemiz içerisinde bulunan ServerGenerated klasörünün altında bulunan GeneratedArtifacts klasörü içinde bulunmaktadır. Yalnız dosya bilgisini WCF RIA Servis projemize eklerken farklı bir yöntem ile bağlı dosya olarak sisteme eklememiz gerekmektedir.

 

 

 

 

 

 

 

 

Artık servis sınıfımızı geliştirebiliriz. Servisimizi geliştirirken sınıfı içerisine Lightswitch projemizden bağlı olarak projemize eklediğimiz sınıf ile birlikte iki adet daha referans bilgisinin eklenmesi gerekmektedir.

 

Bunlar;

 

 

 

 

Servisimizi geliştirirken tüm personel bilgilerinin ortak bir sınıf içinde toplanıp servisimizden Lightswitch projesine göndermemiz gerekecektir. Bunun için ortak olarak kullanılacak olan bir sınıf tanımını servisimize eklememiz gerekmektedir.

 

 

 

 

Lightswitch entityleri üzerinden alacağımız bilgileri tanımladığımız sınıf bilgisi şekline dönüştürerek istediğimiz entity’leri birleştirme imkanına sahip olacağız. Tabiki burada yaşanacak olan en büyük problem Lightswitch projesinin bağlandığı ve veri işlemleri yaptığı veritabanı bilgisinin (ConnectionString) WCF RIA Servis tarafından da kullanılabilmesidir. Servis projesi içerisinde oluşturulacak static bir bağlantı cümlesi mevcut işlemlerimi çözebilecek bir yapıya sahip olmayabilir. Bunun için Lightswitch projemiz içerisinde bulunan ConnectionString verisini aldıktan sonra servis projemizin bu ConnectionString üzerinden çalışmasını sağlayabiliriz. Bu bizlere dinamik bir yapı sağlamış olacaktır.

 

Şimdi Lighswitch projemiz üzerinden ConnectionString bilgisini alarak RIA Servis projemizin bu bilgiyi kullanmasını sağlayalım.

 

 

 

 

Şimdi verileri RIA Service üzerinden Lightswitch’e göndermek için bir SELECT fonksiyonu hazırlamamız gerekmektedir. Bu fonksiyon sayesinde Lightswitch’in verileri alması ve yeni oluşturacağımız bir ekran üzerinden gösterilmesi sağlanacaktır.

 

 

 

 

_qPersonelBilgisi Linq sorgusu için PersonelID alanının negatif bir değer olmasını sağladık. Amacımız TumPersonelBilgileri sınıfından oluşacak bir IQueryable tiipinde bir sonuç içerisinde Key olarak belirlenen değerlerin tekil olarak gelmesini sağlamaktır.

 

Sorgu sonucumuzun Microsoft Lightswitch projemize IQueryable olarak gönderilmesi Lightswitch üzerinden bu verilerin sorgulanabilir ve filtrelenebilir bir şekilde kullanılması için gerekli olacaktır.

 

Lightswitch içerisinde bulunan ekranlarda sayfalama yapabilmek için Count metodunun override edilmesini sağlıyoruz.

 

 

 

 

Bu işlemleri tamamladıktan sonra projemizi Build ederek Lightswitch üzerinden gelen verilerin kontrolüne bakabiliriz. Visual Studio Lightswitch projemizden WCF RIA Service bilgilerine ulaşabilmek için servisimizi Lightswitch projesine Data Source olarak eklemeliyiz. Bu işlemleri için Properties penceresinde bulunan Data Source bölümünü kullanabiliriz.

 

 

 

 

Açılan pencereden Data Source tipimizi WCF RIA Service olarak belirliyoruz.

 

 

 

 

Açılan pencerede Add Reference butonu ile WCF RIA Servis kütüphanemizi referans olarak belirtiyoruz.

 

 

 

 

Add Reference penceresinden bulunan Projects tabında WCF RIA Service projemizi bularak pencereyi onaylıyoruz.

 

 

 

 

Böylelikle Attach Data Source Wizard ekranında servis bilgimiz eklenmiş olacaktır.

 

 

 

 

Next ile pencereyi onayladığımız zaman servis referansı üzerinden gelen Entity bilgilerine ve bu Entity’e ait alanlara ulaşabilmekteyiz. Bu pencere üzerinde TumPersonelBilgileri entity bilgisini seçmek ve eğer istersek Data Source Name alanında veri kaynağı adını belirtmemiz yeterli olacaktır.

 

 

 

 

 

 

Tüm işlemlerimizi bitirdikten sonra Lightswitch projemiz içerisinde servis tarafından bize gönderilen TumPersonelBilgileri isimli bir entity bilgisine ulaşmış oluruz. Şimdi bu entity’i kullanarak bir ekran yaratıp (Editable Grid Screen) verilerin durumlarını kontrol edebiliriz. Yeni bir ekran oluşturduktan sonra projemizi çalıştırdığımız da WCR RIA Service üzerinden gelen bilgilere ulaşabildiğimizi görüyoruz.

 

 

 

 

Burada dikkat edilmesi gereken konu bu verilerin sadece SELECT sorgusu sonucu gelen veriler olmasıdır. Ekranda görünen verilerin hiçbir şekilde güncellenmesi veya silinmesi söz konusu değildir.

 

Şimdi verilerin nasıl güncellenebileceği konusuna bakmamız iyi olacaktır.

 

Güncelleme işleminin de WCF RIA Service ile yapılmasını sağlamak için servisimize güncelleme ile ilgili metodun yazılması gerekecektir. Bunun için servisimize geri dönelim ve Update metodumuzu tasarlayalım.Güncelleme işleminde en çok dikkat edilecek konu negatif olarak servis tarafından gönderdiğimiz ID bilgilerinin Update metodu tarafında kullanılacak olmasıdır. ID bilgisinin negatif veya pozitif olma durumuna göre hangi tablo üzerinde bir güncelleme yapmamız gerektiğini bularak işlemlerimizi ona göre yapacağız.

 

 

 

 

Metodumuzu servisimize ekledikten sonra servisimizi Build etmemiz gerekmektedir. Ardından Lightswitch projemize dönerek Data Sources bölümünde en son eklediğimiz WCF Servis referansımızı güncellememiz gerekmektedir. Bunun için Data Sources bölümünde bulunan servis bilgisine sağ tuşla tıkladıktan sonra Update dememiz yeterli olacaktır.

 

 

 

 

Ardından Lightswitch projemiz üzerinde oluşturduğumuz TumPersonel ismindeki ekranı silerek yeniden bir Editable Grid Screen oluşturmamız gerekmektedir. Projemizi yeniden çalıştırdığımızda artık kayıtlar üzerinde güncelleme işlemi yapabildiğimizi görebiliriz.

 

 

 

 

Microsoft Visual Studio Lightswitch genel olarak bir RAD aracı olarak yazılımcılar için büyük kolaylıklar sağlamıştır. Lightswitch’in WCF RIA destekli kullanımı ile geliştirdiğimiz uygulamaların yetenekleri ve kullanılabilirliklerini arttırabilmekteyiz.

 

Bir sonraki Visual Studio Lightswitch makalesinde görüşmek üzere…

 

Kaynak :

MSDN

Visual Studio Lightswitch Help Website

 

 

Exit mobile version