Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen1 Introduktion til.NETs komponentmodel Henrik Lykke Nielsen Softwarearkitekt Microsoft.

Lignende præsentationer


Præsentationer af emnet: "Maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen1 Introduktion til.NETs komponentmodel Henrik Lykke Nielsen Softwarearkitekt Microsoft."— Præsentationens transcript:

1 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen1 Introduktion til.NETs komponentmodel Henrik Lykke Nielsen Softwarearkitekt Microsoft Regional Director for Danmark lykke@captator.dk www.captator.dk 8748 0202 2237 3311

2 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen2 Agenda Assemblies Metadata Manifest Identitet - versionering – lokale/globale assemblies Installation og versionering Applikationsmodeller One-click-deployment og dynamisk deployering Sikkerhed Permissions StrongNameIdentityPermission Arkitekturelle overvejelser vedr. deployering

3 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen3 Hvad var der galt? System32 er begrænset til én version af en fil Registryet er noget rod GUIDs er kopierbar id’er Installation af én applikation kunne få andre i knæ DLL hell Mangel på isolation Mangel på håndtering af versions-afhængigheder Applikationer og komponenter var ikke fuldt ud selvbeskrivende

4 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen4 Hvad er en assembly? Fundamental (logisk) enhed Samling af moduler og resourcer Moduler - som er kompilerede enheder - indeholder typer og globale metoder Danner grundlag for Genbrug Versionering Deployering Sikkerhed Kan referere andre assemblies Metadata Assembly-manifest refererer andre filer

5 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen5 CLR Header Metadata MSIL Managed code APP.EXE Manifest Hvad er en assembly?

6 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen6 Assembly Eksekverbar kode Indeholdt i Portable Executable (PE) filer (DLL, EXE) I form af Intermediate Language (IL) kode Skal have ét entry point (DllMain, WinMain eller Main) Udgør en sikkerhedsafgrænsning Permissions “requestes” og “grantes” for en assembly Udgør en typeafgrænsning En assembly afgrænser scope for typerne defineret deri Typer (og andre resourcer) kan være private eller public Udgør en versionsafgrænsning Typer og resourcer i en assembly versioneres som en enhed

7 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen7 Manifest Indeholder standard-information om: Navn Versionsnummer Public key Culture information Processor og OS Eksporterede og lokale typer Liste over filerne der udgør assemblyen Referencer til typer og resourcer

8 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen8 Manifest Customiseret information: AssemblyCompany AssemblyConfiguration AssemblyCopyright AssemblyDefaultAlias AssemblyDescription AssemblyInformationalVersion AssemblyProduct AssemblyTitle AssemblyTrademark F.eks. i AssemblyInfo.vb

9 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen9 Type beskrivelser Klasser Basis klasser Implementerede interfaces Data members Metoder Name Version Public key Culture Refererede assemblies Sikkerhed Exporterede typer Assembly beskrivelse Metadata i en assembly { Angiver samlet set assemblyens version/identitet

10 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen10 Identitet Identitet er mange ting... Identitet af assemblies: Assemblyens navn Versionsnummer (1.17.47.117) Culture Public key token Identitets-informationen findes i manifestet

11 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen11 Versionering Versionsnumre er en fire-tuppel: 117.42.17.119... AssemblyInfo.vb: (default) * giver autogenerering af manglende værdier: Minor = 0 Build = # dage siden 2000-1-1 Revision = # sekunder siden midnat / 2 Assemblys identitet: Navn, versionsnr, culture og public key token

12 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen12 Strong name signering Baseret på private/public key kryptering Calculus.dll IL Metadata Manifest Hash værdi Hash af filen Signeres med nøgle RSA digital signatur Placeres i filen Offentlige nøgle Offentlige nøgle og public key token

13 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen13 Strong name Består af navn, versionsnr, culture og public key token Lav et public/private key pair: sn –k KeyFile.snk Public key token er en 64-bit hash værdi af den offentlige nøgle System.Reflection.AssemblyKeyFileAttribute Compileren signer hash af assemblyen med den private nøgle, og værdien gemmes sammen med den offentlige nøgle i assemblyen Integritet af filer garanteret af hash værdi Runtimen verificerer strong name signaturen Det er muligt at køre flere forskellige versioner samtidigt (Automatisk) versionssikkerhed eksisterer kun ved strong named assemblies!!

14 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen14 Installation af assemblies Private assemblies installeres i lokalt directory Shared/public assemblies installeres i og slettes fra GACen med f.eks.: gacutil –i minAssembly.DLL gacutil –u minAssembly.DLL Cache viewer som shell extension (shfusion.dll) Abstraherer fra den underliggende directory struktur C:\Windows\assembly Microsoft.NET Framework Configuration AssemblyCache Brug ikke autogenerering af versionsnumre sammen med GACen!!!

15 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen15 Global Assembly Cache (GAC) Integritets check Versionering Centraliseret installation af fixes Komponenter med samme identifikation kan opdateres

16 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen16 Assembly lokalisering Benyt allerede loadet assembly Benyt assembly i GACen Benyt codebase Probing Binding policy Default binding policy Application og machine policy Publisher policy Se evt. MSDN for yderligere info: ”How the Runtime Locates Assemblies”

17 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen17 Er den i GACen? Findes codebase? Ja Brug codebase Probe App Base [appbase]/[assembly].dll [appbase]/[assembly]/[assembly]..dll Nej Anvend version policy Probe private bin-sti (relativt til App Base) Ikke fundet Fundet Binding fejler Load assembly Ikke fundet Ja “Strong ref” “Weak ref” Fundet Lokalisering af assemblies Ikke fundet

18 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen18 Installation Private assemblies Shared/public assemblies (GAC) XCOPY / FTP / WHATEVER installation Windows Web CAB filer Windows Installer Visual Studio.NET Setup Project 3. parts installationsprogrammer Microsoft.NET Framework Redistributable

19 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen19 Web-applikation Windows- applikation WinForms.NET-applikation Eksekveringsmodeller

20 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen20 Code Access Security Policy

21 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen21 StrongNameIdentityPermission Scenarie Lave en komponent der kun kan benyttes specifikke applikationer Klienten skal være signet med en specifik nøgle – ellers...

22 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen22 StrongNameIdentityPermission Komponenten - ProtectedComponent Lav en strong name fil sn –k KeyFile.snk Sign komponenten med KeyFile.snk AssemblyKeyFileAttribute(”KeyFile.snk”) Hent public key’en: secutil –hex –s ProtectedComponent.dll > key.txt Sæt den ind i attributten i komponenten (på klassen) Klienten Sign klienten med KeyFile.snk AssemblyKeyFileAttribute(”KeyFile.snk”)

23 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen23 Dynamisk deployering One-click-deployment Launcher applikation Dynamisk opdatering af applikation.NET Application Updater Component Kan være et godt udgangspunkt

24 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen24 Arkitekturelle overvejelser om deployering Undgå for mange og for små komponenter Versionering Uoverskueligt For udviklere For administratorer Interne referencer (Friend i VB, internal i C#) Centraliser kode – ikke nødvendigvis komponenter (filer) Genbrug Vedligehold Lav hjælpe-tools og -komponenter

25 maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen25 Spørgsmål www.captator.dk www.captator.dk nyheder, artikler, information,...


Download ppt "Maj 2003Introduktion til.NETs komponentmodel ved Henrik Lykke Nielsen1 Introduktion til.NETs komponentmodel Henrik Lykke Nielsen Softwarearkitekt Microsoft."

Lignende præsentationer


Annoncer fra Google