Notes
Outline
What is .NET?
Kevin Grossnicklaus
kvgros@sseinc.com
www.SSEinc.com
Audience?
Languages?
C++
Java
Visual Basic
Platforms?
I486 (80x86 = ~142 Instructions)
Win32 (MFC Layer)
Gratuitous Java Slide
Java = 1 Language (Java)
Java = Many Platforms
Virtual Machine
Java code compiles to byte-code
Byte-code=Platform Neutral Assembly
Virtual Machine implemented on many platforms
Byte-code runs through VM and is converted to assembly at run-time (each time)
Balancing Microsoft Slide
History
MS-DOS
16 Bit Windows
Win32 (Win95,98,ME,NT,2000,XP)
MFC
Languages
C++
VB
MS = Many Languages
MS = 1 Platform
Why Change?
Intel 64-Bit Itanium
Varying Development Paradigms
C++ vs VB vs ASP/Web
Language Limitations
OO vs VB
Interoperability vs COM
Visual J++ vs. Sun lawsuit
Services
COM, Memory, UI, Graphics, Etc…
Standards
XML, SOAP, Etc…
Where did they begin?
Who?  Visual J++ Team
Experience with VM’s
Anders Hejlsberg
What? NGWS -> .NET
Common Language Runtime (CLR)
NGWS
Equivalent of a Virtual Machine
JIT Compilation and Compile Once
A New Language: C#
CLR Features
Understands Microsoft Intermediate Language (MSIL)
JIT
Enhanced Typing Support
Garbage Collection
Language Neutral
Single Inheritance
100% Object Oriented
Structured Exception Handling
Simplified Deployment and Maintenance
Full and Compact versions
Secure Execution Environment
Targeted Compilation per Platform
Reflection
C#
Written in conjunction with the CLR
Java/VB Hybrid:  Very simple and powerful development language incorporating years of MS language development lessons learned
All .NET base classes were developed in C#
Base Classes = .NET Framework
Written in C# on top of CLR
Entire development platform presented in a well organized set of namespaces.
All functionality of Win32 API exposed
Available to all CLR based languages as an organized library of classes and interfaces that provides very powerful tools to do about anything
Base Class Sample
System.Data
System.Data.SQLClient
System.Data.OleDB
System.XML
System.Web
System.Web.UI
System.Threading
System.Security
System.Net
System.Diagnostics
System.CodeDOM
System.ComponentModel
Language Neutrality
Current languages that offer compilers that compile to MSIL and support the full .NET Framework:
Best Language for .NET
Whatever language you know best and are most productive with.
All languages that compile to MSIL are bound by the same constraints
Some languages may produce a little more optimized MSIL but basically they are all identical
Learn the Framework and the language becomes a syntax
Assemblies
Assembly = Entire Application written in .NET
A collection of files
Side by Side deployment
Everything needed by the assembly is included in the assembly
No More “DLL Hell”
Nothing is Registered, No More COM
Self Describing Assemblies
XML Manifests describe all files and versions required for app to run
All files included in a single directory with a manifest describing what should be there
Code level security
Public/Private Key Descriptions
Uninstall = Delete Directory
Implications
Any language that compiles to MSIL has access to ALL CLR features and base classes
Any class written in one language can use/inherit from/extend any class written in another language
Simplified Deployment
Tons of other major development paradigm implications
Major Components of the Base Classes
WinForms
WebForms
Data
ADO.NET
XML Web Services
WinForms
Visual Basic type RAD for “Thick” Apps
Replaces Win32 and MFC
New Features
Forms Inheritance
Same Forms Designer for Any Language
Easier to include and extend 3rd party controls or “widgets”
Better OO Design
WebForms (ASP.NET)
Web Development Paradigm Similar to VB Type Development
Replaces Classic ASP
New Features
Output Caching
Server Side Controls
WebControls = ActiveX Controls for the Web
Code Behind Seperation
Databind to Anything
DataGrid Controls
Powerful Security Infrastructure
EVENTS in the web
ADO.NET
Database Neutral Data Classes
Data = XML = Data = XML
Designed for the disconnected development paradigm surrounding the web
WebServices
Remote procedure calls to web servers hosting “services”
RPC over the web through XML
Base classes provide complete support
Simple Object Access Protocol (SOAP)
Web Service Description Language (WSDL)
VS.NET Generates Simple Object Proxies
Visual Studio.NET
Unified IDE for all languages compatible with CLR
Built-in, “Dynamic” Help
Everything compiles into MSIL and is easily packaged into assemblies
Fully customizable and extensible development environment
EXTREMELY POWERFUL DEBUGGING FOR ALL MANAGED CODE
Step seamlessly between components written in any language
VS.NET Cont…
Immediate feedback of errors
Similar to MS Word Spellcheck
Powerful WinForms and WebForms Development Environment
All languages extensible through custom developed Attributes
Integrated Visio 2002 modeler/designer
All database design tools built in
Custom XML designer
Easily Develop Against Web Services
Powerful Server Explorer
Many, Many, MANY other features
Summary
All Microsoft Products will eventually be ported to the .NET Framework
Support for older technologies will slowly fade
MS has made a HUGE investment in this change in direction
Port the CLR to other platforms?
CLR will be standard in any new OS
Want to know more?
www.msdn.microsoft.com
Search the web…find plenty of info J
Books
VB.NET Bible J
User Groups
St. Louis .NET Users Group (www.stlnet.org)
Questions?
kvgros@SSEinc.com
Ad Hoc Demo J