Post Page Advertisement [Top]

Silverlight aynı Flash, JavaScript gibi sunucu(server) da değil, istemci(client)’ın makinasında çalışır. Bu yüzden sunucudan bir şeyler almak istediğimizde, örneğin veri tabanı işlemleri gibi, direk silverlight içinden erişemeyiz.Çünkü veritabanı sunucuda bulunmakta ve çalışmaktadır. Bunun için sunucuda hizmet verecek web service denilen hizmet sınıfları yazarak, silverlight dan sunucu hizmetlerinden yararlanmasını sağlarız. Silverlight’dan sunucu hizmetlerine bağlanarak sunucuya istek gönderebiliriz.
Asp.NET Tarafı
Veritabanı Silverlight projemizin gösteriminin yapıldığı Asp.Net proje tarafında yer alacak ve veritabanındaki verilere erişmek için Linq to SQL kullanacağız. Daha sonra Linq to SQL yardımı ile yine Asp.Net proje tarafına veritabanındaki bu verileri sunacak bir web servis oluşturacağız. 

Silverlight Tarafı
Web servisinden verileri de Silverlight tarafında ServisReference olarak alacağız. Daha sonra da bu verileri uygulamamıza bağlayacağız.

Bunun için ilk olarak:
Silverlight Projemiz içerisindeki Asp.Net tarafına sağ tıklayarak Add > New Item diyerek aşağıdaki ekrandan LINQ to SQL Class'ı ekleyelim.

daha sonra bu katmanı da ekledikten sonra Server Explorer içerisinden veritabanımızdaki tabloyu tutup DataClasses1.dbml içerisine sürükleyip bırakalım.
Tek dikkat etmemiz gerekecek olan şey WCF tarafından sorunsuzca erişebilmek için burada DataClasses1 içerisindeki tıklayıp Properties içerisinde Serialization Mode özelliğini "Unidirectional" yapmalıyız.

Bu işlem sayesinde veritabanımızdaki verilere wcf tarafında Linq Sorguları ile rahatlıkla erişebileceğiz.
silverlight projesindeki SQL database'e sorgu yollayıp verileri almak için kullanacanağımız WCF katmanıdır. Bu servis sayesinde veritabanındaki verilere ulaşabileceğiz.
Ardından yine projemizin Asp.net tarafına sağ tıklayarak Add > New Item dedikten sonra aşağıdaki pencereden WCF Service'i seçelim.

Bu seçimi yaptıktan sonra Asp.Net tarafına IService1.cs , Service1.svc ve alınta Service1.svc.cs isimli dosyaların eklendiğini göreceğiz. Buradan Service1.svc.cs'yi LINQ sorgularımızı yazmak için kullanacağız IService1.cs içerisinde de kontratı OperationContract ekleyip hazırladığımız prosedürümüzü erişime sunacağız.

WCF tarafında kodlar aşağıdaki gibi olacaktır

IService1.cs 
[ServiceContract]
public interface IService1
{
   [OperationContract]
    List<Markalar> MarkalariGetir();

}

Service1.svc.cs 
public class Service1 : IService1
{
    DataClasses1DataContext veri = new DataClasses1DataContext();

public List<Markalar> MarkalariGetir()
        {
            var markalistesi = from marka in veri.Markalars
                                 select marka;

        }

          List<Markalar> tummarkalistesi = markalistesi.ToList<Markalar>();
            List<Markalar> gecerlimarkalistesi = new List<Markalar>();
            foreach (Markalar markax in tummarkalistesi)
            {
                System.DateTime date3 = DateTime.Now;
                System.TimeSpan diff3 = markax.MarkaKamapanya_BitisTarihi.Value.Subtract(date3);

                if (diff3.Days>0)
                {
                    gecerlimarkalistesi.Add(markax);
                }
            }
           
            //return markalistesi.ToList<Markalar>();
            return gecerlimarkalistesi;
           
        }
 }

Yukarıda DataClasses1DataContext ile LINQ to SQL'e eriştik ve LINQ sorgusu ile geçerli markalar listesini çekmiş olduk.
WCF katmanına erişmek için kullanacanağımız Service Reference kısmı.

Service Reference projemizin Asp.Net Tarafında hazırlamış olduğumuz WCF'e Silverlight tarafından erişmek için kullanılır. Projemizin Silverlight tarafına sağ tıklayıp, Add Service Referance dedikten sonra karşımıza aşağıdaki pencere gelecek ve buradan Discover dedikten sonra projemiz içerisindeki WCF'i otomatik olarak kendisi bulacaktır.
Bu servis eklendikten sonra Silverlight uygulamamızın Client tarafından veritabanındaki verilere erişmesini sağlamış olduk.

Hiç yorum yok:

Yorum Gönder

Bottom Ad [Post Page]