İlkay İlknur

just a developer...

Ilk WCF RIA Services Uygulaması

Merhaba Arkadaşlar,

Bu yazımızda WCF RIA Services'ı kullanan ilk uygulamamızı yaratıyor olacağız. Yazı içerisinde temel olarak bir WCF RIA Services uygulaması nasıl yaratılabilir, hangi farklı seçenekler kullanılabilir konusunu incelerken bir de kısaca kod tarafına geçerek WCF RIA Services uygulamalarında istemci tarafında bulunan Silverlight uygulamasından server tarafında bulunan uygulamada bulunan metotlara erişim nasıl sağlanıyor, hangi bileşenlere ihtiyaç duyuluyor konusunu da inceleyerek yazımızı sonlandıracağız.

İlk WCF RIA Services Uygulaması

WCF RIA Services'ı kullanmak için öncelikle File -> New Project diyerek bir Silverlight projesi (Silverlight Application) yaratmamız gerekmekte. Bu ekranı OK diyerek geçtikten sonra oldukça tanıdık olan bir pencere ile karşılaşıyoruz. Bu pencere daha önceden de bildiğimizi üzere Silverlight uygulamasını test etmek üzere Solution içerisine bir ASP.NET web sitesi koymak isteyip istemediğimizi soran bir pencere. Ancak bu pencerenin en altına baktığımızda bu sefer farklı bir seçenek ile karşılaşmaktayız.

 

Eğer Silverlight projemiz içerisinde WCF RIA Services'ı kullanmak istiyorsak bu seçeneği seçmemiz gerekmekiyor. Peki bu seçeneği seçtikten sonra Silverlight projesinde ne gibi bir değişiklik gerçekleşmekte ?? Aslında yapılan sadece belirli assemblylerin Silverlight projesine referans edilmesi.

Bu assemblyler ise şunlar,

  • System.ComponentModel.DataAnnotations
  • System.Runtime.Serialization
  • System.ServiceModel
  • System.ServiceModel.DomainServices.Client
  • System.ServiceModel.DomainServices.Client.Web
  • System.ServiceModel.Web.Extensions

Daha sonra yukarıdaki ekranı da OK'e basarak geçtikten sonra alıştığımız üzere WCF RIA Services'ı kullanmaya hazır olan Silverlight uygulamasını yaratmış durumdayız. Artık bu noktadan sonra yapmamız gereken projeye gerekli bileşenleri ekleyerek uygulama geliştirmeye geçmek. Ancak bu safhaya geçmeden önce yaptığımız bu işlemlerin hepsini otomatik olarak yapmış olan ayrıca da belirli bir takım özellikleri de içerisinde barındıran bir proje şablonu olduğunu söylesem ne dersiniz ? Smile Öyleyse zaman kaybetmeden bir göz atalım.

Silverlight Business Applications

File -> New Project dediğimiz zaman Silverlight tabını seçtikten sonra proje tipleri arasında bir de "Silverlight Business Applications" bulunmakta. Bu seçeneği seçerek projeyi yarattığımızda karşımıza çeşitli servisleri daha önceden yaratılmış, pek çok farklı konuda (login,logout vs..) hazır yapılar içeren ve belirli bir görsel teması olan bir Silverlight Navigation uygulaması ile karşılaşmaktayız. İsterseniz de bu uygulama şablonu üzerinden gereken değişiklikleri yapmak suretiyle de Silverlight uygulamanızı geliştirebilirsiniz. Ancak biz sıfırdan temiz bir Silverlight uygulaması yaratarak uygulamalarımızı geliştiriyor olacağız.

 

Silverlight Projelerine WCF RIA Services Linkleme

Belki yazıyı bu noktaya kadar okuyup sıkılanlar olabilir basit noktalar üzerinden geçtiğim için ancak konuya tam olarak hakim olunması için bu detaylarında bilinmesi gerektiğini düşünmekteyim. Kod tarafına geçmeden önce son olarak değinmek istediğim nokta da sunucu ve istemci tarafındaki uygulamaların bağlanması. İlk yazımızda da bahsettiğim gibi aslında WCF RIA Services, sunucu taraftaki uygulama ile istemci tarafındaki Silverlight uygulamasını bağlayan bir yapı. Bu nedenle istemci tarafındaki uygulama ile bağlanacak olan WCF RIA Service'ı kolay bir şekilde bağlayabiliriz. Bu bağlama işlemi zaten proje içerisinde yaratılma sırasında yapılmakta ve bu işlemin sonucunda yazının ilerleyen kısımlarında bahsedeceğim üzere çeşitli code-generation işlemleri gerçekleştirilmekte. Ancak yine de bazı durumlarda bu linki değiştirmemiz gerekebilir. Bu işlemi ise şu şekilde yapmaktayız.

