.NET UPDATE--brought to you by the Windows & .NET Magazine Network http://www.winnetmag.com
~~~~ THIS ISSUE SPONSORED BY ~~~~
PacWest Security Road Show http://www.winnetmag.com/roadshows/security2003
* .NET FRAMEWORK BASICS: THE RELATIONSHIP BETWEEN THE CLS AND CLR In my January 9 column ".NET Framework Basics: the Common Language Runtime" ( http://www.winnetmag.com/articles/index.cfm?articleid=37657 ), I examined the role of the Common Language Runtime (CLR) in the .NET Framework and how CLR's developers intended CLR to make .NET development language-agnostic. The CLR has this capability because of the Common Language Specification (CLS), a set of rules that languages must follow for full compatibility with .NET. The CLR and the CLS are not synonymous. This column will explain the relationship between these two parts of the .NET Framework's support for language diversity.
The CLR is the runtime environment for executing .NET applications. As all runtime environments do, the CLR manages the way applications execute by providing services that the languages in which the programs are written expose. The syntax that accesses runtime environment services varies with the language, but the services themselves don't change. Not all languages can use all the functionality in the CLR because getting optimal functionality from the CLR would entail writing the languages with CLR compatibility in mind.
However, a language doesn't need to support all the features in the runtime environment. The CLS's role is to define a minimum subset of features that languages must support to work with .NET applications. For example, although the CLR supports both signed and unsigned integers, languages conforming to the CLS are required to support only signed integers. (In binary notation, an unsigned integer's most significant bit is data, not a positive or negative sign; a signed integer's most significant bit is its sign. Therefore, unsigned integers are always positive. End of digression.) The rules defined in the CLS apply to features visible outside the assembly (or, if you'll recall, equivalent to a DLL or EXE), where they're defined. For example, the CLS requires that public names--names visible outside their assembly--be case insensitive because some languages don't distinguish between FILENAME, Filename, and filename. These rules keep .NET assemblies from conflicting with one another. (For a complete list of CLS compliance rules, go to http://dotnet.di.unipi.it/EcmaSpec/PartitionI/cont10.html#_Collected_CLS_Rules_1 .)
Again, CLS compliance rules apply only to public features. Features contained within an assembly and not directly addressable by other assemblies don't have to follow these rules.
CLS-compliant languages are either consumers or extenders. Consumers can use any CLS-compliant type: They can call methods, create instances of CLS-compliant types, read and modify fields, and so forth. Extenders are consumers that can also extend base classes, define new types, and otherwise extend the framework. Of Microsoft's CLS-compliant languages, Visual Basic .NET, C#, and C++ with Managed Extensions are extenders, and JScript .NET is a consumer. Not all languages that you can use in .NET applications are, strictly speaking, .NET languages. For example, a third-party tool that creates a .NET component from a Perl class lets .NET applications call Perl modules, but Perl is neither a consumer nor an extender.
In short, the CLR defines all the capabilities available to applications and modules written for the .NET Framework. The CLS defines the set of rules to which languages must conform to work in this framework.
* CATCH THE MICROSOFT MOBILITY TOUR--TIME IS RUNNING OUT! This outstanding seven-city event will help you support your growing mobile workforce. Industry guru Paul Thurrott discusses the coolest mobility hardware solutions around, demonstrates how to increase the productivity of your "road warriors" with the unique features of Windows XP and Office XP, and much more. You could also win an HP iPAQ Pocket PC. There is no charge for these live events, but space is limited, so register today! Sponsored by Microsoft, HP, and Toshiba. http://www.winnetmag.com/seminars/mobility
* NEW! NEWS, TIPS, AND MORE TO KEEP YOUR NETWORK HUMMING Networking UPDATE brings you the how-to tips and news you need to implement and maintain a rock-solid networking infrastructure. We'll explore interoperability solutions, hardware (including servers, routers, and switches), network architecture, network management, network security, installation technology, network training, and WAN disaster recovery. Subscribe (at no cost!) at http://www.winnetmag.com/email/networking
* .NET DEVELOPERS: REFER TO A SOURCE CODE LIBRARY FMS announced Total .NET SourceBook, a source code library software program that provides samples, tips, and how-to code for Visual Studio .NET developers. The resource includes thousands of lines of C# and Visual Basic .NET code. When you start the Total .NET SourceBook software program, your PC automatically connects to Code WebService, which downloads new code, articles, and tips to your database. FMS licenses Total .NET SourceBook on a per-developer basis. Pricing is $399 per license, $1299 for 5 licenses, and $3999 for 25 licenses. Contact FMS at 866-367-7801. http://www.fmsinc.com/dotnet/sourcebook
* LEARN MORE ABOUT C++ .NET Prentice Hall PTR released "Visual C++ .NET: A Managed Code Approach for Experienced Programmers," a book by Harvey Deitel, et al. The book is for C, C++, or other high-level language programmers who want to learn about key Visual C++ .NET concepts. The book applies the Live-Code approach to teaching programming. The 1000-page book costs $53.99. Contact Prentice Hall PTR at 800-282-0693. http://www.phptr.com
* ABOUT THE COMMENTARY -- email@example.com
* ABOUT THE NEWSLETTER IN GENERAL -- firstname.lastname@example.org (please include the newsletter name in the subject line)
* TECHNICAL QUESTIONS -- http://www.winnetmag.com/forums
* PRODUCT NEWS -- email@example.com
* QUESTIONS ABOUT YOUR .NET UPDATE SUBSCRIPTION? Customer Support -- firstname.lastname@example.org
* WANT TO SPONSOR .NET UPDATE? email@example.com
This biweekly email newsletter is brought to you by Windows & .NET Magazine, the leading publication for Windows professionals who want to learn more and perform better. Subscribe today. http://www.winnetmag.com/sub.cfm?code=wswi201x1z
Receive the latest information about the Windows and .NET topics of your choice. Subscribe to our other FREE email newsletters. http://www.winnetmag.com/email