NET CLR Ksiega eksperta.pdf

(344 KB) Pobierz
IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
.NET CLR.
Ksiêga eksperta
Autor: Kevin Burton
T³umaczenie: Marcin Jêdrysiak
ISBN: 83-7197-780-8
Tytu³ orygina³u:
.NET Common
Language Runtime Unleashed
Format: B5, stron: 868
„.NET CLR. Ksiêga eksperta” to ca³o ciowe opracowanie po wiêcone g³ównemu
sk³adnikowi platformy .NET Microsoftu, jakim jest Common Language Runtime. CLR
pozwala na korzystanie z dowolnych jêzyków programowania zgodnych z .NET
udostêpniaj¹c im wspólne us³ugi. Niezale¿nie od tego, czy uruchamiasz kod napisany
w VB, C#, zarz¹dzanym C++, JScripcie czy te¿ w dowolnym innym obs³ugiwanym przez
platformê .NET jêzyku — wykorzystywane s¹ funkcje i us³ugi CLR.
Tematy poruszone w ksi¹¿ce obejmuj¹ m.in.:
• Typy .NET i Common Type System (CTS)
• Strukturê i uk³ad metadanych podzespo³u .NET
• Wspó³pracê COM i COM+ z komponentami .NET
• Integracjê z bibliotekami Win32 DLL poprzez P/Invoke
• Zarz¹dzanie pamiêci¹ i zasobami w CLR
• Zarz¹dzanie i u¿ycie w¹tków w rodowisku .NET
• Tworzenie wydajnych aplikacji do obs³ugi sieci równorzêdnych
• Tworzenie rozproszonych aplikacji
• Interakcje aplikacji poprzez zdarzenia i delegaty
• Obs³ugê b³êdów w .NET przy u¿yciu wyj¹tków
• Tworzenie i obs³ugê bezpiecznych aplikacji dziêki zabezpieczeniom .NET
• Dynamiczne uzyskiwanie informacji o typach poprzez refleksjê
• U¿ycie narzêdzi do globalizacji i lokalizacji
• Usuwanie b³êdów aplikacji .NET
• Profilowanie aplikacji .NET
• Omówienie sk³adni C# i najwa¿niejszych kwestii zwi¹zanych z tym jêzykiem
• Przegl¹d bibliotek struktury .NET
• Tworzenie w³asnego hosta CLR
• Porównanie CLR i JVM
Je¿eli chcesz zajmowaæ siê pisaniem aplikacji opartych na .NET, „.NET CLR. Ksiêga
eksperta” stanowiæ bêdzie cenne uzupe³nienie Twojej wiedzy i pozwoli na lepsze
zrozumienie zasad, na których oparta jest ta platforma.
TWÓJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
5RKU VTG EK
1 #WVQT\G
2T\GFOQYC
9UVúR
%\ú è + 5VTWMVWTC 0'6 K RQFUVCY[ %.4C
4Q\F\KC 9RTQYCF\GPKG FQ \CT\æF\CPGIQ TQFQYKUMC
Krótka historia CLR ..............................................................................................................................30
Omówienie zarządzanego środowiska wykonawczego.........................................................................30
Bezpieczeństwo typów ....................................................................................................................32
Pełne bezpieczeństwo......................................................................................................................34
Obsługa wielu języków ...................................................................................................................35
Wydajność i skalowalność ..............................................................................................................36
Wdra anie........................................................................................................................................37
Metadane i samoopisujący kod .......................................................................................................38
Oczyszczanie pamięci i zarządzanie zasobami ...............................................................................39
Ewolucja COM................................................................................................................................39
Obsługa wątków ..............................................................................................................................40
Obsługa sieci ...................................................................................................................................40
Zdarzenia .........................................................................................................................................40
Konsekwentna obsługa błędów .......................................................................................................40
Uzyskiwanie informacji o typie w czasie pracy aplikacji ...............................................................41
Globalizacja.....................................................................................................................................41
Usuwanie błędów i profilowanie.....................................................................................................41
Podsumowanie.......................................................................................................................................41
4Q\F\KC %QOOQP .CPIWCIG 4WPVKOG
Lú\[M K U[UVGO V[RÎY
Common Type System (CTS) ...............................................................................................................43
Typy wartości ..................................................................................................................................44
Typy odwołań..................................................................................................................................48
Cechy Common Language Specification ..............................................................................................56
Nazewnictwo ...................................................................................................................................56
Elementy składowe typu .................................................................................................................61
Właściwości ....................................................................................................................................64
Zdarzenia .........................................................................................................................................67
Tablice .............................................................................................................................................68
Wyliczenia.......................................................................................................................................68
Wyjątki ............................................................................................................................................69
Własne atrybuty...............................................................................................................................70
Podsumowanie.......................................................................................................................................72
0'6 %.4 -UKúIC GMURGTVC
4Q\F\KC %QOOQP .CPIWCIG 4WPVKOG
QOÎYKGPKG TQFQYKUMC Y[MQPCYE\GIQ
Wprowadzenie do środowiska wykonawczego .....................................................................................74
Uruchamianie metody............................................................................................................................75
Typy obsługiwane przez IL.............................................................................................................76
Wykonawczy wątek kontroli...........................................................................................................79
Sterowanie działaniem metody .......................................................................................................80
Podsumowanie.......................................................................................................................................89
%\ú è ++ -QORQPGPV[ %.4
4Q\F\KC 2QF\GURÎ
Przedstawienie podzespołu .NET ..........................................................................................................94
Niezale ność od języka programowania .........................................................................................95
Metadane — podstawa dla równoległego wdra ania i obsługi wielu wersji ..................................96
Metadane a dokładniejsze zabezpieczenia ......................................................................................96
Większa produktywność programisty .............................................................................................97
Bezproblemowa interakcja z niezarządzanymi interfejsami API....................................................97
Praca zdalna.....................................................................................................................................97
Tworzenie międzynarodowych wersji aplikacji..............................................................................97
Koszt metadanych ...........................................................................................................................98
Ogólna struktura podzespołu .................................................................................................................98
Szczegółowe omówienie struktury podzespołu...................................................................................103
Niezarządzany interfejs API i dostęp do metadanych podzespołu......................................................111
Fizyczna struktura podzespołu ............................................................................................................115
Tablica Module (0x00)..................................................................................................................119
Tablica TypeRef (0x01) ................................................................................................................121
Tablica TypeDef (0x02) ................................................................................................................123
Tablica MethodDef (0x06)............................................................................................................125
Tablica MemberRef (0x0A) ..........................................................................................................130
Tablica CustomAttribute (0x0C)...................................................................................................130
Tablica Assembly (0x20) ..............................................................................................................131
Tablica AssemblyRef (0x23) ........................................................................................................131
Podsumowanie.....................................................................................................................................132
4Q\F\KC 2QFUVCY[ Lú\[MC +PVGTOGFKCVG .CPIWCIG
Miejsce IL w procesie programowania ...............................................................................................133
Podręcznik ILDASM...........................................................................................................................134
Podstawy języka IL .............................................................................................................................135
Najczęściej u ywane polecenia IL ......................................................................................................139
Polecenia IL do ładowania wartości..............................................................................................139
Polecenia IL do składowania.........................................................................................................142
Polecenia IL do sterowania działaniem kodu................................................................................143
Polecenia operacji IL.....................................................................................................................147
Polecenia modelu obiektów IL......................................................................................................148
Podsumowanie.....................................................................................................................................149
5RKU VTG EK
4Q\F\KC 2WDNKMQYCPKG CRNKMCELK
Problemy z instalacją klienta Windows...............................................................................................151
Wdra anie i publikowanie aplikacji .NET ..........................................................................................153
Identyfikacja kodu poprzez silną nazwę..............................................................................................153
Wdra anie prywatnego podzespołu.....................................................................................................157
Instalacja współdzielonego kodu.........................................................................................................159
Wyszukiwanie podzespołów ...............................................................................................................162
Badanie plików zasad....................................................................................................................163
Sprawdzenie wcześniejszych odwołań do podzespołu .................................................................165
Sprawdzenie GAC.........................................................................................................................165
Wyszukiwanie podzespołu ............................................................................................................165
Administracja zasadami.......................................................................................................................166
Domyślna zasada wiązania............................................................................................................166
Zmiana zasady wiązania poprzez plik zasad aplikacji ..................................................................166
Zmiana zasady wiązania poprzez plik zasad wydawcy.................................................................168
Zmiana zasady wiązania poprzez plik zasad komputera...............................................................169
Podsumowanie.....................................................................................................................................170
%\ú è +++ 7U WIK Y[MQPCYE\G \CRGYPKCPG RT\G\ %.4
4Q\F\KC 9[MQT\[UV[YCPKG KUVPKGLæEGIQ MQFW RQRT\G\ 2+PXQMG
Omówienie P/Invoke ...........................................................................................................................173
Dlaczego współpraca z klasycznym kodem? ......................................................................................175
Niektóre inne metody współpracy z klasycznym kodem ....................................................................176
U ycie P/Invoke ..................................................................................................................................177
Deklaracja funkcji — atrybut DLLImport ....................................................................................177
Szeregowanie ................................................................................................................................180
U ycie zarządzanych rozszerzeń VC++........................................................................................190
Wpływ P/Invoke na wydajność aplikacji ............................................................................................194
Podsumowanie.....................................................................................................................................194
4Q\F\KC 7 [EKG %1/ K %1/ Y \CT\æF\CP[O MQF\KG
Runtime Callable Wrapper ..................................................................................................................196
Przykładowa aplikacja demonstrująca u ycie RCW.....................................................................198
Programowe generowanie podzespołu współpracy.............................................................................204
Późne wiązanie z komponentem COM ...............................................................................................206
Współpraca z elementami sterującymi ActiveX .................................................................................207
Współpraca z SOAP ............................................................................................................................211
Podsumowanie.....................................................................................................................................212
4Q\F\KC 7 [EKG \CT\æF\CPGIQ MQFW
LCMQ MQORQPGPVW %1/ K %1/
Dlaczego warto tworzyć komponent .NET zachowujący się jak składnik COM?..............................215
Podstawy współpracy niezarządzanego i zarządzanego kodu.............................................................216
Eksportowanie metadanych do biblioteki typów ..........................................................................217
Rejestracja informacji w bibliotece typów....................................................................................230
Demonstracja współpracy COM z klasą Arithmetic.....................................................................232
Demonstracja współpracy COM z Excelem .................................................................................232
Zaawansowane funkcje współpracy COM....................................................................................235
Podsumowanie.....................................................................................................................................240
0'6 %.4 -UKúIC GMURGTVC
4Q\F\KC <CT\æF\CPKG RCOKúEKæ K \CUQDCOK
Omówienie sposobu zarządzania zasobami w strukturze .NET..........................................................243
Porównanie alokacji w strukturze .NET i C-Runtime...................................................................247
Optymalizacja oczyszczania pamięci poprzez generacje..............................................................250
Finalizacja .....................................................................................................................................250
Zarządzanie zasobami poprzez obiekt Disposable........................................................................256
Du e obiekty........................................................................................................................................261
WeakReference lub wyścig z mechanizmem oczyszczania pamięci ..................................................262
Podsumowanie.....................................................................................................................................264
4Q\F\KC 1DU WIC YæVMÎY
Prezentacja wątków .............................................................................................................................266
Tworzenie i uruchamianie wątków ...............................................................................................266
Witaj świecie .................................................................................................................................268
Wielozakresowy delegat wątku.....................................................................................................268
Przekazywanie informacji do wątku .............................................................................................270
Inne operacje wykonywane na wątkach ..............................................................................................273
AppDomain .........................................................................................................................................275
Synchronizacja.....................................................................................................................................278
Monitor i Lock ..............................................................................................................................280
Zsynchronizowane zbiory .............................................................................................................282
Klasy synchronizacji wątków........................................................................................................282
Oczekiwanie poprzez WaitHandle ................................................................................................282
Klasa Interlocked...........................................................................................................................283
Słowo kluczowe volatile ...............................................................................................................283
Metoda Join ...................................................................................................................................283
Invoke, BeginInvoke oraz EndInvoke...........................................................................................283
Pierwszy przykład synchronizacji — obiad filozofów .................................................................284
Drugi przykład synchronizacji — koszyk z kolorowymi piłkami ................................................285
Pula wątków ........................................................................................................................................286
QueueUserWorkItem ....................................................................................................................286
RegisterWaitForSingleObject .......................................................................................................289
Podsumowanie.....................................................................................................................................291
4Q\F\KC 1DU WIC UKGEK
Krótka historia rozproszonych aplikacji..............................................................................................293
Tradycyjne gniazda..............................................................................................................................294
WinSock ..............................................................................................................................................295
Klasy sieciowe .NET ...........................................................................................................................295
Produktywne tworzenie oprogramowania sieciowego..................................................................296
Warstwowy stos sieci ....................................................................................................................296
Scenariusze dla aplikacji serwerowych i klienckich .....................................................................296
Elastyczność ..................................................................................................................................296
Zgodność ze standardami ..............................................................................................................296
Gniazdo w .NET ..................................................................................................................................297
Gniazdo UDP ................................................................................................................................297
Gniazdo TCP .................................................................................................................................306
Opcje Socket .................................................................................................................................311
U ycie IOControl ..........................................................................................................................316
Asynchroniczne operacje na gniazdach ........................................................................................317
Zgłoś jeśli naruszono regulamin