Technology Blog

Aug 30
51Y PtFdqNL._SL160_

I read the Wrox Professional Silverlight 2 for ASP.NET Developers book about six months ago as my first in-depth introduction to the world of Silverlight, so was looking for a book that could get me up to speed quickly on the new features of Siverlight 3. Having read plenty of Wrox books in the past I looked for their latest and happily found Wrox Silverlight 3 Programmers Reference which looked like it could help me catch up with the latest release.

When the book arrived two things struck me immediately, one it was a bigger book that I was expecting (see more about this later) and two it was in FULL colour. Now you may be saying “full colour, so what?” but believe me, having all the code samples look exactly like they do in Visual Studio, and full colour screenshots of Blend make a massive difference. Every developer I have shown the book to has immediately been impressed by the change and I can only hope this is the future for all technical books.

The book is written by five authors, which to be honest is something I try and avoid if possible when choosing a book as there always seems to be some consistency issues. However, I can appreciate the world of Silverlight requires a lot of skills and finding one person who has all these would be a tough call. I was impressed, however, to see the authors are all developers at Infragistics and it’s great to see such a high profile company committed to helping the developer community. I did notice a reasonable amount of what seems unnecessary repetition in different sections (for example two almost identical sections of Isolated Storage) but it’s always good to have concepts reinforced in a book this big.

There are a few notable chapters in the book that try to widen the understanding of developers about the roles and processes involved in a typical Silverlight development team; especially how designers, developers and integrators work together. There is also a great section on paper prototyping of Silverlight applications including the initial evolution of the design. However, it was strange to see no mention of the new Sketchflow features in Blend 3 and I can only assume these were not known about at the time of writing. Hopefully any future editions will rectify this.

Of course there are a few things, as in every book, I’d think about changing. Firstly the title “Wrox Silverlight 3 Programmers Reference” personally I think the name implies a relatively short book that can be used to dip in and out of when required. Now, it is possible to use the book in that way but really it is a complete guide to Silverlight from the basics to example applications, for someone with existing .net / c# skills. The other feature that was disappointingly missing from the book was any highlighting of the new Siverlight Features. I was hoping to be able to flick through the book, brush up on a few things and read up on the new features but there is no visual highlighting and sometimes even no mention that particular features have been introduced in Silverlight 3.

Overall, this is a really solid book for learning Silverlight development in c# and some basic skills in Blend. There are a few parts of the book that could do with more editing to make a more consolidated read and a few missing features (like Sketchflow and highlight new Silverlight 3 features) that could be added in future versions but none of these change the fact that if you are looking to learn Silverlight this is a great book to start with.

Get yourself a copy at Amazon

Jun 2

We have recently being doing a lot of work with Windows Azure and Silverlight and have found deployment one of the most involved aspects of Azure development. Building and deploying an Azure app currently takes up to 30 minutes and is not the simplest of processes so having to re-deploy every time you make a change to your Silverlight project can start to become a real pain.

So what’s the answer? One answer is to separate your Silverlight XAP file from the Azure project by adding your Silverlight XAP file to the Azure Blob Storage. You can then update your Silverlight host page to download the XAP file directly from Blob storage.

This means you can just upload the latest Silverlight XAP file to Blob Storage and be up and running in a few minutes.

Below is a quick tutorial showing you how to do this:

Step 1 – Getting your Silverlight application ready for external hosting

If you just upload your current Silverlight XAP file to Blob storage and try and include it in your page you will find the page shows the loading screen, right up to 100%, and then just sits there. This is because your Silverlight application needs to be told to allow it to be hosted on a different domain that the Silverlight XAP file is hosted on. Your Azure application will be on myname.cloudapp.net but your XAP file will be hosted at myname.blob.core.windows.net.

To set the Silverlight project to allow external hosting open the App.manifest file (found in “Properties” folder of your Silverlight project ) and add the “ExternalCallersFromCrossDomain” attribute to the xml as follows:

   1: <Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
   2:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ExternalCallersFromCrossDomain="ScriptableOnly"
   3: >
   4:     <Deployment.Parts>
   5:     </Deployment.Parts>
   6: </Deployment>

 

