I’m a programmer with high knowledge of Delphi and Borland’s tools. I’m currently in a turn over learning C# and .NET.
I’m planning a total rewrite of my commercialized application.
With all thoses technologies available with Microsoft tools, I’m totally lost.
Which way to go? WinForms? WPF? WCF? Asp.NET? Using Microsoft Ajax? JQuery? NHibernate? Strong Typed Datasets? S#arp? Castle? Rhino?
I know all of thoses technologies are not mutually exclusive and compatible, but I would like to know which combinaison are, according to you, the best in the .NET world.
In a nutshell, my app is a database application. I need reporting and the ability to send custom strings to label/ticket printers. In one specific section of the app, I need some graphic manipulation. Like drawing an image and the ability to do mouse operation on this image like trapping mouse up/down/moves. Nothing really advanced, but it’s needed. I also need some features of my app to be available on the web…
If you have any advices, tricks, tips, success stories… I really want to get my hands dirty at .NET but I’m having 1G headakes a day reading all the stuff available.
Thanks.
From what you’ve provided in terms of current-implementation details so far it sounds like you’ll want to focus on a desktop (not web) application; and provided that your customers don’t object to installing the latest .NET framework then you should focus on using the .NET 3.5 SP1 tools (or even the 4.0 framework, if your expected ship date is ~6 or more months out).
The deciding factor that you’ve mentioned is peripheral support; namely being able to print to printers. Web-technologies are great for replacing applications to a degree, but peripheral support isn’t their strong suit. They might work if you can generate print documents and essentially just “print the page” to the printers, but if you need to do any low-level communication with the printers then a rich-client application is still the powerhorse.
That said, rich-client applications can blur the lines. ClickOnce deployment can handle distributing updates for the application and WebServices can allow you to centralize certain logic).
As for specific technologies; it depends what you’re clients will have installed and what your needs are. WinForms will be supported for a fair while yet, but WPF appears to be the path forward; it’s seeing ever-increasing adoption and Microsoft is proving it as a serious technology (and not just eye-candy) in VS2010 and other new products. WCF is essentially a revolution of .NET, while Microsoft markets it as the new way to do web-services or as a replacement for existing messaging technologies (more of a wrapper really) the fact is that it brings with it a slew of features and productivity enhancers.
As for the data-layer stuff: ORM’s are large and powerful, but also require knowledge to work with properly. If .NET 4.0 is a possible target for you then you can look at EF4, Microsoft’s official ORM (the current version isn’t quite fully-baked). NHibernate is a mature and stable option as well and provides lots of resources. Typed-DataSets are getting fairly dated though, and are being looked-down upon more and more often.