The .NET Framework
• What is Microsoft
.NET?
– A programming
model: CLR +
Classes
– XML Web services
– Server and Client
software and tools
Common Language Runtime (CLR)
• It’s a VM (Java-like) on which any (supported)
language can run.
• Why a VM?
– Memory Protection
– Cross-language
– Support for strong-typing across languages (the data
are typed)
– Thread support
• JIT compilation in the VM
Languages in CLR
• Language of choice is C# (“C-sharp”) a Java-like language
– No inner classes
– Better type checking
• Other languages will run on CLR, but only within the CLR
constraints
– Visual Basic, JScript are full fledged CLR languages
– For example, only C++ that is VM-safe will run
– That subset looks much like C#
• Under CLR, all languages get object features
– Inheritance used extensively
– Every language gets constructors
Languages compile to MSIL
• Languages compile to MSIL (Microsoft
Intermediate Language)
– Can you say “bytecodes”?
• MSIL is shipped in portable executable
(PE) units
– Can you say .class files or applets?
• An application is made up of assemblies
Assemblies
• In general, a static
assembly can consist of
four elements:
– The assembly manifest,
which contains assembly
metadata.
– Type metadata.
– Microsoft intermediate
language (MSIL) code
that implements the
types.
– A set of resources.
Assemblies can be spread across
.NET
Assemblies are the security unit
• Each assembly has a set of corresponding
grants
• Each grant allows certain permissions
– DnsPermission, Environment, FileDialog, FileIO,
IsolatedStorage, Reflection, Registry, Security, UI,
WebPermission, SocketPermission
• The set of grants establishes a security
policy
Class Library
• Data classes support persistent data
management and include SQL classes.
– XML classes enable XML data manipulation
and XML searching and translations.
• Windows Forms support development of
Windows GUI applications across CLR
• Web Forms include classes that enable you
to rapidly develop web GUI applications.
System.Object
• Public methods:
– Equals
– GetHashCode
– GetType
– ToString
• Overriding inherited behaviors is common
Web, Windows, Whatever
• Part of the idea is to smooth transitions
between Windows and Web
• Web interfaces become easier for Windows
developers
• Windows apps become .NET Web-based
apps
Data XML, Everywhere
• All CLR data can be
serialized to XML
• All XML can be expanded
into CLR data
• Thus, anything can be
shipped around on the
Web
• Typing through XML
Schema
XML Schema
Example Instance
Don Box
Second Example Instance
Don Box
26
A Simpler Schema
Another Example Instance
Henry Ford
Prefatory text
This is a book.
XML Schema Defined Types
Class Library Data Hierarchy
Reading in XML Data
XmlReader reader
= new
XmlTextReader("http://foo.com/don.xsd");
XmlSchema schema = XmlSchema.Load(reader, null);
schema.Compile(null); // turn xml into objects
reader.Close();
ALL Interprocess Communication
via SOAP
• ALL Interprocess communication (across
network or on same machine) is through
SOAP
– Simple Object Access Protocol
– It’s a way of exchanging data and even calling
other methods/threads, all via XML and plain
old HTTP requests
Example SOAP Request
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
DIS
Example SOAP Response
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
34.5
ASP.NET
• ASP =>
Active Server Pages
– Put most of the
computation in the server
• Very simple model to
use
• ADO.NET is the
database connection part
Calling Web Services
• Any class can be converted into an XML Web Service with just a
few lines of code, and can be called by any SOAP client.
Take-away lessons
• VM’s are important
– Even Microsoft thinks so
• Distributed apps are important, but to do so
requires standard protocols
– Ways of serializing data
– Ways of doing RPC
Limitations of the .NET Framework
• What if you’re not on the network?
– Maybe that’s not an issue?
• Mapping between XML and any object is
hard
– Any object is controlled by compiler.
XML can be written by anybody with a text
editor.
– There’s a whole bunch of class support for
modified serializers and compilers