Archive for the ‘.NET’ Category

At TechEd 2008 it is announced that new beta version of Silverlight 2 will be avaliable later this week. Introducing news shows that new nice improvements are done.

  • UI Framework: Beta 2 includes improvements in animation support, error handling and reporting, automation and accessibility support, keyboard input support, and general performance.  This release also provides more compatibility between Silverlight and WPF.
  • Rich Controls: Beta 2 includes a new templating model called Visual State Manager that allows for easier templating for controls. Other features include the introduction of TabControl, text wrapping and scrollbars for TextBox, and for DataGrid additions include Autosize, Reorder, Sort, performance increases and more.  Most controls are now in the runtime instead of packaged with the application.
  • Networking Support: Beta 2 includes improved Cross Domain support and security enhancements, upload support for WebClient, and duplex communications (”push” from server to Silverlight client).
  • Rich Base Class Library: Beta 2 includes improved threading abilities, LINQ-to-JSON, ADO.NET Data Services support, better support for SOAP, and various other improvements to make networking and data handling easier.
  • Deep Zoom: Beta 2 introduces a new XML-based file format for Deep Zoom image tiles, as well as a new MultiScaleTileSource that enables existing tile databases to utilize Deep Zoom. Better, event driven notification for zoom/pan state is another improvement in Silverlight 2 Beta 2.

 

Silverlight 2.0 ve Web Servisleri

Posted by Arda under .NET, C#

Basit bir web uygulamasında, web site projesi vardır yanında da refereans verilmiş diğer projeler(veri katmanı,iş katmanı,servis katmanı….) Silverlight uygulamalarında bu biraz farklı. Daha doğrusu mantık aynı, yaklaşım farklı.

Silverlight, bir web uygulamasında kullanıcı arayüzü seviyesinde olan bir kavram. Buna göre kendi içinde veri ile ilgili işlerin olması,bir servis sunması çok da tercih edilen ya da beklenen bir şey değil. Bundan dolayı zaten Silverlight Application’ı açtığınız zaman, VS 2008′de referans olarak yapmış olduğunuz data katmanını(CLR .dll’i mesela) ekleyemezsiniz.

Peki arayüz katmanım,uygulamanın diğer parçalarından nasıl haberdar olacak?

Burada servis katman(lar)ı ortaya çıkıyor. Arayüz katmanı, servis katmanını referans kullanarak uygulamayı kullanıcıya sunuyor.Web servisini çağırmanın iki yolu vardır. Bir senkron olarak,bir de tabi ki asenkron olarak. Genellikle senkron olarak çağırılırdı web servisleri, Ajax hayatımıza girdikten sonra asenkron yaklaşım da önemini arttırdı,hatta kullanım olarak öne bile geçiyor. Silverlight’da tüm web servisleri asenkron olarak çağırılır.Kavram olarak bu şekilde ifade etmek pek doğru olmasa da kaba tabir ile Silverlight’da ajax desteği sağlanmış bu şekilde  diyebiliriz.Tabi ki bu v2.0 için.

Silverlight vs. Cross-Domain İletişim

Normal ASP.NET tasarımlarında www.minepla.net deki bir uygulama www.abc.com/WebService.asmx(.svc) şeklinde bir web servisini kolaylıkla çağırabilmekteydi. Ya da www.abc.com’de ki bir script’i… Bunun sonucunda ne olabiliyordu? XSS(cross-site scripting) saldırıları…Ve bu sayede www.abc.com’daki kötü niyetli bir script, www.minepla.net’de ki bir açıktan dolayı o sitedeki bilgilere ulaşabiliyordu. Silverlight’da bu olay böyle değil.Tehlikenin farkında olan Microsoft, Silverlight uygulamasından direk olarak başka bir domain’deki kaynağa ulaşmayı engelliyor. Flash uygulamalarında da aynı mantık var.(Tehlikenin ilk farkında olan Adobe olmuş yani  )

