Forum Sevdam
Nickiniz
Şifreniz
Sponsor Linkler




Hediyeler    Anasayfa    Gruplar    Etiketler    Blog    Yardım    İletişim
Forumdan En İyi Şekilde Faydalanmak İçin KAYIT Olmanız Gerekmektedir.    

Geri git   Forum Sevdam > Bilgisayar ve İnternet > Programlama ve Web Tasarım > Silverlight, Expression, LinQ, Ajax, JavaScript

Bu Bölümlerimizi İncelediniz mi ?:
Şimdi ÜCRETSİZ Üye Ol!
Forumumuza kaydınız bulunmamaktadır. Hızlı ve Ücretsiz olarak forumumuza aşağıdaki formu doldurarak üye olabilirsiniz.

Üye adı: Şifre: Şifre Onay: E-posta: E-posta Onay:
Doğum Gününüz:     Cinsiyet:    
Grafik Doğrulaması
  Forum kuralları kabul ediyorum. 


Silverlight 2.0 ve JSON Serialize / DeSerialize İşlemleri

Silverlight, Expression, LinQ, Ajax, JavaScript


Cevapla
 
LinkBack Seçenekler Stil
Alt 26-05-2008, 01:40   #1
Hayat İşte...

11 Oca 2008
Dünyadan
:
Yaş: 24
Ruh hali:
Ettiği Teşekkür: 1,244
417 Mesajına 625 Kere Teşekkür Edlidi
Tepki Sayısı: 3
23 Mesajına 26 Kere Tepki Gösterildi
 
Tecrübe Puanı: 10000
XiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond reputeXiLoNeN has a reputation beyond repute
XiLoNeN - MSN üzeri Mesaj gönder
 XiLoNeN isimli Üye şimdilik offline konumundadırOffline  



Standart Silverlight 2.0 ve JSON Serialize / DeSerialize İşlemleri


Günümüzde çoğu AJAX uygulamasında veri transferi için JSON formatı kullanılıyor. ASP.NET programcılığı tarafında biz farkında olmasak da PageMethod'lar, Web Servisleri veya WCF Servisleri sunucudan JavaScript istemciye asenkron (AJAX) veri taşırken JSON ile çalışıyor. ASP.NET dışındaki dünyaya da baktığımızda tabi ki bu kural geçerliliğini koruyor, örneğin bugün twitter.com kendi uygulamalarından dışarıya asenkron veri aktarırken JSON formatını kullanıyor. Peki Silverlight 2.0 ile salt AJAX mantığından kurtularak artık Web Servislerimizi veya WCF servislerimizi doğrudan asenkron olarak kullanabildiğimize göre karşımıza eski JSON kaynakları gelirse ne yapacağız?
.NET nesnelerinden JSON oluşturmak.
Hikayenin tersinden başlayalım ve ilk olarak istemci tarafında JSON verisi nasıl yaratırız onu inceleyelim. Zaten genelde harici bir web servisinden JSON verisi alacaksanız büyük ihtimal ile elinizdeki hazır bir JSON verisini de web servisine göndermek durumunda kalacaksınız. Bu gibi bir durumda rahatlıkla elimizdeki .NET nesnelerini JSON formatına çevirebiliyor olmalıyız.
Silverlight 2.0 Beta 1 ile beraber gelen sınıflardan system.runtime.serialization.json.datacontractjson serializer sınıfını kullanacağız. Bu sınıfı normal şartlarda kullanmak isterseniz herhangi bir Silverlight uygulamasında Intellisense ile bulma şansınız olmayacaktır. Söz konusu sınıf harici olarak System.ServiceModel.Web.dll dosyası içerisinde kendisini projemize referans olarak almamızı bekliyor. Gerekli referansı projeye ekledikten sonra rahatlıkla JSON işlemlerini tamamen istemci tarafında yürütebiliyoruz.
Uygulamamızda bir öğrencinin adını ve soyadını taşıyacak bir Ogrenci sınıfı kullanacağız. JSON ile çeviri işlemleri yaparken elimizdeki çevireceğimiz nesnenin tipinin belirli şekilde tanımlanmış olması gerekiyor. O nedenle hemen aşağıdaki kod ile tipimizi tanımlayalım.
HTML-Kodu:
Public Class Ogrenci
  
     Private Padi As String
     Public Property Adi() As String
         Get
             Return Padi
         End Get
         Set(ByVal value As String)
             Padi = value
         End Set
     End Property
  
  
     Private PSoyadi As String
     Public Property Soyadi() As String
         Get
             Return PSoyadi
         End Get
         Set(ByVal value As String)
             PSoyadi = value
         End Set
     End Property
  
     Sub New()
  
     End Sub
  
     Sub New(ByVal adi As String, ByVal soyadi As String)
         Me.Adi = adi
         Me.Soyadi = soyadi
     End Sub
 End Class
