CLR via C#, Second Edition (Developer Reference)
All
Stack Overflow 53
This Year
Stack Overflow 1
This Month
Stack Overflow 1
I have recently done exactly this and found the two most valuable books to be:
and
Those should provide you a solid foundation and are both pitched perfectly for the experienced programmer. After that, you'll probably end up looking for something more specific to the technology you are working in - a detailed ASP.net book in your case - but I constantly refer to both of these, so it is money well spent imho.
The best book to get on the subject that I've read is Jeff Richter's book, CLR via C#:
http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632/ref=sr_1_1?ie=UTF8&qid=1252853101&sr=8-1-spell
If you want a VB.NET version, they have that for the first edition of the book, but I don't think there was enough interest to translate the book into VB.NET for the second version. If you want to really learn .NET, you should get comfortable with C#. In both languages, memory is managed by the CLR.
If you've got a C++ background and aren't afraid of pointers/stack/heap etc, then this book (CLR vi C#) will give you a superb understanding of .Net. It is very readable and will provide the foundations you need to be able to understand just about any new/up and coming .Net technology (e.g. Linq, extension methods, etc).
VS2008 express editions are available free here and are good enough for writing small apps.
The best answer I have ever heard about using the provided type aliases in C# comes from Jeffrey Richter in his book CLR Via C#. Here are his 3 reasons:
So there you have it. I think these are all really good points. I however, don't find myself using Jeffrey's advice in my own code. Maybe I am too stuck in my C# world but I end up trying to make my code look like the framework code.
Jeff Richter (author of CLR Via C#) explains why in this article on Safe Thread Synchronization.
Specifically, in that article the section "Why the Great Idea isn't So Great" answers your question.
It's actually a chapter from the book CLR Via C#.
In summary, having a private object as the "synclock" object allows your class to encapsulate and control any locking your class needs. Therefore regardless of how many clients use your class, locking is performed consistently and correctly.
I'm not going to be able to help out with your MonoDevelop question and XSP2 since I haven't used Mono, but I can help with some of your other questions.
When you have an asp.net app, what are the executable scripts (ie. .php for PHP)?
ASP.NET pages have a
.aspx
extension (although this is configurable). When a page is first requested the ASP.NET run-time parses an ASPX file and compiles a class from it. This compiled class is executed within the ASP.NET application run-time..cs
files are often associated with a.aspx
file by development environments like Visual Studio (this isn't a requirement though you can have.aspx
files independent of.cs
files). The.cs
file defines a class and the class compiled from the.aspx
file inherits (or is a sub-type of) this class.What would be the best way to set up my development box for asp.net development?
Again, I don't know about Mono, so I'll give my recommendation based on Microsoft tools. I'd recommend Visual Web Developer 2008 Express. It's available for free has a lot of the great features of the full-blown product and uses the built-in web server which makes configuring your environment less of a hassle.
I'd also recommend the Web Platform Installer. This will help download and install Visual Web Developer 2008 Express and get you up and running quicklu and easily with other things like the .NET Framework, IIS, SQL Server Express and even open source web applications. It's nice an easy to use.
Any general "non-newbieistic" help source apart from MSDN, on getting started with asp.net?
StackOverflow? :-)
If you're new to .NET I would recommend getting a good grasp on the language first and then ASP.NET specific stuff.
Best .NET books (in my opinion):
ASP.NET resources:
I'm a fan of the CLR via C#, by Jeffrey Richter, a man very, very wise in C#-fu.
Also, check out our very own Jon Skeet's C# in Depth.
Both are great reads.
For C#:
I found that only few developers know about this feature.
If you need a method that works with a value-type variable via some interface (implemented by this value type), it's easy to avoid boxing during the method call.
Example code:
IL code doesn't contain any box instructions:
See Richter, J. CLR via C#, 2nd edition, chapter 14: Interfaces, section about Generics and Interface Constraints.
See also my answer to another question.
I found CLR Via C#, by Jeffery Richter, to be very good. It discusses the CLR and framework in some depth and gives you a greater understanding of how to use various feature along with potential pitfalls.
The best book I have found for C# internals is CLR via C# by Jeffrey Richter.
Your first step is to find and understand the parallelism in your problem. It is really easy to write multi-threaded code that performs no better than the single-threaded code it replaces. "Patterns for Parallel Programming" (Amazon) is a great introduction to the key concepts.
Once you have a workable design, start reading the articles in the "Concurrency" topic in the MSDN Magazine archives (link), particularly anything written by Jeff Richter. Those will give you the nuts and bolts stuff on the threading constructs specific to Windows and .NET. (The multi-threading section in Richter's "CLR via C# (Amazon)is short, but very insightful - highly recommended.)