Silverlight 4 RIA Services ve Business Application -3 (Silverlight İstemci sinde Veri Göstermek)


Serinin devamı olarak bu yazımızda işin eğlenceli kısmına geldik  Verilerin gösterilmesinin ne kadar kolay olduğunu göreceğiz. Şimdi projemizdeki View klasörünün altındaki Home.xaml sayfasının code-behind kısmını açalım.


Şimdi bu kodların arasında </Grid> in hemen üzerine verileri göstereceğimiz datagrid eklemek için aşağıdaki kodu ekliyoruz.

<sdk:DataGrid AutoGenerateColumns="True" Height="134" Name="dataGrid1" Width="436" />

Bu kod eklendikten sonra şimdi  kod kısmına (Home.xmal.cs) geçelim



Bu kod kısmında Public Home metodunun altına aşağıdaki kodu ekleyelim.        
           
 var context = new DishViewDomainContext();
            this.dataGrid1.ItemsSource = context.Restaurants;
            context.Load(context.GetRestaurantsQuery());
Şimdi bu kod da ;

1.Satırda DishViewDomainContext oluşturuyoruz. Bu otomatik olarak Server da DishViewDomainService e bildirilir.

2.Satır da datagrid e bir tane Rastaurant özelliğine sahip olduğumuzu bildiriyoruz çünkü bize bir query metodu ile restaurant bilgileri geri dönecek. Dikkat edilmesi gereken şu anda serverda bizim verilerimiz yok sadece veri alacağımız özelliği bağladık.

3.Starıda görüldüğü üzere verileri yüklüyoruz. Verileri yüklerken kullanacağımız Metodu da belirtiyoruz. Yukarıdaki metod yerine GetRestaurantsWithRegionQuery de kullana biliriz.



Exposing SOAP, OData, and JSON Endpoints for RIA Services

Get Microsoft Silverlight

Silverlight 4 Tools for Visual Studio 2010 Launch

Get Microsoft Silverlight


Silverlight 4 RIA Services ve Business Application -2 (Entity Framework de dataların görüntülenmesi)


Serinin devamı olan bu yazımıza server side olan bir uygulamada verileri nasıl gösterileceğine değineceğiz.

Uygulamamıza çeşitli veri kaynaklarından  veriler gelebilir  SQL Database, Oracle DB, Sql Azure, Sharepoint, mainframe gibi, biz bu veri kaynaklarından birini seçebiliriz ve dataModel olarak da NHibernate, Linq2Sql, Entity Framework, Stored Proc den birini seçebiliriz.

Biz uygulamamızda veri kaynağı olarak SQL Database ve datamodel olarak da Entity Framework seçtik. Şimdi uygulamamızı yapmaya başlayalım.

Bir önceki yazımızda yaptığımız projeden devam edeceğiz projemizi açtık ve Business Application Web isimli projemizdeki App_Data klasörünün altına  DishView.mdf  ismi ile veri kaynağımızı atıyoruz. 




Silverlight 4 RIA Services ve Business Application

Silverlight 4 ile beraber RIA Service tamamlandı.Bende Silverlight da Businesss Application oluşturmak için kullanılacak araçları ve bu platformun zaman harcamaya değecek bir kaç özelliğini vurgulamayı düşündüm.Ben gereksiz şeylerden kaçındım sadece sorgulama (Querying), güncelleme (Updating), doğrulama (Validating) ve güvenlik (Securing) üzerinde durdum.

Bunun devamı olacak diğer yazıları takip etmek, uygulamaları kendinizde yapmak isterseniz gerekli olacak araçlar;

Silverlight 4 RIA Services ve Business Application -1 (Projeye Başlangıç)

Çok fazla kod ile sizi bogmak istemiyorum. İlk olarak Business Application Template de nasıl kullanılacağını  göreceğiz. Bu template harika görünüyor ve kolayca özelleştirile biliniyor.

Silverlight 4 ü kurduğunuzda içersinde RIA Service de eklemiş olarak geliyor. Kod geliştirmek için Visual Studio 2010 u açtığınızda yeni proje oluşturmaya geldiğinizde Silverlight sekmesine geldiğinizde Silverlight Business Application ı göreceksiniz.

Bu template seçildiğinde tek solution içinde iki proje oluşur. Ben solution ın ve projenin ismini BusinessApplication1 olarak bıraktım. Oluşan projelerden biri server tarafında çalışacak BusinessApplication1 isimli proje diğeri ise client tarafında çalışacak BusinessApplication1.Web isimli projedir.




