<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkUMQn04eCp7ImA9WhNSGEk.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106</id><updated>2012-11-02T09:18:03.330+01:00</updated><category term="Presentation" /><category term="school timetabling software" /><category term="School scheduling software" /><category term="Silverlight 2" /><category term="Silverlight 3" /><category term="RIA" /><category term="Silverlight" /><title>Silverlighter</title><subtitle type="html">Danijel Stulic - RIA development blog</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://stulic.blogspot.com/" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Silverlighting" /><feedburner:info uri="silverlighting" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUIBRXs9eCp7ImA9WxBSFks.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-6391696005870982360</id><published>2009-12-22T15:37:00.028+01:00</published><updated>2009-12-24T15:05:54.560+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-24T15:05:54.560+01:00</app:edited><title>Silverlight 4 Beta slides &amp; code from Web-Fu! event</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V-6V7Dh1uv8/SzNsjYZXEPI/AAAAAAAABq8/OQn-EC6LiMY/s1600-h/WebFuLogo.jpg"&gt;&lt;img style="float:right; margin:0 5px 10px 5px;text-align:center;cursor:pointer; cursor:hand;width: 281px; height: 130px;" src="http://2.bp.blogspot.com/_V-6V7Dh1uv8/SzNsjYZXEPI/AAAAAAAABq8/OQn-EC6LiMY/s400/WebFuLogo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5418794131756880114" /&gt;&lt;/a&gt;&lt;div&gt;Yesterday I had a great time at Microsoft's &lt;a href="http://www.webfu.rs/" target="_blank"&gt;Web-Fu! event&lt;/a&gt; in Belgrade, Serbia, and at the same time it was an opportunity to talk about what's new in Silverlight 4 Beta. During the talk, I demoed a couple of interesting things:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;New &lt;a href="http://www.bing.com/maps/explore" target="_blank"&gt;Bing Maps Beta&lt;/a&gt; application, Deep Zoom, street view, Photosynth, etc. &lt;/li&gt;&lt;li&gt;Rene Shulte's &lt;a href="http://kodierer.blogspot.com/2009/12/world-real-time-3d-augmented-reality.html" target="_blank"&gt;Real time 3D augmented reality&lt;/a&gt; proof of concept&lt;/li&gt;&lt;li&gt;&lt;a href="http://johnpapa.net/silverlight/silverlight-4-html-puzzle-how-does-it-work/" target="_blank"&gt;Multi-Touch Puzzle&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.silverlight.net/learn/videos/silverlight-4-beta-videos/com-object-access-trusted-applications/" target="_blank"&gt;Excel Interop&lt;/a&gt; example.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I also showed a little &lt;a href="http://www.micria.com/Sample/WebFu09/Demo.html" target="_blank"&gt;demo application&lt;/a&gt; which demonstrates some of the new features coming in Silverlight 4:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;New RichTextArea control&lt;/li&gt;&lt;li&gt;DataGrid improvements&lt;/li&gt;&lt;li&gt;New databinding improvements&lt;/li&gt;&lt;li&gt;Out of browser improvements: notification (toast), HtmlBrowser control&lt;/li&gt;&lt;li&gt;Making Silverlight speech using COM Interop&lt;/li&gt;&lt;li&gt;etc.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Here are &lt;a href="http://www.micria.com/Download/Talk/WebFu09/Silverlight4Beta.pptx" target="_blank"&gt;Silverlight 4 Beta slides&lt;/a&gt;, and the &lt;a href="http://www.micria.com/Download/Talk/WebFu09/Silverlight4BetaDemo.zip" target="_blank"&gt;code for demo application&lt;/a&gt;. Hope you'll find it useful.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SzNjVS58NvI/AAAAAAAABqs/WRVAM_vffLE/s1600-h/Silverlight4WebFuDemo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SzNjVS58NvI/AAAAAAAABqs/WRVAM_vffLE/s400/Silverlight4WebFuDemo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5418783994160101106" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/r0eWIWy1rF0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/6391696005870982360/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/12/silverlight-4-beta-slides-code-from-web.html#comment-form" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/6391696005870982360?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/6391696005870982360?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/r0eWIWy1rF0/silverlight-4-beta-slides-code-from-web.html" title="Silverlight 4 Beta slides &amp; code from Web-Fu! event" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_V-6V7Dh1uv8/SzNsjYZXEPI/AAAAAAAABq8/OQn-EC6LiMY/s72-c/WebFuLogo.jpg" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/12/silverlight-4-beta-slides-code-from-web.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMDRnc5fCp7ImA9WxNUEUQ.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-5169327591810445147</id><published>2009-10-28T17:23:00.023+01:00</published><updated>2009-11-02T22:31:17.924+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-02T22:31:17.924+01:00</app:edited><title>Silverlight slides &amp; demo application from MsForge CodeCamp</title><content type="html">I had a great pleasure to attend &lt;a href="http://codecamp.msforge.net/5.aspx"&gt;MsForge Code Camp&lt;/a&gt; in Belgrade (Serbia) and meet lots of cool IT folks. At the same time, I had an opportunity to talk about Silverlight &amp;amp; .NET RIA Services and demonstrate 2 simple Silverlight poll applications: one for managing polls and one for voting. &lt;div&gt;&lt;div&gt;RIA Poll application for managing polls is available &lt;a href="http://www.primetimetable.com/Sample/RiaPoll/"&gt;here&lt;/a&gt; (username: codecamp, pasword: codecamp).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SurcA_eXyjI/AAAAAAAABpY/aJBypWqvWoA/s1600-h/RiaPollManageScreenshot.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 237px; border:solid 1px #0e0e0e;" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SurcA_eXyjI/AAAAAAAABpY/aJBypWqvWoA/s400/RiaPollManageScreenshot.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5398369012953893426" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Example of RIA Poll voting is available &lt;a href="http://www.primetimetable.com/Sample/RiaPoll/vote.aspx?pollID=75e2a3c6-cb87-4616-90c4-23f26844ca0b"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SurcXl6kUZI/AAAAAAAABpg/jTiZxyr9AJc/s1600-h/RiaPollVoteScreenshot.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 200px; border:solid 1px #0e0e0e;" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SurcXl6kUZI/AAAAAAAABpg/jTiZxyr9AJc/s400/RiaPollVoteScreenshot.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5398369401229824402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Code can be found &lt;a href="http://www.micria.com/download/RiaPollCodeCamp.zip"&gt;here&lt;/a&gt; - .NET Ria Service July Preview is required and web.config connection string needs to point to database which is in RiaPoll.Web/Data folder.&lt;/div&gt;&lt;div&gt;Presentation slides are available online &lt;a href="http://docs.google.com/present/view?id=dc64vvk5_85gg5tggfs"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V-6V7Dh1uv8/Su1baJ1INvI/AAAAAAAABqA/x74ilWj3U6E/s1600-h/MsForgeCodeCamp_Silverlight_3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_V-6V7Dh1uv8/Su1baJ1INvI/AAAAAAAABqA/x74ilWj3U6E/s400/MsForgeCodeCamp_Silverlight_3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5399072033160574706" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V-6V7Dh1uv8/Su9Pa2nBJZI/AAAAAAAABqI/4QUjxBqiVs0/s1600-h/CodeCamp_Navigation_Deep_Link.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_V-6V7Dh1uv8/Su9Pa2nBJZI/AAAAAAAABqI/4QUjxBqiVs0/s400/CodeCamp_Navigation_Deep_Link.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5399621800994874770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/vViHlsuI8cA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/5169327591810445147/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/10/silverlight-slides-demo-applications.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/5169327591810445147?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/5169327591810445147?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/vViHlsuI8cA/silverlight-slides-demo-applications.html" title="Silverlight slides &amp; demo application from MsForge CodeCamp" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SurcA_eXyjI/AAAAAAAABpY/aJBypWqvWoA/s72-c/RiaPollManageScreenshot.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/10/silverlight-slides-demo-applications.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEAQnc9fCp7ImA9WxNQGEw.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-8064187945002806538</id><published>2009-09-24T10:21:00.036+02:00</published><updated>2009-09-24T20:24:03.964+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-24T20:24:03.964+02:00</app:edited><title>Multi-threading options in Rich Internet Applications</title><content type="html">&lt;div&gt;A non-responsive user interface due to heavy computational work can lead to very poor user experience. In order to avoid freezing user interface, use of multi-threading is a must in any complex Rich Internet Application. Here are some pointers on multi-threading options in existing technologies and those that will come in the (near) future:&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Silverlight&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Silverlight provides a wide range of threading features and it's all done in a familiar .NET way. MSDN documentation about threading in Silverlight is extensive and you can read it &lt;a href="http://msdn.microsoft.com/en-us/library/3e8s7xdd(VS.95).aspx"&gt;here&lt;/a&gt;, and there are lots of examples out there about using threads in Silverlight application. You can use &lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.thread(VS.95).aspx"&gt;Thread&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/system.threading.threadpool(VS.95).aspx"&gt;ThreadPool&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/cc221403(VS.95).aspx"&gt;BackgroundWorker&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/zdzx8wx8(VS.95).aspx"&gt;Timers&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/hf5de04k(VS.95).aspx"&gt;Monitors&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/kad9xah9(VS.95).aspx"&gt;Wait Handles,&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/9xyf641a(VS.95).aspx"&gt;more&lt;/a&gt; . Sure, lots of options here.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;JavaFX&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;To my surprise, I've found that JavaFX script as of version 1.2 (released June 2009) is single-threaded, and all background work must be done in Java code as stated &lt;a href="http://fxexperience.com/2009/06/background-tasks-in-javafx/"&gt;here&lt;/a&gt; by key members of JavaFx team at Sun Microsystems.  More in their blog post:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;There is one major caveat that I need to make clear. As of JavaFX 1.2, JavaFX Script is &lt;b&gt;single threaded&lt;/b&gt;. All background work &lt;b&gt;must&lt;/b&gt; be done in Java code. The JavaTaskBase abstract class is the base class intended to be used by all background threading implementations in JavaFX 1.2. Unfortunately, the hookup between JavaTaskBase and RunnableFuture didn’t come out right in 1.2 and you’re left with very little guidance as to how to do this appropriately.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The key thing is to understand that &lt;b&gt;nothing should touch JavaFX variables from a background thread&lt;/b&gt;. So the idiom to use is to have the JavaTaskBase subclass to have a Java language peer which does the background work. The JavaTaskBase subclass would register a listener on the peer, and the peer would communicate back to the JavaTaskBase through that listener interface. The JavaTaskBase subclass would then pump events from the peer back onto the JavaFX thread (i.e. event thread) using FX.deferAction.&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;More information about background tasks in JavaFX using Java code is available &lt;a href="http://blogs.sun.com/baechul/entry/javafx_1_2_async"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;b&gt;Flash&lt;/b&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;There isn't much you can do in Flash, since Flash is single-threaded application. &lt;/div&gt;&lt;div&gt;Alternatives include voting for missing threading feature &lt;a href="https://bugs.adobe.com/jira/browse/ASC-3222"&gt;here&lt;/a&gt; (if you are a part of Adobe community), or you can use &lt;a href="http://www.flashmagazine.com/tutorials/detail/using_pixel_bender_to_calculate_information/"&gt;Pixel Bender&lt;/a&gt; for calculating purposes, which is not a part of Flash and is programmed using GLSL syntax. There are more Flash alternatives for threading &lt;a href="http://blogs.adobe.com/aharui/2008/01/threads_in_actionscript_3.html"&gt;here&lt;/a&gt;, but that just doesn't look viable to me (and surely not just me!).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Html 5 and JavaScript&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Html and JavaScript are not categorized as RIA technologies, but that could be changed in the near future. There are some sources &lt;a href="http://www.webreference.com/authoring/languages/html/HTML5/"&gt;here&lt;/a&gt; that mention things like multi-threaded JavaScript in Html 5. Draft recommendation for "Web Workers" is &lt;a href="http://www.whatwg.org/specs/web-workers/current-work/"&gt;here&lt;/a&gt; and it's strongly influenced by a work of Google Gears.  So we will have to wait until Html 5 is implemented in all major browsers. In the meantime you can try some nasty tricks for "simulating" multi-threading in JavaScript by James Edwards &lt;a href="http://articles.sitepoint.com/article/multi-threading-javascript"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Microsoft Silverlight provides great multi-threading features in today's RIA with lots of options.&lt;/div&gt;&lt;div&gt;Multi-threading in JavaFx 1.2 (released in June 2009) has changed so that JavaFx Script is single-threaded and therefore all threading operations are handled by Java code since JavaFx is fully integrated with Java Runtime Environment (JRE). Some multi-threading improvements (a hookup between JavaTaskBase and FutureRunnable) are coming in next JavaFx releases. &lt;/div&gt;&lt;div&gt;Communicating using only primitive types with Pixel Bender (which is not a part of Flash) doing background work written in GLSL syntax represents a very poor multi-threading choice. Moreover, missing multi-threading feature unfortunately doesn't have highest priority in Flash community.&lt;/div&gt;&lt;div&gt;Web Worker as a part of Html 5 which is currently in draft recommendation form have a long way to go. A lot of existing Ajax and Flash application could also take advantage of Html 5 Web Worker once it comes out, so it is also an option to watch for.&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/QngORHriXg4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/8064187945002806538/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/09/multi-threading-options-in-rich.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/8064187945002806538?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/8064187945002806538?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/QngORHriXg4/multi-threading-options-in-rich.html" title="Multi-threading options in Rich Internet Applications" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/09/multi-threading-options-in-rich.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIASH47cCp7ImA9WxNRGU4.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-7350566116249569188</id><published>2009-09-14T12:59:00.011+02:00</published><updated>2009-09-14T15:22:29.008+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-14T15:22:29.008+02:00</app:edited><title>Silverlight SaveFileDialog doesn't work in Opera</title><content type="html">Generally, most Silverlight 3 applications work ok in Opera. There were some problems with windowless mode in Opera using Silverlight 2, but it appears that it's been fixed in Silverlight 3.&lt;div&gt;Nevertheless, Opera is still not on the list of Microsoft Silverlight 3 officially supported browsers, and today I've found one more reason why. There isn't much documentation about this stuff, but I've got an exception when Silverlight 3 SaveFileDialog is used in Opera 10 (build 1750). The thrown exception is: &lt;blockquote&gt;"Dialogs must be user-initiated at System.Windows.Controls.SaveFileDialog.ShowDialog()..." &lt;/blockquote&gt;which appears in other browsers, too, but only if you try to invoke save file dialog avoiding button click event. I haven't found any workaround for this, so my code looks like &lt;a href="http://codepaste.net/3xqmf5"&gt;this&lt;/a&gt;. I would like to know if there is a better way to solve this problem in order to use Silverlight applications in Opera. Any thoughts?&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V-6V7Dh1uv8/Sq4oAjyRrPI/AAAAAAAABmQ/43OubexBdqg/s1600-h/SaveFileDialogOpera.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 136px;" src="http://4.bp.blogspot.com/_V-6V7Dh1uv8/Sq4oAjyRrPI/AAAAAAAABmQ/43OubexBdqg/s400/SaveFileDialogOpera.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5381282594825546994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/L8YoXwaDFNE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/7350566116249569188/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/09/silverlight-savefiledialog-doesnt-work.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/7350566116249569188?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/7350566116249569188?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/L8YoXwaDFNE/silverlight-savefiledialog-doesnt-work.html" title="Silverlight SaveFileDialog doesn't work in Opera" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_V-6V7Dh1uv8/Sq4oAjyRrPI/AAAAAAAABmQ/43OubexBdqg/s72-c/SaveFileDialogOpera.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/09/silverlight-savefiledialog-doesnt-work.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcNR346fyp7ImA9WxNRFEw.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-4256669400443062186</id><published>2009-08-24T17:05:00.017+02:00</published><updated>2009-09-08T14:14:56.017+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-08T14:14:56.017+02:00</app:edited><title>Prime Timetable in Summer Silverlight Coding Competition</title><content type="html">I've decided to submit &lt;a href="http://www.primetimetable.com/demo"&gt;Prime Timetable&lt;/a&gt; to the Summer Silverlight Coding Competition hosted by &lt;a href="http://www.componentart.com/community/competition2009/"&gt;ComponentArt&lt;/a&gt;. If you find Prime Timetable interesting, you can vote for it &lt;a href="http://www.componentart.com/community/competition2009/details.aspx?id=1071"&gt;here&lt;/a&gt;. In order to vote you will need ComponentArt account (just click on "Log in to cast your vote" &gt; Create account, if you don't have it).&lt;div&gt;It's my pleasure to be able to take part in this competition. The motivation for entering the coding competition came from these:&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Not many other Silverlight line of business (LOB) application have been submitted yet, and I wonder why? They don't like to compete or what?&lt;/li&gt;&lt;li&gt;I am ambitious by nature and like to compete :).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So, go ahead and vote and may the best Silverlight app win!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V-6V7Dh1uv8/Sp4wMtSbwXI/AAAAAAAABmI/rRxLJyHrqTA/s1600-h/silverlight_summer_coding_competition.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 309px;" src="http://2.bp.blogspot.com/_V-6V7Dh1uv8/Sp4wMtSbwXI/AAAAAAAABmI/rRxLJyHrqTA/s400/silverlight_summer_coding_competition.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5376788000000426354" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/Oe0pbgCR-ms" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/4256669400443062186/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/08/prime-timetable-in-summer-silverlight.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/4256669400443062186?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/4256669400443062186?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/Oe0pbgCR-ms/prime-timetable-in-summer-silverlight.html" title="Prime Timetable in Summer Silverlight Coding Competition" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_V-6V7Dh1uv8/Sp4wMtSbwXI/AAAAAAAABmI/rRxLJyHrqTA/s72-c/silverlight_summer_coding_competition.jpg" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/08/prime-timetable-in-summer-silverlight.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUGR30zcSp7ImA9WxNSEU8.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-824521480002013524</id><published>2009-08-17T13:36:00.018+02:00</published><updated>2009-08-24T16:30:26.389+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-24T16:30:26.389+02:00</app:edited><title>Snapshot of scrollable content using Silverlight 3 WriteableBitmap</title><content type="html">&lt;div&gt;Recently, I've been working on exporting part of XAML tree to Jpeg image using &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap(VS.95).aspx"&gt;Silverlight 3 WriteableBitmap&lt;/a&gt; and it all went pretty well until I put lots of stuff into exporting content container. Here are some of the problems I've encountered:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Scrollbar appears in the snapshot.&lt;/li&gt;&lt;li&gt;Non-visible content doesn't appear in the snapshot even when its size increased.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Here is my approach for solving these problems:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1. Prior to creating WriteableBitmap adjust user interface: &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="white-space: normal; "&gt;Adjust the size (width and height) of scrolling content so that the scrollbar doesn't appear.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="white-space: normal; "&gt;Adjust the size of content containers including plugin size (!), so that you don't have cut offs in exported image.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="white-space: normal; "&gt;If there are some UIElements you don't want exported, set them as invisible.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;b&gt;2. Create WriteableBitmap.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="white-space: normal;"&gt;&lt;b&gt;3. Revert user interface changes.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The part of code that solves scrolling problems in my scenario is published &lt;a href="http://codepaste.net/6gb4dc"&gt;here&lt;/a&gt;. Feel free to adjust it to your needs and let me know what you think. I wonder how this could be accomplished in Out Of Browser (OOP) scenario. How can the platform window be resized to get all the scrollable content without cut offs, and does the cut-off problem even exist? I might even try that one day ;).&lt;/div&gt;&lt;div&gt;Example of generating image from (scrollable) content is available online &lt;a href="http://www.primetimetable.com/demo/"&gt;here&lt;/a&gt;, just choose Timetable &gt; Export to Jpeg. That's it. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_V-6V7Dh1uv8/SolOQmrP80I/AAAAAAAABl4/4fZWiKLANDc/s1600-h/Snapshot_of_scrollable_content.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 349px;" src="http://1.bp.blogspot.com/_V-6V7Dh1uv8/SolOQmrP80I/AAAAAAAABl4/4fZWiKLANDc/s400/Snapshot_of_scrollable_content.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5370910077782848322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/dQw0vhhURiw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/824521480002013524/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/08/snapshot-of-scrollable-content-using.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/824521480002013524?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/824521480002013524?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/dQw0vhhURiw/snapshot-of-scrollable-content-using.html" title="Snapshot of scrollable content using Silverlight 3 WriteableBitmap" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_V-6V7Dh1uv8/SolOQmrP80I/AAAAAAAABl4/4fZWiKLANDc/s72-c/Snapshot_of_scrollable_content.gif" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/08/snapshot-of-scrollable-content-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IMQng6eSp7ImA9WxNTEEQ.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-7253837285227232464</id><published>2009-08-11T18:11:00.012+02:00</published><updated>2009-08-12T17:39:43.611+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-12T17:39:43.611+02:00</app:edited><title>JavaScript location.href instead of Silverlight HtmlPage.Window.Navigate</title><content type="html">&lt;div&gt;MSDN documentation for Silverlight HtmlPage.Window.Navigate method is pretty basic, here is the &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.browser.htmlwindow.navigate(VS.95).aspx"&gt;link&lt;/a&gt;. Summary for the method is: "Opens the specified page in the specified browser instance."&lt;/div&gt;&lt;div&gt;But, behind the scene, if you look at the code in Reflector, HtmlPage.Window.Navigate method invokes JavaScript "open" method. That's all right if you want to call popups, but what if you want to navigate to html page in the same window without calling the popup?&lt;br /&gt;I've encountered following problems with using HtmlPage.Window.Navigate:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;It looks like there are some problems with the browser's cache when Navigate method is used, as described by Kevin Hazzard &lt;a href="http://www.gotnet.biz/Blog/post/Strange-Behavior-for-Silverlights-HtmlPageWindowNavigate-Method.aspx"&gt;here&lt;/a&gt;. Furthermore, in case you use Asp.Net postbacks, the popup page can lead to corrupted viewstate in some scenarios. &lt;/li&gt;&lt;li&gt;HtmlPage.Window.Navigate method's just stopped working in recent builds of Google Chrome browser, probably because of some internal pop-up blocker code. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Therefore, I've decided to use JavaScript location.href instead of HtmlPage.Window.Navigate when target navigation page is set to "_self". Code snippet which looks like a possible solution is published on Rick Strahl's great &lt;a href="http://codepaste.net/"&gt;CodePaste&lt;/a&gt; tool &lt;a href="http://codepaste.net/9dk832"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V-6V7Dh1uv8/SoKdF9rMBfI/AAAAAAAABlY/hJv5muLIQPg/s1600-h/LocationHrefVersusNavigate.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 155px;" src="http://4.bp.blogspot.com/_V-6V7Dh1uv8/SoKdF9rMBfI/AAAAAAAABlY/hJv5muLIQPg/s400/LocationHrefVersusNavigate.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5369026431559665138" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would like to hear your thoughts and experiences on this.&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/8mHQ3M3fbfY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/7253837285227232464/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/08/javascript-locationhref-vs-silverlight.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/7253837285227232464?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/7253837285227232464?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/8mHQ3M3fbfY/javascript-locationhref-vs-silverlight.html" title="JavaScript location.href instead of Silverlight HtmlPage.Window.Navigate" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_V-6V7Dh1uv8/SoKdF9rMBfI/AAAAAAAABlY/hJv5muLIQPg/s72-c/LocationHrefVersusNavigate.gif" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/08/javascript-locationhref-vs-silverlight.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MNQng7fip7ImA9WxJbFkQ.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-5843251781042282153</id><published>2009-07-25T11:39:00.024+02:00</published><updated>2009-07-27T12:44:53.606+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-27T12:44:53.606+02:00</app:edited><title>Assembly Caching in Silverlight 3 - practical example</title><content type="html">&lt;div&gt;As an introduction on Silverlight 3 Assembly Caching feature, I suggest reading Tim Heuer's detailed blog post &lt;a href="http://timheuer.com/blog/archive/2009/07/13/silverlight-3-cached-assembly-feature.aspx"&gt;here&lt;/a&gt; . Following is a practical example of using Assembly Cache in new projects (for existing ones just skip Step 1 and 2).&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Step 1 - Start new project&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;In Visual Studio 2008 start new Silverlight project: File -&gt; New -&gt; Project.&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V-6V7Dh1uv8/SmrToXhwOOI/AAAAAAAABiQ/ekOBin6RpPc/s1600-h/NewProject.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 233px;" src="http://2.bp.blogspot.com/_V-6V7Dh1uv8/SmrToXhwOOI/AAAAAAAABiQ/ekOBin6RpPc/s320/NewProject.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5362330996801812706" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Step 2 - Choose hosting web application project&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Check option "Host new Silverlight application in a new web site".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SmrUWrPAKdI/AAAAAAAABiY/dvolzBu8L4U/s1600-h/NewSilverlightApplicationHostWebSite.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 286px;" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SmrUWrPAKdI/AAAAAAAABiY/dvolzBu8L4U/s320/NewSilverlightApplicationHostWebSite.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5362331792365857234" /&gt;&lt;/a&gt;&lt;b&gt;Step 3 - Add dlls of interest and appropriate .extmap.xml files into newly created Solution Folders&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;(For the sake of simpler walkthrough I will only show adding Silverlight and SilverlightToolkit dlls, but you can easily add your own specific ones)&lt;/div&gt;&lt;div&gt;Right click on Solution, Add -&gt; New Solution Folder: type "Reference". Right click on Reference solution folder and add two new sub-solution folders: "Silverlight" and "SilverlightToolkit". Create a coresponding folder structure on the file system, too: {SolutionFolder}\Reference\Silverlight and {SolutionFolder}\Reference\SilverlightToolkit. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Silverlight 3 dlls and their *.extmap.xml files are located in the following folder: c:\Program Files\Microsoft SDKs\Silverlight\v3.0\Libraries\Client.  &lt;/div&gt;&lt;div&gt;For instance, for a classical Silverlight 3 data application, the following dlls are needed:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;System.ComponentModel.DataAnnotations.dll&lt;/li&gt;&lt;li&gt;System.Data.Services.Client.dll&lt;/li&gt;&lt;li&gt;System.Windows.Controls.dll&lt;/li&gt;&lt;li&gt;System.Windows.Controls.Data.dll&lt;/li&gt;&lt;li&gt;System.Windows.Controls.Data.Input.dll&lt;/li&gt;&lt;li&gt;System.Windows.Controls.Input.dll&lt;/li&gt;&lt;li&gt;System.Windows.Data.dll&lt;/li&gt;&lt;li&gt;System.Xml.Linq.dll&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Copy all those dlls and their already generated *.extmap.xml files into {SolutionFolder}\Reference\Silverlight.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Silverlight Toolkit dlls for July 2009 release are located in the following folder: c:\Program Files\Microsoft SDKs\Silverlight\v3.0\Toolkit\Jul09\Bin, e.g.:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;System.Windows.Controls.Toolkit.dll&lt;/li&gt;&lt;li&gt;System.Windows.Controls.Input.Toolkit.dll&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Copy Silverlight Toolkit dlls and their *.extmap.xml files into {SolutionFolder}\Reference\SilverlightToolkit folder.&lt;/div&gt;&lt;div&gt;Unfortunetely, *.extmap.xml files for Silverlight Toolkit July 2009 release are not provided so they need to be manually created. &lt;/div&gt;&lt;div&gt;For the instructions on manual creating extmap.xml file, refer to Tim Heuer's detailed blog post &lt;a href="http://timheuer.com/blog/archive/2009/07/13/silverlight-3-cached-assembly-feature.aspx"&gt;here&lt;/a&gt;. There is also a small utility deloped by Alex Golesh for easier creating extmap.xml files &lt;a href="http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2009/07/16/small-utility-extmap-maker.aspx"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;"Download uri" attribute in "extension" node in all *.extmap.xml files should be set for Silverlight dlls:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&amp;lt;extension downloaduri="Silverlight.zip"&amp;gt;&amp;lt;/extension&amp;gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;and for SilverlightToolkit dlls: &lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&amp;lt;extension downloaduri="SilverlightToolkit.zip"&amp;gt;&amp;lt;/extension&amp;gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;The solution should look like this, now.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_V-6V7Dh1uv8/Smrpte5261I/AAAAAAAABig/ssFk7TGfLo0/s320/SilverlightSolutionFolders.gif" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 294px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5362355273937120082" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Step 4 - Add reference in Silverlight project to external dlls in Solution Folders&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Right click on Silverlight client project and select Add reference, then select Browse tab (not .Net tab!) and set "Look in" folder to corresponding Silverlight Reference Solution Folder. Select all dll files and click Ok. Do the same for SilverlightToolkit references. &lt;/div&gt;&lt;div&gt;In properties dialog of Silverlight client project check "Reduce XAP size by using application library cache" option. &lt;/div&gt;&lt;div&gt;If everything goes well, after rebuilding solution in ClientBin folder of your Silverlight client web application host project, Silverlight.zip and SilverlightToolkit.zip files will appear as shown below:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_V-6V7Dh1uv8/SmrswnfLjZI/AAAAAAAABio/wxPQpJCR7xg/s1600-h/ClientBinAssemblyCache.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 210px; height: 320px;" src="http://2.bp.blogspot.com/_V-6V7Dh1uv8/SmrswnfLjZI/AAAAAAAABio/wxPQpJCR7xg/s320/ClientBinAssemblyCache.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5362358626315636114" /&gt;&lt;/a&gt;That sums it up. Startup Silverlight client XAP file size is now only 3 KB (!), and all Silverlight and Silverlight Toolkit dlls are in separate .zip files.&lt;/div&gt;&lt;div&gt;Silverlight.zip (for classic data application) takes 480KB and SilverlightToolkit.zip 135 KB. These .zip files are now ready for caching on client browser, since they are not going to be changed that often. Of course, you can organize your own dlls in your own logical .zip groups based on your project requirements and based on frequency of dll changes.&lt;/div&gt;&lt;div&gt;SilverlClient.xap files contains only SilverlClient.dll and AppManifest.xaml with following content (notice Deployment.ExternalParts node):&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_V-6V7Dh1uv8/Sm2DBbMTArI/AAAAAAAABjg/DZk_wPAgumI/s1600-h/AppManifest.xaml.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 124px;" src="http://4.bp.blogspot.com/_V-6V7Dh1uv8/Sm2DBbMTArI/AAAAAAAABjg/DZk_wPAgumI/s320/AppManifest.xaml.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5363086791770571442" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Download example solution&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can download example solution &lt;a href="http://www.primetimetable.com/Blog/Stulic/Download/SilverlightTemplate.zip"&gt;here&lt;/a&gt;. It contains all necessary *.extmap.xml files for dlls in this article.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Step 5 - Use absolute download uri with .zip version number&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since Microsoft has decided not to host .zip files for us at this point, you need to do it by yourself. On your official web server (where you host your Silverlight application) create AssemblyCache folder and copy Silverlight_3.0.zip and SilvelirghtToolkit_July09.zip files there. Change all *.extmap.xml files so that their downloadUri attribute points to new location, for instance: &lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&amp;lt;extension downloaduri="http://www.YourDomain.com/AssemblyCache/Silverlight_3.0.zip"&amp;gt;&amp;lt;/extension&amp;gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;Version number should be included in download file path to make download url unique and it will help you handle possible version conflicts when one or all dlls in .zip file are changed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Assembly Caching - When not to use it?&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While assembly caching is easy to setup and use, there are certain scenarios when they are not appropriate. &lt;/div&gt;&lt;div&gt;The obvious downside of assembly caching feature is that all external *.zip files need to be loaded before starting the Silverlight application, which can be a problem in more advanced scenarios where not all libraries are required from the start. In those scenarios, you should leverage existing Prism for Silverlight or MEF for dynamically loading assemblies only when they are required (e.g. user request). &lt;/div&gt;&lt;div&gt;Silverlight 3 Assembly Caching doesn't work in combination with Out of Browser (OOB) feature, and in that case you can use Isolated Storage as a dll cache mechanism.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Silverlight 3 Assembly Caching feature makes XAP files much smaller, which can dramatically reduce download for your &lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;existing&lt;/span&gt; Silverlight 3 application users, resulting in much better user experience even if code is constantly evolving.&lt;/div&gt;&lt;div&gt;Assembly caching is practically collection of zip files holding third party or any other dlls that is downloaded to client's machine on Silverlight application start and saved in browser's cache via browser's cache mechanism.&lt;/div&gt;&lt;div&gt;Silverlight 3 Assembly Caching is not available in OOB scenarios and when external dlls are needed only on user's request.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/sgUx1LV1R2o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/5843251781042282153/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/07/assembly-caching-in-silverlight-3.html#comment-form" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/5843251781042282153?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/5843251781042282153?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/sgUx1LV1R2o/assembly-caching-in-silverlight-3.html" title="Assembly Caching in Silverlight 3 - practical example" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_V-6V7Dh1uv8/SmrToXhwOOI/AAAAAAAABiQ/ekOBin6RpPc/s72-c/NewProject.gif" height="72" width="72" /><thr:total>16</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/07/assembly-caching-in-silverlight-3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMHSXo9cSp7ImA9WxJbFU0.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-1513055239977447418</id><published>2009-07-23T01:55:00.017+02:00</published><updated>2009-07-25T08:13:58.469+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-25T08:13:58.469+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><title>The joy of Silverlight 3 migration - no code required</title><content type="html">In my &lt;a href="http://stulic.blogspot.com/2009/07/migration-from-silverlight-2-to.html"&gt;previous post&lt;/a&gt;, I've showed how easy it was for me to migrate LOB application from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Silverlight&lt;/span&gt; 2 to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Silverlight&lt;/span&gt; 3, and now I would like to write about some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Silverlight&lt;/span&gt; 3 goodies that don't require coding at all:&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Better &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;XAP&lt;/span&gt; compression rate&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Silverlight&lt;/span&gt; 3 finally raised compression rate of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;XAP&lt;/span&gt; files, so in my case &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;XAP&lt;/span&gt; file was reduced for about 10% of its previous size, although I had to add new System.Windows.Controls.Input.dll (93 KB). Very nice. No need for manually hacking compression rate anymore. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;Assembly Caching&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is one of the features that is extremely useful even for very small projects. Basically, you can divide your code into couple of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;XAP&lt;/span&gt; files, for instance, third party libraries and your "changeable" code. Third party libraries can be cached, so when you change your code, only changed &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;dlls&lt;/span&gt; will be downloaded to your existing clients, reducing overall payload size.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;WCF&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;binaryHttpBinding&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is no reason to keep the old &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;WCF&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;basicHttpBinding&lt;/span&gt; now the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;Silverlight&lt;/span&gt; 3 is out. "Old" &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;Silverlight&lt;/span&gt; 2 sent text over wire, but now with just couple of web.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;config&lt;/span&gt; changes it is easy to setup &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;binaryHttpBinding&lt;/span&gt; for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;WCF&lt;/span&gt; services and experience better &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;WCF&lt;/span&gt; performances. Done. No turning back!&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Better font rendering&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's hard to miss this one as that was the major reason some designers didn't like &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;Silverlight&lt;/span&gt;. Finally, I am very happy that I can actually work with designers, though it looks like font rendering could be even better.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;VirtualizingStackPanel&lt;/span&gt; in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;ListBoxes&lt;/span&gt; by default&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I thought that I should do it by myself. But, hey... I get it for free :). In &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;Silverlight&lt;/span&gt; 3, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;ListBox&lt;/span&gt; has &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;VirtualizedStackPanel&lt;/span&gt; in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;ListBoxes&lt;/span&gt; by default, which practically means that only displayed items will be rendered, which increases performances on some forms. More details &lt;a href="http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingstackpanel(VS.95).aspx"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;New &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;MouseWheel&lt;/span&gt; event&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is a new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;MouseWheel&lt;/span&gt; event exposed (without JavaScript hack!), which can be used the same way it is used in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;WPF&lt;/span&gt; application. I guess I will have to refactor old &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;Silverlight&lt;/span&gt; 2 mouse wheel "quirk" code into the new simpler one.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;No need for extra rebuild in bigger projects&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;Silverlight&lt;/span&gt; 2 &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;XAP&lt;/span&gt; file becomes bigger (1MB+), I have often experienced a need for separate rebuild prior starting application in debug mode, which slowed the development. It looks like it's fixed now, and I can just press F5. What a relief ;).&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;Noteble&lt;/span&gt; bug fixes&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;ComboBox&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;DropDown&lt;/span&gt; height is finally fixed when using in cascading fashion, which caused problems in lots of LOB scenarios.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Some pitfalls&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Out of browser (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;OOB&lt;/span&gt;) feature doesn't work in combination with Assembly Caching in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;Silverlight&lt;/span&gt; 3, but I guess one can overcome this limitation by using Prism for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;Silverlight&lt;/span&gt; framework or MEF for even better dynamically loading of assemblies, only when needed.&lt;/div&gt;&lt;div&gt;I still don't get why some classes are sealed: Shape and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;HtmlElement&lt;/span&gt; come to my mind first. There are some very old forum posts on this topic &lt;a href="http://silverlight.net/forums/p/1334/245667.aspx#245667"&gt;here&lt;/a&gt;, but apparently, nothing has changed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These are some of my favourite &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;Silverlight&lt;/span&gt; 3 enhancements which don't require any coding. How about that :).&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/_M-sj01um8s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/1513055239977447418/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/07/joy-of-silverlight-3-migration-no-code.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/1513055239977447418?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/1513055239977447418?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/_M-sj01um8s/joy-of-silverlight-3-migration-no-code.html" title="The joy of Silverlight 3 migration - no code required" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/07/joy-of-silverlight-3-migration-no-code.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUMR3k7eSp7ImA9WxJbE0s.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-8831071465434871958</id><published>2009-07-21T15:59:00.020+02:00</published><updated>2009-07-23T16:44:46.701+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-23T16:44:46.701+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 3" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight 2" /><title>Migration from Silverlight 2 to Silverlight 3</title><content type="html">In one word: Smooth. In two words: Very Smooth! Read on if you want to know my experience of migrating &lt;a href="http://www.primetimetable.com/"&gt;http://www.primetimetable.com&lt;/a&gt; from Silverlight 2 to Silverlight 3:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 - Introduction&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I have rechecked information published by Silverlight team &lt;a href="http://msdn.microsoft.com/en-us/library/cc645049(VS.95).aspx" title="Ensuring That Your Silverlight 2 Applications Work with Silverlight 3"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 - Installation&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Downloaded and installed new stuff:&lt;ul&gt;&lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=143571"&gt;Visual Studio Tools for Silverlight 3&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24246"&gt;Silverlight Toolkit July 2009&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Step 3 - Visual Studio Conversion Wizard&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Started the old Silverlight 2 solution and converted it using Visual Studio Conversion Wizard.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Step 4 - Rebuild solution(s) and fix errors&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;As expected, Silverlight Toolkit controls needed the new Silverlight Toolkit July 2009 references&lt;/li&gt;&lt;li&gt;AutoCompleteBox has been moved into System.Windows.Controls.Input namespace as stated in the migration document.&lt;/li&gt;&lt;li&gt;WCF services showed errors even after updating them. Re-adding was enough for errors to disappear.&lt;/li&gt;&lt;li&gt;HierarhicalDataTemplate namespace for TreeView custom item template is now in System.Windows.Controls namespace instead of System.Windows.Controls.Toolkit.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Step 5 - Final touches&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Minimum runtime version for Silverlight 3 object tag needs to be: 3.0.40624.0&lt;/li&gt;&lt;li&gt;Silverlight Toolkit NumericUpDown control needed some fixes for background color (?).&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;b&gt;Step 6 - Testing&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After exhaustive testing I found it hard to believe that all code just worked: custom window, ribbon, other custom controls, mouse wheel, mouse right click and all other stuff just worked. I have also experienced some fixes to Silverlight 3 controls which bugged me previously. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Step 7 - Publishing&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nothing new here. That's it. It's live since Silverlight 3 release date :) here: &lt;a href="http://www.primetimetable.com/demo/"&gt;http://www.primetimetable.com/demo/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Conclusion:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Migrating from Silverlight 2 to Silverlight 3 took me only 1 hour(!) and I did it while I was on my vacation ;). This was the best upgrading experience I have ever had. I remember the old days when I tried converting Flash/ActionScript code to newer Flash version, and the code needed complete rewrite from the scratch - that's where I decided to completely stop developing Flash. Also, I remember converting Asp.Net 1.1 projects into 2.0 and later into 3.0 and 3.5. That was smooth, because the code basically remained the same, but there were always some gotchas and it took some time. Definitely, a pleasant surprise from Silverlight team. Thank you guys for great work!&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/f4h6_lMepHA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/8831071465434871958/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/07/migration-from-silverlight-2-to.html#comment-form" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/8831071465434871958?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/8831071465434871958?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/f4h6_lMepHA/migration-from-silverlight-2-to.html" title="Migration from Silverlight 2 to Silverlight 3" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><thr:total>4</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/07/migration-from-silverlight-2-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYAR389fip7ImA9WhVUEks.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-7221132532728523252</id><published>2009-06-30T20:57:00.007+02:00</published><updated>2012-05-17T16:15:46.166+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-17T16:15:46.166+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="School scheduling software" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term="school timetabling software" /><title>School timetabling just got better using Silverlight</title><content type="html">&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;
&lt;a href="http://2.bp.blogspot.com/_V-6V7Dh1uv8/Skpl08cmoHI/AAAAAAAABYY/Z8CL3a7qohU/s1600-h/prime-school-timetable-software-logo.gif"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5353203067336958066" src="http://2.bp.blogspot.com/_V-6V7Dh1uv8/Skpl08cmoHI/AAAAAAAABYY/Z8CL3a7qohU/s320/prime-school-timetable-software-logo.gif" style="cursor: hand; cursor: pointer; float: left; height: 78px; margin: 0 10px 10px 0; width: 200px;" /&gt;&lt;/a&gt;&lt;br /&gt;
It's a great pleasure to share with you the world's first online school scheduling/timetabling software done using Microsoft Silverlight. It's a software as a service available at: &lt;a href="http://www.primetimetable.com/"&gt;http://www.primetimetable.com&lt;/a&gt;.&lt;br /&gt;
Building this line of business application was a great experience as well as struggle, but as they say "all's well that ends well" :).&lt;br /&gt;
Hope I will have time to blog more about this experience.&lt;br /&gt;
In the mean-time, check it out, and let me know what you think about it.&lt;br /&gt;
I won't mind if you share this link with all your teacher/school master friends :), because school timetabling just got better!&lt;br /&gt;
Enjoy!&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/43A6HJSk_V4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/7221132532728523252/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/06/school-timetabling-just-got-better.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/7221132532728523252?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/7221132532728523252?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/43A6HJSk_V4/school-timetabling-just-got-better.html" title="School timetabling just got better using Silverlight" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_V-6V7Dh1uv8/Skpl08cmoHI/AAAAAAAABYY/Z8CL3a7qohU/s72-c/prime-school-timetable-software-logo.gif" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/06/school-timetabling-just-got-better.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQEQnw5cSp7ImA9WxJbE0s.&quot;"><id>tag:blogger.com,1999:blog-292871751890586106.post-2305516766282586194</id><published>2009-05-13T12:26:00.012+02:00</published><updated>2009-07-23T16:45:03.229+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-23T16:45:03.229+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="RIA" /><category scheme="http://www.blogger.com/atom/ns#" term="Presentation" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Silverlight web development presentation</title><content type="html">I have created a small Silverlight introduction presentation for Microsoft .Net User Group meeting in Belgrade, Serbia.&lt;br /&gt;&lt;br /&gt;Presentation is done and published via Google Docs here: &lt;a href="http://docs.google.com/Presentation?id=dc64vvk5_6gqb988dr"&gt;http://docs.google.com/Presentation?id=dc64vvk5_6gqb988dr&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Resources: Mike Taulty's presentation, Nikhil Kothari and others... Hope you like it. Feel free to use it.&lt;img src="http://feeds.feedburner.com/~r/Silverlighting/~4/cuw5qAlNSsE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://stulic.blogspot.com/feeds/2305516766282586194/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://stulic.blogspot.com/2009/05/silverlight-web-development.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/2305516766282586194?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/292871751890586106/posts/default/2305516766282586194?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Silverlighting/~3/cuw5qAlNSsE/silverlight-web-development.html" title="Silverlight web development presentation" /><author><name>Danijel Stulic</name><uri>http://www.blogger.com/profile/02964983060274639666</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="31" src="http://3.bp.blogspot.com/_V-6V7Dh1uv8/SX88_m5Xa0I/AAAAAAAABPY/-33Sw7XusVw/S220/danijel_stulic_silverlight.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://stulic.blogspot.com/2009/05/silverlight-web-development.html</feedburner:origLink></entry></feed>
