Top Banner
Chapter 12 Microsoft Assemblies
40

Chapter 12 Microsoft Assemblies

Jan 21, 2016

Download

Documents

aulani

Chapter 12 Microsoft Assemblies. Process Phases Discussed in This Chapter. Requirements Analysis. Design. Framework. Architecture. Detailed Design. Implementation. Key:. = main emphasis. = secondary emphasis. x. x. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Chapter 12 Microsoft Assemblies

Chapter 12Microsoft Assemblies

Page 2: Chapter 12 Microsoft Assemblies

Process Phases Discussed in This ChapterRequirementsAnalysis

Design

Implementation

ArchitectureFramework Detailed Design

xKey: = secondary emphasisx = main emphasis

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 3: Chapter 12 Microsoft Assemblies

Learning Goals for This Chapter

… Microsoft’s component (“assembly”) architecture

… where assemblies fit in .NET

… required rudiments of C#

… the contents of .NET manifests, including:

Versioning

Attributes

… the difference between private and shared assemblies

… create assemblies using C#

Understand …

Be able to …

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 4: Chapter 12 Microsoft Assemblies

.NET Goals and Solutions

Create interoperable components from multiple source languages

o C++, Visual Basic, ….

Solve multiple component version clashes

o “dll hell”: naming confusion in COM

Define a common runtime

Avoid registry

o Necessity to register components with host computer

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 5: Chapter 12 Microsoft Assemblies

Design Goal At Work: Reusability

Microsoft wanted to allow developers to create interoperable components using their favorite source languages.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 6: Chapter 12 Microsoft Assemblies

The Parts of.NET

Web tools and LanguagesASP.NET, Windows Forms; Visual Basic.NET, C#

.NET Framework Classes

net XML IO Security . . . .

Common Language Runtime (CLR)

Memory Management Common Type System (CTS) . . . .

uses

uses

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 7: Chapter 12 Microsoft Assemblies

Boolean

DateTime

Decimal – 28 significant digits

Double – 64-bit double-precision floating point

GUID – unique 128-bit integer; unique identifier

Int16, Int32, Int64

Sbyte – 8-bit signed integer –128 to +127

Single – 4-byte single precision floating point

TimeSpan – a period of time

Types in the CTS

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 8: Chapter 12 Microsoft Assemblies

Boolean Equals( Object )

Int32 GetHashCode() o Generates an integer corresponding to

the value of the object

o Used by sorting algorithms in System.Collections

Type GetType()o for the Reflection API

String ToString()

Methods of System.Object

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 9: Chapter 12 Microsoft Assemblies

Selected System.XX .NET Framework NameSpaces

Collections

ComponentModel

o “to implement the

runtime and design

time behavior of

components”

Data

o To deal with

databases via ADO

Drawing

IO

Net

o to interface with

common

network

protocols

Reflection

Runtime

Security

Text

o ASII, Unicode

etc.

Threading

Web

WinForms

XML Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 10: Chapter 12 Microsoft Assemblies

Compilation Process in .NET

Source CodeC++VB

Compiler &metadatagenerator

IL andmetadata

Ancillary info

.dll or .exe

Base classlibrary

Classloader

IL compiler

native code

executeProcess File Key:

C#J#, Java (3rd parties)

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 11: Chapter 12 Microsoft Assemblies

A File

A File

A File

A File

The Parts of a .NET Assembly (Component)

Manifest Identity

o nameo version

Names of files Encrypted hash of files

to ensure integrity Specification of types

defined Names of referenced

assemblies Specification of required

security permissions

MicrosoftIntermediate

Language(IL)

Source Files A .NET assembly: xyz.dll

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 12: Chapter 12 Microsoft Assemblies

Key Concept: A .NET Assembly

-- includes class code from multiple files, in IL form, described by a manifest.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 13: Chapter 12 Microsoft Assemblies

C# Goals 1 of 2

Rapid application developmento as with JavaBeans

Cross-platform deploymento generates character stream interpreted by .Net runtime. o as with Java Virtual Machine

Access to platform-native resourceso take advantage of the Windows API to run as a full-

featured application on Windows 2000 Support for the COM and .NET platforms

Unlike

Java

UnlikeJava

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 14: Chapter 12 Microsoft Assemblies

Features of C and C++ “with the functional ease of rapid application development tools.”

Components with properties, methods and events

o built in

C# Goals : 2 of 2

UnlikeJava

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 15: Chapter 12 Microsoft Assemblies

HelloWorld Output

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 16: Chapter 12 Microsoft Assemblies

Selected C# Features

Automatic garbage collection

Allows developers to disable garbage collection

locally –

o by marking code as “unsafe”

o (e.g., where real time performance required?)

Eliminates pointers in favor of references

Introduces Interfaces

UnlikeJava

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 17: Chapter 12 Microsoft Assemblies

C# Web Features: Web Services

Attribute library allows wrapping of C# classes

and functions as Web services.

o a hosted software module callable over the Internet

typically via SOAP protocol.

o SOAP wraps method calls, parameters, and return

values, in XML packets.

Using appropriate attributes, programmer can

turn any C# class or function into a Web service.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 18: Chapter 12 Microsoft Assemblies

Creating a .NET Component 1 of 2

csc /t:library /out:hello.dll helloFile.cs

“target”Create a library component: Don’t seek Main()

“output”Component (output) name

Input fileC# compilation

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 19: Chapter 12 Microsoft Assemblies

Creating a .NET Component (“Assembly”) 2 of 2

helloFile.cs

hello.dll

hello.dll

csc /t:library /out:hello.dll helloFile.cs

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 20: Chapter 12 Microsoft Assemblies

Using a .NET Component

csc /r:hello.dll /out:helloApp.exe helloClient.cs

hello.dllhelloClient.cs