Step 2 – Uploading the new XAP file

Now build your Silverlight project in release mode and find where the XAP file in creates (usually in the ClientBin folder of your web role project). You need to upload this to your Azure accounts blob storage and the easiest way to do this is by using the “SpaceBlock” tool on codeplex:

http://www.codeplex.com/spaceblock

Download the source code for the latest release (0.2.6 currently) by going to the “Source code” tab in codeplex and clicking the “Download” link next the the latest release.

1

Unfortunately you have to build the application yourself from sourcecode as there is not a version available for download currently with Azure storage support. Once built look for the “CodePlex.SpaceBlock.UI.exe” file and run this. You will need to add your Azure storage account details and then you should be ready to upload the XAP file.

In SpaceBlock open your Azure account in the bottom pane and the location of your new XAP file you want to upload in the top pane:

2

Right  click on the root folder of your Azure storage, in the bottom pane, and click “New Folder”. Give the folder a name like “xap” (be aware use lowercase name, either SpaceBlock or Azure don’t like uppercase). Now with your new folder selected in the bottom pane, right click on your XAP file in the top pane and click “Transfer”. This will open the file transfer dialog where you click “Start Transfer”

3

Your XAP file will then upload to your Blob storage, however by default it will not be publically accessible which you will need it to be.

To make it publically accessible right click on the new folder you created in your Blob storage and click “Edit Azure Container Access” and finally tick the “Allow public access” checkbox.

Your XAP file is now all ready to be used in your Azure web role.

Step 3 – Updating the Siverlight plugin host page

The final step is to update the page that hosts your Silverlight control in your Azure webrole project. For this tutorial I will assume your are using the ASP.net Silverlight plugin control. You need to make two changes to the asp.net control, firstly change the Source attribute to point to your XAP file in the Blob Storage. To get the url for this right click on the XAP file in the bottom pane of SpaceBlock and click “Generate URL”. Copy and paste the url into your asp.net page.

Secondly you need to add the attribute HtmlAccess="Enabled" to the asp.net silverlight control. After both these changes your code should look similar to this:

   1: <html xmlns="http://www.w3.org/1999/xhtml" style="height:100%;">
   2: <head id="Head1" runat="server">
   3:     <title></title>
   4: </head>
   5: <body style="height:100%;margin:0;">
   6:     <form id="form1" runat="server" style="height:100%;">
   7:         <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
   8:         <div  style="height:100%;">
   9:             <asp:Silverlight ID="Xaml1" runat="server" Source="http://myname.blob.core.windows.net/xap/myappname.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" HtmlAccess="Enabled" />
  10:         </div>
  11:     </form>
  12: </body>
  13: </html>

Step 4 – Pulling it all together

Now if you build your Azure project in the normal way, and deploy it, you should hopefully find it is now reading the Silverlight XAP file from your Blob storage!

Next time you need to deploy your Silverlight application purely repeat Step 3 by uploading the new XAP file to the Blob storage.

Summary & Thanks

Hopefully you now see how easy it is to separate your Silverlight project from your main Azure project and you are ready to start saving deployment time. There are however a few downsides with this approach.

The speed of loading the XAP file from the blob storage is visibly slower than loading it from your azure web role, this is something we are happy to live with for the benefits it gives us.

Also by overwriting the old Silverlight XAP file with a new one you have no way to test a new deployment, as you would with the azure project. We worked around this by having the XAP file Blob storage URL as a setting in our ServiceConfiguration.cscfg file so that we could upload a to a new file and once checked change the ServiceConfiguration.cscfg setting to point to the new file. This required us to code the host asp.net to read from the ServiceConfiguration.cscfg file which we can change quickly without a new Azure deployment.

Thanks for this solution have to go to Yi-Lun Luo on this forum post which helped us solve our initial issues.

Mar 1

Web server backup: MozyPro vs JungleDisk

icon March 1st, 2009 by Brian Norman

logos

