You are on page 1of 39

IDZ DO

PRZYKADOWY ROZDZIA
SPIS TRECI

KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG

TWJ KOSZYK
DODAJ DO KOSZYKA

CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK

CZYTELNIA
FRAGMENTY KSIEK ONLINE

Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl

Microsoft Visual Basic .NET


2003. Ksiga eksperta
Autorzy: Heinrich Gantenbein, Greg Dunn,
Amit Kalani, Chris Payne, Thiru Thangarathinam
Tumaczenie: Pawe Gonera (wstp, rozdz. 122),
Tomasz Walczak (rozdz. 2340)
ISBN: 83-246-0096-5
Tytu oryginau: Microsoft Visual Basic .NET 2003 Unleashed
Format: B5, stron: 976
Wyczerpujce omwienie wszystkich zagadnie zwizanych z Visual Basic .NET 2003
Poznaj elementy jzyka Visual Basic .NET
Napisz aplikacje dla rodowiska Windows oraz aplikacje WWW
Wykorzystaj technologi ADO.NET do tworzenia pocze z bazami danych
Podnie bezpieczestwo aplikacji
Visual Basic to jeden z najpopularniejszych jzykw programowania. Jego pojawienie
si na rynku zrewolucjonizowao proces tworzenia aplikacji dla Windows model
programowania by tak prosty, e pozwala nawet niezbyt wprawnym programistom
na tworzenie rozbudowanych aplikacji. Kolejne wersje tego jzyka programowania
posiaday coraz wiksze moliwoci. Ukoronowaniem rozwoju Visual Basica byo
umieszczenie go w rodowisku .NET jako jednego z dostpnych w nim jzykw
programowania. Dziki integracji z .NET Visual Basic sta si w peni obiektowym
jzykiem, pozwalajcym na zrealizowanie zarwno prostych aplikacji Windows i WWW,
jak i zoonych wielowtkowych systemw rozproszonych.
Ksika Microsoft Visual Basic .NET 2003. Ksiga eksperta przedstawia wszystko,
co jest zwizane z jzykiem Visual Basic 2003 oraz tworzeniem za jego pomoc
aplikacji w rodowisku .NET. Opisuje podstawy jzyka, zasady programowania w nim
oraz techniki obiektowe. Czytajc j, dowiesz si, jak tworzy aplikacje dla systemu
Windows oraz aplikacje WWW, czy aplikacje z bazami danych, zabezpiecza je
i zwiksza ich wydajno. Nauczysz si stosowa usugi sieciowe do przesyania
danych przez sie i czenia aplikacji z innymi. Poznasz wszystkie nowoczesne
metody programowania.
Skadniki platformy .NET
Podstawy jzyka Visual Basic i programowania obiektowego
Tworzenie aplikacji Windows Forms
Korzystanie z funkcji graficznych
Budowanie wersji instalacyjnych
Poczenia z bazami danych za pomoc ADO.NET oraz jzyka XML
Tworzenie aplikacji WWW z wykorzystaniem ASP.NET
Operacje wejcia i wyjcia
Programowanie wielowtkowe
Zabezpieczanie aplikacji
Usugi sieciowe
Wykorzystaj ogromne moliwoci rodowiska .NET
i stwrz wydajne, stabilne i bezpieczne aplikacje