helloApp.exe

… now execute helloApp.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 21: Chapter 12 Microsoft Assemblies

Creating a .NET Component Containing Multiple Classes

csc /t:library /out:helloAuRevoir.dll

HelloAuRevoirComponentSource.cs

HelloAuRevoirComponentSource.cs

helloAuRevoir.dll

GreetingUtility HelloClass AuRevoirClass

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 22: Chapter 12 Microsoft Assemblies

Output For “Multiple Class” Example

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 23: Chapter 12 Microsoft Assemblies

Using metadata allows the CLR to support: Multiple execution models

o interpreted, o JITted (Just-in-time)o nativeo legacy code (prior to .NET)

Uniform services available to debuggers, profilers etc. Consistent exception handling Code access security Memory management Reflection Interoperability with existing unmanaged COM applications Interoperability with existing unmanaged code Optimization to match the particular CPU or environment.

Uses for Metadata

Amended from http://msdn.microsoft.com/library/default.asp

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 24: Chapter 12 Microsoft Assemblies

Manifest of Component helloAuRevoir.dll

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 25: Chapter 12 Microsoft Assemblies

Manifest Contents for helloAuRevoir.dll Component

1. -2. -3. -4. -5. -6. -7. -8. -9. -10. -11. -12. -13. -14. -15. -16. --

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 26: Chapter 12 Microsoft Assemblies

Manifest Detail of sayHelloWorld() in HelloClass

1. -2. -3. -4. -5. -6. -7. -8. -

Recall the source:public void SayHelloWorld( )

{ GreetingUtility.OutputMessage ( "Component says: Hello World" );

}

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 27: Chapter 12 Microsoft Assemblies

The Version Field of an Assembly

Major version Minor version Revision Build number

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 28: Chapter 12 Microsoft Assemblies

Versioning

(The process of evolving a component over time in a compatible manner.)

A new version is …

… source compatible with a previous version if

code that depends on the previous version can,

when recompiled, work with the new version.

… binary compatible if code that depended on the

old version can, without recompilation, work with

the new version.” (adapted from Microsoft)

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 29: Chapter 12 Microsoft Assemblies

Attributes in .NET Metadata: about …o … variableso … classeso … functions

Types of attributes:o Built-ino User-defined

Available at runtime

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 30: Chapter 12 Microsoft Assemblies

Output of main() in ConditionalDemo

with #define DEBUG without #define DEBUG

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 31: Chapter 12 Microsoft Assemblies

Output For Authorship Querying

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 32: Chapter 12 Microsoft Assemblies

Key Concept: A .NET Manifest Lists …

.. the files containing the IL-compiled classes, the .NET components on which the assembly depends, version numbers, attributes, and encrypted hash to verify not tampered in transit.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 33: Chapter 12 Microsoft Assemblies

Design Goal At Work: Reusability

We want to reuse an assembly, confident it is the one it’s supposed to be.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 34: Chapter 12 Microsoft Assemblies

Using NameSpaces

Application 1: List available flights in following form<Animated airline logo goes here>

<Material introducing available flights here >

From <city> to <city> departing at <time> and arriving at <time>.

<Animated logo of the Intergalactic Reservation Service goes here>

Application 2: List bookings already made in following form<Animated logo of the Intergalactic Reservation Service goes here >

<Material introducing instructions to the traveler goes here >

Please arrive at <time> at <city> airport for your flight.

Implement applications 1and 2. Exploit common components.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 35: Chapter 12 Microsoft Assemblies

Namespaces Across Multiple Components

Logo

AvailabilityAnnouncement

Itinerary namespace

(Physical) File organization (3 files)

Airlines namespace

Namespace stated: Airlines.Availability Classes: Logo, AvailabilityAnnouncement

Availability namespace

ItineraryAnnouncement

Logo

(Logical) Namespace organization

Source file name: AvailabilityComponentSource.cs

Component name: availability.dll

Namespace stated: Airlines.Itinerary Class: Logo

Source file name: ItineraryLogoComponentSource.cs

Component name: itineraryLogo.dll

Namespace stated: Airlines.Itinerary Class: ItineraryAnnouncement

Source file name: ItineraryAnnouncement.cs

Component name: itineraryAnnouncmnt.dllAdapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 36: Chapter 12 Microsoft Assemblies

Airline Reservation System Display

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 37: Chapter 12 Microsoft Assemblies

Public Key Cryptography

Any message encoded with one key can be decoded with the other.

One can’t encrypt and decrypt a message with the same key.

It’s practically impossible to deduce one key from the other.

It’s very unlikely that an encoded document can be decoded with an unmatched key

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 38: Chapter 12 Microsoft Assemblies

Public Key Encryption Used in .NET

Public key: …iemhdZX… Private key: …92JiuHKM3… (secret)

myKeys.snk

Hashed version Encoded version

use private

key

ManifestNames & contentsof assembly

Verification process

AssemblyInfo.cs

Assembly source

assembly

hash

OK / not OKAdapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 39: Chapter 12 Microsoft Assemblies

Key Concept: Component Identity

To ensure that the component we are using is the one intended, we use relatively or globally unique names: .NET also applies tamper-proofing via public key encryption.

Adapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.

Page 40: Chapter 12 Microsoft Assemblies

Summary Microsoft “assembly” == component

Microsoft distributes computing among desktops and

servers via, in part, .NET assemblies

.NET assemblies supercede and are more versatile than

(D)COM(+) objects. o Exist in Intermediate Language

o Permit versioning

o Include “attribute” feature

o Identity technique for shared assemblies reduces “dll hell”

C# language designed for .NET

Assemblies constructed via C#, VB, ... are interoperableAdapted from Software Design: From Programming to Architecture by Eric J. Braude (Wiley 2003), with permission.