Yazılım

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.

 

 

image002

 

 

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

 

 

image003

 

 

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

 

 

image004

 

 

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.

 

 

image005

 

 

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

 

 

image006

 

 

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.

 

 

image007

 

 

image008

 

 

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.

 

 

image009

 

 

image010

 

 

image011

 

 

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.

 

 

image012

 

 

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

 

 

image013

 

 

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.

 

 

image014

 

 

image015

 

 

image016

 

 

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;

 

 

image017

 

 

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.

 

 

image018

 

 

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.

 

 

image019

 

 

Ş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.

 

 

image020

 

 

_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.

 

 

image021

 

 

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.

 

 

image022

 

 

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

 

 

image023

 

 

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

 

 

image024

 

 

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

 

 

image025

 

 

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

 

 

image026

 

 

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.

 

 

image027

 

 

image028

 

 

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.

 

 

image029

 

 

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.

 

 

image030

 

 

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.

 

 

image031

 

 

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.

 

 

image032

 

 

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

 

 

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu