Silverlight 2: migrating from alpha to beta 1
Today I had to migrate a Silverlight Alpha 1.1 project to Silverlight 2 beta 1 for a client.
As we had to expect there are a lot of changes!
First thing to notice: after installing Silverlight 2 Tools for Visual Studio 2008 you won't be able to open your Silverlight 1.1 projects in VS2008, you have to migrate.
The best way is to create a new Silverlight application and
copy your old files there, then this article will be a huge
help to fix your issues:
MSDN: Breaking Changes in Silverlight 2
http://msdn.microsoft.com/en-us/library/cc189007(vs.95).aspx
Here are some of the changes I had to deal with:
- HtmlDocument.GetElementByID -> HtmlDocument.GetElementById
- System.Windows.WebApplication.RegisterScriptableObject -> HtmlPage.RegisterScriptableObject
- System.Windows.WebApplication -> System.Windows.Application
- [Scriptable] attribute -> [ScriptableType] for class, [ScriptableMember] for methods
And the one who surprised me the most:
Web Services
It is said that you have to regenerate your Web Service
client proxies, but when looking for "Add Web Reference" in
VS2008, I don't find it!! I just have "Add Service
Reference" which is WCF for me. For ASP.NET 3.5 projects,
you have both "Add Service Reference" for WCF and "Add Web
Reference" for Web Services.
I know that Silverlight 2
supports both WCF and Web Services, so where the hell is
"Add Web Reference" ??
Answer is: use "Add Service Reference"!
Calling a Web Service in Silverlight 2 is very similar to
calling a WCF Service, that means that you have to specify binding and endpoint.
Second surprise:
all web service calls must be asynchronous!
You must implement the async pattern, that surprised
me at first, but now I found that this is not a bad thing
and just requires 2 or 3 lines of code, so get used to
it!
For syntax and code details I invite you to
read this very good post :
Calling web services with Silverlight 2
http://timheuer.com/blog/archive/2008/03/14/calling-web-services-with-silverlight-2.aspx