Spis treci
O autorach ................................................................................................... 21
Wstp ............................................................................................................. 23
Historia jzyka Visual Basic (VB) ...................................................................................................... 23
Visual Basic .NET (oraz C#) .............................................................................................................. 24
Visual Basic .NET 2003. Ksiga eksperta .......................................................................................... 24
Sposb organizacji ksiki ................................................................................................................. 24
Cz I Podstawy ...................................................................................................................... 24
Cz II Aplikacje Windows Forms ......................................................................................... 25
Cz III Programowanie baz danych ....................................................................................... 25
Cz IV Aplikacje Web (ASP.NET) ....................................................................................... 25
Cz V Zaawansowane programowanie .................................................................................. 25
Cz VI Zabezpieczanie aplikacji ........................................................................................... 25
Cz VII Technologia Remoting ............................................................................................. 26
Cz VIII Usugi Web ............................................................................................................. 26
Cz IX Usugi Enterprise ....................................................................................................... 26
Jak korzysta z tej ksiki ............................................................................................................ 26

Cz I Podstawy ..................................................................................27
Rozdzia 1. Wprowadzenie do .NET ............................................................ 29
Oprogramowanie jako usuga ............................................................................................................. 29
Produkty .NET ............................................................................................................................. 30
Usugi .NET ................................................................................................................................. 30
.NET Framework .......................................................................................................................... 30
Zadania .NET Framework .................................................................................................................. 33
Poznajemy architektur .NET Framework ......................................................................................... 34
Poznajemy zadania .NET Framework ................................................................................................ 35
Co to jest MSIL? ................................................................................................................................ 36
Co to jest plik Portable Executable (PE)? ..................................................................................... 36
Poznajemy kompilator JIT ........................................................................................................... 37
Wsplne rodowisko uruchomieniowe ............................................................................................... 37
Skadniki CLR .............................................................................................................................. 37
Biblioteka klas .NET Framework ................................................................................................. 38
Zalety CLR ................................................................................................................................... 41
Co to jest podzesp? .......................................................................................................................... 43
Struktura podzespou .................................................................................................................... 44
Wykorzystanie metody XCOPY do bezobsugowej instalacji podzespow ................................ 45

Microsoft Visual Basic .NET 2003. Ksiga eksperta


Problemy przy projektowaniu podzespou ................................................................................... 46
Typy podzespow ....................................................................................................................... 46
Metadane ...................................................................................................................................... 48
System wsplnego jzyka (CLS) .................................................................................................. 49
Podsumowanie .................................................................................................................................... 50
Propozycje dalszych lektur ................................................................................................................. 50

Rozdzia 2. Podstawy jzyka ....................................................................... 51


Deklarowanie zmiennych ................................................................................................................... 51
Znaczenie sw kluczowych ......................................................................................................... 52
Poziomy deklaracji ....................................................................................................................... 52
Deklaracja typu danych ................................................................................................................ 53
Deklaracja czasu ycia ................................................................................................................. 53
Deklaracja zasigu ........................................................................................................................ 53
Deklaracja dostpnoci ................................................................................................................. 54
Zmienne i przypisywanie .................................................................................................................... 54
Uycie przestrzeni nazw ..................................................................................................................... 55
Sowo kluczowe Imports .............................................................................................................. 56
Zastosowanie synonimw ............................................................................................................ 58
Tworzenie moduw w Visual Basic .NET ........................................................................................ 58
Tworzenie wielu moduw ........................................................................................................... 59
Struktury sterujce .............................................................................................................................. 60
Struktura wyboru If...Then ........................................................................................................... 61
Struktura wyboru If...Then...Else ................................................................................................. 61
Instrukcja Select...Case ................................................................................................................ 61
Ptla While ................................................................................................................................... 62
Ptla DoWhile...Loop ................................................................................................................... 63
Ptla Do...LoopWhile ................................................................................................................... 63
Ptla DoUntil...Loop .................................................................................................................... 64
Ptla Do...LoopUntil .................................................................................................................... 64
Ptla For...Next ............................................................................................................................ 64
Ptla ForEach...Next ..................................................................................................................... 65
Instrukcja Exit .............................................................................................................................. 66
Operatory przypisania ........................................................................................................................ 67
Operatory logiczne ....................................................................................................................... 67
Instrukcje warunkowe ........................................................................................................................ 70
Tworzenie wyrae warunkowych i ich zastosowanie w instrukcjach warunkowych ................. 70
Uycie operatora przypisania ............................................................................................................. 71
Stae .................................................................................................................................................... 71
Uycie operatorw .............................................................................................................................. 72
Funkcje wbudowane ........................................................................................................................... 73
Funkcje konwersji ........................................................................................................................ 73
Funkcje operujce na cigach znakw ......................................................................................... 74
Inne przydatne funkcje ................................................................................................................. 74
Tworzenie wasnych podprogramw .................................................................................................. 74
Procedury ..................................................................................................................................... 76
Funkcje ......................................................................................................................................... 76
Zasig zmiennych ......................................................................................................................... 77
Dlaczego zasig jest tak wany? .................................................................................................. 77
Podsumowanie .................................................................................................................................... 78
Propozycje dalszych lektur ................................................................................................................. 78

Spis treci

Rozdzia 3. Podstawy programowania obiektowego .............................. 79


Mechanizmy obiektowe ...................................................................................................................... 79
Tworzenie klas ................................................................................................................................... 80
Tworzenie prostych klas ............................................................................................................... 80
Obiekty, klasy i instancje .................................................................................................................... 82
Tworzenie konstruktorw ............................................................................................................. 83
Skadniki obiektu ......................................................................................................................... 84
Operacje na obiektach ........................................................................................................................ 88
Deklaracja i tworzenie obiektw .................................................................................................. 88
Referencje do obiektw ................................................................................................................ 89
Dereferencja obiektw ................................................................................................................. 90
Obsuga zdarze ................................................................................................................................. 90
Obsuga pojedynczego zdarzenia ................................................................................................. 91
Obsuga wielu zdarze ................................................................................................................. 91
Sowo kluczowe WithEvents ........................................................................................................ 92
Generowanie zdarze ................................................................................................................... 92
Odbieranie zdarze ....................................................................................................................... 93
Dziedziczenie w Visual Basic .NET ................................................................................................... 96
Przesanianie metod ...................................................................................................................... 97
Podsumowanie .................................................................................................................................... 98
Propozycje dalszych lektur ................................................................................................................. 99

Rozdzia 4. Typy danych w .NET Framework ...........................................101


Co to jest wsplny system typw? .................................................................................................... 102
System.Object od tego si zaczo ........................................................................................ 102
Typy i synonimy ............................................................................................................................... 103
Poznajemy typy danych .............................................................................................................. 104
Odzyskiwanie nieuytkw ......................................................................................................... 105
Typy wartociowe ...................................................................................................................... 106
Typy referencyjne ...................................................................................................................... 112
Klasa System.String ................................................................................................................... 113
Modyfikowalne cigi znakw ........................................................................................................... 114
Obiekt StringBuilder .................................................................................................................. 114
Co to jest GUID? .............................................................................................................................. 119
Pakowanie i rozpakowywanie .......................................................................................................... 120
Podsumowanie .................................................................................................................................. 120
Propozycje dalszych lektur ............................................................................................................... 121

Cz II Aplikacje Windows Forms ....................................................123


Rozdzia 5. Windows Forms .......................................................................125
Tworzenie nowego projektu ............................................................................................................. 125
Sposb uruchomienia projektu ......................................................................................................... 126
Wprowadzenie do formularzy .......................................................................................................... 127
Klasa Form ................................................................................................................................. 127
Zmiana waciwoci formularza ....................................................................................................... 130
Zmiana nazwy formularza .......................................................................................................... 131
Wywietlanie tekstu w pasku tytuowym formularza ................................................................. 131
Zmiana koloru ta formularza ..................................................................................................... 132

Microsoft Visual Basic .NET 2003. Ksiga eksperta


Umieszczanie rysunku jako ta formularza ................................................................................. 133
Wywietlanie ikony w formularzu ............................................................................................. 133
Okrelanie pocztkowego pooenia formularza ........................................................................ 134
Okrelanie rozmiaru oraz pooenia formularza ......................................................................... 134
Obiekt Application ..................................................................................................................... 136
Sterowanie wygldem formularza .............................................................................................. 136
Pokazywanie i usuwanie formularzy ................................................................................................ 138
Pokazywanie formularzy ............................................................................................................ 138
Konfiguracja przyciskw sterujcych ........................................................................................ 142
Metody formularza ........................................................................................................................... 144
Obsuga problemw z wywietlaniem ........................................................................................ 144
Ponowne inicjowanie waciwoci ............................................................................................. 145
Obsuga zdarze ............................................................................................................................... 145
Ptla komunikatw ..................................................................................................................... 146
Zdarzenia formularza ........................................................................................................................ 147
Sterowanie dziaaniem programu ............................................................................................... 147
Zdarzenia klawiatury i myszy .................................................................................................... 149
Podsumowanie .................................................................................................................................. 151
Propozycje dalszych lektur ............................................................................................................... 152

Rozdzia 6. Formanty ..................................................................................153


Wykorzystanie narzdzia Form Designer w Visual Studio .NET ..................................................... 153
Okno Toolbox ............................................................................................................................ 154
Okno Properties .......................................................................................................................... 154
Dodawanie procedur obsugi zdarze ......................................................................................... 155
Operacje na formantach formularza ........................................................................................... 156
Formant TextBox ............................................................................................................................. 157
Tworzenie pl do wprowadzania hasa ....................................................................................... 157
Tworzenie pola tekstowego tylko do odczytu ............................................................................ 158
Zdarzenia generowane przez formant TextBox .......................................................................... 158
Formant Button ................................................................................................................................. 159
Uycie formantu Button ............................................................................................................. 160
Obsuga kliknicia przycisku ..................................................................................................... 160
Formant Label .................................................................................................................................. 161
Formant RadioButton ....................................................................................................................... 162
Formant CheckBox ........................................................................................................................... 163
Reagowanie na kliknicie pola wyboru ...................................................................................... 164
Formant ListBox ............................................................................................................................... 165
Wybieranie elementw formantu ListBox .................................................................................. 165
Wyszukiwanie elementw w formancie ListBox ....................................................................... 165
Manipulowanie elementami w formancie ListBox ..................................................................... 166
Wsplne metody dostpne w formantach list ............................................................................. 169
Formant ComboBox ......................................................................................................................... 169
Menu ................................................................................................................................................ 173
Budowanie grup menu ............................................................................................................... 173
Dodawanie poziomw menu ...................................................................................................... 174
Programowe tworzenie menu ..................................................................................................... 175
Dodawanie skrtw klawiszowych ............................................................................................ 177
Dodawanie klawiszy szybkiego dostpu .................................................................................... 178
Obsuga zdarzenia Click ............................................................................................................. 179

Spis treci

Zdarzenia sterujce interfejsu uytkownika dla obiektw MenuItems ....................................... 180


Definiowanie obiektu MenuItem jako separatora ....................................................................... 180
Ukad elementw menu .............................................................................................................. 181
Menu rozmieszczane od prawej do lewej ................................................................................... 182
Menu kontekstowe ..................................................................................................................... 182
Podsumowanie .................................................................................................................................. 183
Propozycje dalszych lektur ............................................................................................................... 184

Rozdzia 7. Rysowanie ...............................................................................185


Interfejs urzdze graficznych (GDI) ............................................................................................... 185
GDI+: API wyszego poziomu ......................................................................................................... 186
Wasnoci GDI+ ......................................................................................................................... 186
Przestrzenie GDI+ w .NET ............................................................................................................... 186
Przestrze nazw System.Drawing .............................................................................................. 187
Przestrze nazw System.Drawing.Design .................................................................................. 187
Przestrze nazw System.Drawing.Printing ................................................................................. 188
Przestrze nazw System.Drawing.Imaging ................................................................................ 188
Przestrze nazw System.Drawing.Drawing2D ........................................................................... 189
Przestrze nazw System.Drawing.Text ...................................................................................... 189
Klasa Graphics ................................................................................................................................. 189
Czsto uywane obiekty graficzne ............................................................................................. 190
Rysowanie linii ........................................................................................................................... 192
Rysowanie prostych figur ........................................................................................................... 195
Wypenianie figur ....................................................................................................................... 198
Zbiory figur ................................................................................................................................ 200
Operacje na obrazach ................................................................................................................. 204
Jednostki miary .......................................................................................................................... 205
Operacje na czcionkach .................................................................................................................... 205
Podsumowanie .................................................................................................................................. 206
Propozycje dalszych lektur ............................................................................................................... 206

Rozdzia 8. Instalowanie aplikacji ............................................................207


Wprowadzenie do instalacji .............................................................................................................. 207
Planowanie instalacji .................................................................................................................. 208
Struktura podzespou ........................................................................................................................ 208
Opcje instalacji obsugiwane przez .NET ......................................................................................... 209
Zastosowanie XCOPY do instalowania aplikacji ....................................................................... 209
Zastosowanie programu Visual Studio .NET Installer ............................................................... 209
Rnice midzy XCOPY i instalatorem Windows ..................................................................... 211
Typy szablonw projektw instalacyjnych dostpnych w Visual Studio .NET ................................ 212
Tworzenie pakietu instalacyjnego .............................................................................................. 213
Konfigurowanie waciwoci instalacji ............................................................................................ 214
Konfigurowanie waciwoci projektu ............................................................................................. 215
Typy edytorw instalacji .................................................................................................................. 217
Konfiguracja edytora systemu plikw ........................................................................................ 217
Konfigurowanie edytora rejestru ................................................................................................ 220
Konfiguracja edytora typw plikw ........................................................................................... 220
Konfigurowanie edytora wasnych akcji .................................................................................... 221
Konfigurowanie edytora warunkw uruchomienia .................................................................... 222
Konfigurowanie edytora interfejsu uytkownika ....................................................................... 223

10

Microsoft Visual Basic .NET 2003. Ksiga eksperta


Generowanie pakietu instalacyjnego ................................................................................................ 226
Instalowanie aplikacji ................................................................................................................. 226
Odinstalowanie aplikacji ............................................................................................................ 227
Podsumowanie .................................................................................................................................. 228
Propozycje dalszych lektur ............................................................................................................... 228

Rozdzia 9. Drukowanie .............................................................................229


Drukowanie w .NET ......................................................................................................................... 229
Definiowanie dokumentu ................................................................................................................. 231
Zdarzenia obsugiwane przez klas PrintDocument ................................................................... 232
Metody klasy PrintDocument ..................................................................................................... 233
Drukowanie dokumentu ............................................................................................................. 233
Zastosowanie okien dialogowych drukowania ................................................................................. 235
Zastosowanie formantu PrintPreviewDialog .............................................................................. 236
Zastosowanie formantu PrintDialog ........................................................................................... 238
Uycie formantu PageSetupDialog ............................................................................................ 240
Zastosowanie formantu PrintPreviewControl ............................................................................. 243
Obsuga ustawie ............................................................................................................................. 244
Klasa PrinterSettings .................................................................................................................. 245
Rola klasy PageSettings w drukowaniu ...................................................................................... 246
Podsumowanie .................................................................................................................................. 247
Propozycje dalszych lektur ............................................................................................................... 247

Rozdzia 10. Zaawansowane techniki Windows Forms ..........................249


Dynamiczne dodawanie formantw ................................................................................................. 249
Dynamiczne przechwytywanie zdarze ..................................................................................... 251
Tworzenie formularzy zalenych ..................................................................................................... 252
Interfejs MDI .................................................................................................................................... 253
Implementacja dziedziczenia w Visual Studio .NET ........................................................................ 254
Formant NotifyIcon .......................................................................................................................... 255
Zastosowanie dostawcw w aplikacjach Windows Forms ............................................................... 257
Formant HelpProvider ...................................................................................................................... 257
Dodawanie pomocy do aplikacji Windows Forms ..................................................................... 257
Wywietlanie pomocy z uyciem klasy ToolTips ............................................................................ 262
Okna dialogowe ................................................................................................................................ 264
Uycie kursorw w aplikacjach Windows Forms ............................................................................. 265
Zaawansowane formanty interfejsu uytkownika ............................................................................. 267
Formant TreeView ..................................................................................................................... 267
Formant DateTimePicker ........................................................................................................... 272
Formant MonthCalendar ............................................................................................................ 273
Podsumowanie .................................................................................................................................. 275
Propozycje dalszych lektur ............................................................................................................... 275

Cz III Programowanie baz danych ..............................................277


Rozdzia 11. Klasy ADO.NET .......................................................................279
Dostawcy danych ............................................................................................................................. 279
Dostawcy SqlClient oraz OleDb ................................................................................................ 280
Obiekt Connection ............................................................................................................................ 281
Waciwo ConnectionString .................................................................................................... 281
Metoda Open() ........................................................................................................................... 282

Spis treci

11

Metoda Close() ........................................................................................................................... 283


Metoda BeginTransaction() ........................................................................................................ 283
Obiekt Command ............................................................................................................................. 289
Przygotowanie obiektu Command do wykonania instrukcji SQL .............................................. 289
Przygotowanie obiektu Command do wywoania procedury skadowanej ................................. 291
Przygotowanie obiektu Command do wywoania TableDirect .................................................. 293
Metody Execute obiektu Command ........................................................................................... 293
Obiekt DataReader ........................................................................................................................... 294
Obiekt DataSet ................................................................................................................................. 297
Obiekty DataSet ze cis i lun kontrol typw ...................................................................... 298
Obiekty podrzdne do DataSet ................................................................................................... 300
Obiekt DataView .............................................................................................................................. 311
Obiekt DataAdapter .......................................................................................................................... 312
Uycie kreatora DataAdapter do generowania cigu poczenia ................................................ 313
Problemy z wielodostpem ............................................................................................................... 314
Przykadowe aplikacje doczone do ksiki .................................................................................... 315
Aplikacja TransactionsAndDataSets .......................................................................................... 315
Aplikacja TransactionInteractionExplorer .................................................................................. 315
Aplikacja ConcurrencyViolator .................................................................................................. 318
Podsumowanie .................................................................................................................................. 319
Propozycje dalszych lektur ............................................................................................................... 320

Rozdzia 12. Tworzenie i obsuga baz danych w Visual Studio .............321


Tworzenie bazy danych .................................................................................................................... 322
Tworzenie i modyfikacja komponentw bazy danych ...................................................................... 323
Tworzenie nowej tabeli .................................................................................................................... 323
Projekt tabeli Instructor .................................................................................................................... 325
Definiowanie klucza gwnego .................................................................................................. 326
Rodzaje kluczy gwnych .......................................................................................................... 327
Peny projekt tabeli Instructor .................................................................................................... 330
Zapisywanie tabeli Instructor ........................................................................................................... 332
Projekt tabeli Student ....................................................................................................................... 333
Projekt tabeli Course ........................................................................................................................ 333
Projekt tabeli Enrollment .................................................................................................................. 334
Modyfikacja projektu tabeli .............................................................................................................. 334
Kilka sw o typach danych dla uytkownikw Microsoft Access ................................................... 337
Pobieranie danych z tabeli ................................................................................................................ 338
Diagram bazy danych School ........................................................................................................... 338
Tworzenie nowej relacji ................................................................................................................... 341
Relacja Course-Instructor ................................................................................................................. 343
Relacja Enrollment-Course ............................................................................................................... 345
Relacja Enrollment-Student .............................................................................................................. 345
Peny diagram bazy danych .............................................................................................................. 346
Zapisywanie diagramu bazy danych ................................................................................................. 346
Przegldanie waciwoci tabel ........................................................................................................ 347
Tworzenie nowej perspektywy ......................................................................................................... 349
Ukrywanie paneli w oknie projektowania perspektywy ............................................................. 351
Wywietlanie rekordw z perspektywy ...................................................................................... 355
Zapisywanie perspektywy ................................................................................................................ 355
Odczyt danych z zamknitej perspektywy ........................................................................................ 357
Uwagi dotyczce uporzdkowania perspektyw ................................................................................ 358

12

Microsoft Visual Basic .NET 2003. Ksiga eksperta


Tworzenie procedur skadowanych .................................................................................................. 360
Edycja procedur skadowanych ........................................................................................................ 362
Tworzenie procedury skadowanej z uyciem SqlDataAdapter ........................................................ 364
Tworzenie funkcji ............................................................................................................................. 364
Operacje na bazie danych, jakich nie da si wykona w Visual Studio ............................................ 368
Podsumowanie .................................................................................................................................. 369
Propozycje dalszych lektur ............................................................................................................... 369

Rozdzia 13. Uycie kreatorw Data Form


oraz DataAdapter w aplikacjach Windows ............................................371
Opis kreatora .................................................................................................................................... 372
Tworzenie formularza danych .......................................................................................................... 373
Obiekty generowane przez kreator ............................................................................................. 377
Analiza wygenerowanego kodu ........................................................................................................ 380
Deklaracje zmiennych ................................................................................................................ 380
Tworzenie i inicjalizacja ............................................................................................................ 381
Metody tworzone przez kreator Data Form ...................................................................................... 387
Metody wykorzystywane do obsugi zdarze ............................................................................. 387
Metody niewykorzystywane do obsugi zdarze ........................................................................ 389
Przegld kodu realizujcego rne funkcje ...................................................................................... 390
adowanie danych ...................................................................................................................... 390
Modyfikacja danych ................................................................................................................... 393
Anulowanie wszystkich zmian ................................................................................................... 395
Dodawanie rekordw do tabeli Publishers ................................................................................. 395
Kasowanie rekordu z tabeli Publishers ....................................................................................... 395
Anulowanie zmian w rekordzie tabeli Publishers ....................................................................... 396
Nawigacja w tabeli Publishers .................................................................................................... 396
Uwalniamy si od kreatora Data Form ............................................................................................. 397
Tworzenie formularza danych SqlClient z wykorzystaniem kreatorw Data Form
oraz SqlDataAdapter ................................................................................................................ 397
Nastpne kroki .................................................................................................................................. 405
Podsumowanie .................................................................................................................................. 406
Propozycje dalszych lektur ............................................................................................................... 406

Rozdzia 14. Doczanie danych w aplikacjach Windows ....................407


Przegld doczania danych .............................................................................................................. 408
Kategorie czenia danych: tylko odczyt kontra odczyt-zapis oraz proste kontra zoone ............ 409
Potencjalne rda danych oraz obsuga interfejsu IList ................................................................... 410
Klasy .NET implementujce interfejs IList ................................................................................ 410
BindingContext ................................................................................................................................ 410
Obiekt CurrencyManager ................................................................................................................. 412
Obiekt PropertyManager .................................................................................................................. 413
Obiekty doczane do danych ........................................................................................................... 414
Proste doczanie formant TextBox ....................................................................................... 415
Zoone doczanie formant ComboBox ............................................................................... 415
Formant DataGrid ...................................................................................................................... 416
Dopasowywanie rda danych w instrukcjach nawigacyjnych do rda danych doczenia ......... 417
Doczanie formantw do obiektu DataSet ...................................................................................... 418
Doczanie waciwoci obiektu do wartoci tabelowych ................................................................ 420
Wane metody klas BindingContext i DataSet ................................................................................. 423
Zastosowanie obiektu CurrencyManager do czenia nietabelowego ............................................... 427

Spis treci

13

Doczanie wielu formantw formularza do rnych waciwoci jednego obiektu .......................... 428
Doczanie wielu waciwoci jednego obiektu do wielu waciwoci innego obiektu .................... 430
Doczanie formantw formularza do listy ArrayList obiektw ....................................................... 431
Ograniczenie aplikacji BindToAnArraylistOfObjects tylko do odczytu .................................... 433
Doczanie do odczytu i zapisu ........................................................................................................ 433
Implementacja doczania do odczytu i zapisu we wasnej kolekcji obiektw ........................... 434
Przykadowa aplikacja: ReadWriteBindableCollection .............................................................. 435
Jak dziaa aplikacja ReadWriteBindableCollection .................................................................... 436
Klasa Product ............................................................................................................................. 439
Klasa Products ............................................................................................................................ 443
Dodatkowe operacje pozwalajce podczy aplikacj ReadWriteBindableCollection
do bazy danych ........................................................................................................................ 450
Przykadowe aplikacje doczone do ksiki .................................................................................... 451
Podsumowanie .................................................................................................................................. 451
Propozycje dalszych lektur ............................................................................................................... 453

Rozdzia 15. ADO.NET i XML .......................................................................455


Wstp ................................................................................................................................................ 455
Metody zwizane z XML w klasie DataSet ...................................................................................... 457
Odczyt i zapis schematu XML ......................................................................................................... 457
Wpyw danych schematu na dane wywietlane w DataGrid ...................................................... 459
Odczyt danych XML ........................................................................................................................ 460
Aplikacja ReadXmlWorkoutMachine ........................................................................................ 461
Zapis danych XML ........................................................................................................................... 463
Przykadowe wyniki dziaania metody WriteXml() ................................................................... 464
Tworzenie obiektu XmlReader z wykorzystaniem obiektu Command ............................................. 467
Zapis danych schematu do obiektu DataSet za pomoc DataAdapter .............................................. 469
Przykadowe aplikacje doczone do ksiki .................................................................................... 471
Pozostae mechanizmy wspierajce XML w .NET Framework i Visual Studio ............................... 472
Podsumowanie .................................................................................................................................. 472
Propozycje dalszych lektur ............................................................................................................... 472

Cz IV Aplikacje Web (ASP.NET) ....................................................475


Rozdzia 16. Proste aplikacje Web ...........................................................477
Tworzenie prostej aplikacji Web ...................................................................................................... 477
Przygotowywanie serwera WWW .............................................................................................. 478
Konfigurowanie bazy danych ..................................................................................................... 479
Tworzenie strony domowej blogu .............................................................................................. 480
Tworzenie formularzy Web .............................................................................................................. 486
Obsuga danych w sieci WWW .................................................................................................. 486
Uycie formularzy ukrytego kodu .............................................................................................. 487
Tworzenie interakcyjnych formularzy Web ............................................................................... 489
Zastosowanie formantw Web na formularzach .............................................................................. 495
Poznajemy formanty Web .......................................................................................................... 495
Tworzenie rozbudowanego interfejsu uytkownika ................................................................... 498
Obsuga zdarze Web ....................................................................................................................... 502
Zdarzenia ASP.NET powtrka .............................................................................................. 503
Poznajemy obsug zdarze ....................................................................................................... 505
Podsumowanie .................................................................................................................................. 511
Propozycje dalszych lektur ............................................................................................................... 511

14

Microsoft Visual Basic .NET 2003. Ksiga eksperta

Rozdzia 17. Doczanie danych w aplikacjach Web ...........................513


Doczanie danych do prostych formantw ...................................................................................... 513
Zastosowanie formantw szablonowych do wywietlania danych ................................................... 517
Propagacja zdarze ..................................................................................................................... 518
Formant Repeater ....................................................................................................................... 519
Formant DataList ....................................................................................................................... 522
Formant DataGrid ...................................................................................................................... 526
Tworzenie doczalnych formantw Web ........................................................................................ 530
Przetwarzanie przesyanych danych formularza ............................................................................... 534
Model przetwarzania danych formularza ................................................................................... 534
Modyfikujemy formant LoginForm ........................................................................................... 536
Podsumowanie .................................................................................................................................. 539
Propozycje dalszych lektur ............................................................................................................... 539

Rozdzia 18. Zarzdzanie stanem .............................................................541


Zapamitywanie danych na poziomie aplikacji ................................................................................ 542
Zapamitywanie danych sesji ........................................................................................................... 544
Przypomnienie zagadnienia sesji Web ....................................................................................... 544
Obsuga sesji .............................................................................................................................. 545
Zapamitywanie stanu widoku ......................................................................................................... 546
Zarzdzanie mechanizmem cookie ................................................................................................... 551
Przypomnienie na temat cookie .................................................................................................. 551
Operacje na cookie ..................................................................................................................... 552
Podsumowanie .................................................................................................................................. 556
Propozycje dalszych lektur ............................................................................................................... 556

Rozdzia 19. Buforowanie ..........................................................................557


Buforowanie elementw statycznych ............................................................................................... 557
Buforowanie caych stron ................................................................................................................. 561
Buforowanie formantw ................................................................................................................... 562
Buforowanie deklaratywne ......................................................................................................... 562
Buforowanie programowe .......................................................................................................... 564
Podsumowanie .................................................................................................................................. 565
Propozycje dalszych lektur ............................................................................................................... 565

Rozdzia 20. Zarzdzanie witryn WWW ...................................................567


Konfigurowanie witryny ................................................................................................................... 567
Plik global.asax .......................................................................................................................... 568
Plik web.config .......................................................................................................................... 570
Zastosowanie pamici podrcznej podzespow dla plikw aplikacji .............................................. 574
ledzenie aplikacji ASP.NET ........................................................................................................... 575
Podsumowanie .................................................................................................................................. 578
Propozycje dalszych lektur ............................................................................................................... 578

Rozdzia 21. Bezpieczestwo ....................................................................579


Przegld zabezpiecze w ASP.NET ................................................................................................. 579
Uwierzytelnianie uytkownika Web ................................................................................................. 581
Uwierzytelnianie Windows ........................................................................................................ 582
Uwierzytelnianie typu Forms ..................................................................................................... 584
Uwierzytelnianie za pomoc usugi Passport ............................................................................. 587

Spis treci

15

Autoryzacja uytkownikw i rl ...................................................................................................... 588


Autoryzacja bazujca na rolach .................................................................................................. 588
Autoryzacja bazujca na zasobach ............................................................................................. 592
Zapobieganie atakom wstrzyknicia kodu ........................................................................................ 593
Zabezpieczanie cigw poczenia i innych kluczy .......................................................................... 595
Podsumowanie .................................................................................................................................. 596
Propozycje dalszych lektur ............................................................................................................... 597

Rozdzia 22. Rozszerzanie ASP.NET ...........................................................599


Poznajemy sposb obsugi strumienia HTTP w ASP.NET .............................................................. 599
Zastosowanie moduw HTTP do modyfikacji danych wyjciowych .............................................. 602
Tworzenie wasnych obiektw HttpHandler .................................................................................... 605
Podsumowanie .................................................................................................................................. 608
Propozycje dalszych lektur ............................................................................................................... 608

Cz V Zaawansowane programowanie .......................................609


Rozdzia 23. Wersjonowanie i globalna pami podrczna
podzespow ..............................................................................................611
Wprowadzenie do wersjonowania platformy .NET .......................................................................... 612
Podzespoy prywatne ........................................................................................................................ 612
Podzespoy wspdzielone ................................................................................................................ 613
Przypisywanie silnych nazw ....................................................................................................... 613
Globalna podrczna pami podzespow .................................................................................. 613
Uywanie podzespow wspdzielonych ........................................................................................ 614
Przypisywanie silnej nazwy do podzespou ............................................................................... 614
Dodawanie podzespou do GAC ................................................................................................ 616
Opnione podpisywanie podzespow ..................................................................................... 618
Strategie doczania podzespow .................................................................................................... 620
Sprawdzanie strategii z poziomu aplikacji ................................................................................. 621
Sprawdzanie strategii z poziomu wydawcy ................................................................................ 623
Sprawdzanie strategii z poziomu administratora ........................................................................ 624
Jak wsplne rodowisko uruchomieniowe docza podzesp ................................................... 625
Podsumowanie .................................................................................................................................. 627
Propozycje dalszych lektur ............................................................................................................... 627

Rozdzia 24. Operacje wejcia-wyjcia oraz utrwalanie obiektw ......629


Operacje wejcia-wyjcia na plikach ................................................................................................ 629
Uywanie klasy File ................................................................................................................... 630
Uywanie klasy FileStream ........................................................................................................ 630
Uywanie klas StreamReader oraz StreamWriter ....................................................................... 631
Uywanie klas BinaryReader oraz BinaryWriter ....................................................................... 633
Serializacja ....................................................................................................................................... 634
Serializacja XML ....................................................................................................................... 636
Serializacja w czasie wykonywania programu ........................................................................... 639
Podsumowanie .................................................................................................................................. 645
Propozycje dalszych lektur ............................................................................................................... 646

16

Microsoft Visual Basic .NET 2003. Ksiga eksperta

Rozdzia 25. Wsppraca z modelem COM ............................................647


Wprowadzenie do wspdziaania .NET Framework z modelem COM ........................................... 647
Jak .NET Framework wspdziaa z modelem COM? ...................................................................... 648
Uywanie komponentw COM w aplikacjach .NET Framework .................................................... 649
Tworzenie i rejestrowanie komponentw COM ......................................................................... 649
Tworzenie RCW dla komponentu COM .................................................................................... 650
Automatyczne tworzenie opakowania RCW .............................................................................. 651
Uywanie komponentw .NET Framework w aplikacjach COM .................................................... 652
Tworzenie za pomoc Visual Basic .NET klasy dostpnej dla aplikacji COM .......................... 652
Tworzenie opakowania wywoywanego z COM (CCW) ........................................................... 654
Uywanie komponentw .NET Framework w aplikacji COM ................................................... 655
Podsumowanie .................................................................................................................................. 657
Propozycje dalszych lektur ............................................................................................................... 657

Rozdzia 26. Zdarzenia i delegacje ..........................................................659


Wprowadzenie do zdarze ................................................................................................................ 659
Definiowanie i zgaszanie zdarze ............................................................................................. 660
Obsuga zdarze ......................................................................................................................... 661
Wprowadzenie do delegacji .............................................................................................................. 663
Definiowanie delegacji ............................................................................................................... 664
Tworzenie instancji delegacji ..................................................................................................... 665
Wywoywanie delegacji ............................................................................................................. 665
Delegacje zbiorowe .......................................................................................................................... 666
Zdarzenia i delegacje ........................................................................................................................ 667
Podsumowanie .................................................................................................................................. 668
Propozycje dalszych lektur ............................................................................................................... 668

Rozdzia 27. Wielowtkowo ...................................................................669


Wprowadzenie do wtkw ............................................................................................................... 669
Zalety wielowtkowoci ............................................................................................................. 670
Wady wielowtkowoci ............................................................................................................. 670
Uywanie wtkw ............................................................................................................................ 671
Tworzenie i uruchamianie wtkw ............................................................................................. 671
Waciwoci wtkw .................................................................................................................. 672
Metody wtkw .......................................................................................................................... 673
Synchronizacja wtkw .................................................................................................................... 674
Sytuacja wycigu ........................................................................................................................ 674
Zakleszczenie ............................................................................................................................. 674
Sposoby synchronizacji .............................................................................................................. 675
Programowanie asynchroniczne ....................................................................................................... 678
Model programowania asynchronicznego .NET Framework ..................................................... 678
Pobieranie wynikw wywoa metod asynchronicznych ........................................................... 679
Asynchroniczne wywoania zwrotne .......................................................................................... 679
Podsumowanie .................................................................................................................................. 680
Propozycje dalszych lektur ............................................................................................................... 681

Rozdzia 28. Rozszerzanie moliwoci platformy za pomoc refleksji ....683


Metadane .......................................................................................................................................... 683
Wprowadzenie do mechanizmu refleksji .......................................................................................... 685
Stosowanie refleksji do podzespou .................................................................................................. 685

Spis treci

17

Stosowanie refleksji do typu ............................................................................................................. 686


Pne doczanie .............................................................................................................................. 689
Podsumowanie .................................................................................................................................. 690
Propozycje dalszych lektur ............................................................................................................... 690

Cz VI Zabezpieczanie aplikacji ...................................................691


Rozdzia 29. Bezpieczestwo oparte na uprawnieniach kodu (CAS) ......693
Zarzdzanie uprawnieniami kodu ..................................................................................................... 694
Sprawdzanie domylnych zabezpiecze
za pomoc narzdzia konfiguracyjnego .NET Framework ...................................................... 694
Maksymalizacja bezpieczestwa systemu .................................................................................. 696
agodzenie systemu bezpieczestwa w celu tworzenia oprogramowania .................................. 704
Instalacja zasad CAS .................................................................................................................. 704
Jak rodowisko CLR okrela zbir uprawnie nadawanych podzespoowi? .................................... 705
Okrelanie uprawnie nadanych podzespoowi przez zasady .................................................... 705
Stosowanie atrybutw z poziomu podzespou do zmiany nadawanych uprawnie .................... 707
Jak uywa da zabezpiecze? ..................................................................................................... 708
Proste dania i analiza stosu ..................................................................................................... 709
dania z poziomu doczania ................................................................................................... 712
dania z poziomu dziedziczenia ............................................................................................... 713
Podpisywanie podzespow .............................................................................................................. 714
Natychmiastowe podpisywanie .................................................................................................. 715
Opnione podpisywanie ........................................................................................................... 715
czenie rnych technik ................................................................................................................. 717
Podsumowanie .................................................................................................................................. 717
Propozycje dalszych lektur ............................................................................................................... 717

Rozdzia 30. Uprawnienia oparte na tosamoci i rolach ......................719


Autoryzacja i uwierzytelnianie ......................................................................................................... 719
Uwierzytelnieni uytkownicy ........................................................................................................... 720
Bezpieczestwo oparte na rolach ...................................................................................................... 721
Deklaratywne zabezpieczanie oparte na rolach .......................................................................... 722
Programowe zabezpieczanie oparte na rolach ............................................................................ 723
Tworzenie wasnych obiektw kontekstu bezpieczestwa i tosamoci ........................................... 724
Podsumowanie .................................................................................................................................. 729
Propozycje dalszych lektur ............................................................................................................... 729

Cz VII Technologia Remoting ......................................................731


Rozdzia 31. Technologia Remoting w praktyce ....................................733
Wprowadzenie do technologii Remoting .......................................................................................... 733
Procesy systemu Windows a domeny aplikacji .NET Framework ............................................. 734
Zdalne korzystanie z obiektw i szeregowanie .......................................................................... 734
Architektura technologii Remoting ............................................................................................ 736
Proste zdalne korzystanie z obiektw w obrbie procesu ................................................................. 737
Jawne zdalne korzystanie z obiektw ............................................................................................... 740
Typy aktywacji zdalnych obiektw ............................................................................................ 740
Zdalne korzystanie z obiektw konfigurowane programowo ..................................................... 741
Deklaratywne konfigurowanie ................................................................................................... 753

18

Microsoft Visual Basic .NET 2003. Ksiga eksperta


Bezpieczestwo zdalnych wywoa ................................................................................................. 760
Ograniczenia parametrw zdalnych wywoa ............................................................................ 760
Zarzdzanie cyklem ycia zdalnych obiektw .................................................................................. 762
Jak zdalne obiekty kontroluj wasn dzieraw? ...................................................................... 764
Jawne odnawianie dzierawy ..................................................................................................... 764
Odnawianie dzierawy za pomoc sponsora .............................................................................. 765
Zalecane techniki kontroli cyklu ycia ....................................................................................... 771
Jednostronne wywoania i zdalne zdarzenia ..................................................................................... 771
Konteksty i usugi ............................................................................................................................. 772
Klasy Object, MarshalByRefObject i ContextBoundObject ...................................................... 773
Usugi ......................................................................................................................................... 773
Podsumowanie .................................................................................................................................. 773
Propozycje dalszych lektur ............................................................................................................... 774

Cz VIII Usugi Web .........................................................................775


Rozdzia 32. Podstawowe usugi Web ......................................................777
Protokoy wykorzystywane przez usugi Web .................................................................................. 778
Tworzenie usug Web ....................................................................................................................... 778
Testowanie usugi ....................................................................................................................... 779
Wywoywanie usug Web ................................................................................................................. 782
Tworzenie usug Web uywajcych zoonych parametrw ............................................................ 786
Importowanie usug Web .................................................................................................................. 789
Wykrywanie usug ...................................................................................................................... 789
Tworzenie porednika usugi ...................................................................................................... 789
Dostosowywanie usug Web do wasnych potrzeb ........................................................................... 790
Atrybut WebService ................................................................................................................... 790
Atrybut WebMethod .................................................................................................................. 790
Tworzenie wasnych nagwkw SOAP .......................................................................................... 793
Podsumowanie .................................................................................................................................. 796
Propozycje dalszych lektur ............................................................................................................... 796

Rozdzia 33. Bezpieczestwo i rozszerzenia usug Web .........................797


Zabezpieczenia z poziomu platformy ............................................................................................... 797
Strategie uwierzytelniania IIS .................................................................................................... 798
Strategie uwierzytelniania ASP.NET ......................................................................................... 798
Przekazywanie informacji o uwierzytelnieniu do usug Web ..................................................... 800
Autoryzacja usug Web .............................................................................................................. 800
Zabezpieczenia z poziomu komunikatu ............................................................................................ 802
Dodawanie obsugi WSE do aplikacji ........................................................................................ 802
Uwierzytelnianie za pomoc WSE ............................................................................................. 803
etony zabezpiecze WSE ......................................................................................................... 806
Autoryzacja za pomoc WSE ..................................................................................................... 806
Zasady bezpieczestwa WSE ..................................................................................................... 806
Podsumowanie .................................................................................................................................. 808
Propozycje dalszych lektur ............................................................................................................... 809

Spis treci

19

Cz IX Usugi Enterprise ...................................................................811


Rozdzia 34. Wprowadzenie do usug Enterprise ....................................813
Ulepszanie oprogramowania za pomoc architektur n-warstwowych .............................................. 813
Definiowanie komponentw za pomoc interfejsw ........................................................................ 814
Wprowadzenie do architektury usug Enterprise .............................................................................. 815
Tworzenie prostych obiektw serwerowych .............................................................................. 816
Rozszerzenie usug skadowych w konsoli MMC ...................................................................... 822
Debugowanie obiektw serwerowych ........................................................................................ 824
Instalacja zdalna i lokalna .......................................................................................................... 825
Usprawnianie pracy z COM+ ..................................................................................................... 826
Dodawanie instrumentacji i dokumentacji do obiektw serwerowych ............................................. 833
Podsumowanie .................................................................................................................................. 833
Propozycje dalszych lektur ............................................................................................................... 833

Rozdzia 35. Usugi zwizane z aktywacj ..............................................835


Zwikszanie skalowalnoci za pomoc aktywacji w czasie trwania (JIT) ........................................ 835
Implementacja interfejsu COM+ IObjectControl ............................................................................. 839
Poprawa wydajnoci za pomoc tworzenia puli obiektw ................................................................ 841
czenie aktywacji JITA z tworzeniem puli obiektw
w celu poprawy skalowalnoci i wydajnoci .................................................................................. 847
Zmiana wartoci parametrw ObjectPooling w czasie instalacji ...................................................... 848
Przekazywanie argumentw czasu wykonania za pomoc cigu znakw konstrukcji ..................... 849
Wczanie rwnowaenia obcienia ............................................................................................... 852
Podsumowanie .................................................................................................................................. 852
Propozycje dalszych lektur ............................................................................................................... 852

Rozdzia 36. Usugi zwizane z transakcjami ..........................................853


Upraszczanie kodu transakcyjnego za pomoc transakcji COM+ .................................................... 853
Transakcje i poziom izolacji ....................................................................................................... 855
Implementacja komponentu transakcyjnego .............................................................................. 857
Kontrola granic transakcji i poziom izolacji ..................................................................................... 862
Rozlunianie wymogu izolacji za pomoc waciwoci IsolationLevel ..................................... 862
Kontrola granic transakcji .......................................................................................................... 863
czenie transakcji z pul obiektw i cigami znakw konstrukcji ................................................. 864
Uywanie stron internetowych i usug Web jako gwnych obiektw transakcji ............................. 867
Podsumowanie .................................................................................................................................. 867
Propozycje dalszych lektur ............................................................................................................... 867

Rozdzia 37. Zabezpieczanie przed jednoczesnym dostpem ............869


Wielowtkowo i zabezpieczanie zasobw ..................................................................................... 869
Poprawianie rozwizania za pomoc blokad wtkw logicznych opartych na czynnoci ................ 870
Kontrolowanie granic czynnoci ...................................................................................................... 871
czenie czynnoci z aktywacj JIT, transakcjami i korzystaniem z puli ........................................ 872
Podsumowanie .................................................................................................................................. 873
Propozycje dalszych lektur ............................................................................................................... 873

Rozdzia 38. Usugi dla luno powizanych systemw ..........................875


Buforowanie da za pomoc kolejkowanych komponentw ........................................................ 875
Tworzenie prostego kolejkowanego komponentu ...................................................................... 878
Obsuga bdw .......................................................................................................................... 881
Kolejkowane komponenty, transakcje i korzystanie z puli ......................................................... 884

20

Microsoft Visual Basic .NET 2003. Ksiga eksperta


Tworzenie systemw typu publikuj-subskrybuj za pomoc luno powizanych zdarze ................ 885
Tworzenie prostego luno powizanego zdarzenia .................................................................... 886
Dodawanie staych subskrypcji do zdarzenia LCE ..................................................................... 889
Dodawanie tymczasowych subskrypcji do zdarzenia LCE ........................................................ 892
Zaawansowane zagadnienia zwizane z LCE ............................................................................ 897
Podsumowanie .................................................................................................................................. 899
Propozycje dalszych lektur ............................................................................................................... 899

Rozdzia 39. Zabezpieczanie komponentw serwerowych ..................901


Kontrola uwierzytelniania w aplikacjach COM+ ............................................................................. 901
Dodawanie zabezpiecze opartych na rolach w COM+ ................................................................... 904
Przygotowywanie projektu testowego ........................................................................................ 904
Wczanie zabezpiecze opartych na rolach .............................................................................. 908
Definiowanie rl i przypisywanie do nich czonkw ................................................................. 908
Autoryzacja uytkownikw nalecych do danej roli za pomoc atrybutu SecurityRole ........... 909
Programowa autoryzacja uytkownikw nalecych do rl za pomoc ContextUtil lub
SecurityContext ....................................................................................................................... 911
Tworzenie zaufanych podsystemw za pomoc tosamoci ............................................................ 912
Zabezpieczanie kolejkowanych komponentw ................................................................................ 913
Zabezpieczanie luno powizanych zdarze .................................................................................... 914
Ukrywanie komponentw za pomoc atrybutu PrivateComponent .................................................. 914
Podsumowanie .................................................................................................................................. 914
Propozycje dalszych lektur ............................................................................................................... 914

Rozdzia 40. Zaawansowane programowanie usug Enterprise ............915


Programowanie katalogu COM+ ...................................................................................................... 916
Programowanie tymczasowych subskrypcji luno powizanych zdarze .................................. 917
Zamykanie aplikacji COM+ i usuwanie komponentw ............................................................. 919
czenie byskawicznego tworzenia aplikacji i usug Enterprise ..................................................... 922
Podsumowanie .................................................................................................................................. 929
Propozycje dalszych lektur ............................................................................................................... 929

Dodatki .................................................................................................931
Skorowidz ...................................................................................................933

Rozdzia 1.

Wprowadzenie do .NET
W skrcie
W tym rozdziale przedstawiamy, czym jest .NET, jak dziaa, jak programici mog go
wykorzysta i opisujemy wiele jego nowych funkcji. Omawiamy tu wszystkie aspekty
zastosowania .NET Framework, jego architektur i rne komponenty.
Mwic najprociej, .NET to nastpna generacja platformy programowej firmy Microsoft
przeznaczonej dla oprogramowania dla Windows i internetu. Jednak .NET jest czym
wicej ni tylko now platform do tworzenia oprogramowania. Aby Czytelnicy zrozumieli, czym naprawd jest .NET i jak mona go najlepiej wykorzysta, przedstawimy
podstawowe cele wprowadzenia platformy .NET. .NET to na nowo zaprojektowana,
rewolucyjna architektura programowa firmy Microsoft, ktrej zadaniem jest zrealizowanie nowej myli przewodniej Microsoftu: program jako usuga. W firmie Microsoft
postanowiono urzeczywistni t ide, a .NET jest pierwszym krokiem w tym kierunku.
Jednym z wanych zaoe tej architektury jest wanie oprogramowanie jako usuga,
a co to oznacza w rzeczywistoci, przedstawimy w kolejnych punktach.

Oprogramowanie jako usuga


Zagadnienie oprogramowania jako usugi nie jest tak kopotliwe i zoone, jak mona by
sdzi. Wiele firm korzysta z tej technologii, nie zdajc sobie z tego sprawy. W firmach
tych przeksztacono aplikacje Win32 na usugi programowe lub aplikacje te zostay tak
zmodyfikowane, aby day si zintegrowa z usugami oferowanymi przez te firmy.
Korzystajc z .NET oraz obsugujcych t architektur technologii (na przykad usug
sieciowych), programici mog w atwy sposb tworzy usugi programowe. Usugi te
mog by nastpnie publikowane w sieci i udostpniane innym programistom. .NET skada
si z trzech kluczowych czci. S to:

produkty .NET,

usugi .NET,

.NET Framework.

W nastpnych punktach przyjrzymy si kolejno tym elementom.

30

Cz I Podstawy

Produkty .NET
Produkty .NET to wszystkie obecne i przysze produkty firmy Microsoft wchodzce w skad
.NET. Najwaniejszym produktem w tym obszarze jest Visual Studio .NET. Visual Studio
.NET to produkt pozwalajcy programistom na atwe tworzenie aplikacji oraz oferujcy
wiele funkcji wspomagajcych proces tworzenia. IDE Visual Studio umoliwia atwy
dostp do tych narzdzi.

Usugi .NET
Usugi .NET to usugi oferowane przez firm Microsoft, ktre pozwalaj programistom
na wykorzystanie gotowych zbiorw funkcji we wasnych aplikacjach. Obecnie Microsoft
oferuje tylko jedn usug Passport. Usuga Microsoft Passport pozwala na autoryzacj
uytkownikw i jest wykorzystywana w takich witrynach jak HotMail oraz NineMSN.
Usuga Passport pozwala programistom na zrealizowanie scentralizowanej identyfikacji
uytkownikw.

.NET Framework
Poniewa .NET Framework jest cakowicie zintegrowany z systemem operacyjnym Windows i dlatego jest cakowicie przezroczysty dla programisty i uytkownika pozwala
programistom na tworzenie szybkich, elastycznych, skalowalnych i efektywnych aplikacji.
Dodatkowo programici mog tworzy aplikacje wspdziaajce z innymi aplikacjami .NET
oraz komponentami napisanymi za pomoc zupenie innych jzykw programowania.
Jest to nowy, wietny pomys, moliwy do zrealizowania tylko dziki odpowiedniej konstrukcji .NET Framework. W firmie Microsoft takie dziaanie zaplanowano ju od pocztku. Oznacza to, e mona pisa komponenty w dowolnym jzyku programowania
zgodnym z .NET, na przykad C#, i korzysta z nich w aplikacji napisanej w VB.NET.
Koncepcje i technologie dodane do .NET Framework obejmuj bibliotek klas .NET Framework, wsplne rodowisko uruchomieniowe, Windows Forms (WinForms) oraz ASP.NET.
W nastpnych punktach przyjrzymy si tym elementom nieco dokadniej.

Podstawowa biblioteka klas .NET Framework


Podstawowe klasy .NET Framework to zbir funkcji, obiektw, waciwoci i metod, z ktrych mona skorzysta w dowolnym jzyku zgodnym z .NET. W tej czci architektury
.NET znajduje si biblioteka ADO.NET, ktra udostpnia programistom funkcje, obiekty,
waciwoci i metody pozwalajce korzysta z baz danych. W podstawowej bibliotece
klas dostpne s rwnie narzdzia pozwalajce programistom na korzystanie z XML.
Funkcje XML stanowi jeden z najlepszych skadnikw .NET Framework. Obsuga XML
jest naturalna dla tej platformy, a skadnia jest bardzo intuicyjna.

Rozdzia 1. Wprowadzenie do .NET

31

Wsplne rodowisko uruchomieniowe


Wsplne rodowisko uruchomieniowe (ang. Common Language Runtime CLR) jest
centralnym elementem .NET Framework i jest odpowiedzialne za uruchamianie aplikacji
.NET, zarzdzanie nimi, jak rwnie za kompilacj aplikacji .NET do postaci macierzystego kodu binarnego. Jest to rodowisko, w ktrym dziaaj aplikacje .NET. Wsplne rodowisko uruchomieniowe udostpnia programistom wiele przydatnych i wanych funkcji,
prostsze byskawiczne tworzenie aplikacji (ang. Rapid Application Development RAD),
zarzdzanie pamici, skalowalno oraz jednolit integracj rnych programw i jzykw.
Integracja rnych jzykw
Moliwoci integracji rnych jzykw s dostpne dziki dowiadczeniu zdobytemu przy okazji
tworzenia technologii COM i DCOM. W przypadku COM wikszo kodu komponentw niskiego poziomu zostaa napisana w C++ (czasami nawet w C), a klasy te byy wykorzystywane w VB. W przypadku korzystania z tej technologii czsto napotykamy na ogromne dziury, poniewa programowanie
w jzyku C++ znacznie rni si od programowania w VB. Jednak w przypadku .NET tworzenie takich
bibliotek w C# i korzystanie z nich w VB.NET (a czasami nawet odwrotnie) jest dziecinnie proste.

Prostsze byskawiczne tworzenie aplikacji


Pomys byskawicznego tworzenia aplikacji nie jest adn nowoci. Poniewa jednak
klasy bazowe .NET Framework udostpniaj programistom gotowe komponenty, a dodatkowo mona korzysta z tradycyjnych technik wielokrotnego wykorzystania kodu,
ilo kodu, jaki musi napisa programista przy tworzeniu aplikacji, zostaa znacznie ograniczona.

Zarzdzanie pamici
Zarzdzanie pamici jest jedn z najwaniejszych funkcji realizowanych przez wsplne
rodowisko uruchomieniowe. Dziaanie tego mechanizmu jest niewidoczne dla programisty, co umoliwia mu skupienie si na tworzeniu aplikacji zamiast na pamitaniu o rnych aspektach zarzdzania pamici.

Skalowalno
Zwikszona skalowalno jest bezporednim wynikiem omwionych ju funkcji, takich
jak byskawiczne tworzenie aplikacji oraz zarzdzanie pamici. Byskawiczne tworzenie
aplikacji pozwala powici wicej czasu na dostrajanie i poprawianie wydajnoci aplikacji, natomiast funkcje zarzdzania pamici dostpne we wsplnym rodowisku uruchomieniowym zwikszaj wydajno operacji na pamici oraz ilo zasobw dostpnych
dla aplikacji.
Pamitaj, e mona rwnie skonwertowa MSIL na kod rodzimy, dziki czemu
otrzymujemy zwyke pliki wykonywalne, takie jak w przypadku C lub C++.

32

Cz I Podstawy

Integracja rnych jzykw


Funkcja ta jest prawdopodobnie najczciej dyskutowan moliwoci .NET. Jest to radykalna i bardzo znaczca zmiana w porwnaniu z tradycyjnym podejciem, poniewa
pozwala czy ze sob wszystkie jzyki obsugujce .NET. Na przykad C++ jest uwaany za jzyk o znacznie wikszych moliwociach ni Visual Basic, ale .NET znacznie
wyrwnuje te rnice. Wszystkie aplikacje .NET s kompilowane do postaci jzyka poredniego (ang. Intermediate Language IL). Jzyk poredni wyrwnuje efektywno,
zoono i optymalizacje z rnych jzykw .NET. Aby jzyk programowania mg
zosta uznany za zgodny z .NET, kod rdowy napisany w tym jzyku musi by kompilowany do postaci jzyka poredniego (IL).
W dalszej czci rozdziau, w punkcie Zalety CLR, omwimy dokadniej te moliwoci.

Aplikacje korzystajce z Windows Forms (WinForms)


WinForms to istotna cz systemu tworzenia aplikacji dla Win32 dostpnego w .NET.
Jest to dostpny dla wszystkich jzykw zgodnych z .NET odpowiednik API graficznego
oraz formantw. Jest to odpowiednik MFC stosowanego przez programistw C++ oraz
Win32 API wykorzystywanego w VB. Dziki unifikacji oraz integracji ze wsplnym
rodowiskiem uruchomieniowym biblioteka WinForms udostpnia programistom takie
udogodnienia jak projektowanie metod przecignij i upu, ktre mog by wykorzystane do wizualnego tworzenia aplikacji .NET.

ASP.NET
ASP.NET to nastpna generacja Active Server Page (ASP) technologii dostpnej w serwerze Internet Information Server (IIS). Najwiksza i najbardziej popularna zmiana
w .NET Framework powstaa w czasie transformacji ASP na ASP.NET. W porwnaniu
ze star, klasyczn wersj ASP ASP.NET jest cakowicie inn platform. Wiele osb wydaje si gubi w ASP.NET i niektrych jego nowych funkcjach. Trzeba wyjani kilka
kwestii. ASP.NET nie korzysta ju z VBScript. Obecnie obsuguje wszystkie kompilowane jzyki .NET, takie jak VB.NET, C# oraz JScript .NET. ASP.NET bazuje na obiektowym paradygmacie sterowanym zdarzeniami, a nie na paradygmacie sekwencyjnym zastosowanym w klasycznym ASP. Oprcz podobnej nazwy ASP oraz ASP.NET maj
jeszcze kilka podobiestw.
ASP.NET jest jzykiem wykonywanym na serwerze, sterowanym zdarzeniami, wykorzystujcym dowolny z jzykw .NET. Poniewa ASP.NET korzysta z paradygmatu obiektowego, wymuszona zostaa bardziej formalna skadnia. Pozwala to znacznie poprawi
wydajno i uatwi wykorzystanie komponentw, zdarze, waciwoci i metod. W porwnaniu z tradycyjnym ASP najwiksz zalet ASP.NET jest integracja ze wsplnym
rodowiskiem uruchomieniowym. ASP.NET korzysta z wielu udogodnie wsplnego
rodowiska uruchomieniowego, w tym obsugi standardowych technik programistycznych. Dodatkowo strony ASP.NET s kompilowane i po pierwszym uruchomieniu buforowane w pamici serwera. Daje to znaczne przyspieszenie pracy w porwnaniu z tradycyjnymi stronami ASP, ktre s kompilowane za kadym uruchomieniem.

Rozdzia 1. Wprowadzenie do .NET

33

Innym problemem tradycyjnych stron ASP jest skalowalno. W przypadku ASP kod oraz
HTML mog si znajdowa w tym samym pliku, co czsto powoduje, e niemal niemoliwe jest zapanowanie nad kodem i projektem. Oczywicie obiekty COM pozwalay
rozdzieli kod na warstwy, ale wielu programistw po prostu umieszczao kod logiki
biznesowej bezporednio na stronach ASP. To nie byo dobre rozwizanie.
Z wielu powodw ASP.NET jest istotn czci .NET. Najwaniejszym powodem jest
to, e strony ASP.NET s superklejem czcym ze sob internet i aplikacje Win32. Usugi
sieciowe s uwaane za cz ASP.NET. Jako protok komunikacyjny w usugach sieciowych wykorzystywany jest Simple Object Access Protocol (SOAP). SOAP jest mocno
zwizany z XML, co sprawia, e jest idealny w erze programowania dla internetu.
Zadaniem usug sieciowych jest udostpnienie innym programistom komponentw i funkcji ASP.NET, a nawet gotowych aplikacji (konfigurowanych poprzez sie). Usugi sieciowe pozwalaj programistom na zachowanie dla siebie sposobu dziaania kodu aplikacji
i udostpnienie tylko minimalnej liczby metod oraz zmiennych skadowych pozwalajcych
na zaimplementowanie funkcji oferowanej przez dan usug. To wszystko jest zwizane
z wizj Microsoftu dotyczc oprogramowania jako usugi. Usugi sieciowe s niezwykle efektywnym i popularnym dodatkiem do .NET i aby je w peni doceni, trzeba wyprbowa je w dziaaniu.
Potencja usug sieciowych
W przypadku usug sieciowych klienci mog oczekiwa wielu zaawansowanych komponentw internetowych oraz usug, ktre atwiej pozwalaj speni ich oczekiwania. Wyobramy sobie wiat
za kilka lat. Moesz by programist tworzcym usug sieciow pomagajc klientom uczy poprzez
sie swoich nowych pracownikw bez adnej interwencji ze strony czowieka. W przypadku .NET
moliwoci s nieograniczone i sytuacja moe si tylko poprawia.

Skoro ju przedstawilimy najwaniejsze komponenty .NET Framework, w nastpnym


punkcie omwimy jego zadania.

Zadania .NET Framework


.NET jest najlepszym produktem firmy Microsoft od czasu opracowania systemu MS-DOS
w roku 1982. .NET posiada cechy wane zarwno dla programistw, jak i dla ich klientw. Programici maj wszystkie narzdzia pozwalajce w atwy sposb tworzy aplikacje, zarzdza nimi i rozprowadza je. Mog lepiej ni do tej pory wykorzysta internet.
Wsplne rodowisko uruchomieniowe .NET powoduje rwnie, e aplikacje rzadziej bd
ulegay awariom i czciej programici osign oczekiwane wyniki: czyst, szybk oraz
solidn implementacj zapewniajc dugie czasy nieprzerwanego dziaania.
.NET Framework jest zaprojektowany w taki sposb, aby osign nastpujce cele:

Spjne rodowisko programowania obiektowego, w ktrym kod moe by


zapisywany i wykonywany lokalnie, wykonywany lokalnie, ale rozprowadzany
w internecie lub wykonywany zdalnie.

34

Cz I Podstawy

rodowisko wykonywania kodu, ktre minimalizuje konflikty przy rozprowadzaniu


oprogramowania i wersjonowaniu.

rodowisko wykonywania kodu, ktre gwarantuje bezpieczne wykonywanie kodu


oraz kontrol kodu napisanego przez nieznanych lub nie w peni zaufanych autorw.

rodowisko wykonywania kodu, ktre eliminuje problemy z wydajnoci skryptw


lub jzykw interpretowanych.

Spjno rodowiska dla programistw pracujcych nad rnymi typami aplikacji,


na przykad aplikacjami Windows oraz aplikacjami WWW.

Komunikacja zbudowana na bazie standardw przemysowych, co zapewnia,


e .NET Framework moe integrowa si z innymi produktami. Na przykad
w firmie Borland utworzono bibliotek komponentw .NET wsppracujcych
z komponentami Java; s one do wykorzystania w programie C# Builder.

W nastpnym punkcie omwimy architektur .NET Framework oraz sposb, w jaki zapewnia ona wszystkie przedstawione tu cele.

Poznajemy architektur .NET Framework


.NET Framework skada si z:

biblioteki klas .NET Framework;

wsplnego rodowiska uruchomieniowego.

Biblioteka klas .NET Framework udostpnia typy (CTS), ktre s wykorzystywane we


wszystkich jzykach .NET. Wsplne rodowisko uruchomieniowe zawiera modu adowania klas, ktry wczytuje kod programu zapisany w postaci IL. Nastpnie kod IL jest
kompilowany do postaci kodu maszynowego komputera, uruchamiany i kontrolowany
w celu zapewnienia odpowiedniego poziomu bezpieczestwa oraz zapewnienia obsugi
wtkw. Na rysunku 1.1 przedstawiona jest architektura .NET Framework i jego rnych
skadnikw.
Rysunek 1.1.
Architektura .NET
Framework

Rozdzia 1. Wprowadzenie do .NET

35

Na grze schematu architektury znajduj si jzyki programowania, takie jak VB.NET,


C#, VJ# oraz VC++ .NET; programici mog tworzy aplikacje (uywajc dowolnego z tych
jzykw), korzystajc z Windows Forms, Web Forms, usug Windows oraz usug sieciowych XML. Dolne dwie warstwy zawieraj bibliotek klas .NET Framework oraz wsplne
rodowisko uruchomieniowe.