Silverlight da COM Api kullanarak Metni Konuşmaya çevirme

Sanırım bu işe ilginiz varsa metini konuşmaya çevirme motoru (Text to Speech Engine) duymuşsunuzdur. Duyamadı isenizde şimdi duydunuz:) Bu bilgisayar dünyasında yeni bir şey değil. Bildiğim kadarı ile Windows 98 den itibaren var fakat Silverlight da bu tamamen yeni bir şey. Eğer Silverlight uygulamalarınız da bunu kullanmak isterseniz SAPI Engine Api sini çağırmanız gerekiyor. Bunu sadece COM Apilerini kulnararak başarabiliriz.


Şimdi COM Api kullanarak SAPI Engine i nasıl çağıracağımızı anlatacağım.

Gerekli Şeyler;
    1. Microsoft Visual Studio 2010
    2. Silverlight Tools for Visual Studio 2010
      Tabiki ilk olarak birr Silverlight projesi oluşturacağız sonra devam:)

      Out of Browser Settingsi Ayarlama;
      Bir şey yapmadan önce, bazı yapılandırma ayarları gerekli çünkü COM Api sadece Silverlight Out-Of-Browser uygulamada çalışır bunu için proje ayarlarında değişiklik yapmamız gerekir.
      • Silverlight projenize sağtıklayın sonra Ayarları açın (Properties) .



      Silverlight Hosting :) :) :)

      Bazı arkadaşlar akıl edip sordular ama bazıları hiç sormaya bile gerek duymadan insanları aptal sanıp alçakça ticari reklamlar yapan hosting firmalarına kanıp Silverlight projelerini yayınlamak için ektsradan para ödediler.

      Yok böyle bir hizmet  Silverlight tamamen JavaScript ve XAML 1.1 sürümünden sonra. Bunların hepsi Silverlight Plug-In sayesinde tamamen istemci tarafında çalışan teknolojiler. Hosting firmalarına bunun için ek bir  para ödemenize gerek yok zaten hosting firmaları bunu için ek bir şey yapmıyorlar. En basit free olan php hostinglerinde bile silverlight projelerinizi yayınlayabilirsiniz.. Elinizde hostinginiz varsa bunu değiştirmenize, yükseltmenize gerek yok.

      Lütfen bilmiyorsak da soralım hemen dolandırıcı zihniyetinde olup müşterilerini kandırmaya çalışan hosting firmalarına kanmayalım

      Silverlight Game (Sonsuz Tetris)

      Bu yazımızda yine silverlight öğrenme aşamasında yaptığım bir oyun olan tetris oyununu vereceğim. Oyunda mantık olarak çok basit bir mantık kullandım. Tetrisin taşlarının dönme hareketini vermek için bir matrix yapısı kullandım hertaşın (dönme özelliği olan) 4 tane case var ve her case bir matrix değere karşılık geliyor böylece taş hangi pozisyonda bunu bilebiliyoruz.
      Oyun sanırım çok zor oldu ben çok fazla skor yapamadım :) size kolay gelsin takıldığınız anlamadığınız bir yer olursa veya öneride bulunacağınız tüm yorumlarınızı bekliyorum. Oyunun resimleri ve kendisi aşşağıda bulunmakta :)

      Oyunun linki : http://hotfile.com/dl/67774384/96e6465/Sonsuz.Tetris.rar.html

      Silverlight Game (Volfied) -3

      Yazımıza kaldığımız yerden devam edelim. Top sınıfını anlatmak ile başlayalım.
      public class Top
          {
              public int TopYon { get; set; }
              public string Name { get; set; }
              public Ellipse _top { get; set; }
              public int X
              {
                  get
                  {
                      return Convert.ToInt32(Canvas.GetLeft(_top));
      
                  }
                  set
                  {
                      Canvas.SetLeft(_top, value);
                  }
              }
              public int Y
              {
                  get
                  {
                      return Convert.ToInt32(Canvas.GetTop(_top));
                  }
                  set
                  {
                      Canvas.SetTop(_top, value);
                  }
              }
      
              public Top(int x, int y,int TopYon,string Name)
              {
                  _top = new Ellipse();
                  _top.Fill = new SolidColorBrush(Colors.Red);
                  _top.Height = 10;
                  _top.Width = 10;
                  this.X = x;
                  this.Y = y;
                  this.TopYon = TopYon;
                  this.Name = Name;
                 
                  
              }
          }
      

      public enum TopYonEnum
          {
      
              AssagiSag = 0,
              AssagiSol = 1,
              YukariSag = 2,
              YukariSol = 3
          }
      
      Şimdi sınıfın içeriğini anlatalım;
      public int TopYon { get; set; }
      Topun hangi yönde hareket ettiğini belirtmek için kullanılır.
       public Ellipse _top { get; set; }
      Topun kendisini içerir :) topumuz ellipse nesnesi olacak.Diğer özellikler zaten bir önceki sınıflarda anlattığımız gib.

      Şimdi oyunun mantığının olduğu TopHareket ve OyuncuHareket sınıflarını Kod içindeki açıklamalarda bakarak anlaşıla bileceğini düşünerek kodların açıklamasını ayrıca yazmadım. Kodun tamamı ve proje aşşağıdaki linkten indirebilirsiniz.

      Oyunun bulunduğu Link http://hotfile.com/dl/68416270/2499628/Game2.rar.html

      Silverlight Game (Volfied) -2

      Merhabalar arkadaşlar.
      Bu yazımızda bir önceki yazımızda kaldığımız yerden devam edelim. Önceki yazımızda en son Duvar sınıfını oluşturmuştuk. Bu gün oyuncumuzun özelliklerini içeren Oyuncu sınıfımızı yazmakla başlayalım. İlk başta oyuncumuz nasıl olacak onu tarif edeyim oyuncumuz yılana benzer çekilde bir birini takip eden rectangel nesnelerinden oluşacak. Bu rectangel nesnelerin effectleri ile oynayarak oyuncumuzun daha güzel görünmesini sağlayacağız. Oyuncu sınıfının kodları aşşağıdaki gibi dir;


       public class Oyuncu
          {
              public YonEnum OyuncuYon { get; set; }
              public FrameworkElement _Oyuncu { get; set; }
              public Boolean HareketliMi { get; set; }
              public HareketYeriEnum HareketYeri { get; set; }
              public Point OncekiPozisyon { get; set; }
              public int X
              {
                  get
                  {
                      return Convert.ToInt32(Canvas.GetLeft(rectangel));
      
                  }
                  set
                  {
                      Canvas.SetLeft(rectangel, value);
                  }
              }
              public int Y
              {
                  get
                  {
                      return Convert.ToInt32(Canvas.GetTop(rectangel));
                  }
                  set
                  {
                      Canvas.SetTop(rectangel, value);
                  }
              }
              public Canvas rectangel
              {
                  get;
                  set;
      
              }
      
              public Oyuncu(Int32 rectangelOpacity, Color color)
              {
                  rectangel = new Canvas();
                  rectangel.Height = 30;
                  rectangel.Width = 30;
                  rectangel.Tag = "oyuncu";
                  X = 0;
                  Y = 0;
      
                  Rectangle _rec = RectangelOlustur(ref color);
      
                  switch (rectangelOpacity)
                  {
                      case 100:
                          rectangel.Children.Add(_rec);
                          _rec = RectangelOlustur(ref color);
                          rectangel.Children.Add(_rec);
                          break;
                      default:
                          _rec.Opacity = Convert.ToDouble(Convert.ToDouble(rectangelOpacity) / Convert.ToDouble(100));
                          rectangel.Children.Add(_rec);
                          break;
                  }
              }
      
              private static Rectangle RectangelOlustur(ref Color color)
              {
                  Rectangle _rec = new Rectangle();
                  _rec.Fill = new SolidColorBrush(color);//new Color() { A = 23030, B = 330, G = 23030, R = 30 });
                  _rec.Height = 30;
                  _rec.Width = 30;
                  _rec.Tag = "oyuncu";
                  Canvas.SetLeft(_rec, 0);
                  Canvas.SetTop(_rec, 0);
                  _rec.Effect = new BlurEffect() { Radius = 100 };
                  return _rec;
              }
      
          }


      Windows XP SP3: MSXML Sorunu

      Merhaba arkadaşlar,
      Windows XP SP3 yükledikten sonra, SQL Server yüklerken MSXML ile ilgili bazı sorunlarla karşılaşabilirsiniz. Bu konuda çok kişinin sorun yaşadığını gördüğüm için, bu sorunu ve geçici çözümünü kayıt altına aldım. "Geçici" diyorum, çünkü henüz bu konuda Microsoft' tan yayınlanmış bir yama veya FIX yok; bununla birlikte, bildiğim kadarıyla konu üstünde çalışılıyor.

      Sorun özetle, Windows takımının, MSXML dosyalarını Windows' un korunan sistem dosyaları kategorisine sokmalarından kaynaklanıyor. Windows XP' ye SP3 yüklendikten sonra MSXML' in versiyonu 6.0 olarak yükseltiliyor, fakat SQL Server 2005 kurmaya çalıştığınızda ise yüklenmeye çalışılan MSXML versiyonu 4.0. Windows XP SP3 yüklendikten sonra MSXML dosyaları da koruma altına alındığı için SQL Server 2005' in yüklenmesi sırasında MSXML ile ilgili sorunlarla karşılaşılıyor.
      Bu sorundan kurtulmak için aşağıdaki yöntemleri uygulayabilirsiniz:
      - Windows Installer Cleanup Wizard' ı indirin,
      - Uygulamayı çalıştırdıktan sonra, listeden MSXML 6' yı bulun ve kaldırın,
      - SQL Server 2005 (veya daha üstü bir versiyonu) yüklemeyi tekrar deneyin.

      Daha sonra MSXML 6.0' ı Microsoft Download sitesinden indirip tekrar kurmanız iyi olacaktır.

      To change an existing instance of Microsoft SQL Server 2005 to a different edition of SQL Server 2005, you must run SQL Server 2005 Setup from the command prompt and include the SKUUPGRADE=1 parameter.

      SQL Server kurulumunda aşağıdaki gibi bir hata alacak olursanız komut satırından SQL kurulum dosyasını SKUPGRADE parametresi ile çağırmanız gerekir. Bu şekilde kurulumu başlatırsanız sorununuz çözülmüş olur.

      Hata Metni: To change an existing instance of Microsoft SQL Server 2005 to a different edition of SQL Server 2005, you must run SQL Server 2005 Setup from the command prompt and include the SKUUPGRADE=1 parameter.

      Çözüm: komut satırında SQL setup dosyasının olduğu dizine gidin ve kurulumu aşağıdaki gibi çalıştırın.

      setup.exe SKUUPGRADE = 1

       

      IIS de Karşılaşılan Failed to access IIS metabase Hatası ve Çözümü

      Karşılaşılan hata :
      The process account used to run ASP.NET must have read access to the IIS metabase (e.g. IIS://servername/W3SVC). For information on modifying metabase permissions, please see http://support.microsoft.com/?kbid=267904.
      IIS metabase'e ulaşma izniniz yok.
      Bunun olası nedeni IIS kurulumunu visual studio 2005 veya 2008 kurulumunda yüklenen .NET Framework 2.0 ,3.0 veya 3.5, kurulumundan sonra yapmanızdan kaynaklandı ya da kurarken kullandığınız kullanıcı adı "Administrator" kullanıcısından farklı.
      Çözüm için
      Komut Satırına düşün ( Başlat->Çalıştır: cmd yazıp enter a basın)
      komut satırında " cd \windows\microsoft.net\framework\v2.0.50727" yazıp enter a basın
      c:\windows\microsoft.net\framework\v2.0.50727
      Buradaki c sürücüsü varsayılan sürücü. Sizde farklı olabilir.
      v2.0.50727 ise yüklü olan framework versiyonuna göre değişebilir.
      "c:\windows\microsoft.net\framework\v2.0.50727 " klasörü altında kullanıcı adınıza iis metabase erişim hakkı verin.
      aspnet_regiis -ga [kullanıcı adı]
      sonrada aşağıdaki satır ile ASP.NET i bir daha yükleyin
      aspnet_regiis -i

      Sorun çözülecektir.

      Unable to start debugging on the web server. Debugging failed because integrated Windows authentication is not enabled. Please see Help for assistance

      Merhaba,
      Bu hatayı bazı sitelerde söylendiği gibi sadece Visual Studio 2003 de almazsınız. Hatayı Visual Studio 2005 ve Visual Studio 2008 de de alabilirsiniz . Hatanın sebebi file system yerine IIS üzerinde host edilen başka bir sitenin olmasından kaynaklanır. Böyle bir durum olduğunda bu hatayı alırsınız. Hatanın çözümü ise aşağıdadır.

      1. IIS(Internet Information Server)'i açın
      2. Web Site'a sağ tıklayın ve Properties(Özellikler)sekmesini seçin
      3. Directory Security(Dizin Güvenliği) sekmesini seçin ve "Anonymous access and
      authentication control" ü seçin
      4. Açılan pencerede "Allow Anonymous access" checkbox'ının tik'ini kaldırın ve
      "Integrated Windows Authentication" checkbox'ını tik'lyin.

      Sorun çözüldü


      Silverlight Game (Volfied) -1

      Bu yazımızda benim silverlight öğrenirken yapmaya çalıştığım bir oyun taslağını anlatacağım. İlk başta yapmayı düşündüğüm oyunu biraz anlatayım. Belki eskiden oynamışsınızdır Volfied oyunu vardı işte o oyuna benzer bir oyun yapmayı düşündüm ve işe koyuldum.

      Oyunun mantığı çok basit bizim bir oyun alanımız olacak ve bu oyun alanını çevreleyen duvarlar olacak, bu oyun alanına bizim oyuncumuzda duvarlar koya bilecek , alanın boş kısımlarında serbest ce dolaşan ve duvarlara çarptıkça seken toplar olacak.
      Bizim oyuncumuz toplara dokunmadan topların dolaşacağı alanları küçültmek için belli bir alanı çember içine almaya çalışacak ve çember içine almayı tamamladığında o çemberin içi de duvar ile kaplanacak eğer içerisin de top varsa o top yok olacak (Eğer yok olan top son top ise oyun bitecek).

      Oyuncumuz alanı çizerken çember tamamlanmadan çembere top çarparsa oyun bitecek veya oyun alanının %80 tamamlanırsa oyun bitecek.

      Oyun ekran olarak 810*600 ve benim koyacağım duvarların boyutunu da 30*30 olarak düşündüm. Koyacağım duvarları Expression Design da yaptım. Vektör olarak yapmanız bence daha iyi çünkü ilerde boyutlarını daha küçük veya büyük olmasını istediğinizde koddan küçültme büyütme yaptığınızda görüntüde bir bozulma olmayacaktır diğer türlü resim yapar iseniz o zaman resimde bozulmalar olacaktır.

      İlk Bakış

      Bu blogu kurduğum yıl 2007 :) tabi içine içerik koyma işi bu güne kadar nasip olmadı. Aslında yine bu blogu sadece kendi blogumu yazana kadar geçici olarak kullanacağım. Bu blog da diğer bloga geçene kadar sadece Silverlight ile ilgili bilgiler yayınlayacağım. Silverlight ile ilgili bilgiler derken ders ders şeklinde değilde ben öğrenirken yaptığım küçük projeleri bu blog da yayınlayacağım. Tabi sadece projelerde değil, bu projeleri yaparken karşılaştığım hatalar, o hataların çözümlerini de yayınlayacağım.

      Peki bu blogdan sizler ne şekilde fayda göreceksiniz. Yayınladığım her proje için incelerken takıldığınız yerleri veya bu projeye bakarak gerçekleştirdiğiniz kendi projenizde ki karşılaştığınız hataları, çözemediğiniz sorunları bana ve blogu izleyen diğer arkadaşlara da sora bileceksiniz. inşallah sorunlarınıza en kısa sürede çözüm bulmaya hep beraber çalışacağız. Amacımız bilgilerimizi, tecrübelerimizi paylaşmak.

      Tabi ki her şeyi bildiğim veya yaptığım projelerde kullandığım yöntemler en iyisi dir demiyorum ki zaten çoğunu öğrenirken yaptım bu projeleri incelerken sizinde yorumlarınızı,önerilerinizi bekliyorum. Örneğin şu kısmı niye böyle yaptınız bu yöntem ile değilde şu yöntem ile yapsaydınız daha hızlı olurdu daha az ram harcadı veya daha kolay çözerdiniz gibi yorumları da bekliyorum her türlü yorumlarınıza açığım lütfen yorumsuz bırakmayın :)
      Sanırım ilk yazımızda bu kadar yeter en kısa zamanda yaptığım projeleri yayınlamaya başlıyorum her hafta inşallah irili ufaklı bir proje yayınlayacağım ve haftanın bazı günlerinde de yeni öğrendiğim ilginç bulduğum başkaları tarafında yapılan projeleri, örnekleri de yayınlayacağım. Haydi Bismillah.
      Share