Assemblies

21
4/27/2008 Capitolul 8 Assemblies. Aplicatii - configurare, securizare, instalare, rulare 1 Medii Vizuale de Programare Capitolul 8 Assemblies. Aplicatii - configurare, securizare, instalare, rulare

description

Assemblies Programming

Transcript of Assemblies

Page 1: Assemblies

4/27/2008 Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare 1

Medii Vizuale de Programare

Capitolul 8

Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 2: Assemblies

4/27/2008 Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare 2

Continutul cursului

0. Introducere

1. Prezentare .NET Framework si Visual Studio

2. C# - Tipuri de date si membri

3. Gestionarea interfetelor utilizator

4. Concepte POO in Visual Studio .NET

5. Testarea si debugging-ul aplicatiilor

6. GDI+. Controale utilizator.

7. Accesarea bazelor de date. ADO.NET

8. Assemblies. Aplicatii - configurare, securizare, instalare, rulare

9. Dezvoltarea de aplicatii ASP.NET

10. Web Services

11. .NET Framework 3.0 si 3.5

Page 3: Assemblies

4/27/2008 3

Capitolul 8

8. Assemblies. Aplicatii - configurare, securizare, instalare8.1. Assemblies si resurse

8.1.1. Assembly-uri

8.1.2. Fisiere pentru resurse

8.1.3. Assembly-uri partajate

8.2. Configurarea si optimizarea aplicatiilor8.2.1. Fisiere de configurare

8.2.2. Optimizarea performantei aplicatiilor

8.3. Securitatea aplicatiilor8.3.1. Permisiuni

8.3.2. Permisiuni de accesare a codului

8.4. Instalarea si rularea aplicatiilor

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 4: Assemblies

4/27/2008 4

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.1.1. Assemblies

- Un assembly reprezinta unitatea primara de dezvoltare intr-o aplicatie Microsoft .NET

- Assembly-urile sunt auto-descriptive si contin toata informatia solicitata de CLR pentru a interpreta continutul si pentru a configura executia

- Un assembly este un proiect compilat intr-un fisier executabil (.exe) sau intr-un fisier DLL (.dll)

- Un assembly contine:- Un manifest (metadata)

- Metadata pentru tipuri

- Limbajul intermediar al assembly-ului

- Fisiere de resurse

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 5: Assemblies

4/27/2008 5

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.1.1. Assemblies- Manifestul assembly-ului

• Contine metadata care descrie assembly-ul in contextul CLR

• Poate contine urmatoarele:

• identitate : contine numele si numarul versiunii assembly-ului

• tipuri si resurse : lista tuturor tipurilor continute, precum si informatii despre modalitatea de accesare a tipurilor

• fisiere : lista tuturor fisierelor din assembly, precum si informatii legate de dependentele dintre acestea

• permisiuni de securitate : descriu restrictiile de securitate impuse la executia assembly-ului

- Identitatea unui assembly este continuta in fisierul AssemblyInfo.cs[assembly: AssemblyTitle("")]

[assembly: AssemblyDescription("")]

[assembly: AssemblyConfiguration("")]

[assembly: AssemblyCompany("")]

[assembly: AssemblyProduct("")]

[assembly: AssemblyCopyright("")]

[assembly: AssemblyTrademark("")]

[assembly: AssemblyCulture("")]

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 6: Assemblies

4/27/2008 6

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.1.1. Assemblies

-------------------------------------------------------------------------------------------

8.1.2. Fisiere pentru resurse- Resurse

• Reprezinta date neexecutabile partajate in cadrul aplicatiei

• Exemple de resurse: siruri de caractere vizualizate in cadrul interfetei utilizator sau un set de imagini

• Impachetarea acestor date in fisiere resursa permit modificarea datelor necesare programului fara a recompila intreaga aplicatie

• Fisierele pentru resurse pot fi:• Fisiere salvate ca fisiere binare de tip .resources

• Fisiere XML de tip .resx

- Fisierele pentru resurse pot fi compilate in assembly-uri separate

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 7: Assemblies

4/27/2008 7

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.1.1. Assemblies

-------------------------------------------------------------------------------------------

8.1.2. Fisiere pentru resurse

- Interogarea resurselor la run-time• Se utilizeaza clasa ResourceManager