Poznajemy zadania .NET Framework


Jak ju wspomnielimy, .NET Framework zawiera dwa gwne skadniki: wsplne rodowisko uruchomieniowe oraz bibliotek klas .NET Framework. Wsplne rodowisko uruchomieniowe jest podstaw dla .NET Framework. Dziaa ono podobnie do agenta zarzdzajcego kodem w czasie jego dziaania, udostpniajc podstawowe usugi, takie jak
zarzdzanie pamici, wtkami czy wywoania zdalne. Obsuguje rwnie cis kontrol typw, co poprawia jako kodu i zwiksza bezpieczestwo i odporno aplikacji.
Koncepcja zarzdzania kodem jest podstawow zasad wsplnego rodowiska uruchomieniowego. Kod, ktry ma by wykonywany przez wsplne rodowisko uruchomieniowe, jest nazywany kodem zarzdzanym, natomiast kod, ktry nie by projektowany do
wykonania przez wsplne rodowisko uruchomieniowe, jest nazywany kodem niezarzdzanym.
Biblioteka klas, ktra jest integraln czci .NET Framework, jest zbiorem klas lub typw
do wielokrotnego wykorzystania, uywanym do tworzenia aplikacji rnych rodzajw,
od tradycyjnych aplikacji wiersza polece, do dowolnych aplikacji z graficznym interfejsem uytkownika, na przykad korzystajcych z Windows Forms lub ASP.NET Web
Forms, jak rwnie nowych usug sieciowych XML.
Kod napisany w jzyku zgodnym z CLS powinien by zgodny z kodem napisanym w innym jzyku zgodnym z CLS, poniewa kod napisany w tych jzykach jest kompilowany
do kodu poredniego (IL), a dopiero maszyna wsplnego rodowiska uruchomieniowego
wykonuje kod IL. Zapewnia to wspdziaanie ze sob jzykw zgodnych z CLS. Microsoft .NET Framework obsuguje takie jzyki jak: Microsoft Visual Basic .NET, Microsoft
Visual C#, Microsoft Visual C++ .NET oraz Microsoft Visual J# .NET.
Kompilatory tych jzykw generuj kod poredni nazywany Microsoft Intermediate Language (MSIL), ktry zapewnia moliwo wspdziaania ze sob programw .NET napisanych w rnych jzykach.
Standard Common Language System (CLS) definiuje infrastruktur potrzebn do uruchomienia kodu IL. W CLI (ang. Common Language Infrastructure infrastruktura wsplnego jzyka) dostpny jest wsplny system typw (ang. Common Type System CTS)
oraz takie usugi jak bezpieczestwo typw, wykonywanie kodu zarzdzanego oraz wykonywanie wersji kodu wybranej spord kilku zainstalowanych w tym samym czasie.

36

Cz I Podstawy

Co to jest MSIL?
MSIL mona zdefiniowa jako niezaleny od procesora zbir instrukcji wykorzystywanych przez skompilowane aplikacje .NET. Zawiera on instrukcje do adowania, zapisywania i inicjalizacji obiektw. Kopiujc aplikacj napisan w C# lub dowolnym innym
jzyku zgodnym z CLS, otrzymujemy w wyniku kod MSIL. Gdy wsplne rodowisko
uruchomieniowe uruchamia aplikacj, kompilator Just-In-Time (JIT) konwertuje MSIL
na kod maszynowy zrozumiay dla procesora danego komputera. Proces ten jest przedstawiony na rysunku 1.2.
Rysunek 1.2.
Konwersja MSIL
na kod maszynowy

Aby moliwa bya integracja rnych jzykw, MSIL wspdziaa z metadanymi oraz
wsplnym systemem typw. Jak ju wspominalimy, wsplny system typw jest jednym
z podstawowych mechanizmw.NET Framework, ktry zapewnia integracj rnych jzykw przez obsug typw i operacji uywanych w wikszoci jzykw programowania.

Co to jest plik Portable Executable (PE)?


Gdy kompilujemy nasz aplikacj, oprcz kodu MSIL kompilator generuje metadane bdce zbiorem informacji o aplikacji. Te metadane s zapisywane w postaci binarnej w przenonym pliku wykonywalnym. Microsoft zaprojektowa format przenonego pliku wykonywalnego (PE) na potrzeby wszystkich systemw bazujcych na Win32. Zastosowanie
przenonego pliku wykonywalnego przy uruchamianiu programu .NET jest nastpujce:

