The .NET FrameworkThe .NET Framework
• What is
Microsoft .NET?
– A programming
model: CLR +
Classes
– XML Web services
– Server and Client
software and tools
Common Language Runtime (CLR)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 CLRLanguages 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 MSILLanguages 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
AssembliesAssemblies
• 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 acrossAssemblies can be spread across
.NET.NET
Assemblies are the security unitAssemblies 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 LibraryClass 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.ObjectSystem.Object
• Public methods:
– Equals
– GetHashCode
– GetType
– ToString
• Overriding inherited behaviors is common
Web, Windows, WhateverWeb, 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, EverywhereData <-> 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 SchemaXML Schema<xsd:complexType name="Person">
<xsd:sequence>
<xsd:choice>
<xsd:element name="name" type="xsd:string"
xsi:nillable="true" />
<xsd:element name="id" type="xsd:string" />
</xsd:choice>
<xsd:any processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AgedPerson">
<xsd:complexContent mixed="false">
<xsd:extension base="target:Person">
<xsd:choice>
<xsd:element name="age" type="xsd:double" />
<xsd:element name="timeOnEarth" type="xsd:double" />
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="don" type="target:Person" />
Example InstanceExample Instance
<ns:don
xmlns:ns="uuid:048b2fa1-d557-473f-ba4c-
acee78fe3f7d"
>
<name>Don Box</name>
<niceStuffForDon/>
</ns:don>
Second Example InstanceSecond Example Instance
<ns:don
xmlns:ns="uuid:048b2fa1-d557-473f-ba4c-
acee78fe3f7d"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance"
xsi:type="ns:AgedPerson"
>
<name>Don Box</name>
<niceStuffForDon/>
<age>26</age>
</ns:don>
A Simpler SchemaA Simpler Schema
<element name="Book">
<complexType>
<element name="author" type="xsd:string"/>
<element name="preface" type="xsd:string"/>
<element name="intro" type="xsd:string"/>
</complexType>
</e:Book>
Another Example InstanceAnother Example Instance
<e:Book>
<author>Henry Ford</author>
<preface>Prefatory text</preface>
<intro>This is a book.</intro>
</e:Book>
XML Schema Defined TypesXML Schema Defined Types
Class Library Data HierarchyClass Library Data Hierarchy
Reading in XML DataReading 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 CommunicationALL Interprocess Communication
via SOAPvia 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 RequestExample SOAP Request
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Example SOAP ResponseExample SOAP Response
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
ASP.NETASP.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 ServicesCalling 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 lessonsTake-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 FrameworkLimitations 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

Cetpa dotnet taining

  • 1.
    The .NET FrameworkThe.NET Framework • What is Microsoft .NET? – A programming model: CLR + Classes – XML Web services – Server and Client software and tools
  • 2.
    Common Language Runtime(CLR)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
  • 3.
    Languages in CLRLanguagesin 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
  • 4.
    Languages compile toMSILLanguages 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
  • 5.
    AssembliesAssemblies • 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.
  • 6.
    Assemblies can bespread acrossAssemblies can be spread across .NET.NET
  • 7.
    Assemblies are thesecurity unitAssemblies 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
  • 8.
    Class LibraryClass 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.
  • 9.
    System.ObjectSystem.Object • Public methods: –Equals – GetHashCode – GetType – ToString • Overriding inherited behaviors is common
  • 10.
    Web, Windows, WhateverWeb,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
  • 11.
    Data <-> XML,EverywhereData <-> 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
  • 12.
    XML SchemaXML Schema<xsd:complexTypename="Person"> <xsd:sequence> <xsd:choice> <xsd:element name="name" type="xsd:string" xsi:nillable="true" /> <xsd:element name="id" type="xsd:string" /> </xsd:choice> <xsd:any processContents="lax"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="AgedPerson"> <xsd:complexContent mixed="false"> <xsd:extension base="target:Person"> <xsd:choice> <xsd:element name="age" type="xsd:double" /> <xsd:element name="timeOnEarth" type="xsd:double" /> </xsd:choice> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="don" type="target:Person" />
  • 13.
  • 14.
    Second Example InstanceSecondExample Instance <ns:don xmlns:ns="uuid:048b2fa1-d557-473f-ba4c- acee78fe3f7d" xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xsi:type="ns:AgedPerson" > <name>Don Box</name> <niceStuffForDon/> <age>26</age> </ns:don>
  • 15.
    A Simpler SchemaASimpler Schema <element name="Book"> <complexType> <element name="author" type="xsd:string"/> <element name="preface" type="xsd:string"/> <element name="intro" type="xsd:string"/> </complexType> </e:Book>
  • 16.
    Another Example InstanceAnotherExample Instance <e:Book> <author>Henry Ford</author> <preface>Prefatory text</preface> <intro>This is a book.</intro> </e:Book>
  • 17.
    XML Schema DefinedTypesXML Schema Defined Types
  • 18.
    Class Library DataHierarchyClass Library Data Hierarchy
  • 19.
    Reading in XMLDataReading 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();
  • 20.
    ALL Interprocess CommunicationALLInterprocess Communication via SOAPvia 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
  • 21.
    Example SOAP RequestExampleSOAP Request POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI" <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
  • 22.
    Example SOAP ResponseExampleSOAP Response HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
  • 23.
    ASP.NETASP.NET • ASP => ActiveServer Pages – Put most of the computation in the server • Very simple model to use • ADO.NET is the database connection part
  • 24.
    Calling Web ServicesCallingWeb 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.
  • 25.
    Take-away lessonsTake-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
  • 26.
    Limitations of the.NET FrameworkLimitations 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

Editor's Notes

  • #6 Type metadata is information about the data types. Resources are things that are needed by the assembly like images and sounds.
  • #7 A single assembly can be distributed across the network. The resources might be on one machine and the some of the code on another.
  • #9 Windows Forms is a framework (set of classes) for developing Windows GUI applications. Web Forms is a framework for developing Web-based GUI applications.
  • #10 Unlike other OO languages the methods start with a capital letter.
  • #12 Notice that all that is saved in XML is the instance variables.
  • #13 This is an XML schema to represent instance variables for a Person object.
  • #14 This is an example instance that uses the XML schema from the previous page.
  • #19 These are the common language types supported. You can subclass these to allow XML mapping for your classes.
  • #20 This C# code will read in XML from a location and uses the Compile method to get the CLR objects from the XML.
  • #22 This slide shows the request of GetLastTradePrice for the DIS (Disney) stock symbol.
  • #23 This shows the SOAP response with the price for the Disney symobl.
  • #25 This shows an XML representation of an order in a pet store.
  • #27 One of the problems of using XML to represent objects is that people can edit and change the XML and what do you do with it if it doesn’t match the class definition. Also the class definition might change and then what do you do with older XML versions?