Sunteți pe pagina 1din 21

Medii Vizuale de Programare

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

4/27/2008

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

Continutul cursului
0.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

Introducere
Prezentare .NET Framework si Visual Studio
C# - Tipuri de date si membri
Gestionarea interfetelor utilizator
Concepte POO in Visual Studio .NET
Testarea si debugging-ul aplicatiilor
GDI+. Controale utilizator.
Accesarea bazelor de date. ADO.NET
Assemblies. Aplicatii - configurare, securizare, instalare, rulare
Dezvoltarea de aplicatii ASP.NET
Web Services
.NET Framework 3.0 si 3.5

4/27/2008

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

Capitolul 8
8. Assemblies. Aplicatii - configurare, securizare, instalare
8.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 aplicatiilor


8.2.1. Fisiere de configurare
8.2.2. Optimizarea performantei aplicatiilor

8.3. Securitatea aplicatiilor


8.3.1. Permisiuni
8.3.2. Permisiuni de accesare a codului

8.4. Instalarea si rularea aplicatiilor

4/27/2008

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

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:
-

4/27/2008

Un manifest (metadata)
Metadata pentru tipuri
Limbajul intermediar al assembly-ului
Fisiere de resurse

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

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:
[assembly:
[assembly:
[assembly:
[assembly:
[assembly:
[assembly:
[assembly:

4/27/2008

AssemblyTitle("")]
AssemblyDescription("")]
AssemblyConfiguration("")]
AssemblyCompany("")]
AssemblyProduct("")]
AssemblyCopyright("")]
AssemblyTrademark("")]
AssemblyCulture("")]

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

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

4/27/2008

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

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

4/27/2008

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

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);

4/27/2008

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

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

4/27/2008

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

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

4/27/2008

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

10

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>

4/27/2008

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

11

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 configurarea
elementelor criptografice din cadrul aplicatiei
- <configSections> - contine configurari personalizate
- <system.diagnostics> - informatii de configurare a claselor Trace si Debug din cadrul
aplicatiei

4/27/2008

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

12

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();

4/27/2008

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

13

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

4/27/2008

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

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

4/27/2008

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

15

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

4/27/2008

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

16

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

4/27/2008

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

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
- 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();

4/27/2008

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

18

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 proiect
de 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 setate
properitatile care furnizeaza legate de originea aplicatiei care vor fi instalate si
comportamanetul aplicatiei la design-time

4/27/2008

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

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
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 masina
target (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 durata
instalarii (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

4/27/2008

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

20

Continutul cursului
0.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

Introducere
Prezentare .NET Framework si Visual Studio
C# - Tipuri de date si membri
Gestionarea interfetelor utilizator
Concepte POO in Visual Studio .NET
Testarea si debugging-ul aplicatiilor
GDI+. Controale utilizator.
Accesarea bazelor de date. ADO.NET
Assemblies. Aplicatii - configurare, securizare, instalare, rulare
Dezvoltarea de aplicatii ASP.NET
Web Services
.NET Framework 3.0 si 3.5

4/27/2008

Capitolul 4 Concepte POO in Visual Studio .NET

21

S-ar putea să vă placă și