Kod rdowy jest tworzony w dowolnym jzyku .NET.

Nastpnie kod ten jest kompilowany za pomoc odpowiedniego kompilatora


jzyka .NET.

Kompilator generuje kod MSIL oraz manifest jako przeznaczon tylko do odczytu
cz pliku EXE majcego standardowy nagwek PE (plik wykonywalny Win32).

Wykonujc aplikacj, system operacyjny aduje PE oraz wszystkie podrzdne


biblioteki adowane dynamicznie.

Nastpnie system operacyjny rozpoczyna wykonywanie kodu MSIL umieszczonego


wewntrz pliku PE. Poniewa kod MSIL nie jest dla procesora formatem

Rozdzia 1. Wprowadzenie do .NET

37

wykonywalnym, nie moe by uruchomiony bezporednio. Wsplne rodowisko


uruchomieniowe kompiluje na bieco MSIL na kod maszynowy, wykorzystujc
do tego celu kompilator JIT.

Poznajemy kompilator JIT


Jak ju wczeniej pisalimy, kompilator JIT jest integraln czci wsplnego rodowiska
uruchomieniowego. Kompiluje on kod MSIL na kod maszynowy i wykonuje generowany
na bieco kod, ktry po wykonaniu jest buforowany do pniejszego wykorzystania. Nastpnie zapamitany w buforze kod jest uywany przy wykonywaniu kolejnego dania.

