DotNet Framework
DotNet Framework
.NET Framework
Overview
Svetlin Nakov
http://www.nakov.com
Sofia University
“St. Kliment Ohridski”
.NET Enterprise Vision
Users
Any device,
Any place,
Any time
XML Web
Services
Integrate business
Authentication applications and
Scheduling processes
Notification
Back Office
Heterogeneous
application and
server
infrastructure
Customer Sales
ERP & Billing Service
So what is .NET?
.NET is a platform that provides a
standardized set of services.
It’s just like Windows, except
distributed over the Internet.
It exports a common interface so that
it’s programs can be run on any
system that supports .NET.
A specific software framework
Includes a common runtime
.NET Framework
Programming model for .NET
Platform for running .NET managed
code in a virtual machine
Provides a very good environment
to develop networked applications
and Web Services
Provides programming API and
unified language-independent
development framework
The Core of .NET Framework:
FCL & CLR
Common Language Runtime
Garbage collection
Language integration
Multiple versioning support
(no more DLL hell!)
Integrated security
Framework Class Library
Provides the core functionality:
ASP.NET, Web Services, ADO.NET,
Windows Forms, IO, XML, etc.
.NET Framework
Common Language Runtime
CLR manages code execution
at runtime
Memory management, thread
management, etc.
Operating System
.NET Framework
Base Class Library
Object-oriented collection of
reusable types
Collections, I/O, Strings, …
Operating System
.NET Framework
Data Access Layer
Access relational databases
Disconnected data model
Work with XML
Operating System
.NET Framework
ASP.NET & Windows Forms
Create application’s front-end –
Web-based user interface,
Windows GUI, Web services, …
ASP .NET Windows
Web Forms Web Services
Forms
Mobile Internet Toolkit
Operating System
.NET Framework
Programming Languages
Use your favorite language
Operating System
.NET Framework
Common Language Specification
C++ Common
C# VBLanguage
Perl Specification
J# …
ASP .NET Windows
Web Forms Web Services
Forms
Mobile Internet Toolkit
Operating System
.NET Framework
Visual Studio .NET
C++ C# VB Perl J# …
Operating System
.NET Framework
Standards Compliance
C# Language –
Submitted to ECMA
C++ C# VB Perl J# …
Operating System
Common Language Runtime
Manages running code – like a virtual
machine
Threading
Memory management
No interpreter: JIT-compiler produces
native code – during the program
installation or at run time
Fine-grained evidence-based security
Code access security
Code can be verified to guarantee type safety
No unsafe casts, no un-initialized variables
and no out-of-bounds array indexing
Role-based security
Managed Code
Code that targets the CLR is referred to
as managed code
All managed code has the features of
the CLR
Object-oriented
Type-safe
Cross-language integration
Cross language exception handling
Multiple version support
Managed code is represented in special
Intermediate Language (IL)
Automatic Memory Management
The CLR manages memory for managed code
All allocations of objects and buffers made from
a Managed Heap
Unused objects and buffers are cleaned up
automatically through Garbage Collection
Some of the worst bugs in software
development are not possible with managed
code
Leaked memory or objects
References to freed or non-existent objects
Reading of uninitialised variables
Pointerless environment
Multiple Language Support
IL (MSIL or CIL) – Intermediate Language
It is low-level (machine) language, like
Assembler, but is Object-oriented
CTS is a rich type system built into the CLR
Implements various types (int, float, string, …)
And operations on those types
CLS is a set of specifications that all
languages and libraries need to follow
This will ensure interoperability between
languages
Intermediate Language
.NET languages are compiled to an
Intermediate Language (IL)
IL is also known as MSIL or CIL
CLR compiles IL in just-in-time (JIT)
manner – each function is compiled
just before execution
The JIT code stays in memory for
subsequent calls
Recompilations of assemblies are
also possible
Example of MSIL Code
.method private hidebysig static void Main()
cil managed
{
.entrypoint
// Code size 11 (0xb)
.maxstack 8
IL_0000: ldstr "Hello, world!"
IL_0005: call void
[mscorlib]System.Console::WriteLine(string)
IL_000a: ret
} // end of method HelloWorld::Main
Common Type System (CTS)
All .NET languages have the same primitive
data types. An int in C# is the same as an int
in VB.NET
When communicating between modules
written in any .NET language, the types are
guaranteed to be compatible on the binary
level
Types can be:
Value types – passed by value, stored in the
stack
Reference types – passed by reference, stored
in the heap
Strings are a primitive data type now
Common Language
Specification (CLS)
Any language that conforms to the CLS
is a .NET language
A language that conforms to the CLS
has the ability to take full advantage of
the Framework Class Library (FCL)
CLS is standardized by ECMA
.NET Languages
Languages provided by Microsoft
C++, C#, J#, VB.NET, JScript
Third-parties languages
Perl, Python, Pascal, APL, COBOL, Eiffel,
Haskell, ML, Oberon, Scheme, Smalltalk…
Advanced multi-language features
Cross-language inheritance and
exceptions handling
Object system is built in, not bolted on
No additional rules or API to learn
C# Language
Mixture between C++, Java and Delphi
Component-oriented
Properties, Methods, Events
Attributes, XML documentation
All in one place, no header files, IDL, etc.
Can be embedded in ASP+ pages
Everything really is an object
Primitive types aren’t magic
Unified type system == Deep simplicity
Improved extensibility and reusability
C# Language – Example
using System;
class HelloWorld
{
public static void main()
{
Console.WriteLine(“Hello, world!”);
}
}
Code Compilation and Execution
Compilation
Also called
Source Language Code
Assembly
Code Compiler MSIL
Metadata (.EXE or
.DLL file)
Before
installation or
the first time
Execution each method is
called
Native JIT
Code Compiler
Assemblies
DLL or EXE file
Smallest deployable unit in the CLR
Have unique version number
No version conflicts (known as DLL hell)
Contains IL code to be executed
Security boundary – permissions are
granted at the assembly level
Type boundary – all types include the
assembly name they are a part of
Self-describing manifest – metadata that
describes the types in the assembly
Metadata in Assembly
Type Descriptions
Classes
Base classes
Implemented interfaces
Data members
Methods
Assembly Description
Name
Version
Culture
Other assemblies
Security Permissions
Exported Types
Applications
One or more assemblies
Assemblies conflict resolution
Using metadata
Local (preferred)
Global Assembly Cache (GAC)
ASP.NET
Web Forms Web Services Windows
Mobile Internet Toolkit
Forms
System.Data System.Xml
ADO SQL XSLT Serialization
Design SQLTypes XPath
System
Collections IO Security Runtime
Configuration Net ServiceProcess InteropServices
Diagnostics Reflection Text Remoting
Globalization Resources Threading Serialization
Base Class Library Namespaces
System
Collections Security
Configuration ServiceProcess
Diagnostics Text
Globalization Threading
IO Runtime
Net InteropServices
Reflection Remoting
Resources Serialization
Base Class Library
Data types, conversions, formatting
Collections: ArrayList, Hashtable, etc.
Globalization: Cultures, sorting, etc.
I/O: Binary and text streams, files, etc.
Networking: HTTP, TCP/IP sockets, etc.
Reflection: Metadata and IL emit
Security: Permissions, cryptography
Text: Encodings, regular expressions
Data And XML Namespaces
System.Data
OleDb SQLClient
Common SQLTypes
System.Xml
XSLT Serialization
XPath
ADO.NET And XML
ADO.NET consumes all types of data
XML (hierarchical), relational, etc.
Powerful in-memory data cache (DataSet)
DataSet contains various data objects:
tables, views, relations, constraints, etc.
Lightweight, stateless, disconnected
Supports both relational and XML access
High-performance, low overhead stream
access
Great XML support including:
W3C DOM, XSL/T, XPath, and Schema
VS.NET – DataSet Designer
Windows Forms Namespaces
System.Windows.Forms
Design ComponentModel
System.Drawing
Drawing2D Printing
Imaging Text
Windows Forms
Windows Forms is framework for
building rich GUI applications
RAD (Rapid Application Development)
component-based
event-driven
Rich set of controls
Data aware components
ActiveX® Support
Printing support
Unicode support
UI inheritance
Windows Forms
Combines VB and Delphi forms with the
power of MFC
Delegation as well as subclassing
Advanced features
Visual forms inheritance, automatic layout
Advanced graphics support – GDI+
Easy access to Win32® API
Controls can be hosted in IE 5.x
No installation, registration or GUIDs
Code access security
VS.NET – Windows Forms
Designer
Demo
Create simple database
application with:
Windows Forms
ADO.NET
MS SQL Server
Visual Studio .NET
ASP.NET Namespaces
System.Web
Services UI
Description HtmlControls
Discovery WebControls
Protocols
Caching Security
Configuration SessionState
ASP.NET
Framework for building Web applications
and Web services in any .NET language
C#, C++, VB.NET, JScript, etc.
Automatic multiple clients support
DHTML, HTML 3.2, WML, small devices
Compilation of ASP.NET Web applications
into .NET assemblies
Cached the first time when called
All subsequent calls use the cached version
Separation of code and content
Developers and designers can work independently
ASP.NET
Rich page architecture – “Web Forms”
Rich set of ASP.NET server controls
Data validation
Data bound grids
Event-driven execution model
Great Web-services support
Easy to deploy
High reliability and availability
High performance and scalability
Scalable handling of state information
VS.NET – Web Forms Designer
Demo
Create simple Web-based
database application with:
ASP.NET (Web Forms)
ADO.NET
MS SQL Server
Visual Studio .NET
Web Services
Technical definition – “A programmable
application component accessible via
standard Web protocols”
Built on XML and SOAP
Expose functionality from Web Sites
Almost like component programming over
the Web
Functionality exposed using XML/HTML
Standard Web Services include
Calendar
MSN Passport
XML Web Services Foundation
Simple, Open, Broad Industry Support
Open standards: