For the past 5 months or so, I've spent time learning C# using Andrew Troelsen's book and getting familiar with stuff in the .NET 4 stack... bits of ADO.NET, EF4 and a pinch of WCF to taste.
I'm really interested in graphics development (not for games though), which is why I chose to go the .NET route when I decided choose from either Java or .NET to learn... since I heard about WPF and saw some sexy screenshots and all. I'm even almost done with the 4 WPF chapters in Troelsen's book.
Now, all of a sudden I saw some post on a forum about how "WPF was dead" in the face of something called Silverlight. I searched more and saw all the confusion going on at present... even stuff like "Silverlight is dead too!" wrt HTML5.
From what I gather, we are in a delicate period of time that will eventually decide which technology will stabilize, right?
Even so, as someone new moving into UI & graphics development via .NET, I wish I could get some guidance from people more experienced people. Maybe I'm reading too much? Maybe I have missed some pieces of information? Maybe a path exists that minimizes tears of blood?
In any case, here is a sample vomiting of my thoughts on which I'd appreciate some clarification or assurance or spanking:
My present interest lies in desktop development. But on graduating from college, I wish to market myself as a .NET developer. The industry seems to be drooling for web stuff. Can Silverlight do both equally well? (I see on searches that SL works "out of browser").
I have two fair-sized hobby projects planned that will have hawt UIs with lots of drag n drop, sliding animations etc. These are intended to be desktop apps that will use reflection, database stuff using EF4, networking over LAN, reading-writing of files... does this affect which graphics technology can be used?
At some later point, if I become interested in doing a bit of 3D stuff in .NET, will that affect which technologies can be used?
Or what if I look up to the heavens, stick out my middle finger, and do something crazy like go learn HTML5 even though my knowledge of it can be encapsulated in 2 sentences?
Sorry I seem confused so much, I just want to know if there's a path of least resistance that a newcomer to graphics-technology-adoption can take at this point in the graphics world.
I understand your confusion (having been there myself), but first let me start by saying Silverlight and WPF are not dead yet! And you would not be wasting your time in learning either!
There are quite a few (terrifying) posts to the contrary, but if you keep searching you'll also find those that support WPF/Silverlights extended life in development, one for example is http://www.wpfblogger.com/post/Silverlight-is-not-dead-clarifies-Bob-Muglia.aspx (this is a nice summary of what Bob Muglia said - there's a link to his full statement). Another assurance is that Microsoft has invested quite a bit in WPF themselves in designing VS2010 in it, so its not likely that they're about to give it the boot.
As for your hobbies and projects, if you intend on sticking to desktop clients I recommend WPF of which Silverlight is a subset, so you'll find that the transition isn't anything major on the face of it (there's a few more controls and such in WPF that aren't in silverlight and gives more flexibility for desky stuff [here's an article you can read if interested - http://briannoyes.net/2010/06/01/WPFNdashIrsquomNotDeadYet.aspx ]), this should be able to handle most of your stuff including playing with 3D objects (to create them I'd use something like Blender 3D, its free but the learning curve for a first timer is kinda steep).
Lastly, it probably wouldn't be a bad thing to learn HTML5, but booting out Silverlight to do it probably isn't the way you want to go. There's bound to be ways in which Silverlight will enrich the browsing experience even with pages using HTML5 in the future, so don't kick it all out yet :)
My present interest lies in desktop development. But on graduating from college, I wish to market myself as a .NET developer. The industry seems to be drooling for web stuff. Can Silverlight do both equally well? (I see on searches that SL works "out of browser").
The industry likes the web because deployment is easy and you usually don't have to support users running different versions of your application. Still, are reasons to choose WPF over SL (performance, things not yet implemented in SL). I'd say stick with learning XAML + C#. You'll be able to leverage it for WPF, Silverlight, and Windows Phone programming.
I have two fair-sized hobby projects planned that will have hawt UIs with lots of drag n drop, sliding animations etc. These are intended to be desktop apps that will use reflection, database stuff using EF4, networking over LAN, reading-writing of files... does this affect which graphics technology can be used?
Either way, database access should be done through services (not directly from a WPF app). There will be differences, but they should be mostly similar.
At some laaaater point, if I become interested in doing a bit of 3D stuff in .NET, will that affect which technologies can be used?
Silverlight 5 will have 3D support. Beta should be announced by this year's MIX conference and released by the end of the year. In the meantime, you can check out the WPF 3D API.
Or what if I look up to the heavens, stick out my middle finger, and do something crazy like go learn HTML5 even though my knowledge of it can be encapsulated in 2 sentences?
While SL is nothing like web programming, I think there is an expectation in the market that SL programmers should have a little ASP.NET (Web Forms or MVC) experience too. (Because, hey, you should know how to work with the environment its hosted in.) I think HTML5 is still a ways off since HTML5 applications will require users to have the latest browsers which are just coming out. Still, couldn't hurt to know it :-)
Fear not, WPF and Silverlight is going to be strong in Line of Business applications, there are some serious security features added even in SL5 and it ties in nicely with all the existing Microsoft infrastructure most corporations have.
It's a similar thing to all the bloggers crying the end of Flash after seeing some planned HTML5 features (and yet not even the codec for the video tag is settled), but upgradeable runtimes to support any browser (IE6 corporate market share is still sky high...) and the really nice Microsoft developer stack (VS + Blend) makes these technologies more resilient than people only using cutting edge technology would think.
Having used Flash for years before Silverlight I can tell you that developing custom UI with SL is a really pleasant experience, so if you're less into multimedia and games (which are areas where Flash still has edge), this is the place to be for you.
And there's Windows Phone 7, with the Nokia strategic partnership I doubt no one would want to get anything developed.
These being said, if you have the chance don't be afraid to venture off to learn some completely different programming languages, for me personally learning Ruby on Rails changed the way I look at backend development, and some of these eye opener ways of doing things more efficiently transfer nicely between environments.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With