Wsplne rodowisko uruchomieniowe


Podstaw platformy .NET jest wsplne rodowisko uruchomieniowe, ktre jest odpowiedzialne za zarzdzanie wykonywaniem kodu przeznaczonego na platform .NET. Kod,
ktry do uruchomienia wymaga zastosowania wsplnego rodowiska uruchomieniowego,
jest nazywany kodem zarzdzanym. Kod zarzdzany wymaga dostpnoci podstawowego zbioru usug (ktre omwimy za chwil) udostpnianych przez wsplne rodowisko uruchomieniowe. Usugi oferowane przez wsplne rodowisko uruchomieniowe s
wymienione w nastpnym punkcie.

Skadniki CLR
Na rysunku 1.3 przedstawiona jest architektura wsplnego rodowiska uruchomieniowego i jego rnych skadnikw.
Rysunek 1.3.
Architektura
wsplnego rodowiska
uruchomieniowego .NET

Na poniszej licie wszystkie te skadniki s opisane nieco bardziej szczegowo.

38

Cz I Podstawy

Modu adowania klas jest odpowiedzialny za adowanie klas do wsplnego


rodowiska uruchomieniowego.

Kompilatory MSIL do kodu maszynowego konwertuj kod MSIL na zaleny


od komputera kod maszynowy.

Zarzdzanie kodem zarzdza kodem w czasie jego wykonywania.

Zarzdzanie pamici i usuwanie nieuytkw realizuj automatyczne


zarzdzanie pamici.

Modu bezpieczestwa wymusza ograniczenia nakadane przez zabezpieczenia


dostpu do kodu. Zabezpieczenia na poziomie systemu mona konfigurowa
za pomoc narzdzi .NET, ktre zawiera Panel sterowania.

Kontroler typw zapewnia dokadn kontrol typw.

Obsuga wtkw komponent ten zapewnia obsug wielowtkowoci


w aplikacjach.

Obsuga wyjtkw zapewnia mechanizm obsugi wyjtkw w kodzie


za pomoc blokw try..catch..finally.

Modu debugowania pozwala programistom na debugowanie rnych


typw aplikacji.

Modu szeregujcy COM pozwala aplikacjom .NET na wymian danych


z aplikacjami COM.

Obsuga podstawowej biblioteki klas udostpnia potrzebne aplikacji klasy


(typy).

Biblioteka klas .NET Framework


Jak mona wywnioskowa z nazwy, biblioteka klas jest zbiorem klas i zwizanych z nimi
struktur, ktre mog by wykorzystane jako podstawowe elementy budulcowe aplikacji.
Mona wic bezpiecznie przyj, e ten zbir klas jest pewnego rodzaju API. S one
granicznym interfejsem pomidzy aplikacj i systemem operacyjnym. Taka koncepcja
nie jest niczym nowym dla programistw uywajcych jzyka Visual Basic biblioteka
ADO, API Win32 oraz biblioteka usug COM+ pozwalaj na korzystanie z istniejcego
kodu w aplikacjach. Biblioteka klas jest olbrzymi bibliotek kodu, ktry mona wykorzysta jako podstaw dla funkcji aplikacji.
Biblioteka .NET Framework zawiera klasy, interfejsy i typy wartoci, ktre nie tylko zapewniaj dostp do mechanizmw systemu, ale rwnie optymalizuj proces tworzenia
aplikacji. Aby zrealizowa wspprac midzy jzykami, typy w .NET Framework s
zgodne z CLS i dziki temu mog by wykorzystywane przez dowolne jzyki programowania, ktrych kompilatory generuj kod zgodny z Common Language System.
Klasy zebrane w .NET Framework s fundamentami, na ktrych zbudowane zostay aplikacje, komponenty i formanty .NET. W .NET Framework znajduj si typy pozwalajce
na wykonanie nastpujcych operacji:

Rozdzia 1. Wprowadzenie do .NET

Reprezentacja podstawowych typw danych i wyjtkw.

Hermetyzacja struktur danych.

Wykonywanie operacji wejcia-wyjcia.

Dostp do informacji o zaadowanych typach.

Wywoywanie mechanizmw kontroli zabezpiecze z .NET.

Zapewnienie dostpu do danych, bogate GUI klienckie oraz GUI klienckie


kontrolowane przez serwer.

39

Odwoywanie si do istniejcych bibliotek kodu w Visual Basicu jest tradycyjnie bardzo proste. Jednak czsto biblioteki kodu nie byy od razu dostpne dla programistw
korzystajcych z jzyka Visual Basic. Programici C++ mogli korzysta z wszystkich
funkcji nowych bibliotek, natomiast programici VB musieli poczeka, a Microsoft lub
inna firma napisze interfejs pozwalajcy na wykorzystanie biblioteki z poziomu VB. Rwnie czsto wystpoway problemy z dokumentacj. Biblioteka .NET Framework pomaga
rozwiza te problemy przez udostpnienie jednolitego interfejsu dla wszystkich jzykw korzystajcych z .NET Framework. Rwnie organizacja klas w .NET Framework
znacznie uatwia prac.

Sposb organizacji klas w bibliotece .NET Framework


Podstawow jednostk organizacyjn w bibliotece klas jest przestrze nazw. Przestrze nazw
jest po prostu pojemnikiem na funkcje opisuje ona grup klas i konstrukcji o podobnym
przeznaczeniu. Koncepcj przestrzeni nazw mona porwna do katalogw w systemie
plikw oba mechanizmy pozwalaj na zaimplementowanie organizacji rodzic-dziecko
w zbiorze obiektw. Podobnie jak katalog moe zawiera inne katalogi i dokumenty,
przestrze nazw moe zawiera inne przestrzenie nazw, klasy, delegacje i tak dalej.
Wszystkie przestrzenie nazw maj wsplny korze przestrze System. Przestrze nazw
System jest jednym jedynym korzeniem dla wszystkich pozostaych przestrzeni. Na przykad przestrze nazw System zawiera struktury definiujce wsplne typy danych wykorzystywane w .NET, takie jak Boolean, DateTime oraz Int32. Zawiera ona najwaniejszy
typ danych Object ktry jest podstawow klas, po ktrej dziedzicz wszystkie
inne klasy .NET.

Korzyci ze stosowania biblioteki klas .NET Framework


Do tej pory opisalimy struktur .NET Framework i jego skadniki. W kolejnych punktach zostan wymienione niektre korzyci pynce ze stosowania biblioteki klas .NET
Framework.

Zwikszanie wydajnoci programistw


Wanym celem projektu biblioteki klas byo zwikszenie wydajnoci programistw.
By moe jeste zaskoczony tym, e gwnym celem przy projektowaniu biblioteki klas
byo zwikszenie produktywnoci nie przez wprowadzenie nowych funkcji, ale przez

40

Cz I Podstawy
przepakowanie istniejcych funkcji na posta obiektow. Faktycznie, cho biblioteka klas
zawiera kilka nowych funkcji, wikszo funkcji udostpnianych w przestrzeniach nazw
bya ju wczeniej dostpna w Win32 API, formantach ActiveX, bibliotekach DLL bazujcych na COM i tak dalej. Teraz s one upakowane w taki sposb, e mona programowa je na wyszym poziomie abstrakcji, na ktrym nie trzeba si zajmowa problemami obsugi niewielkich struktur danych wymaganych przez Win32 API. Bezporednim
wynikiem tej operacji jest to, e w swojej aplikacji naley obsugiwa tylko jeden, nadrzdny wzorzec projektowy komponenty s wykorzystywane w rodowisku obiektowym. Co wicej, taki model pracy jest dostpny we wszystkich jzykach przeznaczonych dla wsplnego rodowiska uruchomieniowego.
Na wypadek, gdyby mia wtpliwoci, dodajmy, e biblioteka klas .NET Framework nie
zastpia Win32 API. Biblioteka klas nadal korzysta z istniejcych klas Win32 API, ktre
komunikuj si z Win32 API i wykonuj kod poprzez mechanizm nazywany P/Invoke.

Wyszukiwanie potrzebnego kodu


Jeeli zaczniemy analizowa bibliotek klas pod ktem zwikszenia wydajnoci programowania, natychmiast zauwaymy kilka zalet. Po pierwsze, biblioteka klas pozwala
atwo wyszukiwa potrzebne funkcje. Rozmiar biblioteki moe pocztkowo wydawa
si przytaczajcy, ale logiczny podzia wewntrz przestrzeni tabel pozwala atwo lokalizowa odpowiednie zakresy funkcji. Na przykad przestrze nazw System.Drawing zawiera klasy oferujce funkcje rysunkowe. Przestrze nazw System.IO udostpnia podstawowe operacje wejcia-wyjcia i tak dalej. Wewntrz przestrzeni nazw System.Drawing
znajduj si obiekty dobrze znane kademu programicie Windows: Pen, Brush itp.
W przypadku kadego API o znacznym rozmiarze zadanie lokalizacji kodu lub funkcji
potrzebnej do wykonania okrelonego zadania jest sporym problemem. Porwnajmy przedstawion wanie organizacj przestrzeni tabel z pask, monolityczn przestrzeni nazw
dostpn w Win32 API. Gwnym problemem jest to, e wraz z rozwojem rozmiaru
Win32 API jego programici musieli by coraz bardziej kreatywni przy wymylaniu nazw
funkcji. Moliwo okrelenia zadania funkcji tylko na podstawie jej nazwy stawaa si
coraz bardziej ograniczona. Szczerze mwic, moliwe jest osignicie wysokiej wydajnoci przy wykorzystywaniu Win32 API w Visual Basicu. Wymaga to jednak duej determinacji i dostpu do wielu informacji referencyjnych. Biblioteka klas .NET Framework
jest bardziej przyjaznym API szukane rzeczy s tam, gdzie tego oczekujemy.
Kod dziaajcy pod kontrol rodowiska uruchomieniowego .NET jest nazywany kodem zarzdzanym. Kod niezarzdzany to cay kod dziaajcy poza rodowiskiem uruchomieniowym .NET, na przykad Win32 API, komponenty COM lub formanty ActiveX. Obecnie jedynym narzdziem firmy Microsoft pozwalajcym pisa kod niezarzdzany jest Visual C++.

Wykorzystanie biblioteki klas


Po wykonaniu pierwszego kroku, jakim jest wyszukanie waciwej klasy, kolejnym jest
jej wykorzystanie, co rwnie jest bardzo proste w bibliotece klas .NET. Poprzez udostpnienie funkcji poprzez waciwoci i metody mamy atwy dostp do funkcji, ktre mog
wykonywa niezmiernie skomplikowane operacje. Jest to dziaanie w duchu ukrywania

Rozdzia 1. Wprowadzenie do .NET

41

i hermetyzacji danych operujemy na czarnych skrzynkach i nie musimy wiedzie, co