• Fiecare instanta a clasei ResourceManager este asociat un assembly care contine resurse

• Pentru un obiect ResourceManager se specifica doi parametrii:

• Namespace-ul fisierului resursa – este namespace-ul care contine fisierul, urmat de numele fisierului, fara a specifica extensiile.

• De exemplu, un fisier resursa denumit fileResources.de-DE.resx intr-un namespace Namespace1 va avea Namespace1.fileResources

• Assembly-ul in care se gaseste acest fisier

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 8: Assemblies

4/27/2008 8

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.1.1. Assemblies

-------------------------------------------------------------------------------------------

8.1.2. Fisiere pentru resurse- Exemple:// crearea unui ResourceManager pentru a accesa fisiere resursa dintr-un fisier

// partajat myResources.resx intr-un namespace myNamespace si acelasi assembly

// in care se gaseste obiectul curent se utilizeaza System.Resources

ResourceManager myManager = new ResourceManager

("myNamespace.myResources", this.GetType().Assembly);

...

// daca resursele se gasesc in alt assembly

System.Reflection.Assembly myResources;

// numele assembly-ului ca parametru

myResources = System.Reflection.Assembly.Load("ResourceAssembly");

ResourceManager myManager = new ResourceManager("ResourceAssembly.Resources",

myResources);

...

System.Drawing.Image myImage;

myImage = (System.Drawing.Image)myManager.GetObject("ImageResource");

...

String s = myManager.GetString(“WindowTitle”);

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 9: Assemblies

4/27/2008 9

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.1.1. Assemblies

8.1.2. Fisiere pentru resurse

-------------------------------------------------------------------------------------------

8.1.3. Assembly-uri partajate- Assembly-urile pot fi private sau partajate:

• Un assembly privat este un assembly utilizat de o singura aplicatie

• Un assembly partajat poate fi utilizat de mai multe aplicatii

– Mai multe proiecte pot referentia acelasi DLL si utiliza tipurile pe care le contine

– Pentru ca mai multe aplicatii sa partajeze un assembly, acesta trebuie instalat in Global Assembly Cache. Avantaje:

• locatie partajata

• securitate (assembly-ul este instalat in directorul sistemului de operare)

• versionare (pot fi instalate mai multe versiuni ale aceleiasi assembly)

– Partajarea unui assembly si instalarea in GAC implica semnarea assembly-ului cu strong name

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 10: Assemblies

4/27/2008 10

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.1.1. Assemblies

8.1.2. Fisiere pentru resurse

-------------------------------------------------------------------------------------------

8.1.3. Assembly-uri partajate- Strong Naming

• Un strong name este un nume care garanteaza identitatea assembly-ului

• Contine informatii despre assembly, cum ar fi numele, numarul versiunii si o pereche de chei publica/privata

• Aceste informatii sunt incriptate utilizand cheia privata si pot fi decriptate folosind cheia publica

• Dezvoltatorul aplicatiei este singurul care detine cheia privata

– O pereche de chei poate fi generata cu aplicatia sn.exe• Exemplu:

sn k myKey.snk

– Pentru a semna un assembly:• In fisierul AssemblyInfo.cs: [assembly: AssemblyKeyFile("..\\..\\myKey.snk")]

– Instalarea in Global Assembly Cache gacutil /i mypath\myAssembly.dll

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 11: Assemblies

4/27/2008 11

Cap. 8. Assemblies.

8.1. Assemblies si resurse

-------------------------------------------------------------------------------------------

8.2. Configurarea si optimizarea aplicatiilor

8.2.1. Fisiere de configurare- Permit specificarea locatiei sau informatiilor legate de versiunea assembly-urilor si

permit configurarea proprietatilor aplicatiei

- Un fisier de configurare este un fisier XML

- Numele fisierului de configurare este <name>.<extension>.config, unde <name> este numele aplicatiei, iar <extension> este extensia aplicatiei (de exemplu .exe)

- Structura de baza:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<...elemente de configurare...>

</configuration>

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 12: Assemblies

4/27/2008 12

Cap. 8. Assemblies.

8.1. Assemblies si resurse

-------------------------------------------------------------------------------------------

8.2. Configurarea si optimizarea aplicatiilor

8.2.1. Fisiere de configurare- Schema fisierului de configurare .config

