Advanced Topics in C#
If
you decide that you want to understand all the nooks and crannies of
C# before going on to create applications, you might consider reading
a more advanced guide or a reference work on the language.
O'Reilly offers two choices: Programming
C#, Second Edition, is my more advanced book, and
C# in a Nutshell, by Peter Drayton, Ben
Albahari, and Ted Neward, is a comprehensive reference work. The
difference between Programming C#, Second
Edition, and Learning C# is that
Programming C# was written for experienced
object-oriented programmers and does not spend as much time on the
fundamentals. In exchange, this somewhat longer book does go into
more detail and actually gets into the process of developing
applications for the .NET platform.
You'll find that all of the material covered in
Learning C# is also covered
in the first twelve chapters of Programming C#,
Second Edition. You may want to skim these chapters anyway, both for
review and because some advanced topics do appear in these early
chapters.
The next four chapters of Programming C# provide
an overview of both
ASP.NET and Windows
Forms, as well as ADO.NET. ASP.NET is used for programming
web applications and web services, while the Windows Forms technology
is used to program Windows applications. ADO.NET is the .NET
technology for interacting with databases.
The final part of Programming C# covers advanced
topics in .NET programming such as assemblies, versioning, attributes
and reflection, marshaling and remoting, threads and synchronization,
streams, and interoperating with COM.
Assemblies are
the basic unit of compilation. The chapter on assemblies and
versioning addresses issues that arise when you create large
commercial applications. You'll find information
about private and shared assemblies, as well as an overview of how
you manage the release of multiple versions of your program.
Attributes are
metadata (data about your program). There is no coverage of
attributes in Learning C# because this is an
advanced topic. However, attributes and custom attributes allow you
to control how your program is processed by the tools available in
.NET. Reflection is the process of a program examining itself (or
another program), and it allows you to discover, at runtime, the
methods and properties of an object that was not known at compile
time.
Threads are created
when you want a program to do two things at once. When you have more
than one thread operating in your program, you must control
synchronization (making sure that access to your data is mediated so
that one thread does not corrupt the data created in a second
thread). The chapter on threading teaches you how to take control of
this powerful aspect of .NET and create programs that are highly
efficient.
Marshaling is the
process of sending an object from one process or computer to another,
which allows you to share objects across program boundaries. Remoting
is the process of calling a method in a different program. These very
advanced topics allow you to build highly distributed programs.
Streams allow you to
read and write data both from a file and across the network. The .NET
Framework provides extensive stream support, including support for
reading and writing data across the standard web protocols such as
HTTP.
Finally, many companies have extensive libraries of objects created
in COM, the earlier Microsoft technology for building classes and
controls. The chapter on COM in Programming
C#, Second Edition, teaches you how to import these
controls and DLL files into your .NET application (or export .NET
controls to COM) to preserve your investment.
If you decide that you want to develop expertise in integrating COM
with .NET, take a look at Adam Nathan's
.NET and Com (Sams). I can't
think of a more definitive book on this difficult topic.
There are a couple of other excellent books that provide an overview
of .NET programming as well. Certainly take
a look at Jeff Prosise's Programming
Microsoft .NET (Microsoft Press) and
also
Developing Applications with Visual Studio .NET
by Richard Grimes (Addison Wesley). Prosise and Grimes are two of the
best writers in the field, and their books are very valuable.
If you want to go beyond the basics of .NET programming and get deep
into the internals, there is no better book than Applied
Microsoft .NET Framework Programming by Jeffrey Richter
(Microsoft Press). Richter is a phenomenal writer, and his chapter on
delegates alone is worth the cost of the book.
Another key topic in .NET programming is security. For the definitive
word on .NET security, you'll want to buy
.NET Framework Security by LaMacchia et al.
(Addison Wesley).
|