dzieje si wewntrz skrzynki ani tym bardziej si tym przejmowa. Musimy jedynie zapewni odpowiedni komunikacj z interfejsem tej czarnej skrzynki.
Jest to dosy wany element produktywnoci. Porwnajmy to do nakadu pracy przy
bezporednim wykorzystaniu Win32 API. Poniewa Visual Basic pozwala na korzystanie z API majcego zupenie inny system typw, nie byo jasnego odwzorowania pomidzy wywoaniami API a skadni jzyka Visual Basic. Obecnie, dziki roli, jak peni
wsplny system typw, wszystkie jzyki komunikuj si z komponentami uruchomieniowymi z wykorzystaniem tych samych typw danych. Dziki temu klasy z biblioteki
klas .NET mog by w ten sam sposb wykorzystywane przez kady jzyk .NET. Po
raz pierwszy programici uywajcy jzyka Visual Basic maj peny dostp do wszystkich
funkcji biblioteki, bez adnego spadku produktywnoci.
Przejcie pomidzy funkcjami charakterystycznymi dla jzyka i bibliotek klas jest teraz
cakowicie pynne. Inaczej mwic, programici w kocu mog tworzy swoje aplikacje
bez cigego skakania po rnych paradygmatach kodowania (na przykad programowania
proceduralnego w Win32 API i programowania ukierunkowanego na komponenty w VB).
Wzorce projektowe mog pozosta spjne w caym kodzie, niezalenie od wanie wykorzystywanych komponentw. Osignito to dziki zbudowaniu caej biblioteki w sposb
wspierajcy programowanie obiektowe i ukierunkowane na komponenty. Co wicej, z biblioteki klas korzysta si w naturalny dla programistw VB sposb. Nie jest wymagana
adna ezoteryczna skadnia, po prostu odwoujemy si do komponentu, tworzymy jego
egzemplarz, a nastpnie korzystamy z jego metod i waciwoci.
Poniewa biblioteka klas .NET jest napisana w kodzie zarzdzanym dziaajcym wewntrz
wsplnego rodowiska uruchomieniowego, korzysta ona z wszystkich zalet wykorzystania kodu zarzdzanego:

uwolnienia od identyfikatorw GUID, uchwytw okien, zmiennych hResult


i tak dalej;

automatycznego odzyskiwania pamici zajtej przez nieuywane zasoby;

strukturalnej obsugi wyjtkw.

Zalety CLR
Wsplne rodowisko uruchomieniowe zapewnia wiele usug dla kodu zarzdzanego,
w tym integracj wielu jzykw, zwikszone bezpieczestwo, obsug wersjonowania
i wdraania, debugowanie i profilowanie oraz zarzdzanie pamici poprzez automatyczne odzyskiwanie nieuytkw. W tym punkcie przedstawimy te zalety nieco bardziej
szczegowo.

Integracja rnych jzykw


Wsplne rodowisko uruchomieniowe pozwala na bezproblemow integracj kodu zarzdzanego napisanego w jednym jzyku z kodem napisanym w innym jzyku. Jest to
moliwe dziki wykorzystaniu CLS, w ktrym zdefiniowane s reguy, jakie musi spenia

42

Cz I Podstawy
kady jzyk dostpny w .NET Framework. Lista funkcji moliwych do integracji zawiera dziedziczenie, obsug wyjtkw oraz szeregowanie. Na przykad mona zdefiniowa
interfejs w jzyku COBOL i implementowa go w takich jzykach jak VB.NET i C#.

Zwikszone bezpieczestwo
Obecnie kod wykonywany na naszych komputerach to nie tylko instalowane przez nas
aplikacje, ale rwnie kod pobierany z internetu poprzez strony WWW lub poczt elektroniczn. Ostatnie przypadki pokazay, e moe by to bardzo szkodliwe dla systemu.
W jaki sposb .NET pozwala ograniczy te zagroenia?
rodowisko .NET posiada zabezpieczenia dostpu do kodu, ktre pozwalaj kontrolowa
dostp do chronionych zasobw i operacji. Kod posiada rny poziom zaufania, w zalenoci od jego pochodzenia i sposobu, w jaki do nas dotar. Niektre funkcje tego systemu
bezpieczestwa s wymienione poniej:

Administratorzy mog definiowa polityki bezpieczestwa i przydziela okrelone


uprawnienia do zdefiniowanych grup kodu.

Kod moe wymaga specjalnych uprawnie od wywoujcego go.

Kod moe wymaga okrelonych uprawnie do jego uruchomienia, innych do


wykonywania pewnych funkcji, jak rwnie moe wymaga, aby wywoujcy
go nie mia okrelonego zbioru uprawnie.

Obsuga wersjonowania i wdraania


Wsplne rodowisko uruchomieniowe obsuguje moliwo jednoczesnego wykonywania
wielu wersji tego samego komponentu, nawet w tym samym procesie. Aplikacje przeznaczone dla .NET Framework mog by instalowane w systemie z uyciem tylko tzw.
metody XCOPY, bez zmiany stanu systemu. Uycie metody XCOPY pozwala na skopiowanie plikw do katalogu bin aplikacji, po czym aplikacja moe by natychmiast
uruchomiona.
Jest to moliwe, poniewa kompilatory przeznaczone dla .NET Framework doczaj
identyfikatory lub metadane do skompilowanych moduw i wsplne rodowisko uruchomieniowe moe skorzysta z tych danych w celu zaadowania waciwych wersji podzespow. Identyfikatory zawieraj wszystkie informacje potrzebne do zaadowania i uruchomienia moduw, jak rwnie zlokalizowania innych moduw wykorzystywanych
przez ten podzesp.

Usugi debugowania i profilowania


Wsplne rodowisko uruchomieniowe zapewnia funkcje niezbdne do debugowania i profilowania kodu przez programistw. Po doczeniu dziaajcego programu .NET do debugera
mona wykonywa takie operacje jak przegldanie stosu kodu zarzdzanego, sprawdzanie
zalenoci i zawartoci obiektw. Funkcje te s dostpne dla wszystkich aplikacji, niezalenie od jzyka, w ktrym zostay napisane.

Rozdzia 1. Wprowadzenie do .NET

43

Odzyskiwanie nieuytkw
W kodzie niezarzdzanym bardzo czsto wystpuj wycieki pamici. Wyciek pamici
wystpuje wtedy, gdy pami przydzielona w aplikacji nie jest zwalniana w momencie,
gdy nie jest ona ju potrzebna. Najbardziej naraone na wycieki pamici s aplikacje pisane
za pomoc takich jzykw jak C++, w ktrych programici mog przydziela pami ze
sterty. Jednak w kodzie zarzdzanym za usuwanie obiektw, z ktrych aplikacja ju nie
korzysta, odpowiada mechanizm zbierania nieuytkw (GC). Gdy w aplikacji napisanej
w kodzie zarzdzanym przydzielana jest pami, jest ona zawsze kojarzona z obiektem.
Mechanizm GC zajmuje si zbieraniem tych obiektw, do ktrych nie istniej ju odwoania w aplikacji, dziki czemu w kodzie zarzdzanym nie spotyka si wyciekw pamici.
Do identyfikacji obiektw, ktre powinny by skasowane, GC korzysta z procesu nazywanego eliminacj.
W czasie dziaania procesu eliminacji GC korzysta z danych, jakie wsplne rodowisko
uruchomieniowe utrzymuje na temat kadej dziaajcej aplikacji. Na pocztek GC odczytuje list gwnych obiektw, do ktrych bezporednio odwouj si aplikacje. Nastpnie tworzy list obiektw, do ktrych odwouj si gwne obiekty. Gdy GC zidentyfikuje
wszystkie obiekty, do ktrych aplikacja odwouje si porednio lub bezporednio, wszystkie pozostae obiekty w zarzdzanej stercie mog zosta skasowane. Proces zbierania
nieuytkw jest wywoywany automatycznie przez wsplne rodowisko uruchomieniowe, jak rwnie aplikacje mog jawnie go wywoa poprzez uycie metody GC.Collect.

Bogaty model obiektowy oraz biblioteki klas


Wsplne rodowisko uruchomieniowe oferuje bogaty zbir modeli obiektowych oraz
bibliotek klas, ktre udostpniaj ogromn liczb funkcji pozwalajcych wykonywa takie
operacje jak dostp do relacyjnej bazy danych, wykonywanie operacji wejcia-wyjcia,
obsuga danych XML, przegldanie metadanych i tak dalej. Poniewa wszystkie modele
obiektowe dziaaj na poziomie rodowiska uruchomieniowego, atwo mona zaprojektowa narzdzia dziaajce we wszystkich jzykach wsplnego rodowiska uruchomieniowego. Podstawow przestrzeni nazw .NET Framework, w ktrej dostpna jest wikszo funkcji, jest przestrze System. Przestrzenie nazw s now koncepcj wprowadzon
do .NET, pozwalajc na logiczne grupowanie zwizanych klas w pojedyncz jednostk.
Wszystkie klasy wewntrz przestrzeni nazw musz mie unikalne nazwy.
Do tej pory przedstawilimy architektur wsplnego rodowiska uruchomieniowego oraz
jego rne komponenty. W nastpnym podrozdziale opiszemy, czym jest podzesp i jakie
s rne typy podzespow.

Co to jest podzesp?
Aby .NET mg zrealizowa zapewnienia o zrewolucjonizowaniu przyszoci informatyki, wewntrz rodowiska musi mie zaimplementowane wszystkie innowacyjne funkcje.
Jedn z tych innowacji jest sposb wykonywania i wersjonowania aplikacji przeszed
on dug drog w kierunku eliminowania niesawnego problemu pieka DLL. Microsoft

44

Cz I Podstawy
prbowa rozwiza ten problem, wprowadzajc podzesp, ktry jest podstawow jednostk w aplikacjach .NET.
W aplikacjach .NET podzespoy s wykorzystywane bardzo intensywnie. S one podstawowymi elementami budulcowymi aplikacji .NET. Reprezentuj logiczny zbir jednego
lub wicej programw wykonywalnych lub bibliotek doczanych dynamicznie (DLL),
ktre zawieraj kod aplikacji oraz zasoby. Podzespoy zapewniaj formaln struktur dla
widocznoci i wersjonowania w czasie dziaania. Podzespoy zawieraj tzw. manifest,
ktry jest opisem kodu i zasobw zawartych wewntrz podzespou. Poniewa manifest
zawiera wszystkie informacje na temat podzespou, jest on odpowiedzialny za samoopisujc natur podzespou. Zanim zajmiemy si rnymi typami podzespow i ich zaletami, przedstawimy struktur podzespou.

Struktura podzespou
Oglna struktura podzespou jest przedstawiona na rysunku 1.4.
Rysunek 1.4.
Struktura podzespou

Jak wida, podzesp skada si z czterech elementw. S to:

metadane lub manifest;

dane typw lub metadane opisujce typy;

modu;

zbir zasobw.

Z tych czterech wymienionych elementw jedynie manifest musi znajdowa si w kadym


podzespole. Wszystkie pozostae elementy, takie jak typy i zasoby, s opcjonalne i s
wymagane tylko wtedy, gdy s potrzebne do zrealizowania funkcji podzespou. W nastpnych punktach opiszemy dokadniej poszczeglne skadniki podzespou.

Manifest
Dziki manifestowi podzesp jest samoopisujcy. Manifest zawiera:

Identyfikator skada si z nazwy, numeru wersji, opcjonalnego kodu lokalizacji


i podpisu cyfrowego (jeeli podzesp ma by wspdzielony w wielu aplikacjach).

List plikw manifest zawiera list wszystkich plikw skadajcych si na


podzesp. Zawiera on rwnie dodatkowe informacje na temat kadego z plikw
podzespou, w tym jego nazw i odcisk kryptograficzny zawartoci w czasie

Rozdzia 1. Wprowadzenie do .NET

45

tworzenia manifestu. Odcisk ten jest weryfikowany w czasie uruchamiania w celu


sprawdzenia, czy modu jest spjny i nie zosta podmieniony. Zalenoci midzy
podzespoami s zapisane w manifecie podzespou wywoujcego. Dane zalenoci
zawieraj numer wersji, ktry jest wykorzystywany w czasie dziaania aplikacji
do zaadowania odpowiedniej wersji zalenego moduu.

Typy i zasoby jest to lista typw i zasobw udostpnianych przez podzesp.


Zawiera ona rwnie informacje o tym, czy typ jest widoczny dla innych
podzespow (udostpniony), czy te prywatny dla aplikacji.

Uprawnienia podzespoy s moduami, w ktrych wykorzystywane s


uprawnienia dostpu do kodu.

Modu
Moduem moe by DLL lub plik wykonywalny w formacie Windows PE. Moduy te zawieraj kod kompilowany do postaci Microsoft Intermediate Language (MSIL).
Modu jest zapisywany w rozszerzonej postaci formatu PE. Jest to niezbdne, poniewa
podstawowy format PE nie pozwala na zapisanie informacji o wersji ani metadanych.

Metadane typw
Typ jest poczeniem danych oraz metod operujcych na tych danych. Skada si z waciwoci, pl oraz metod. Pola s zmiennymi publicznymi, do ktrych mona odwoywa
si w bezporedni sposb. Waciwoci s podobne do pl, ale maj skojarzone instrukcje, ktre s wykonywane przy dostpie do waciwoci. Metody reprezentuj akcje lub
zachowanie si typu.

Wykorzystanie metody XCOPY


do bezobsugowej instalacji podzespow
Jednym z podstawowych zada .NET Framework jest uproszczenie instalacji poprzez
umoliwienie tak zwanego rozmieszczania metod XCOPY. Zanim przedstawimy, w jaki
sposb .NET pozwala na rozmieszczanie metod XCOPY, na pocztek opiszemy, na czym
polega ta metoda. Przed wprowadzeniem .NET instalowanie komponentu wymagao skopiowania plikw do odpowiednich katalogw, utworzenia wpisw w rejestrze i tak dalej.
Obecnie w .NET instalacja komponentu polega na skopiowaniu podzespou do katalogu
bin aplikacji klienckiej; dziki samoopisujcej naturze podzespow aplikacja od razu
moe by uruchomiona. Jest to nazywane instalacj bezinwazyjn, poniewa nie zmieniamy konfiguracji komputera przez dokonywanie wpisw w rejestrze.
Sama instalacja Microsoft .NET jest implementacj techniki instalacji rwnolegej. Jeeli
na przykad zainstalujemy .NET Framework w wersji 1.0 i 1.1, okae si, e powstay
dwa katalogi, dla .NET 1.0 oraz .NET 1.1: C:\WINNT\Microsoft.NET\Framework\
v1.0.3705 oraz C:\WINNT\Microsoft.NET\Framework\v1.1.4322.

46