- <appSettings> - contine elemente <add> pentru definirea de perechi de tipul key/data

- <startup> - contine numai elementul <requiredRuntime>, care permite specificarea versiunii common language runtime utilizate

- <runtime> - permite configurarea informatiilor legate de executia assembly-ului si comportamentul garbage colectorului

- <system.runtime.remoting> - contine informatii despre configurarea canalelor de comunicatie si a obiectelor de tip remote

- <mscorlib> - contine un tag <cryptographySettings> care permite configurareaelementelor criptografice din cadrul aplicatiei

- <configSections> - contine configurari personalizate

- <system.diagnostics> - informatii de configurare a claselor Trace si Debug din cadrul aplicatiei

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 13: Assemblies

4/27/2008 13

Cap. 8. Assemblies.

8.1. Assemblies si resurse

-------------------------------------------------------------------------------------------

8.2. Configurarea si optimizarea aplicatiilor

8.2.1. Fisiere de configurare- Exemplu:

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

<appSettings>

<add key="Widget.Visible" value="True" />

<add key="Widget.Text" value="I love my Widget!" />

</appSettings>

</configuration>

...

// crearea unui obiect AppSettingsReader

System.Configuration.AppSettingsReader myReader = new

System.Configuration.AppSettingsReader();

// crearea unui obiect utilizator

Widget myWidget = new Widget();

myWidget.Text = myReader.GetValue("DynamicWidget.Text“,

typeof(System.String)).ToString();

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 14: Assemblies

4/27/2008 14

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.2. Configurarea si optimizarea aplicatiilor

8.2.1. Fisiere de configurare

-------------------------------------------------------------------------------------------

8.2.2. Optimizarea performantei aplicatiilor- Optimizare in faza de dezvoltare

- Evitarea utilizarii variabilelor globale

- Tratarea atenta a structurilor iterative

- Evitarea legarii tarzii (late binding)

- Optimizarea este un proces iterativ- Masurarea datelor de performanta

- Identificarea bottleneck-urilor

- Rafinarea codului

- Masurarea performantei- Se poate utiliza perform.exe care poate monitoriza o serie de parametrii legati de

performanta aplicatiei

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 15: Assemblies

4/27/2008 15

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.2. Configurarea si optimizarea aplicatiilor

8.2.1. Fisiere de configurare

-------------------------------------------------------------------------------------------

8.2.2. Optimizarea performantei aplicatiilor- Optimizare in faza de dezvoltare

- Evitarea utilizarii variabilelor globale

- Tratarea atenta a structurilor iterative

- Evitarea legarii tarzii (late binding)

- Optimizarea este un proces iterativ- Masurarea datelor de performanta

- Identificarea bottleneck-urilor

- Rafinarea codului

- Masurarea performantei- Se poate utiliza perform.exe care poate monitoriza o serie de parametrii legati de

performanta aplicatiei

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 16: Assemblies

4/27/2008 16

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.2. Configurarea si optimizarea aplicatiilor

-------------------------------------------------------------------------------------------

8.3. Securitatea aplicatiilor– Politica de securitate este definita de administratorul sistemului

– Politica de securitate, care stabileste daca un assembly poate fi rulat, nu poate fi suprascrisa in cod

8.3.1. Permisiuni- O permisiune este un obiect care reprezinta un utilizator, o identitate sau o

resursa

- Configurarea autorizarilor bazate pe roluri- Securitatea role-based reprezinta garantarea sau blocarea la o aplicatie pe baza unei

identitati sau rol al unui utilizator

- Configurarea securitatii accesului la cod- Securitatea accesarii codului previne executia apelurilor neautorizate catre anumite

fragmente de cod

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 17: Assemblies

4/27/2008 17

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.2. Configurarea si optimizarea aplicatiilor

-------------------------------------------------------------------------------------------

8.3. Securitatea aplicatiilor

8.3.2. Permisiuni de accesare a codului- Cele mai importante permisiuni (namespace-ul System.Security)

* DirectoryServicesPermission - controleaza accesul la Active Directory

* EnvironmentPermission - controleaza accesul la variabilele de mediu

* EventLogPermission - controleaza scrierea/citirea in/din loguri de evenimente

* FileDialogPermission - controleaza accesul la fisiere sau directoare prin intermediul