Öncelikle Silverlight projesine sağ tıklayarak properties seçeneğini seçerek Silverlight projesinin özelliklerini görüntülüyoruz. Daha sonra ekranın en altında WCF RIA Services Link adında bir başlık bulunmakta. Bu başlık içerisinde bulunan combobox vasıtasıyla solution içerisinde bulunan farklı WCF RIA Service'ları Silverlight uygulamasına bağlayabilme imkanına sahibiz.

 

WCF RIA Services Projesinin Bileşenlerini Yaratalım

Evet artık bu noktadan sonra kod kısmına geçiyoruz ve uçuşa geçiyoruz. Wink Yazımızın başında da bahsettiğimiz gibi temiz bir silverlight projesi yarattık ve gelen pencereden "Enable WCF RIA Services" seçeneğini seçtik ve Silverlight projemizi de WCF RIA Service'ı kullanabilecek duruma getirdik. 

Şimdi öncelikle olarak Data Modelimizi tanımlayacağız. Yani projemiz içerisinde bulunacak olan veri erişim katmanını oluşturacağız. İlk yazıda da bahsettiğim gibi bu katmanı oluşturmak için aslında pek çok farklı alternatifimiz bulunmakta. Yani LINQ to SQL ya da Entity Framework kullanabildiğimiz gibi NHibernate'te kullanabiliriz. Ancak biz örneklerimizde Entity Framework'ü kullanarak ilerleyeceğiz. Genelde örnekleri yaparken örnek olması amacıyla Northwind veritabanını kullanıyor olacağız. Eğer sizde bu veritabanı bulunmuyorsa Microsoft üzerinden indirebilirsiniz.

Data Modelimizi yaratmak üzere sunucu projemiz üzerinde sağ tıklayarak "Add New Item" diyoruz ve "ADO.NET Entity Data Model" 'i  seçerek data modelimize de NorthwindModel adını vererek OK'e basıyoruz. Daha sonra ise bir wizard ile karşılaşmaktayız. Buradan da modelimizi bir veritabanından oluşturacağımızı belirten "Generate from database" 'i seçerek ve Next diyerek bir sonraki ekrana geçiyoruz.

Karşımıza gelen yeni ekran üzerinden de veritabanı bağlantımızı seçerek Next'e basıyoruz.

 

Daha sonra ise son olarak karşımıza seçtiğimiz veritabanı üzerinde bulunan tablo,view ve stored procedurelerin listelendiği bir ekran ile karşılaşıyoruz. Bu ekran üzerinden şu anda başlangıç olması amacıyla Products ve Categories tablolarını seçiyoruz. Ayrıca model içerisinde objectlerin isimlendirilmesinde tekilleştirme-çoğullaştırmanın kuralının uygulanması için "Pluralize or Singularize generated object names" seçeneğini de seçerek Finish butonuna tıklıyoruz ve veri modelimizi yaratıyoruz.

 

Veri Modelimizi de sunucu tarafında yarattıktan sonra şimdi bu yarattığımız modeli istemci tarafındaki Silverlight uygulamasına sunacak olan servisi yaratmamız gerekmekte. Bunun için de yine sunucu uygulamamıza "Domain Service Class" ekliyoruz. Ekleyeceğimiz Domain Service Class sayesinde sunucu tarafında bulunan entityleri ve çeşitli operasyonlar istemci uygulaması tarafından erişilebilir durumda olacak.

Sunucu projesine Domain Service Class'ı ekledikten sonra ise bazı seçimleri yapmak üzere bir ekran ile karşılaşıyoruz.

  

Bu ekran içerisinde öncelikle istemci tarafındaki uygulamanın kullanması için hangi entityleri dışarı sunmamız gerektiğiniz seçmemiz gerekiyor. Eğer bu entityler üzerinden herhangi bir değişiklik yapılacaksa de "Enable Editing" seçeneğinin seçili olması gerekmekte. Ayrıca "Enable Client Access" seçeneğinin de entitylerin istemci tarafındaki uygulama tarafından erişilebilir olması için seçili olması gerekmekte. Son olarakta en altta bazı metadata değişiklikleri yapmak üzere ilgili sınıfların yaratılmasını isteyip istemedğimiz sorulmakta. Bu seçeneği de seçerek ileride metadata'yı kullanacağımız durumlar için hazırlıklı hale geliyoruz ve OK'e basarak servisi oluşturuyoruz.

Şu ana kadar yaptıklarımızı özetlersek ilk olarak web uygulaması tarafında veri erişimini sağlayacak veri katmanını ADO.NET Entity Framework kullanarak yarattık ve daha sonra gerek yarattığımız entityleri gerekse sunucu tarafında bulunan çeşitli işlemleri Silverlight uygulamasına sunacak olan Domain Service Class'ı yarattık.

Şu anda uygulamamız artık geliştirmeye hazır duruma geldi. Bir sonraki yazımızda artık basit CRUD işlemlerini gerçekleştirecek bir uygulama geliştirerek iyice WCF RIA Services dünyasına dalacağız.

Görüşmek Üzere,



Yorum Gönder