SlideShare a Scribd company logo
Get the Gist: 
.NET 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
History 
• MS was on a path to embrace Java 
as the technology for programming 
its legacy component technology 
COM. MS called it J++. 
• Why MS developed .NET: 
– Presumably because of lawsuit with 
Sun, MS abandoned J++ but took 
ideas learned from Java and made 
them into .NET. 
– MS wanted hardware independence 
for coming mobile, cell, Xbox, and 
other devices. 
– C++/MFC wasn’t competitive against 
new breed of languages (Java). 
– Expensive to maintain multiple 
development environments: Interdev, 
C++, VB, etc. 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
Today 
• .NET has virtually replaced 
C++, MFC, and COM for new 
development. 
• Much of the Windows API is 
exposed in .NET. Some aren’t 
even exposed in other ways 
any more. 
• COM within Windows is now 
gradually being replaced with 
.NET components. 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
.NET Technologies 
• .NET framework 
• Windows Forms 
• ASP.NET 
• Enterprise Services 
• .NET Compact 
• Windows Services 
• Web Services 
• XML 
• SQL Server 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
Common .NET terms 
• CLR – common language 
runtime. 
• Assembly – a versioned and 
signed .NET EXE or DLL. 
• Global Assembly Cache 
• Managed / unmanaged. 
• IL – Intermediate language. 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
.NET Compilers 
• MS ships C#, VB.NET, jscript, C++, 
J++ as .NET languages. 
• Many others have been developed 
including Python (IronPython), 
Haskell, Smalltalk, etc. 
• Languages and compilers must 
conform to the CLS, which 
essentially defines IL. 
• Language compilers compile from 
language to a binary form of IL and 
are ‘packaged’ in an assembly PE 
exe or dll file. 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
How C# Looks 
using genericCar; 
namespace Toyota; 
{ 
public class Camry : Car 
{ 
private static Camry camry; 
private Brake brake; 
public void main() 
{ 
camry = new Camry(); 
camry.getBrake().ToString(); 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net 
} 
public Camry() 
{ 
this.brake = new Brake(); 
} 
public override Brake getBrake() 
{ 
return this.brake; 
} 
} 
} 
Camry.cs
C# continued 
using System.IO; 
namespace Toyota 
{ 
public class Brake 
{ 
string brakeName; 
public Brake() 
{ 
this.brakeName = “Brake 1”; 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net 
} 
public override string ToString() 
{ 
System.Console.Out.Writeln(“I’m ” + 
this.brakeName); 
} 
} 
} 
Brake.cs
How VB.NET looks 
Namespace GenericCar 
Class Car 
Public MustOverride Sub getBrake() 
End Class 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net 
Car.vb
Assemblies 
• Versioned 
• Digitally signed. 
• Configuration is in XML and 
not in registry. 
• XCopy deployment. 
• Assemblies written in different 
languages can integrate. 
• Compiling results in the 
following: 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
© 2007 Compass Point, Inc. 
Visual Studio Solution 
using genericCar; 
namespace Toyota; 
{ 
public class Camry : Car 
{ 
private static Camry camry; 
private Brake brake; 
public void main() 
{ 
Camry.cs 
camry = new Camry(); 
camry.getBrake().ToString(); 
public Camry() 
{ 
this.brake = new Brake(); 
public override Brake getBrake() 
{ 
return this.brake; 
using System.IO; 
namespace Toyota 
{ 
public class Brake 
{ 
string brakeName; 
public Brake() 
{ 
Brake.cs 
this.brakeName = “Brake 1”; 
public override string ToString() 
{ 
System.Console.Out.Writeln(“I’m ” + 
this.brakeName); 
PE/ COFF HEADER 
CLR HEADER 
CLR DATA 
MetaData IL (code) 
NATIVE IMAGE SECION 
.data, rdata, .rsrc, .text 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net 
Project 1 
Compile as: EXE 
Language: C# 
Reference: project 2.dlll 
} 
} 
} 
} 
} 
} 
} 
} 
} 
Project 2 
Compile as: DLL 
Language: VB.NET 
Namespace GenericCar 
Class Car 
Public MustOverride Sub getBrake() 
End Class 
Car.vb 
C# compiler 
(C# -> IL assembly) 
VB.NET compiler 
(VB -> IL assembly) 
Project 1.exe 
assembly 
Project 2.DLL 
assembly 
PE/ COFF HEADER 
CLR HEADER 
CLR DATA 
MetaData IL (code) 
NATIVE IMAGE SECION 
.data, rdata, .rsrc, .text
CLR 
• Windows program loader 
invoked: new process space 
set up. 
• Windows program loader loads 
.NET assembly PE exe. 
• Windows program loader 
detects CLR section in PE. 
• Windows loads CLR 
executable, passing it CLR IL 
data as follows: 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
Project 1.exe 
assembly 
PE/ COFF HEADER 
CLR HEADER 
CLR DATA 
MetaData IL (code) 
NATIVE IMAGE SECION 
.data, rdata, .rsrc, .text 
CLR JIT COMPILER 
(IL to native) 
Class Loader 
Verifier 
Just in time compiler (JIT) 
Generates Just 
in Time (JIT) 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net 
Project 1.exe invoked 
Windows PE program loader 
Project 2.DLL 
assembly 
PE/ COFF HEADER 
CLR HEADER 
CLR DATA 
MetaData IL (code) 
NATIVE IMAGE SECION 
.data, rdata, .rsrc, .text 
Loads 
Project 
1.exe PE 
Detects it is 
a CLR PE. 
Loads CLR 
Determines 
that project 
2.DLL is 
required: 
locates and 
loads 
Process space 
Native CPU executable code
.NET Framework 
• Comprised of assemblies 
stored in global assembly 
cache. 
• Accessible to all programs and 
all programming languages. 
• Are extremely similar to Java’s 
class library. 
• Are very thorough, intuitive – 
they just work as they are 
supposed to. 
• All are classes that can be 
extended or overridden. 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
.NET Languages 
Features 
• All use namespaces. 
• All are derived from Object. 
• Garbage collection. 
• No globals. 
• Main() in a class (like Java). 
• Full exception handling support and 
common error handling 
mechanism. 
• Single inheritance. 
• Supports generics. 
• Attributes 
• Reflection. 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net
A Perspective 
• .NET code considered to perform 
on par with compiled C++. Lags 
optimized C. 
• .NET applications tend to be far 
more reliable and handle errors 
better than traditional Windows C 
and MFC applications. 
• Speed of development over MFC > 
5X in my experience. 
• Helps developers retain their sanity 
– far better framework than MFC. 
It’s the way it always should have 
been… 
• Once you know .NET, you can code 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net 
in Java.
My favorite reference 
.NET Framework Essentials, Thuan Thai & Hoang Q. Lam, O’Reilly. 
© 2007 Compass Point, Inc. 
9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net 
www.compass-point.net

More Related Content

PDF
Top 10 Dying Programming Languages in 2020 | Edureka
PDF
PIL - A Platform Independent Language
ODP
3978 Why is Java so different... A Session for Cobol/PLI/Assembler Developers
PPTX
DB2 and Codepages
PDF
Why ClassforName Sucks - BJ Hargrave
PPT
Buildingwebapplicationswith.net
PPTX
Get the Gist: Universal Modelling Language (UML)
PPTX
Presentation1
Top 10 Dying Programming Languages in 2020 | Edureka
PIL - A Platform Independent Language
3978 Why is Java so different... A Session for Cobol/PLI/Assembler Developers
DB2 and Codepages
Why ClassforName Sucks - BJ Hargrave
Buildingwebapplicationswith.net
Get the Gist: Universal Modelling Language (UML)
Presentation1

Similar to Get the Gist: .NET (20)

PDF
tybsc it asp.net full unit 1,2,3,4,5,6 notes
PPT
Introduction to ,NET Framework
PPSX
Introduction to .net framework
PPTX
3.0 Introduction to .NET Framework
PPT
PPT
Nakov - .NET Framework Overview - English
PDF
Dot net interview_questions
PDF
Dot net interview_questions
PPT
1.Philosophy of .NET
PDF
Dot net interview_questions
PPT
.Net framework
PDF
Unit I- Introduction to .NET Framework.pdf
PPTX
Introduction to .NET by QuontraSolutions
PDF
Dotnet basics
PPSX
Unit 1(sem-iv)
PPTX
dotnet.pptx idurne jdie ek ieiebve ieneieie d
PPT
.Net Introduction
PPT
Introduction to .NET
PPT
Modified.net overview
PPT
Best DotNet Training in Delhi
tybsc it asp.net full unit 1,2,3,4,5,6 notes
Introduction to ,NET Framework
Introduction to .net framework
3.0 Introduction to .NET Framework
Nakov - .NET Framework Overview - English
Dot net interview_questions
Dot net interview_questions
1.Philosophy of .NET
Dot net interview_questions
.Net framework
Unit I- Introduction to .NET Framework.pdf
Introduction to .NET by QuontraSolutions
Dotnet basics
Unit 1(sem-iv)
dotnet.pptx idurne jdie ek ieiebve ieneieie d
.Net Introduction
Introduction to .NET
Modified.net overview
Best DotNet Training in Delhi
Ad

Recently uploaded (20)

PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
System and Network Administration Chapter 2
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
medical staffing services at VALiNTRY
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
AI in Product Development-omnex systems
PPTX
ai tools demonstartion for schools and inter college
PPTX
history of c programming in notes for students .pptx
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
top salesforce developer skills in 2025.pdf
PDF
Nekopoi APK 2025 free lastest update
PPTX
Introduction to Artificial Intelligence
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PTS Company Brochure 2025 (1).pdf.......
Odoo POS Development Services by CandidRoot Solutions
System and Network Administration Chapter 2
Design an Analysis of Algorithms II-SECS-1021-03
medical staffing services at VALiNTRY
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
How to Migrate SBCGlobal Email to Yahoo Easily
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
2025 Textile ERP Trends: SAP, Odoo & Oracle
wealthsignaloriginal-com-DS-text-... (1).pdf
AI in Product Development-omnex systems
ai tools demonstartion for schools and inter college
history of c programming in notes for students .pptx
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
top salesforce developer skills in 2025.pdf
Nekopoi APK 2025 free lastest update
Introduction to Artificial Intelligence
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Ad

Get the Gist: .NET

  • 1. Get the Gist: .NET © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 2. History • MS was on a path to embrace Java as the technology for programming its legacy component technology COM. MS called it J++. • Why MS developed .NET: – Presumably because of lawsuit with Sun, MS abandoned J++ but took ideas learned from Java and made them into .NET. – MS wanted hardware independence for coming mobile, cell, Xbox, and other devices. – C++/MFC wasn’t competitive against new breed of languages (Java). – Expensive to maintain multiple development environments: Interdev, C++, VB, etc. © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 3. Today • .NET has virtually replaced C++, MFC, and COM for new development. • Much of the Windows API is exposed in .NET. Some aren’t even exposed in other ways any more. • COM within Windows is now gradually being replaced with .NET components. © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 4. .NET Technologies • .NET framework • Windows Forms • ASP.NET • Enterprise Services • .NET Compact • Windows Services • Web Services • XML • SQL Server © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 5. Common .NET terms • CLR – common language runtime. • Assembly – a versioned and signed .NET EXE or DLL. • Global Assembly Cache • Managed / unmanaged. • IL – Intermediate language. © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 6. .NET Compilers • MS ships C#, VB.NET, jscript, C++, J++ as .NET languages. • Many others have been developed including Python (IronPython), Haskell, Smalltalk, etc. • Languages and compilers must conform to the CLS, which essentially defines IL. • Language compilers compile from language to a binary form of IL and are ‘packaged’ in an assembly PE exe or dll file. © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 7. How C# Looks using genericCar; namespace Toyota; { public class Camry : Car { private static Camry camry; private Brake brake; public void main() { camry = new Camry(); camry.getBrake().ToString(); © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net } public Camry() { this.brake = new Brake(); } public override Brake getBrake() { return this.brake; } } } Camry.cs
  • 8. C# continued using System.IO; namespace Toyota { public class Brake { string brakeName; public Brake() { this.brakeName = “Brake 1”; © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net } public override string ToString() { System.Console.Out.Writeln(“I’m ” + this.brakeName); } } } Brake.cs
  • 9. How VB.NET looks Namespace GenericCar Class Car Public MustOverride Sub getBrake() End Class © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net Car.vb
  • 10. Assemblies • Versioned • Digitally signed. • Configuration is in XML and not in registry. • XCopy deployment. • Assemblies written in different languages can integrate. • Compiling results in the following: © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 11. © 2007 Compass Point, Inc. Visual Studio Solution using genericCar; namespace Toyota; { public class Camry : Car { private static Camry camry; private Brake brake; public void main() { Camry.cs camry = new Camry(); camry.getBrake().ToString(); public Camry() { this.brake = new Brake(); public override Brake getBrake() { return this.brake; using System.IO; namespace Toyota { public class Brake { string brakeName; public Brake() { Brake.cs this.brakeName = “Brake 1”; public override string ToString() { System.Console.Out.Writeln(“I’m ” + this.brakeName); PE/ COFF HEADER CLR HEADER CLR DATA MetaData IL (code) NATIVE IMAGE SECION .data, rdata, .rsrc, .text 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net Project 1 Compile as: EXE Language: C# Reference: project 2.dlll } } } } } } } } } Project 2 Compile as: DLL Language: VB.NET Namespace GenericCar Class Car Public MustOverride Sub getBrake() End Class Car.vb C# compiler (C# -> IL assembly) VB.NET compiler (VB -> IL assembly) Project 1.exe assembly Project 2.DLL assembly PE/ COFF HEADER CLR HEADER CLR DATA MetaData IL (code) NATIVE IMAGE SECION .data, rdata, .rsrc, .text
  • 12. CLR • Windows program loader invoked: new process space set up. • Windows program loader loads .NET assembly PE exe. • Windows program loader detects CLR section in PE. • Windows loads CLR executable, passing it CLR IL data as follows: © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 13. Project 1.exe assembly PE/ COFF HEADER CLR HEADER CLR DATA MetaData IL (code) NATIVE IMAGE SECION .data, rdata, .rsrc, .text CLR JIT COMPILER (IL to native) Class Loader Verifier Just in time compiler (JIT) Generates Just in Time (JIT) © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net Project 1.exe invoked Windows PE program loader Project 2.DLL assembly PE/ COFF HEADER CLR HEADER CLR DATA MetaData IL (code) NATIVE IMAGE SECION .data, rdata, .rsrc, .text Loads Project 1.exe PE Detects it is a CLR PE. Loads CLR Determines that project 2.DLL is required: locates and loads Process space Native CPU executable code
  • 14. .NET Framework • Comprised of assemblies stored in global assembly cache. • Accessible to all programs and all programming languages. • Are extremely similar to Java’s class library. • Are very thorough, intuitive – they just work as they are supposed to. • All are classes that can be extended or overridden. © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 15. .NET Languages Features • All use namespaces. • All are derived from Object. • Garbage collection. • No globals. • Main() in a class (like Java). • Full exception handling support and common error handling mechanism. • Single inheritance. • Supports generics. • Attributes • Reflection. © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net
  • 16. A Perspective • .NET code considered to perform on par with compiled C++. Lags optimized C. • .NET applications tend to be far more reliable and handle errors better than traditional Windows C and MFC applications. • Speed of development over MFC > 5X in my experience. • Helps developers retain their sanity – far better framework than MFC. It’s the way it always should have been… • Once you know .NET, you can code © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net in Java.
  • 17. My favorite reference .NET Framework Essentials, Thuan Thai & Hoang Q. Lam, O’Reilly. © 2007 Compass Point, Inc. 9434 SW 55th Avenue  Portland OR 97219  Phone: 503.329.1138  info@compass-point.net www.compass-point.net