Bu basit işlemi tamamladıktan sonra uygulamamıza üç adet metin kutusu ve iki de düğme yerleştirelim. Bu metin kutularından ikisi öğrencinin adının ve soyadının gözükeceği yer, diğeri ise yarattığımız JSON verisinin yazdırılacağı konum olacak. Düğmelerimizi de işlemleri yapmak için kullanacağız.
HTML-Kodu:
<UserControl x:Class="JSON.Page"
     xmlns="http://schemas.microsoft.com/client/2007" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Width="400" Height="300">
     <Grid x:Name="LayoutRoot" Background="White">
       <TextBox Height="31" HorizontalAlignment="Left" Margin="22,19,0,0" VerticalAlignment="Top" Width="151" Text="Adı" x:Name="Adi1"/>
       <TextBox Height="26" HorizontalAlignment="Left" Margin="22,54,0,0" VerticalAlignment="Top" Width="151" Text="Soyadı" x:Name="Soyadi1"/>
       <TextBox Margin="22,142,23,19" Text="TextBox" x:Name="Sonuc"/>
       <Button Height="29" HorizontalAlignment="Right" Margin="0,99,97,0" x:Name="Dugme2" VerticalAlignment="Top" Width="102" Content="JSON'dan Al"/>
       <Button Height="29" HorizontalAlignment="Left" Margin="45,99,0,0" x:Name="Dugme1" VerticalAlignment="Top" Width="102" Content="JSON Yarat"/>
     </Grid>
 </UserControl>
İlk olarak Dugme1 nesnesinin arkasına gerekli kodları yazarak metin kutuları içerisinden öğrencinin adını ve soyadını alıp bir öğrenci nesnesi yaratalım. Sonrasında da bu nesneyi JSON verisine çevirerek Sonuc adındaki metin kutusuna yazdıralım.
HTML-Kodu:
Dim Cevirici As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Ogrenci))
 Dim Veri As New IO.MemoryStream
 Cevirici.WriteObject(Veri, New Ogrenci(Adi1.Text, Soyadi1.Text))
 Sonuc.Text = Text.Encoding.UTF8.GetString(Veri.ToArray, 0, Veri.Length)
Cevirici adını verdiğim nesne bir DataContractJsonSerializer nesnesi. Bu nesnenin WriteObject metodunu kullanarak elimizdeki uygun bir .NET nesnesini JSON formatına çevirebiliyoruz. WriteObject metodu toplamda iki parametre alıyor; bunlardan ilki çeviri işlemi esnasında oluşan JSON verisinin yazdırılacağı Stream nesnesi, diğeri ise çevrilecek olan nesnenin ta kendisi. Ben bu örnekte bir MemoryStream kullandım. Son olarak eldeki Stream'i de bir metne çevirerek Sonuc adındaki metin kutusu içerisine yazdırıyoruz.
Böylece uygulamamızda dinamik olarak JSON yaratma sorununu çözmüş olduk. Tamamen istemci tarafında rahatlıkla yarattığımız .NET nesnelerini JSON formatına çevirebiliyoruz. Şimdi de tam tersi bir senaryoya göz atalım.
JSON verisinden .NET nesneleri yaratmak
Bir önceki bölümde kullandığımız örneği aynen kullanmaya devam edelim. Bu sefer de tam tersi bir işlem yaparak Sonuc adındaki metin kutusu içerisine yazılan JSON verisini okuyarak içerisinde öğrencinin adını ve soyadını alıp diğer metin kutularının içerisine yerleştirelim.
HTML-Kodu:
Dim Cevirici As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Ogrenci))
 Dim Veri As New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(Sonuc.Text))
 Dim GenelOgrenci = CType(Cevirici.ReadObject(Veri), Ogrenci)
 Adi1.Text = GenelOgrenci.Adi
 Soyadi1.Text = GenelOgrenci.Soyadi