Başka bir yerde host edilen web servis’i çağıramıyorsam ne anladım ben bu işten…Ama tabi ki böyle değil.”clientaccesspolicy.xml” diye bir dosya ile,ki bununla ilgili ayrıntıyı buradan okuyabilirsiniz, web servise kimler erişebilecek belirtebiliyoruz.Bu dosyayı web servisi host eden server’ın root’una koyunca Silverlight uygulamamız artık web servisini çağırabilir hale geliyor.

Mekanizma nasıl işliyor tam bilemiyorum, ama tahminim ve mantıklı gelen, Silverlight uygulaması önce bir HTTP GET yapıyor ve dosyaya bakıyor,sonra web servise request yapıyor sanırım.

Sonuç olarak çok da sağlam olmasa da güvenlik adına güzel bir olay.

Silverlight’ın arkası…

Posted by Arda under .NET

Client-Server iletişimi
Silverlight 1.0′da client-server arasında ki iletişim JSON(javascript object notation) ile gerçekleşiyordu. Ne avantajı vardı? Javascript ağırlıkli bir uygulama veri taşırken(ki bu veri taşıma olayı genellikle AJAX oluyor) düzgün bir formatta iletiliyordu.Diğer bir avantajı ise mesaj boyutlarının küçük olması.Yani server’ın bandwidth’ini tüketmiyor çok fazla.

Ajax’ın almış başını gidiyor olması ve ASP.NET’in hazır bir Ajax alt yapısı olması, Microsoft’un Silverlight 1.0 için JSON’ı seçmesinin en büyük nedeni sanırım.

.NET gibi güçlü bir yapı ile Silverlight’ın alakasız kalması olmazdı.Bundan dolayı 2.0 versiyonu ile bu destek geldi.Bu destek gelince peki mevcut durumdan neler gitti? Giden şeylere göre gelen şeyler daha çok olduğundan pek önemi olmasa da veri iletişim yapısı değişti.JSON yerine SOAP’a geçildi.SOAP olmasının tek dezavantajı client-server arasında giden-gelen mesajların SOAP’ın yapısından dolayı daha büyük olması.Ama zaten genel olarak web servis alt yapıları zaten SOAP ile haberleştiğinden çok da bir sorun yok.
.NET Framework desteği
Silverlight 2.0 da .NET desteği geldi dedik,peki gerçekten bu böyle mi? Bu böyle değil aslında tam olarak. Biraz yanıltma var. .NET Framework’ü kırpılarak Silverlight için uygun hale geldi. Mesela bir tane Silverlight Application’ı yarattınız. Bu uygulamaya .NET referansı veremiyorsunuz. Bunun nedeni Silverlight için kırpılmış olan framework. Silverlight Application’ları normal bir .NET *.dll’i gibi derlenmez. Dolayısla bu referans verememe durumu gayet normal.Kırpılmış framework derken yanlış anlaşılma olmasın, bu .NET ile geliştiremeyiz anlamına kesinlikle gelmiyor.

Bütün bunların nedeni de platform bağımsızlığını koruyabilmek.

