How to learn applied .NET from top to bottom?
January 25, 2007 9:13 PM   Subscribe

Looking for resources on specific programming topics, with a particular teaching methodology (basically, applied examples and real-world walkthroughs). Some of the topics are C#-specific. Some are more general, but would preferably be taught from a C# (or at least .NET) perspective.

A) The resources would preferably be in book form, however I'll take anything that fits further criteria.

B) If I need to refer to several resources to learn what I want to about one topic, that is OK - as long as the resource doesn't confusingly mingle the topic material with other material.

C) *Very* important is the teaching style. I'm *not* looking for a syntax reference, or simple "Hello World" examples on how to use each of the language features, etc., that I want to learn about. For the most part, I am interested in learning how these features can be applied from the ground up to solve real-world problems; and how to identify how each feature can be helpful in solving such problems.

D) Any text will make certain assumptions about the prior knowledge and experience of its readers. Ideally, these resources would make assumptions that are as close as possible to my own knowledge and experience.
1. I have quite a lot of real-world experience with C++ (but little with multithreading, network communication, or UIs).
2. I have written some small- and medium-sized tools in C#, with and without simple GUIs.
3. I have done some (annoying) work in managed C++, bridging a C# application with unmanaged C++, both static and dynamic libraries.
4. I know some basic principles of multi-threading, but have little hands-on experience with it.
5. I have only implemented simple GUIs, and the few I have made from scratch have been C#.
6. I have not substantially utilized any of the "higher-level" features of C# in my code (attributes, delegates, etc.).
7. I have only just started working with the new features in C# 2.0. Basically, all I have used are the built-in generics classes.
8. My Managed C++ experience is in VS7, but I have recently ported some of my existing code into VS8, which exposed me to some of the new keywords and syntax rules in MC++ 2.0.
9. Most of my .NET programming experience has felt like I was writing a C++ application with C# syntax. I don't know how to properly use the extra features that C# offers, so I stuck with what I know, while enjoying the streamlined development process.

E) That being considered, here is my list of topics:
1. General best practices for C# (from the ground up).
2. Design patterns in C#.
3. The features of C# that set it apart from languages like C++. Including: attributes, delegates, events, etc.
4. The new features/syntax of C# 2.0.
5. Managed C++, with a focus on how to properly use it to bridge unmanaged C++ to C#.
6. The new features/syntax of Managed C++ 2.0.
7. General multithreading resources, from the ground up (preferably from a C# perspective).
8. Multithreading specifically in C#.
9. C# UIs, from the ground up. Ideally, would move on to available open source extension packages such as DotNetMagic.
10. How multithreading can/should be applied to UIs (preferably from a C# perspective).
11. General socket and network communication resources, from the ground up (preferably from a C# perspective).
12. Sockets and network communication specifically in C#.

F) When I say "from the ground up", I mean, from the basics and *all the way up*. Basically I want these resources to provide me with the power to work on my own to gain the experience necessary to become a "guru" in these areas. Again, if it takes several resources to provide all of this for one topic, that's not a problem.
posted by debacle to Computers & Internet (2 answers total) 2 users marked this as a favorite
 
Pro ASP.NET 2.0 in C# 2005: From Novice To Professional, published by apress.

Just finished two C# ASP.NET classes, and this was the text book. It starts off with an introduction to C# and .NET, explaining why they were created and what problems they solve. It then dives into site fundamentals, server configuration, errors, navigation, ADO.NET, etc.

This of course is more .NET information that C# theory, but a very nice book. (and it comes in PDF form when you buy the physical book, which comes in handy)
posted by niles at 9:31 PM on January 25, 2007


For the stuff you're looking for, I would recommend looking at books from the Cookbook series (i.e., ASP.Net Cookbook). They typically detail specific real-world scenarios, and provide examples and code on how they can be built.

As far as some of your questions go:

E.2) Ideally, design patterns are language agnostic. C# is a modern, feature-rich language, which means that it is not going to limit you. I actually learned design patterns from a PHP 5 book (I'm sometimes a PHP programmer) but once I got what a specific pattern was about, I was able to implement it in C#. (I've done a factory pattern, a singleton pattern, and a visitor type pattern).

E.5) I may be wrong, but it doesn't seem like using Managed C++ to bridge unmanaged code is that common. Instead, there is a thing called a p/invoke, which allows you to call into unmanaged .dlls from managed code. As an example, in a project I was working on recently, I needed to play a sound. This is done with a function called PlaySound that lives in winwm.dll. The code to import this function is as follows:

[DllImport("winmm.dll")]
private static extern bool PlaySound( string lpszName, int hModule, int dwFlags );


It can then be called just like any other private static method my class has. A great resource for this is Pinvoke.net

E7) The best resources I've found on multithreaded stuff have been searching around on MSDN (there are articles on there about it), google, and The CodeProject. The CodeProject is in general the best site I've come across for learning how to do cool stuff in C#.

Anyway, I know you're looking for books, but I thought I'd see if I could get you started a little bit. Really your best bet for a lot of this stuff is to a) look on amazon, read reviews and b) look around for open source projects in C# and just try to read through the code to get a feel for it. I also strongly recommend the CodeProject (no affiliation), though, as they have fairly thorough and well-written articles about a wealth of topics.
posted by !Jim at 10:13 PM on January 25, 2007


« Older I can't stop thinking about death.   |   Does any other company make a Mac-capable computer... Newer »
This thread is closed to new comments.