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). |