Her zamanki gibi ilk olarak Cevirici nesnemizi Ogrenci tipinden yaratıyoruz. Bu sefer DataContractJsonSerializer sınıfının ReadObject metodunu kullanacağız. ReadObject metodu okuyacağı veriyi bir Stream olarak istediği için Sonuc adındaki metin kutusu içerisindeki metinden ilk önce bir Byte dizisi sonra da bu diziden bir MemoryStream yaratıyoruz. Aldığımız MemoryStream'i Cevirici nesnemizin ReadObject metoduna verdiğimizde söz konusu metod bize bir Object döndürüyor. Doğal olarak JSON verisi içerisindeki nesnenin hangi .NET nesnesine denk geldiğini bilme şansı yok. O nedenle biz elle casting yaparak aldığımız Object tipindeki değişkeni Ogrenci tipine değiştiriyor ve gerekli verileri alarak diğer metin kutularının içerisine yerleştiriyoruz.
Her iki uygulamayı da bir örnek projede yaptığımızda ilk önce metin kutularına veri girerek JSON verisini yaratabiliyor sonrasında da JSON verisini Sonuc metin kutusunda elle değiştirip tekrar diğer metin kutularına güncel değerlerin aktarılabilmesi için DeSerialize işleminin yapılmasını sağlayabiliyoruz.
Uygulamamızın tam kodu aşağıdaki şekilde sonlanıyor.
HTML-Kodu:
Partial Public Class Page
     Inherits UserControl
  
     Public Sub New()
         InitializeComponent()
     End Sub
  
     Public Class Ogrenci
  
         Private Padi As String
         Public Property Adi() As String
             Get
                 Return Padi
             End Get
             Set(ByVal value As String)
                 Padi = value
             End Set
         End Property
  
  
         Private PSoyadi As String
         Public Property Soyadi() As String
             Get
                 Return PSoyadi
             End Get
             Set(ByVal value As String)
                 PSoyadi = value
             End Set
         End Property
  
         Sub New()
  
         End Sub
  
         Sub New(ByVal adi As String, ByVal soyadi As String)
             Me.Adi = adi
             Me.Soyadi = soyadi
         End Sub
     End Class
  
     Private Sub Dugme1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Dugme1.Click
         Dim Cevirici As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Ogrenci))
         Dim Veri As New IO.MemoryStream
         Cevirici.WriteObject(Veri, New Ogrenci(Adi1.Text, Soyadi1.Text))
         Sonuc.Text = Text.Encoding.UTF8.GetString(Veri.ToArray, 0, Veri.Length)
     End Sub
  
     Private Sub Dugme2_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Dugme2.Click
         Dim Cevirici As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Ogrenci))
         Dim Veri As New IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(Sonuc.Text))
         Dim GenelOgrenci = CType(Cevirici.ReadObject(Veri), Ogrenci)
         Adi1.Text = GenelOgrenci.Adi
         Soyadi1.Text = GenelOgrenci.Soyadi
     End Sub

  End Class
Hepinize kolay gelsin.



Kaynak: [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
İmzamDisplay Signature
Digg this Post!Add Post to del.icio.usFurl this Post!Facebookta paylaş!!Google'da PaylaşYahoo'da PaylaşLive'da Paylaş!
Alıntı ile Cevapla

Cevapla

Bookmarks

Etiketler
işlem, json, json deserialize, json serialize, silverlight, silverlight 2.0


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık
Hizli Erisim

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Silverlight 1.0 Font Embedding XiLoNeN Silverlight, Expression, LinQ, Ajax, JavaScript 0 26-05-2008 15:18
Silverlight MediaElement ve JavaScript XiLoNeN Silverlight, Expression, LinQ, Ajax, JavaScript 0 26-05-2008 14:53
Silverlight Uygulamalarında Performans XiLoNeN Silverlight, Expression, LinQ, Ajax, JavaScript 0 26-05-2008 14:48
Silverlight Streaming Servisleri XiLoNeN Silverlight, Expression, LinQ, Ajax, JavaScript 0 26-05-2008 14:43
Silverlight 2.0 GridSplitter Kullanımı XiLoNeN Silverlight, Expression, LinQ, Ajax, JavaScript 0 26-05-2008 01:45


WEZ Format +3. Şuan Saat: 20:14.

Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.

Yahoo bot last visit powered by MyPagerank.Net Powered by  MyPagerank.Net Join 4Shared Now! Msn bot last visit powered by MyPagerank.Net cvZip.com - Bilişim Sektörünün Yeni Kariyer Platformu

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193