Cetpa dotnet taining

26
The .NET Framework The .NET Framework What is Microsoft .NET? – A programming model: CLR + Classes – XML Web services – Server and Client software and tools

Transcript of Cetpa dotnet taining

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 Assemblies can be spread across .NETacross .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 Communication ALL 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