Javascript
Silverlight 1.0 tamamen Javascript’in gücü ile çalışmaktaydı aslında. Kendi yarattığı bir konseptin,kendi teknolojisi ile çalışmadığı farkına varan Microsoft , 2.0 versiyonu ile .NET’i öne çıkardı. Kısaca v2.0 ile Javascript OUT,.net IN. (:

Bu tabi ki Silverlight 2.0′da javascript kullanılmaz gibi bir anlama gelmesin. Sadece artık eskiki kadar gerek yok.

Mix08 ile beraber Web teknolojilerinde Microsoft’un yeni ürünleri yavaş yavaş gün yüzüne çıkıyor. İlginenler varsa aşağıda betası çıkan ürünlerin download adresleri var. İndirip kurmakta,deneyip oynamakta fayda var.  

Kendi kendine uçabilen,arama-kurtarma çalışmalarında kullanabilmek için tasarlanan RobotTurk, daha geliştirme aşaması tam olarak tamamlanmamasına rağmen şimdiden çok ses getirdi. Eminim ki çok daha fazla da sesini duyarak ilerleyen zamanlarda…Okuldan arkadaşım Ömer Çelik ve çalışma arkadaşı Oğuz Bayrakdar’ı tebrik ederim…
Proje ile ilgili ayrıntıları aşağıdaki adresden takip edebilirsiniz…
http://roboticsnedir.com/blogs/robotturk/pages/robotturk-with-msrs-saving-life.aspx

Ayrıca basında ve çeşitli sitelerde yer alan haberlerden bir kaçıda aşağıdaki adreslerde mevcut
-http://www.news.com/8301-10784_3-9880957-7.html?tag=blog.1
-http://nogginswap.com/cs/blogs/pcpartfinder/archive/2008/02/27/roboturk-helicopter-to-aid-disaster-recovery.aspx
-http://newsbreak.com.au/search.ac?relkey=a1056739
-http://northloop.14gram.com/roboturk-helicopter-aid-disaster-recovery
-http://www.microsoft.com/presspass/events/HHHlaunch/gallery.mspx#4
-http://blogs.msdn.com/msroboticsstudio/archive/2008/02/27/robotturk-disaster-emergency-video-system.aspx
-http://www.itbusiness.ca/it/client/en/home/News.asp?id=47326

ADO.NET Entity Framework Beta 3 çıktı. Buraya tıklayarak indirebilirsiniz.Bir önceki versyona göre baya bir değişiklik var;

 

 

Performance improvements

  • Much quicker object query execution
  • Simpler generated SQL
  • Faster view generation
     

Easier disconnected operation

  • ApplyPropertyChanges
  • Public, serializable EntityKey property on EntityReference
  • Attach on EntityReference
  • Improvements to EntityKey serialization
     

Extensibility and business logic enhancements

  • Partial methods in code generation for property changing and property changed events
  • Load with MergeOption
  • AssociationChanged Even

Query improvements

  • Additional canonical functions for LINQ to Entities
  • Apply operator elimination (makes more operations work in SQL Server 2000 and other databases)
  • Compiled LINQ query
  • ToTraceString() method on ObjectQuery and EntityCommand to facilitate debugging

Other

  • Provider interface allows better reasoning about primitive types
  • Connection management refinements

 

 

Peki bu Entity Framework ne?

Microsoft, .NET Framework 3.5 ile O/R Mapping olayına ciddi anlamda girmiş oldu. Entity Framework’de bu girişimin en somut örneği. Database’de bulunan tabloların 1:1 şeklinde kod tarafına yansıtılması LintToSql’in bize sağladığı,yani var olan bir şeydi zaten. Ama Entity kavramı uygulama açısından ve business logic açısından her zaman database’deki tablolar olmayabilir.

Şöyle ki; Veritabanımızda Kişi,Siparişler ve Adres şeklinde tablolar olsun. Business açısından da müşteri kavramı Kişi,Sipariş ve Adres özelliklerine sahip bir yapı olsun. Normalde böyle bir şeyi yapmak çok zor değil ancak hamal kod( :) ) diye adlandırabileceğim yazılımcıyı bir süre sonra sıkan kodlar yazmak gerekli. Entity Framework bizi bunlardan kurtarıyor. Ve ister istemez bir şekilde veritabanındaki yapıya ve şemasına bağlı olmak zorunda kalıyorduk. Aslında kötü bir şey değil bu ama farklı ihtiyaçlar için elimizi kolumuzu bağlıyordu.Kısaca ADO.NET Entity Framework’ü, veritabanı odaklı uygulama modelleri yerine uygulama odaklı veri modelleri oluşturmamızı sağlıyor.

Ayrıca Attribute kavramları ile yarattığınız kendi entityleri veritabanında tablo şeklinde oluşturabiliyorsunuz.Bu az önce dediğim uygulama odaklı veri modelleri oluşturmak kavramının bir parçası.
 
Visual Studio 2008′e yüklenen bir tool ile entity tasarımı yapmak oldukça basit ve eğlenceli bir hal alıyor.Üşenmezsem bir sonraki yazılarımda Visual Studio 2008 ile nasıl bu bahsetmiş olduğum şeyleri gerçekleştiriyoruz anlatacağım. (:

Daha geniş bilgileri aşağıdaki adreslerden temin edebilirsiniz…
http://msdn2.microsoft.com/en-us/library/aa697427(VS.80).aspx