For a while now I have been using online backup for both our online windows web server, office file server and home desktop. I’ve used a range of products from the very cheap Carbonite to the reasonably priced MozyPro and now the new comer JungleDisk.

In this post Ill compare MozyPro and JungleDisk when used for backing up a web server. The comparison might be very different for desktop or network backups.

Why use online backup?

Our web server has been using mozypro for about a year now to host our clients web sites, as our hosting company still doesn’t offer their own backup solution.

Obviously backup of our databases and files is essential to ensure the safety of our clients data and websites so having a reliable and fast backup solution is essential. However remotely managing a tape backup solution, or paying a 3rd party to do this can be expensive, and getting data from tapes can take forever.

This is where internet backup solutions have become a sensible cost effective solution, files are remotely backed up and can be quickly and easily restore remotely with a few clicks.

MozyPro

As I said we are currently using MozyPro for our online windows web server backups. We backup about 12GB of data, with around 1GB file transfer a day and it costs around $120 USD per year. You basically pay Mozy for the disk space you use, there is no charge for setup or transfer of data.

MozyPro installs a windows client which you use to select the files you wanted backed up, when and how to back them up and various other options for encryption and alerts. The features we really use are:

  • Scheduling backups to run at non peak traffic times
  • Throttling bandwidth during peak times (used if backups are still running during peak times)
  • Bit level changes – it only backups the part of the file you have changed

The Good

  • Simple install and setup
  • Simple pricing structure and purchasing, expanding storage is pretty easy too
  • It “feels” like a single solution for backup
  • Can handle backup of sql databases using VSS
  • Nice online admin area for checking backup status, clients, billing and restoring files

The Bad

  • If you have a large collection of files to backup the configuration client takes ages to load and you see this for at least 5 mins:
    mozyprohang
    MozyPro have suggested ways to reduce this but I just don’t see why it shouldn’t work out of the box
  • For a European user, like us, the speed of uploads and downloads is not great. Im not aware of Mozy having an European data centres.
  • Backups just sometimes seem to hang and don’t work again without a reboot
  • No support for archiving backups (only available in enterprise which is an entirely different product)
  • Its not badly priced but could be cheaper

JungleDisk

JungleDisk have a very different business model to MozyPro, and the other online providers. They basically just sell you the backup software ($20 USD) and then you use (and pay separately) Amazons AWS online storage system to actually store your backups.

At first this seems a bit strange, and a step back from MozyPro, but once you look into it more things make a bit more sense. Essentially rather than creating their own storage system and having all the nightmares of supporting it JungleDisk are using the incredibly well designed and supported Amazon AWS system.

We have been using JungleDisk on our office fileserver for about 3 months.

The Good

  • Its cheaper than MozyPro, we backup 40GB total (about 1GB transferred per day) for $13 USD per month ($130 per year) so half the price of MozyPro
  • Its faster to transfer files than MozyPro as Amazon have a European data centre
  • You can use multiple data centres for ultra redundancy
  • The backup client software is quick to load and easy to use
  • Supports configurable archive backups allowing you to keep more than one version of a backed up file
  • Its never hung once during backup
  • Also supports backup of SQL with VSS

The Bad

  • Its not a “single solution” as it involved 2 companies which may make support more tricky
  • The Amazon AWS pricing structure is really complicated with charges for storage, transfer and querying the data. This can initially be daunting when working out your monthly costs
  • Bit level changes – these are available (in selected data centres) as an extra called JungleDisk plus for $1 per month, would be simpler if just always included but I guess this gives extra flexibility if you don’t need it.
  • Overall its just not a simple a solution, but does give the ultimate in flexibility

And the winner is….

Obviously this is not a simple competition and there are good reasons for using both solutions and I’d recommend you trying both for yourself before deciding.

Overall we will probably be moving all our backups to JungleDisk unless we find a new hosting provider with a better local backup solution. The main reasons are speed of transfers, reliability and value for money.

Syndication

Links

Archives

March 2010
M T W T F S S
« Aug    
1234567
891011121314
15161718192021
22232425262728
293031  

Other