I am interested in trying out Silverlight, but I wonder about its capabilities. For example, I know it supports C#, but does it support all C#? Can I do anything with it, which I can do with normal C# for example? Are there limitation, would I for example be able to use any graphic engine/framework already written for C# or is there something else I should know before getting enthusiastic about it?
You are not limited in terms of C# but your will need to learn about WPF to use Silverlight.
The short answer is that Silverlight is a reduced version of the .NET Runtime. Therefore much of the .NET library isn't present. Don't confuse C# with the .NET Runtime though.
Also, you might want to look up QuakeLight to see what people are doing with Silverlight and alternative rendering engines.
There's a very similar question here: http://stackoverflow.com/questions/564106/net-runtime-silverlight-runtime/564113#564113
I don't think you can make direct data dips via Silverlight. You are expected to go through some API on the server side to get your data.
See this post on how databinding works: http://silverlight.net/learn/tutorials/sqldatagrid.aspx
The .Net framework has been trimmed a bit, and there are limits to the IO you can do. I use it as a front end to my Linux mono server, where all the real programming is done.
It doesn't have to do with the language (C#) restrictions. Its limitations are a matter of security and data accessibility. Silverlight 3 has made some great improvements concerning data accessibility (database access) over Silverlight 2. However, there are things (like getting full listings of a directory's contents) that it doesn't allow for security reasons.
Yes, it supports all of C#. In fact, it uses the same C# compiler as desktop versions of .NET. However, you target a completely different runtime and .NET Framework which are basically subsets of the desktop CLR and .NET framework.
There are certainly limitations as compared to the desktop CLR and desktop .NET Framework. Among them:
- The Silverlight runtime is smaller, so certain functionality isn't there.
- Silverlight apps are sandboxed inside browser plugins and thus are limited in how they can access the file system, the network, the display, and other resources.
But there are also certain key advantages over the desktop .NET Framework including:
- Silverlight apps have certain deployment advantages (like other web apps).
- Silverlight runs on macs.