Cz I Podstawy

Problemy przy projektowaniu podzespou


Podzesp moe by pojedynczym plikiem zawierajcym wszystkie skadniki, w tym manifest, metadane typw, kod IL oraz zasoby. Jeeli podczas budowania aplikacji bdziemy
korzysta z takich narzdzi jak Visual Studio .NET, kady projekt najprawdopodobniej
bdzie odpowiada jednemu podzespoowi. Mona rwnie umieci zawarto podzespou w wielu plikach w takim przypadku podzesp skada si z wielu plikw znajdujcych si w tym samym katalogu. Manifest podzespou znajduje si w jednym z plikw
wykonywalnych lub DLL. Warto pamita, e w przypadku podzespou wieloplikowego
system plikw nie przechowuje plikw w jednym miejscu. Jedynym wyznacznikiem tego,
e dane pliki s skadnikiem podzespou, jest to, e s wymienione w manifecie. Za
pomoc programw komend wiersza plece, takich jak al.exe, mona dodawa lub
usuwa pliki z podzespou wieloplikowego.
Na rysunku 1.5 zawarto podzespou Main zostaa podzielona na trzy rne pliki. Kod
uytkowy znajduje si w osobnym pliku DLL, a duy plik zasobw jest przechowywany
w swojej oryginalnej lokalizacji. Jedn z zalet takiego podejcia jest znaczne przyspieszenie adowania kodu. rodowisko .NET Framework aduje pliki przy pierwszym odwoaniu, jeli wic podzesp zawiera kod lub zasoby, do ktrych nie odwouje si zbyt
czsto, podzia pliku na czci poprawia szybko adowania.
Rysunek 1.5.
Podzesp wieloplikowy

Typy podzespow
Przy okrelaniu typu podzespou powinno si wzi pod uwag dwa czynniki:

Jak jest wykorzystywany podzesp czy jest prywatny dla aplikacji,


czy wspdzielony przez wiele aplikacji.

Jak jest tworzony podzesp czy podzesp jest tworzony podczas


projektowania, czy w trakcie dziaania programu.

Bazujc na sposobie ich wykorzystywania, podzespoy mona podzieli na podzespoy


prywatne i wspdzielone. Bazujc na sposobie tworzenia podzespow (w czasie projektowania lub dziaania programu), mona zaklasyfikowa je jako podzespoy statyczne
lub dynamiczne. W poniszych punktach przedstawimy te typy podzespow nieco bardziej
szczegowo.

Rozdzia 1. Wprowadzenie do .NET

47

Podzespoy prywatne
Podzesp prywatny jest widoczny tylko dla jednej aplikacji. Wikszo aplikacji .NET
jest budowana w postaci prywatnych podzespow, poniewa jednym z najwaniejszych
zada .NET Framework jest izolacja aplikacji od zmian, jakie inne aplikacje wprowadziy
do systemu. Tworzc prywatne podzespoy, zapisujemy je w katalogu bin aplikacji, w ktrej
s wykorzystywane. Poniewa zasig podzespow prywatnych ogranicza si do biecej aplikacji, wymagania co do nazewnictwa podzespow prywatnych s proste: nazwy
musz by unikalne wewntrz aplikacji. Kady prywatny podzesp jest specyficzny dla
jednej, okrelonej aplikacji, wic nie ma potrzeby zapisywa w nich informacji o wersji.
Gdy wsplne rodowisko uruchomieniowe otrzyma danie zaadowania podzespou,
przeksztaca nazw podzespou na nazw pliku zawierajcego manifest. Proces ten jest
nazywany sondowaniem.

Podzespoy wspdzielone
Innym rodzajem podzespou jest podzesp wspdzielony, ktry jest wykorzystywany
przez wiele aplikacji na tej samej maszynie. Podzespoy wspdzielone s przechowywane
w globalnym buforze podzespow (ang. Global Assembly Cache), ktry jest centralnym
repozytorium podzespow wspdzielonych z danego komputera. Naley pamita, e
w .NET to programici podejmuj decyzj o wspdzieleniu kodu pomidzy aplikacjami.
Podejcie to jest cakowicie odwrotne ni w przypadku COM, gdzie programici byli
zmuszeni wspdzieli swoje komponenty i przez to pojawiao si ryzyko, e inna aplikacja zastpi nasze komponenty swoimi. Jeeli korzystasz z Visual Studio .NET i dodasz
odwoanie do zewntrznego podzespou (wspdzielonego), ktry znajduje si w globalnym buforze podzespow, Visual Studio nie wykona kopii lokalnej tego podzespou.
Zamiast tego bezporednio odwoa si do podzespou z globalnego bufora. Dziaanie takie
jest wymuszane przez warto waciwoci CopyLocal, ktra przy dodaniu odwoania do
wspdzielonego podzespou jest ustawiana na false. Do waciwoci tej mona uzyska
dostp, klikajc podzesp prawym klawiszem myszy i wybierajc z menu kontekstowego opcj Properties.
Podzespoy wspdzielone s zaprojektowane jako rozwizanie problemw z wspdzieleniem kodu. Jednak podzespoy wspdzielone musz spenia nastpujce wymagania:

Musz mie globalnie unikalne nazwy, ktre s silne kryptograficznie.

Musz zawiera infrastruktur zapobiegajc wypuszczeniu przez kogo kolejnej


wersji podzespou i podszywaniu si w niej pod autora oryginau. Jest to realizowane
za pomoc kryptografii klucza publicznego.

Musz zapewnia identyfikacj odwoa. W czasie okrelania odwoania do


podzespou podzespoy wspdzielone s wykorzystywane do zagwarantowania,
e zaadowany kod pochodzi od spodziewanego dostawcy.

48

Cz I Podstawy

Podzespoy statyczne i dynamiczne


Jak ju wspominalimy, podzesp jest zbiorem fizycznych plikw. Podzesp, ktry jest
tworzony w czasie kompilacji i ktrego zalenoci s okrelane w czasie konsolidacji,
jest nazywany podzespoem statycznym. Wikszo podzespow, jakie bd utworzone
w tej ksice, jest wanie tego typu. Dodatkowo .NET Framework zawiera zbir klas
nazywany Reflection API. Klasy te mog by wykorzystane do tworzenia kodu na bieco i jego bezporedniego wykonywania. Tego typu podzespoy s nazywane podzespoami dynamicznymi; w razie potrzeby mog by zapisywane na dysku.

Metadane
Metadane s informacjami pozwalajcymi na opisywanie komponentw. Metadane s
wykorzystywane do opisywania wielu aspektw komponentw, w tym klas, metod, pl
oraz podzespow. Wsplne rodowisko uruchomieniowe korzysta z metadanych do realizacji rnych zada, na przykad kontroli poprawnoci podzespou przed jego uruchomieniem czy te zbierania nieuytkw w czasie dziaania kodu.

Czy metadane s ewolucj IDL?


Jeeli wczeniej tworzye komponenty COM, prawdopodobnie znasz podstawy jzyka
Interface Definition Language (IDL) oraz biblioteki typw. S one wykorzystywane do
zapisywania wszystkich informacji niezbdnych dla automatyzacji COM. Mona twierdzi, e metadane s podobne do IDL w wiecie COM. Jednak w przeciwiestwie do
IDL metadane s dokadniejsze i bardziej kompletne oraz nie s opcjonalne.
Metadane mog by informacjami wykorzystywanymi przez wsplne rodowisko uruchomieniowe do odczytywania wszystkiego na temat klas, funkcji, waciwoci, zasobw
i innych elementw znajdujcych si w pliku wykonywalnym. Trzeba wiedzie, e metadane s zawsze zwizane z plikiem zawierajcym kod oznacza to, e metadane s
zawsze doczone do samego pliku wykonywalnego lub DLL, co uniemoliwia utrat
synchronizacji midzy kodem i metadanymi.
Wszystkie kompilatory zgodne z .NET musz generowa pene metadane na temat kadej
klasy znajdujcej si w module skompilowanego kodu. W wiecie COM metadane i pliki
wykonywalne s zapisywane osobno. Programista COM ma moliwo zapisania biblioteki typw komponentu w postaci osobnego pliku. Dodatkowo wane metadane COM
wykorzystywane w czasie pracy, takie jak identyfikatory GUID oraz obsugiwany model
wtkw, s zapisywane w rejestrze. Poniewa metadane s przechowywane osobno, a nie
z komponentami COM i COM+, ich instalowanie i aktualizacja moe by koszmarem.
Komponent musi by zarejestrowany przed jego uruchomieniem, a jeeli biblioteka typw
jest zapisana w osobnym pliku, musi by ona zainstalowana we waciwym katalogu.
Po zainstalowaniu komponentu jego aktualizacja do nowszej wersji rwnie moe sprawia problemy. Jeeli zainstalujemy nowy plik binarny bez aktualizacji odpowiednich metadanych (ktre mog by rozsiane po systemie), aplikacja moe przesta dziaa. Proces
instalowania i aktualizacji komponentw .NET zosta znacznie uproszczony. Poniewa

Rozdzia 1. Wprowadzenie do .NET

49

wszystkie metadane skojarzone z komponentem .NET znajduj si w pliku zawierajcym


ten komponent, nie jest wymagana rejestracja. Po skopiowaniu nowego komponentu do
systemu moe by on natychmiast uyty, bez koniecznoci wykonywania jakichkolwiek
dziaa konfiguracyjnych, ktre s wymagane w przypadku COM. Jest to nazywane instalowaniem metod XCOPY.
Rwnie aktualizacja komponentw sprawia mniej problemw, poniewa komponenty
i skojarzone z nimi metadane s zapisywane razem, dziki czemu nie mog si rozsynchronizowa.

System wsplnego jzyka (CLS)


System wsplnego jzyka definiuje zbir konstrukcji i ogranicze, ktry suy za przewodnik dla osb piszcych biblioteki i kompilatory. Jzyki dziaajce w .NET Framework
musz spenia wytyczne zapisane w CLS. Dziki temu wszystkie jzyki obsugujce
CLS maj peny dostp do bibliotek napisanych w tych jzykach. Mona uwaa CLS
za podzbir wsplnego systemu plikw. Z punktu widzenia programisty, gdy jeden programista zaprojektuje publicznie dostpne klasy speniajce wymagania CLS, to mona
z nich korzysta w innych jzykach programowania. Aby utworzy aplikacj zgodn
z CLS, trzeba upewni si, e korzystamy tylko z funkcji specyficznych dla CLS w nastpujcych czciach aplikacji:

definicji klas publicznych;

definicji skadowych typu public i protected;

parametrach publicznych metod klas publicznych oraz metod typu protected.

Na podstawie tych ogranicze mona wywnioskowa, e CLS wymusza ograniczenia tylko


w niektrych czciach aplikacji. Oznacza to, e pozostae czci aplikacji mog zawiera dowolne funkcje specyficzne dla jzyka i nadal bdzie ona zgodna z CLS.

Integracja jzykw na platformie .NET


Jzyk programowania dla .NET moe mie trzy poziomy zgodnoci z CLS:

Producent komponenty napisane w tym jzyku mog by wykorzystywane


w innych jzykach.

Konsument w jzyku mona korzysta z klas napisanych w innych jzykach


programowania.

Rozszerzenie jzyki z tej kategorii mog rozszerza klasy napisane w innych


jzykach, korzystajc z funkcji dziedziczenia w .NET.

Wszystkie jzyki zdefiniowane w Visual Studio .NET (VB.NET, VC++ oraz C#) speniaj wszystkie trzy poziomy zgodnoci z CLS. Jeeli tworzysz jzyk przeznaczony dla
wsplnego rodowiska uruchomieniowego, musisz wybra poziom zgodnoci pasujcy
do Twoich wymaga. Pena obsuga jzyka w .NET Framework wymaga wiele pracy
od dostawcy jzyka. Producent musi dostarczy kompilator jzyka, ktry ma moliwo
tworzenia kodu poredniego zamiast kodu maszynowego. Funkcje jzyka musz by zgodne

50

Cz I Podstawy
ze standardami ustalonymi przez CLS. Jeeli przejdziesz proces zmiany architektury jzyka,
Twj jzyk moe w zamian korzysta z takich zalet jak:

Peny dostp do wszystkich zoptymalizowanych i skalowalnych bibliotek klas


.NET Framework.

Zaawansowane rodowisko IDE.

Wydajne narzdzia debugera.

Pena integracja jzykw. Przykadem tej integracji jest tworzenie interfejsu


w jzyku COBOL i jego implementacja w C#.

Dla platformy .NET dostpnych jest kilka jzykw rnych firm:

APL,

Perl,

Python,

SmallTalk,

COBOL,

Scheme,

Eiffel,

Oberon,

Mercury.

Podsumowanie
rodowisko Microsoft .NET Framework oferuje wiele nowych narzdzi do byskawicznego tworzenia aplikacji o jakoci przemysowej. cisa integracja API przeznaczonych
dla internetu, takich jak usugi sieciowe, XML oraz ASP.NET, powoduje, e platforma
ta jest szczeglnie kuszca dla aplikacji nowej generacji. Dodatkowo integracja z innymi
jzykami daje .NET Framework przewag nad platformami zalenymi od architektury
i jzyka. Niezaleno platformy powoduje, e .NET Framework staje si nowym liderem w tworzeniu aplikacji rozproszonych.
W tym rozdziale opisalimy sporo tematw. Zaczlimy od zada .NET i wanych komponentw platformy .NET. Nastpnie przedstawilimy wprowadzenie do wsplnego rodowiska uruchomieniowego i omwilimy usugi oferowane aplikacjom przeznaczonym na
platform .NET. Omwilimy rwnie trzy wane skadniki aplikacji .NET podzespoy,
moduy oraz typy. Nastpnie przedstawilimy CLS oraz zasady, jakich musz przestrzega
niezaleni dostawcy, aby utworzy jzyki korzystajce z usug platformy .NET.

Propozycje dalszych lektur


Witryna .NET firmy Microsoft: http://msdn.microsoft.com/netframework.
Duncan Mackenzie i Kent Sharkey, Sams Teach Yourself VB.NET in 21 Days, Pearson
Education, 2001.

You might also like