unei ferestre de dialog

* FileIOPermission - controleaza crearea, citirea si scrierea in sistemul de fisiere

* OleDbPermission - stabileste accesul la o baza de date OleDb

* PrintingPermission - controleaza accesul la dispozitivele de printare

* ReflectionPermission - controleaza abilitatea claselor din System.Reflection de a extrage informatii despre tipuri la run-time

* RegistryPermission - controleaza citirea/scrierea din/in registri

* SecurityPermission - stabileste drepturi, incluzand dreptul de a executa cod, controleaza manipularea firelor de executie si a obiectelor Principals, si apelurile de code unmanaged

* SQLClientPermission - stabileste accesul la baze de date Microsoft SQL Server

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 18: Assemblies

4/27/2008 18

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.2. Configurarea si optimizarea aplicatiilor

-------------------------------------------------------------------------------------------

8.3. Securitatea aplicatiilor

8.3.2. Permisiuni de accesare a codului- Crearea permisiunilor de acces la cod// permisiune care reprezinta acces

// nerestrictionat la sistemul de fisiere

FileIOPermission myPermission = new

FileIOPermission(PermissionState.Unrestricted);

// toti apelantii acestui cod au permisiune pentru

// acces nerestrictionat la sistemul de fisiere

myPermission.Demand();

...

// o permisiune care garanteaza accesul la un

// fisier specific

FileIOPermission myPermission = new

FileIOPermission(FileIOPermissionAccess.Write, "C:\\myFile.txt");

myPermission.PermitOnly();

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 19: Assemblies

4/27/2008 19

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.2. Configurarea si optimizarea aplicatiilor

8.3. Securitatea aplicatiilor

-------------------------------------------------------------------------------------------

8.4. Instalarea si rularea aplicatiilor– Instalarea aplicatiilor .NET se poate face in mai multe moduri:

• Utilizand comanda XCOPY

• Utilizand Visual Studio .NET (se pot creea Windows Installer setup projects). Un proiectde setup poate fi executat pe un calculator care are instalat Windows Installer

– Se pot configura (proprietatile Build): modalitatile de impachetare a fisierului, setarile de compresie, directorul de instalare, etc

– Aplicatiile de tip setup prezinta un nivel inalt de configurabilitate. Pot fi setateproperitatile care furnizeaza legate de originea aplicatiei care vor fi instalate sicomportamanetul aplicatiei la design-time

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 20: Assemblies

4/27/2008 20

Cap. 8. Assemblies.

8.1. Assemblies si resurse

8.2. Configurarea si optimizarea aplicatiilor

8.3. Securitatea aplicatiilor

-------------------------------------------------------------------------------------------

8.4. Instalarea si rularea aplicatiilor– Ferestre de configurare a unui proiect de tip setup

• File System Editor permite editarea sistemului de fisiere de pe masina pe care se instaleaza aplicatia (target)

• Registry Editor permite adaugarea/editarea intrarilor din registrii masinii target

• File Types Editor permite crearea asocierilor dintre fisiere si programe de pe masinatarget (exemplu: specificarea programului care va deschide implicit fisiere de tip .wav -Winamp, Media Player etc).

• User Interface Editor faciliteaza personalizarea interfetei programului de instalare

• Custom Actions Editor permite stabilirea unor actiuni personalizate pe duratainstalarii (fragmente de cod care se vor executa ca raspuns la anumite evenimente lansate pe durata instalarii)

• Launch Conditions Editor permite adaugarea de criterii/conditii de cautare si executie

Capitolul 8 – Assemblies. Aplicatii - configurare, securizare, instalare, rulare

Page 21: Assemblies

4/27/2008 Capitolul 4 – Concepte POO in Visual Studio .NET 21

Continutul cursului

0. Introducere

1. Prezentare .NET Framework si Visual Studio

2. C# - Tipuri de date si membri

3. Gestionarea interfetelor utilizator

4. Concepte POO in Visual Studio .NET

5. Testarea si debugging-ul aplicatiilor

6. GDI+. Controale utilizator.

7. Accesarea bazelor de date. ADO.NET

8. Assemblies. Aplicatii - configurare, securizare, instalare, rulare

9. Dezvoltarea de aplicatii ASP.NET

10. Web Services

11. .NET Framework 3.0 si 3.5