Platforma .NET – Wykład 2 Składowe platformy .NET

Transcription

Platforma .NET – Wykład 2 Składowe platformy .NET
Platforma .NET – Wykład 2 Składowe platformy .NET
Notatki
Platforma .NET – Wykład 2
Składowe platformy .NET
Marek Sawerwain
Instytut Sterowania i Systemów Informatycznych
Uniwersytet Zielonogórski
10 marca 2011
V1.1 – 1/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Notatki
Spis treści
Wprowadzenie
Plan wykładu
Elementy .NET / Biblioteka klas
Analiza składowych platformy .NET
Common Language Runtime (CLR)
Common Language Specification
Common Type Systems (CTS)
Przegląd języków programowania .NET
Analiza biblioteki klas
Podzespół/IL
Budowa podzespołu
Język pośredni
Kompilacja i wykonywanie programów IL
Przykłady programów
Tabela instrukcji – wybór
Już za tydzień na wykładzie
V1.1 – 2/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Wprowadzenie
Plan wykładu
Notatki
Plan wykładu – tydzień po tygodniu
(1) Informacje o wykładzie, pojęcie platformy, podstawowe informacje o
platformie .NET,
(2) ⇒ Składowe platformy .NET: CLR, CTS, języki programowania,
biblioteki klas, pojęcie podzespołu (ang. assembly) ⇐ ,
(3) Programowanie w C# – środowisko VS, MonoDevelop, syntaktyka
C#, wyjątki, współpraca z DLL,
(4) Programowanie w C# – model obiektowy, typy uogólnione, lambda
wyrażenia,
(5) Programowanie w C# – aplikacje „okienkowe”, programowanie
wielowątkowe.
(6) Programowanie w F# – podstawy, przetwarzanie danych tekstowych,
(7) "Klasówka I", czyli wstęp do egzaminu cześć pierwsza
(8) Dostęp do baz danych
V1.1 – 3/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Wprowadzenie
Plan wykładu
Notatki
Plan wykładu – tydzień po tygodniu
(9) Język zapytań LINQ
(10) Obsługa standardu XML
(11) Technologia ASP.NET
(12) ASP.NET Model View Controller
(13) Tworzenie usług sieciowych SOA i WCF
(14) Bezpieczeństwo aplikacji .NET
(15) "Klasówka II", czyli wstęp do egzaminu cześć druga
V1.1 – 4/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Wprowadzenie
Plan wykładu
Notatki
Plan wykładu
1. Elementy .NET
1.1 główne elementy .NET,
1.2 reguły CLS,
1.3 system typów.
2. Biblioteka klas
2.1 podział typów,
2.2 typy wbudowane oraz typy w kontekście C#,
2.3 podstawowe klasy w przestrzeni System.
3. Podzespół (assembly)/Język pośredni
3.1 rola podzespołu,
3.2 budowa i model,
3.3 język pośredni.
V1.1 – 5/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Analiza składowych platformy .NET
Notatki
Elementy platformy .NET
I Wspólne środowisko uruchomieniowe
Visual Basic
oraz biblioteka klas,
C++
C#
Perl
XML Web Services
Python
User Interface
I Web Services – zestandaryzowana
technologia publikacji serwisów
WWW,
ADO.NET and XML
.NET Framework Class Libray
I SOAP – Simple Object Access
Protocol,
Common Language Runtime
I HTTP – protokół stosowany do
przesyłania informacji pomiędzy
serwisami WWW,
I XML – opis danych.
Message
Queuing
COM+
(Transactions, Partitions, Object Pooling)
IIS
WMI
WIN32 / WIN64
.NET Framework
– oferuje ustalony sposób produkcji oprogramowania w oparciu o platformę w której
nie akcentuje się żadnego języka programowania. Platforma zawiera wspólne
środowisko uruchomieniowe, bibliotekę klas dodatkowe serwery oraz narzędzia.
V1.1 – 6/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Analiza składowych platformy .NET
Notatki
Cztery główne filary platformy .NET
I Common Language Runtime (CLR) – środowisko wykonawcze programów .NET
odpowiedzialne za lokalizację, wczytanie oraz zarządzanie typami/obiektami platformy
.NET
I Common Language Infrastructure (CLI) – ECMA-335
I
Common Language Specification (CLS) – zespół zasad oraz reguł niezbędnych do
spełniania aby określony język programowania mógł współpracować z CLI.
I
Common Type System (CTS) – definicja sposobu reprezentacji typów danych w
pamięci maszyny.
I Common Intermediate Language (CIL) – język pośredni (IL) stanowiący niezależny
zestaw instrukcji od istniejących rozwiązań procesorowych, do którego kompilowane są
wszystkie programy pracujące w ramach środowiska .NET,
I metadane .
Common
Language
Runtime (CLR)
Common
Language
Specification (CLS)
Base Class
(BCL)
Library
Metadata Definition
and Semantics
Common Type System
(CTS)
Common Intermediate
Language (CIL) Instruction Set
V1.1 – 7/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Language Runtime (CLR)
Notatki
Środowisko wykonawcze – maszyna wirtualna
Zadaniem maszyny wirtualnej jest kontrola nad odwołaniami uruchamianego programu
do sprzętu i systemu operacyjnego. W przypadku braku pewnych funkcji na poziomie
sprzętowym zdaniem maszyny jest symulacja brakującej funkcjonalności. W ten
sposób aplikacja/program nie jest wstanie sprawdzić, czy jest uruchomiony na
prawdziwym, czy też udawanym/wirtualnym sprzęcie.
Maszyny wirtualne to m.in.:
I interpretery, szczególnie interpretery kodu bajtowego,
I kompilatory JIT,
I emulatory rzeczywiście istniejącego sprzętu, np. emulatory starszych
komputerów, konsol do gier.
Uwaga!
Nie zawsze jednoznacznie można określić wprost, czy faktycznie mamy do
czynienia z maszyną wirtualną przykładem może być Java.
V1.1 – 8/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Language Runtime (CLR)
Notatki
Zastosowania maszyn wirtualnych
Maszyny wirtualne są używane do różnych celów, min. do:
1. uruchamiania starszych aplikacji i/bądź starszych systemów
operacyjnych w innych środowiskach niż pierwotne,
2. zapewnienia uniwersalnego środowiska uruchomieniowego,
3. bezpiecznego rozdzielania zasobów (min. mainframe,
superkomputery),
4. uruchamiania jednocześnie różnych systemów operacyjnych na
jednym komputerze (bez konieczności „resetu” tzw. systemu
goszczącego),
5. tworzenia programowych klastrów,
6. analizowania jego pracy/debuggowania tworzonych systemów
operacyjnych,
7. optymalizacji tworzonych aplikacji/programów, poprzez zapewnienie
kontroli nad ich środowiskiem działania.
Wymienione właściwości mogą występować łącznie lub być ograniczone,
istotną własnością jest zupełność, czyli dana maszyna wirtualna W
powinna być w stanie uruchomić swoją własną kopię.
V1.1 – 9/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Language Runtime (CLR)
Notatki
Znane maszyny wirtualne
Kilka współczesnych programowych maszyn wirtualnych:
Nazwa
CLR
Mono
DotGNU
JVM
LLVM
Parrot
Legenda:
Model
Zarząd. pam.
Bezpie.
Inter.
JIT C.
CL O.Model
Dynam. typ.
stack
stack
stack
stack
register
register
auto/man
auto/man
auto/man
auto
man.
auto
Y
Y
Y
Y
N
N
N
Y
N
Y
Y
Y
Y
Y
Y
Y
Y
N
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
N
N
N
Yes
Zarząd. pam. – Zarządzanie pamięcią, Bezpie. – Bezpieczeństwo, Inter. – Interpreter, JIT C. – Just-in-time
compiler, CL O.Model – model obiektowy, Dynam. typ. – dynamiczne typowanie.
Maszyny wirtualne można podzielić na dwa podstawowe modele:
rejestrowy oraz stosowy. Istotnym problemem jest wydajność maszyny,
dlatego obecność kompilatora JIT jest niezbędna, aby dane rozwiązanie
oferowało odpowiednio wysoką wydajność.
V1.1 – 10/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Language Runtime (CLR)
Notatki
Common Language Runtime (CLR)
Usługi określone przez CLR:
1. zarządzanie kodem, czyli jego uruchamianie oraz nadzór nad jego wykonaniem,
2. zarządzanie pamięcią w przypadku obiektów zarządzanych
3. izolacja obszarów pamięci przydzielonych poszczególnym aplikacją .NET,
4. konwersja języka IL do kodu maszynowego,
5. dostęp do metadanych (informacja o typach),
6. zabezpieczenia w dostępie kodu do zasobów,
7. weryfikacja i zgodność typów,
8. obsługa wyjątków (przekazywanie ich pomiędzy różnymi językami jak np.: F#
oraz C#),
9. współpraca kodu zarządzanego z niezarządzanym, obsługa COM i bibliotekami
DLL,
10. automatyzacja tworzenia obiektów,
11. usługi wspomagające tworzenie oprogramowania jak „debuggowanie” oraz
„profilowanie”
V1.1 – 11/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Language Runtime (CLR)
Notatki
Common Language Runtime (CLR)
Wymagania, co do środowiska wykonawczego zostały określone w dokumencie
ECMA-335: http://www.ecma- international.org/publications/standards/ecma- 335.htm.
Base Class Library Support
Thread Support
COM Marshaler
Type Checker
Exception Manager
Security Engine
Debug Engine
IL to native code
(JIT compiler)
Code Manager
Garbage Collector
(GC)
Class Loader
Istniejące implementacje wspólnego środowiska wykonawczego:
I
I
I
CLR – implementacja Microsoftu ,
MONO – http://www.mono-project.com,
DotGNU/Portable.NET – www.gnu.org/projects/dotgnu/,
http://dotgnu.org/.
V1.1 – 12/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Language Runtime (CLR)
Notatki
Rozwój CLR
Kolejne wydania platformy .NET naturalnie pociągają za sobą
modyfikację CLR:
WCF
WPF
WF
EF
Parallel
WCS
LINQ
DLR
CLR 1.0
CLR 1.1
CLR 2.0
CLR 2.0
CLR 2.0
CLR 4.0
.NET 1.0
.NET 1.1
.NET 2.0
.NET 3.0
.NET 3.5 (SP1)
.NET 4.0
oznacza to, iż dokument ECMA-335 jest poddawany modyfikacjom w
momencie wydawania nowych wersji platformy .NET, ostatnia pochodzi z
grudnia 2010.
V1.1 – 13/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Language Specification
Notatki
Common Language Specification (CLS)
Rola CLS
CLS to zestaw reguł których spełnienia ma zapewnić współpracę
pomiędzy różnymi językami programowania w ramach platformy .NET.
Trzy główne obszary/poziomy, gdzie stosowane są reguły CLS:
1. „framework” – poziom bibliotek/technologii/zestawów klas,
2. „consumer” – język programowania lub narzędzie dostarczające
dostęp do funkcjonalności platformy,
3. „extender” – język programowania lub narzędzie dostarczające
dostęp do funkcjonalności platformy oraz rozszerza jej możliwości,
V1.1 – 14/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Language Specification
Notatki
Reguły szczegółowe CLS z dokumentu ECMA–335
Przykłady reguł ze standardu:
CLS Rule 17
Unmanaged pointer types are not CLS-compliant.
Note:
CLS (consumer) There is no need to support unmanaged pointer types.
CLS (extender) There is no need to provide syntax to define or access unmanaged
pointer types.
CLS (framework) Unmanaged pointer types shall not be externally exported.
CLS Rule 23
System.Object is CLS-compliant. Any other CLS-compliant class shall inherit from a
CLS- compliant class.
CLS Rule 25
No longer used. [Note: In an earlier version of this standard, this rule stated „The
accessibility of a property and of its accessors shall be identical.” The removal of this
rule allows, for example, public access to a getter while restricting access to the setter.
end note]
V1.1 – 15/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Language Specification
Notatki
Reguły szczegółowe CLS z dokumentu ECMA–335
Przykłady reguł ze standardu:
CLS Rule 38
Properties and methods can be overloaded based only on the number and types of their
parameters, except the conversion operators named op_Implicit and op_Explicit, which can
also be overloaded based on their return type.
Note:
CLS (consumer) Can assume that only properties and methods are overloaded, and need not
support overloading based on return type unless providing special syntax for operator
overloading. If return type overloading isn‘t supported, then the op_Implicit and op_Explicit
can be ignored since the functionality shall be provided in some other way by a CLS-compliant
framework. Consumers must first apply the hide-by- name and hide-by-signature-and-name
rules (§8.10.4) to avoid any ambiguity.
CLS (extender) Should not permit the authoring of overloads other than those specified here.
It is not necessary to support operator overloading at all, hence it is possible to entirely avoid
support for overloading on return type.
CLS (framework) Shall not publicly expose overloading except as specified here. Frameworks
authors should bear in mind that many programming languages, including object-oriented
languages, do not support overloading and will expose overloaded methods or properties
through mangled names. Most languages support neither operator overloading nor overloading
based on return type, so op_Implicit and op_Explicit shall always be augmented with some
alternative way to gain the same functionality.
V1.1 – 16/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Type Systems (CTS)
Notatki
Common Type System (CTS) – Wspólny system typów
Wspólny system typów określa w jaki sposób typy są deklarowane,
używane oraz zarządzane w czasie wykonania (run-time). Najważniejsze
funkcje udostępniane przez CTS to min:
1. bezpieczeństwo typów, szybkie wykonywanie kodu, utworzenie
niezbędnej struktury do integracji między językowej,
2. pełny model zorientowany obiektowo implementowany w wielu
językach programowania .NET,
3. określa warunki, które muszą być spełnione przez określony język
.NET, co pozwala na interakcje pomiędzy obiektami pomiędzy
różnymi językami .NET .
Główne zadanie CTS
Obecność CTS pozwala na integrację języków, bowiem języki
programowania obecne w .NET współdzielą te same typy podstawowe
określone przez CTS.
V1.1 – 17/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Type Systems (CTS)
Notatki
Ogólny podział typów
Type
Refernces Types
Value Types
Built-in Value Types
(special encoding in signature)
Integer Types
(identity within app. domain)
User Defined
Enums
Floating Point Types
Typed References
V1.1 – 18/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Type Systems (CTS)
Notatki
Ogólny podział typów
Refernces Types
(identity within app. domain)
Self-Describing
Interface
Name Equivalent
Pointer
Function
Delegates
Managed
(might be in heap)
Built-In Reference Types
String
Object
Boxed Value Types
Unmanaged
Boxed Enums
Structural Equivalent
Arrays
V1.1 – 19/ 47
Wartości dla typów prostych zazwyczaj sa umieszczane na stosie, natomiast typy
referencyjne umieszczane są na stercie oraz zarzadzanie przez mechanizme CLR (np.:
usuwanie
garbage
collector).
Elementy
.NET /przez
Biblioteka
klas
Platforma .NET – Wykład 2 Składowe platformy .NET
Common Type Systems (CTS)
Notatki
Wartości dla typów prostych zazwyczaj sa umieszczane na stosie, natomiast typy
CTSreferencyjne
typy „wbudowane”
– built-in
umieszczane są na stercie
oraz są zarzadzanie przez mechanizmy CLR
(np.: usuwanie przez garbage collector).
Podstawowe typy obecne we wspólnym środowisku wykonawczym.
Nazwa CIL
Typ CLS
Nazwa BCL
Opis
bool
char
object
string
float32
float64
int8
int16
int32
int64
native int
native unsigned int
typedref
unsigned int8
unsigned int16
unsigned int32
unsigned int64
Yes
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
No
No
Yes
No
No
No
System.Boolean
System.Char
System.Object
System.String
System.Single
System.Double
System.SByte
System.Int16
System.Int32
System.Int64
System.IntPtr
System.UIntPtr
System.TypedReference
System.Byte
System.UInt16
System.UInt32
System.UInt64
True or false value
Unicode 16-bit char
Object or boxed value type
Unicode string
IEC 60559:1989 32-bit float
IEC 60559:1989 64-bit float
Signed 8-bit integer
Signed 16-bit integer
Signed 32-bit integer
Signed 64-bit integer
Signed integer, native size
Unsigned integer, native size
Pointer plus exact type
Unsigned 8-bit integer
Unsigned 16-bit integer
Unsigned 32-bit integer
Unsigned 64-bit integer
V1.1 – 20/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Common Type Systems (CTS)
Notatki
CTS a typy w języku C#
(I) Typy wartościowe:
(1) Proste typy numeryczne i znakowe:
(a)
(b)
(c)
(d)
(e)
(f)
wielkość integer ze znakiem: sbyte, short, int, long,
wielkość integer bez znaku: byte, ushort, uint, ulong,
znak unicode: char,
IEEE floating point: float, double,
liczby o dużej precyzji: decimal,
boolean: bool.
(2) Typ enum: enum EName { ... },
(3) Typ struct: struct SName { ... },
(4) Typy „nullable”: typy mają możliwość przyjęcia wartości null.
(II) Typy referencyjne:
(1) Typ klasowy:
(a) typ podstawowy dla typu obiektowego: object,
(b) łańcuchy znaków unicode: string,
(c) klasy zdefiniowane przez użytkownika: class CName { ... },
(2) Typ interface: interface IName { ... },
(3) Typ tablicowy: jedno i wielowymiarowe tablice zdefiniowane przez
użytkonika: int[], int[,],
(4) Typ delegate : typy użytkownika: delegate int DName( ... ).
V1.1 – 21/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Przegląd języków programowania .NET
Notatki
Opracowano ponad 40 języków dla .NET
V1.1 – 22/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Przegląd języków programowania .NET
Notatki
Najważniejsze języki
Najważniejsze języki dostępne „z pudełka” to:
I
C#, Visual Basic .NET, C++/CLI,
I
J# (odmiana języka Java opracowany przez Microsoft), JScript
.NET (kompilowana odmiana języka JScript).
Inne ważne języki:
1. COBOL, Delphi.NET, Oxygen,
2. Eiffel, Fortran, Lisp,
3. Nemerle, F#, Python, P# (Prolog).
V1.1 – 23/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Przegląd języków programowania .NET
Notatki
F# – język funkcyjny
Definicja funkcji rekurencyjnej fib obliczającej liczby ciągu Fibbonaciego:
let rec fib
match x
| 1
| 2
| x
x =
with
-> 1
-> 1
-> fib (x - 1) + fib (x - 2)
printfn "(fib 2) = %i" (fib 2)
printfn "(fib 6) = %i" (fib 6)
printfn "(fib 11) = %i" (fib 11)
i elementy ciągu Lucasa:
let rec luc x =
match x with
| x when x <= 0 -> failwith "value must be greater than 0"
| 1 -> 1
| 2 -> 3
| x -> luc (x - 1) + luc (--x - 2)
printfn "(luc 2) = %i" (luc 2)
V1.1 – 24/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Przegląd języków programowania .NET
Notatki
Konwersja liczby całkowitej na postać binarną:
let BitsNum = 32 ;;
let binary_of_int n =
[ for i in BitsNum - 1 .. -1 .. 0 ->
if (n >>> i) % 2 = 0 then "0"
|> String.concat "" ;;
else "1"
]
let x1 = binary_of_int
1431 ;;
let x2 = binary_of_int ( -1123 ) ;;
V1.1 – 25/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Analiza biblioteki klas
Notatki
Zadania i funkcje biblioteki klas
Standard ECMA-335 określa także postać standardowej biblioteki klas, zaliczane są
następujące pakiety (zachowane zostało oryginalne nazewnictwo standardu):
1. Run-time infrastructure library
2. Base Class Library (BCL)
3. Network library
4. Reflection library
5. XML library
6. Extended numerics library
7. Extended array library
8. Vararg library
9. Parallel library
V1.1 – 26/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Analiza biblioteki klas
Notatki
Ogólny schemat Base Class Library – BCL – .NET 3.5
Microsoft .NET Framework 3.5
Commonly Used Types and Namespaces
Windows Presentation Foundation
System.Windows
RowDefinition
ScrollViewer
Slider
SpellCheck
StackPanel
TabControl
TabItem
TextBlock
TextBox
ToolBar
ToolTip
TreeView
UIElementCollection
ViewBox
Viewport3D
VirtualizingStackPanel
WrapPanel
Style
Trigger
UIElement3D NEW
Visibility
Window
System.Windows.Controls
Border
Button
CheckBox
ColumnDefinition
ContextMenu
ControlTemplate
DockPanel
FlowDocumentReader
Frame
Grid
Image
InkCanvas
ItemCollection
ItemsPresenter
ListBox
ListView
MediaElement
Menu
MenuItem
Page
PasswordBox
ProgressBar
RadioButton
RichTextBox
Popup
RepeatButton
ScrollBar
StatusBar
TabPanel
Thumb
ToggleButton
UniformGrid
System.Windows.Data
WindowsFormsHost
DoubleAnimation
StoryBoard
Timeline
Cursor
Cursors
FocusManager
InputDevice
Keyboard
KeyboardNavigation
Mouse
Stylus
System.Windows.Media.Imaging
BitmapImage
RenderTargetBitmap
WritableBitmap
System.Windows.Interop
BrowserInteropHelper
HwndHost
InteropBitmap
WindowInteropHelper
VisualsToXpsDocument
XpsDocumentWriter
System.Windows.Media
System.Windows.Navigation
Colors
DrawingBrush
ImageBrush
LinearGradientBrush
RadialGradientBrush
BaseUriHelper
JournalEntry
NavigationWindow
PageFunction<T>
System.Net.Sockets
System.ServiceModel.Description
Dns
FtpWebRequest
HttpListener
HttpWebRequest
WebClient
System.ServiceModel
NetMsmqBinding
NetTcpBinding
OperationBehaviorAttribute
OperationContractAttribute
ServiceBehaviorAttribute
ServiceContractAttribute
ServiceHost
WorkflowServiceHost NEW
WSHttpBinding
System.Net.Mail
MailMessage
SmtpClient
System.Net.NetworkInformation
NetworkInterface
NetworkChange
Ping
Cloud NEW
PeerName NEW
PeerNameRecord NEW
PeerNameResolver NEW
System.ServiceModel.Channels
ContactManager NEW
PeerApplication NEW
PeerCollaboration NEW
PeerContact NEW
PeerNearMe NEW
System.Net.Security
NegotiateStream
DataContext NEW
EntityRef<T>NEW
EntitySet<T>NEW
Table<T>NEW
WorkflowInstance
WorkflowRuntime
System.Data.Linq.Mapping
System.Workflow.Runtime.Hosting
SoapHttpClientProtocol
XPathDocument
XPathExpression
XPathNavigator
System.Xml.Xsl
XslCompiledTransform
XsltArgumentList
XmlAttribute
XmlDocument
XmlElement
XmlNode
XmlReader
XmlWriter
XAttribute NEW
XDocument NEW
XElement NEW
XName NEW
XNamespace NEW
XNode NEW
XText NEW
OdbcCommand
OdbcConnection
OdbcDataAdapter
OdbcDataReader
TrackingService
System.Data.OleDb
Rule
RuleAction
RuleCondition
RuleSet
The .NET Framework is the managed code programming
model for Windows. It provides a highly productive
environment for software developers and offers excellent
skills reuse across multiple application architectures. The
.NET Framework is available with the same consistent
API across different development platforms, including
the full .NET Framework for the desktop and server, the
.NET Compact Framework for mobile devices, the .NET
Framework on SQL Server, the .NET Micro Framework
for small embedded systems such as SPOT watches, and
Silverlight version 1.1 for cross-platform, cross-browser
development of rich Internet applications. The .NET
Framework is used by 90% of Fortune 100 companies
and is easily deployable to end user PCs.
XmlSerializer
System.Xml.XPath
System.Xml.Linq NEW
System.Data.Odbc
System.Workflow.Runtime.Tracking
System.Workflow.Activities.Rules
SslStream
NEW
AttributeMappingSource NEW
MetaModel NEW
XmlMappingSource NEW
WorkflowLoaderService
WorkflowPersistenceService
WorkflowRuntimeService
WorkflowSchedulerService
CodeActivity
SequenceActivity
ParallelActivity
ReceiveActivity NEW
SendActivity NEW
StateMachineWorkflowActivity
CustomPeerResolverService
PersistenceProvider NEW
PersistenceProviderFactory NEW
SqlPersistenceProviderFactory NEW
What is the .NET Framework?
System.Xml.Serialization
System.Xml
System.Data.Linq NEW
WorkflowMarkupSerializer
System.Workflow.Runtime
System.Workflow.Activities
MsmqIntegrationBinding
System.ServiceModel.Persistence NEW
ServiceMoniker
ActivityDesigner
System.Workflow.ComponentModel.Serialization
WebService
System.ServiceModel.PeerResolvers
System.ServiceModel.ComIntegration
WorkflowCompiler
System.Workflow.ComponentModel.Design
WebGetAttribute NEW
WebInvokeAttribute NEW
WebOperationContext NEW
WebServiceHost NEW
System.Web.Services
System.Web.Services.Protocols
System.ServiceModel.MsmqIntegration
Binding
CommunicationObject
IChannel
Message
System.Net.PeerToPeer.Collaboration NEW
HtmlButton
HtmlControl
HtmlForm
HtmlInputControl
WebConfigurationManager
SqlCommand
SqlConnection
SqlDataAdapter
SqlDataReader
SqlNotification
DbCommand
DbConnection
DbDataAdapter
DbDataReader
DbProviderFactory
System.Workflow.ComponentModel.Compiler
System.ServiceModel.Web NEW
PerformanceCounterScope
OleDbCommand
OleDbConnection
OleDbDataAdapter
OleDbDataReader
WebPart
System.Web.UI.HtmlControls
System.Web.Configuration
System.Data.SqlClient
System.Data.Common
System.Web.UI.WebControls.WebParts
Control
MasterPage
Page
ScriptManager NEW
UpdatePanel NEW
UpdateProgress NEW
UserControl
ClientFormsAuthenticationMembershipProvider NEW
ClientRoleProvider NEW
BuildProvider
OracleCommand
OracleConnection
OracleDataAdapter
OracleDataReader
DataColumn
DataRow
DataSet
DataTable
DataView
Activity
ActivityExecutionContext
CompositeActivity
Atom10FeedFormatter NEW
Rss20FeedFormatter NEW
SyndicationFeed NEW
SyndicationItem NEW
ClientOperation
ClientRuntime
DispatchOperation
DispatchRuntime
HttpSessionState
ClientFormsIdentity NEW
ClientRolePrincipal NEW
ConnectivityStatus NEW
System.Web.ClientServices.Providers NEW
System.Web.Compilation
System.Data.OracleClient
System.Data
RuleConditionDialog
RuleSetDialog
System.Workflow.ComponentModel
System.ServiceModel.Syndication NEW
System.ServiceModel.Dispatcher
AspNetCompatibilityRequirementsAttribute
ServiceHostFactory
WorkflowServiceHostFactory NEW
System.Workflow.Activities.Rules.Design
SecurityAlgorithmSuite
SecurityMessageProperty
SecurityVersion
System.ServiceModel.Diagnostics
System.ServiceModel.Activation
System.Net.PeerToPeer NEW
System.Web.SessionState
System.Web.UI
System.Web.ClientServices NEW
RichTextBox
TabControl
TextBox
TreeView
UserControl
WebBrowser
DATA, XML, and LINQ
System.ServiceModel.Security
DurableOperationAttribute NEW
DurableServiceAttribute NEW
IEndpointBehavior
IOperationBehavior
IServiceBehavior
MetadataExporter
MetadataImporter
OperationDescription
ServiceEndpoint
ServiceDescription
WebHttpBehavior
WebScriptEnablingBehavior NEW
WorkflowRuntimeBehavior NEW
NetworkStream
Socket
TcpClient
TcpListener
UdpClient
Message
MessageQueue
System.Net
FormsAuthentication
FormsIdentity
Membership
Roles
Cache
Button
CheckBox
ComboBox
DataGrid
DateTimePicker
Form
Label
ListBox
ListView
MessageBox
NumericUpDown
OpenFileDialog
PictureBox
ProgressBar
RadioButton
Content
DetailsView
FormView
GridView
LinqDataSource NEW
ListView NEW
LogIn
Menu
ObjectDataSource
TreeView
Wizard
WebBaseEvent
System.Web.Security
System.Web.Caching
SoundPlayer
System.Windows.Forms
XpsSerializationManager
XpsSerializationManagerAsync
Communications and Workflow
System.Messaging
System.Media
System.Windows.Xps.Serialization
System.Web.UI.WebControls NEW
ApplicationManager
System.Web.Management
AuthenticationService NEW
ProfileService NEW
RoleService NEW
PrintDocument
PrinterSettings
AmbientLight
DiffuseMaterial
DirectionalLight
GeometryModel3D
ModelVisual3D
PerspectiveCamera
SpecularMaterial
MarkupExtension
XamlReader
XamlWriter
System.Web.Hosting
HttpApplication
HttpCookie
HttpRequest
HttpResponse
HttpRuntime
HttpServerUtility
System.Web.ApplicationServices NEW
System.Drawing.Printing
System.Windows.Xps
System.Windows.Media.Media3D
System.Windows.Markup
SerializerDescriptor
SerializerProvider
SerializerWriter
DispatcherObject
DispatcherTimer
BlurBitmapEffect
DropShadowBitmapEffect
System.Web
Bitmap
Brush
Color
Font
Icon
Image
Pen
System.Windows.Threading
System.Windows.Media.Effects
ASP.NET
System.Drawing
Ellipse
Line
Path
Polygon
Rectangle
System.Windows.Media.Animation
System.Windows.Input
System.Windows.Documents.Serialization
Binding
CollectionView
DataSourceProvider
MultiBinding
System.Windows.Shapes
RotateTransform
ScaleTransform
SolidColorBrush
ElementHost
Block
Bold
Figure
FixedDocument
Floater
FlowDocument
Hyperlink
Inline
Italic
List
ListItem
Paragraph
Run
Section
Span
Table
TableCell
TableColumn
TableRowGroup
TextPointer
TextRange
TextSelection
Underline
System.Windows.Controls.Primitives
Windows Forms
System.Windows.Forms.Integration
ObjectDataProvider
XmlDataProvider
System.Windows.Documents
5
3.0
Key
NEW New with the .NET Framework 3.5.
System.Xml.Schema
3.0
New with the .NET Framework 3.0.
XmlSchema
XmlSchemaSet
XmlSchemaValidator
CF
Also available in the .NET Compact Framework 3.5.
SL
Planned for implementation in Silverlight 1.1.
(Subject to change.)
Fundamentals
System
System.AddIn.Contract
System.Collections.Generic
NEW
IContract NEW
INativeHandleContract NEW
Array
Boolean
Byte
Char
Console
DateTime
DateTimeOffset NEW
Decimal
Delegate
Enum
Environment
EventArgs
Exception
Int32
Int64
Math
Object
String
TimeZoneInfo NEW
Type
Uri
System.Diagnostics.Eventing
AddInProcess NEW
AddInSecurity NEW
AddInStore NEW
AddInToken NEW
System.Configuration
System.Collections
Debug
EventLog
EventSchemaTraceListener NEW
Process
Trace
ArrayList
HashTable
IEnumerable
System.DirectoryServices
DirectoryEntry
DirectorySearcher
System.DirectoryServices.ActiveDirectory
Expression<T> NEW
Expression NEW
System.IO.Compression
Domain
Forest
Encoding
StringBuilder
System.Text.RegularExpressions
Regex
System.Threading
System.Security.Cryptography
ECDsaCng NEW
SHA1
TripleDES
DataContractAttribute
DataContractSerializer
DataMemberAttribute
ISerializable
XmlDictionaryReader
XmlDictionaryWriter
System.Linq.Expressions NEW
ServiceBase
System.Text
AccessRule
FileSecurity
ObjectSecurity
System.Runtime.Serialization
IQueryable<T> NEW
Queryable NEW
WindowsIdentity
System.ServiceProcess
SecureString
SecurityManager
ResourceManager
System.Linq NEW
Directory
File
FileStream
Path
Stream
StreamReader
StreamWriter
System.Security.Principal
DataContractJsonSerializer NEW
JsonReaderWriterFactory NEW
System.Security.AccessControl
AssemblyBuilder
MethodBuilder
TypeBuilder
System.Resources
SerialPort
NEW
System.Security
System.Reflection.Emit
System.IO.Ports
System.IO
System.Runtime.Serialization.Json
Assembly
FieldInfo
MemberInfo
MethodInfo
PropertyInfo
AnonymousPipeClientStream NEW
AnonymousPipeServerStream NEW
NamedPipeClientStream NEW
NamedPipeServerStream NEW
PipeSecurity NEW
PipeStream NEW
Claim
ClaimSet
CounterData NEW
CounterSet NEW
System.Reflection
IsolatedStorage
System.IO.Pipes NEW
Calendar
CultureInfo
RegionInfo
TextInfo
System.IdentityModel.Claims
System.Diagnostics.PerformanceData NEW
Configuration
System.Diagnostics
System.IO.IsolatedStorage
ServicedComponent
EventLogInformation NEW
EventLogReader NEW
EventLogRecord NEW
EventLogWatcher NEW
EventRecord NEW
ProviderMetadata NEW
Component
TypeConverter
CollectionAdapters NEW
ContractBase NEW
ContractHandle NEW
FrameworkElementAdapters NEW
System.Globalization
System.Diagnostics.Eventing.Reader NEW
System.ComponentModel
System.AddIn.Pipeline NEW
System.EnterpriseServices
EventDescriptor NEW
EventProvider NEW
EventProviderTraceListener NEW
Dictionary<K,V>
HashSet<T> NEW
IEnumerable<T>
List<T>
Queue<T>
Stack<T>
System.AddIn.Hosting NEW
NEW
System.Security.Cryptography.X509Certificates
X509Store
ReaderWriterLockSlim NEW
Semaphore
Thread
WaitHandle
System.Transactions
Transaction
GZipStream
Additive versions of the .NET Framework
http://msdn.microsoft.com/netframework
Part number: 098-108905
V1.1 – 27/ 47
plakat autorstwa firmy Microsoft
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Analiza biblioteki klas
Notatki
Ogólny schemat Base Class Library – BCL – .NET 4.0
.NET
Framework 4 Universe
A selection of new types and namespaces
Workflow
System.WorkflowModel
Activity
4.0
WorkflowElement
4.0
System.WorkflowServiceModel
WorkflowServiceHost2
3.5 SP1
CompositeScriptReference
System.Web.DynamicData
3.5 SP1
DataModel
DynamicControl
3.5 SP1
DynamicDataManager
3.5 SP1
DynamicField
3.5 SP1
4.0
Controller
4.0
ControllerFactory
4.0
IViewEngine
4.0
ViewPage
4.0
4.0
4.0
Sys.Binding
Route
3.5 SP1
Sys.Observer
4.0
RouteTable
3.5 SP1
Sys.Data.DataSource
4.0
Sys.UI.DataView
4.0
System.ComponentModel.DataAnnotations
Axis
4.0
Chart
4.0
DataTypeAttribute
3.5 SP1
ChartArea
4.0
DisplayFormatAttribute
3.5 SP1
DataPoint
4.0
RangeAttribute
3.5 SP1
Legend
4.0
RegularExpressionAttribute
3.5 SP1
Series
4.0
RequiredAttribute
3.5 SP1
System.Web.UI.WebControls
Core
Ajax
System.Web.Routing
System.Web.UI.DataVisualization.Charting
Annotation
ActionResult
UIHintAttribute
3.5 SP1
ValidationAttribute
3.5 SP1
Sys.UI.Template
4.0
Sys.UI.TemplateResult
4.0
BigInteger
4.0
Complex
4.0
System.IO.MemoryMappedFiles
Web
CompositionContainer
4.0
ExportAttribute
4.0
ImportAttribute
4.0
System.Windows.Interop
ActiveXHost
3.5 SP1
D3dImage
3.5 SP1
4.0
TouchPointCollection
4.0
TouchDevice
4.0
3.5 SP1
D3dImage
System.Windows.Controls
3.5 SP1
WebBrowser
System.Windows.Media.Effects
4.0
4.0
4.0
System.Threading
4.0
LazyInit
4.0
Parallel
4.0
SpinLock
4.0
DatePicker
4.0
Ribbon
4.0
RibbonWindow
4.0
PixelShader
3.5 SP1
ShadeEffect
3.5 SP1
4.0
VisualStateGroup
4.0
VisualStateManager
4.0
4.0
4.0
StateMachine
4.0
Data
ChangeInterceptorAttribute
3.5 SP1
XamlWriter
4.0
DataServiceHost
3.5 SP1
XamlType
4.0
IDataServiceConfigulation
4.0
XamlProperty
4.0
CompensationFlowAttribute
3.5 SP1
4.0
4.0
4.0
3.5 SP1
3.5 SP1
QueryInterceptorAttribute
3.5 SP1
DbCommandDefinition
3.5 SP1
System.Data.Services.Provider
3.5 SP1
IDataServicesProvider
3.5 SP1
4.0
4.0
4.0
4.0
3.5 SP1
DataServiceKeyAttribute
3.5 SP1
4.0
AnnouncementClient
3.5 SP1
DbExpressionBuilder
DbQueryCommandTree
System.Data.Common
4.0
DataServiceRequest
ServiceContract
3.5 SP1
DbExpression
3.5 SP1
DataServiceContext
OperationContact
3.5 SP1
DbCommandTree
IDataServiceProvider
System.Data.Services.Client
Service
3.5 SP1
IExtendedDataRecord
ISynchonizationProvider
4.0
System.ServiceModel.Discovery
EntityKey
System.Data.Common.CommandTrees
3.5 SP1
3.5 SP1
AtomPub10ServiceDocumentFormatter
WorkflowInstanceContext
System.WorkflowModel.Activities.Rules
System.Data
System.Data.Services
DataServiceException
Service.Document
System.WorkflowServiceModel.Dispatcher
4.0
DataService
System.ServiceModel.Channels
VisualState
4.0
4.0
Sequence
4.0
CorrelationOperationBehavior
System.Windows
4.0
ServiceOperation
Flowchart
Persist
XamlReader
System.ServiceModel.Syndication
3.5 SP1
Effect
SendMessage
4.0
TypeIdentifierAttribute
System.Collections.Concurrent
System.ServiceModel
Calendar
DataGrid
4.0
4.0
TrackingProfile
Communications
System.Windows.Controls
System.Windows.Media.Imaging
4.0
ReceiveMessage
DbUpdate
RuleSet
System.Windows.Input
TouchPoint
ClientOperation
4.0
System.Runtime.Interop.Services
System.Xaml
Client
4.0
DbQuery
4.0
SortedSet
System.Linq
ParallelEnumerable
CompensationScope
System.WorkflowModel.Tracking
4.0
System.Collections.Generic
4.0
System.ComponentModel.Composition
3.5 SP1
EntityDataSource
System.Threading.Tasks
System.Numerics
4.0
System.WorkflowServiceModel.Activities
System.WorkflowModel.Activities
System.Web.Mvc
System.Web.UI
3.5 SP1
DataServiceResponse
3.5 SP1
DataServiceQuery
EntitySqlParser
CompiledQuery
3.5 SP1
4.0
3.5 SP1
ObjectContext
3.5 SP1
ObjectParameter
3.5 SP1
ObjectQuery
3.5 SP1
ObjectStateManager
3.5 SP1
System.Data.Metadata.Edm
System.Data.EntityClient
EntityCommand
DbProviderServices
System.Data.Objects
3.5 SP1
ComplexType
3.5 SP1
3.5 SP1
AnnouncementService
4.0
EntityConnection
3.5 SP1
EdmType
DiscoveryClient
4.0
EntityDataReader
3.5 SP1
EntityType
3.5 SP1
ServiceDiscoveryBehavior
4.0
EntityTransaction
3.5 SP1
RelationshipType
3.5 SP1
The award winning Addison-Wesley Microsoft .NET Development Series provides professional developers with the most comprehensive and
practical coverage
of the latest .NET technologies. To discover more go to informit.com/msdotnetseries.
_300
Forewords by Miguel de Icaza
and Anders Hejlsberg
Microsoft Programming
“An instant classic.”
—From the Foreword by Miguel de Icaza
Architect, Microsoft
— John Montgomery
Principal Group Program Manager,
Developer Division, Microsoft
Q
Q
Q
Q
Create object-oriented cross-browser JavaScript that supports
.NET style classes, interfaces, inheritance, and method overloading
Work with components, behaviors, and controls, and learn
how they relate to DOM elements
Learn Sys.Application and the part it plays in object creation,
initialization, and events in the Microsoft AJAX Library
Build Extender and Script controls that provide integrated script
generation for their corresponding client-side counterparts
Understand ASP.NET AJAX Application Services
Create custom Application Services
Design controls for a partial postback environment
Understand the AJAX Control Toolkit architecture and the many
features it provides
Architect, Microsoft
—John Montgomery
Principal Group Program Manager,
Developer Division, Microsoft
“This foremost series on .NET
contains vital information for
developers who need to get the
most out of the .NET Framework.
Our authors are selected from
the key innovators who create
the technology and are the most
respected practitioners of it.”
Krzysztof Cwalina
Brad Abrams
Cover photograph by Douglas Peebles/CORBIS
—From the Foreword by Craig Mundie,
Chief Research and Strategy Officer, Microsoft Corporation
Author Joe Duffy has risen to the challenge of explaining how to
write software that takes full advantage of concurrency and hardware
parallelism. In Concurrent Programming on Windows, he
explains how to design, implement, and maintain large-scale
concurrent programs, primarily using C# and C++ for Windows.
Advanced ASP.NET
AJAX Server Controls
Duffy aims to give application, system, and library developers the
tools and techniques needed to write efficient, safe code for multicore
processors. This is important not only for the kinds of problems
where concurrency is inherent and easily exploitable—such as server
applications, compute-intensive image manipulation, financial analysis,
simulations, and AI algorithms—but also for problems that can be
speeded up using parallelism but require more effort—such as math
libraries, sort routines, report generation, XML manipulation, and
stream processing algorithms.
For .NET Framework 3.5
Concurrent Programming on Windows has four major
sections: The first introduces concurrency at a high level, followed
by a section that focuses on the fundamental platform features, inner
workings, and API details. Next, there is a section that describes
common patterns, best practices, algorithms, and data structures
that emerge while writing concurrent software. The final section
covers many of the common system-wide architectural and process
concerns of concurrent programming.
This is the only book you’ll need in order to learn the best practices
and common patterns for programming with concurrency on
Windows and .NET.
Group Program Manager, Microsoft
Includes
Free 45-Day
Online Edition
ISBN-13: 978-0-321-51444-8
ISBN-10:
0-321-51444-0
— Don Box
Architect, Microsoft
“This is a great resource for
professional .NET developers.
It covers all bases, from expert
perspective to reference and
how-to. Books in this series are
essential reading for those who
want to judiciously expand their
knowledge base and expertise.”
— John Montgomery
Principal Group Program Manager,
Developer Division, Microsoft
“This foremost series on .NET
contains vital information for
developers who need to get the
most out of the .NET Framework.
Our authors are selected from the
key innovators who create the
technology and are the most
respected practitioners of it.”
9
780321 514448
— Brad Abrams
Joe Duffy is the development lead, architect, and founder of
the Parallel Extensions to the .NET Framework team at Microsoft.
In addition to hacking code and managing a team of developers,
he works on long-term vision and incubation efforts, such as language
and type system support for concurrency safety. He previously
worked on the Common Language Runtime team. Joe blogs
regularly at www.bluebytesoftware.com/blog.
Adam Calderon
Joel Rumerman
informit.com/msdotnetseries
5 4 9 9 9
Text printed on recycled paper
Group Program Manager, Microsoft
ISBN-13: 978-0-321-43482-1
ISBN-10:
0-321-43482-X
Cover photograph by iStockPhoto.com
5 4 9 9 9
Text printed on recycled paper
9
$49.99 U.S. | $54.99 CANADA
0321545613
Mundie, Chief Research and Strategy Officer, Microsoft
Microsoft Programming
“Whether this is the first time or the fifty-first time you’re using WCF, you’ll learn
something new by reading this book.”
—Nicholas
“Supported by the leaders and
principal authorities of core
Microsoft technologies, this series
has an author pool that combines
some of the most insightful authors
in the industry with the lead software
architects and developers at Microsoft
and the developer community at large.”
—Brad Abrams
Allen, Program Manager, Web Services, Microsoft
Windows Communication Foundation (WCF) is the easiest way to produce and consume Web services on
the Microsoft platform. With .NET 3.5, WCF has been extensively revamped—and Visual Studio 2008 gives
developers powerful new tools for utilizing it. Essential Windows Communication Foundation shows developers
exactly how to make the most of WCF with .NET 3.5 and Visual Studio 2008.
Concurrent
Programming
on Windows
Drawing on extensive experience working with early adopters, three
Microsoft insiders systematically address the topics developers ask
about WCF. The authors approach each subject with practical advice
and present best practices, tips, and tricks for solving problems.
Throughout, you’ll find detailed explanations, solutions for the
“pain points” of WCF development, and an extensive collection of
reusable code examples. Coverage includes
“This series is a great resource
for developers using the .NET
Framework and Web services.
It covers all the bases from reference to ‘how-to.’ The books in this
series are essential reading for
developers who want to write
solid managed code.”
—John Montgomery
Director, Developer Platform and
Evangelism Division, Microsoft Corporation
“This series is supported by the
leaders and principal authorities
of the Microsoft .NET Framework
and its languages. It has an
author pool that combines some
of the most insightful authors in
the industry with the software
architects and developers
at Microsoft.”
Microsoft’s Steve Resnick, Richard Crane, and Chris Bowen are technology
experts at the Microsoft Technology Center in Boston. They specialize in
helping customers improve their technical agility by applying WCF and related
technologies. Resnick has specialized in Internet technologies and distributed
computing at Microsoft since 1995. He is a frequent speaker at Microsoft
events and is now technology director for the U.S. Microsoft Technology Centers.
Crane has more than 15 years of experience in senior software development
roles. He specializes in large-scale Web sites, distributed computing,
transactional systems, and performance analysis. Bowen has been an
architect and developer for more than 15 years at companies such as
Monster.com and Staples and is co-author of Professional Visual Studio
2005 Team System.
Joe Duffy
780321 434821
www.informit.com/msdotnetseries
Cover photograph by PhotoLink/Getty Images, Inc.
Includes
FREE 45-Day
Online Edition
Development
Series
Development
Series
� Using WCF contracts to define complex structures and interfaces
� Understanding WCF’s channel stacks and channel model architecture
� Configuring the WCF communication stack to use only the protocols
you need
� Using standard and custom service behaviors to manage concurrency,
instances, transactions, and more
� Serializing data from .NET types to XML Infosets and representing
Infosets “on the wire”
� Hosting WCF services via IIS, managed .NET applications, and
Windows Activation Services
� WCF security, in depth: authentication; transport and message-level
security; and Internet and intranet scenarios
� Improving reliability: exception handling, diagnostics, and more
� Workflow services: new integration points between WCF 3.5 and
Windows Workflow Foundation
� Building client-to-client, peer network-based applications
� Utilizing WCF for non-SOAP Web services: AJAX and JSON examples
and .NET 3.5 hosting classes
—Don Box
Architect, Microsoft Corporation
Foreword by Steve Maine
, Program Manager,
Microsoft Programming/C#
Windows Communication Foundation, Microsoft
—From the Foreword by
Don Box
The popular C# programming language combines the high productivity
of rapid application development languages with the raw power of C and
C++. Now, C# 3.0 adds functional programming techniques and LINQ,
Language INtegrated Query. The C# Programming Language,
Third Edition, is the authoritative and annotated technical reference
for C# 3.0.
Written by Anders Hejlsberg, the language’s architect, and his colleagues,
Mads Torgersen, Scott Wiltamuth, and Peter Golde, this volume has been
completely updated and reorganized for C# 3.0. The book provides the
complete specification of the language, along with descriptions, reference
materials, code samples, and annotations from nine prominent C# gurus.
For .NET Framework 3.5
The many annotations—a new feature in this edition—bring a depth and
breadth of understanding rarely found in any programming book. As the main
text of the book introduces the concepts of the C# language, cogent
annotations explain why they are important, how they are used, how they
relate to other languages, and even how they evolved.
Development
Series
This book is the definitive, must-have reference for any developer who
wants to understand C#.
Anders Hejlsberg is a programming legend. He is the architect of
the C# language and a Microsoft Technical Fellow. He joined Microsoft
Corporation in 1996, following a thirteen-year career at Borland, where
he was the chief architect of Delphi and Turbo Pascal.
Mads Torgersen is the Program Manager for the C# Language at
Microsoft and runs the C# design meetings. Prior to joining Microsoft in
2005, he was an associate professor at the University of Aarhus, doing
programming language research.
5 4 9 9 9
780321 440068
$49.99 U.S./$54.99 CANADA
—Don Box
Architect, Microsoft
“This is a great resource for
professional .NET developers.
It covers all bases, from expert
perspective to reference and
how-to. Books in this series are
essential reading for those who
want to judiciously expand their
knowledge base and expertise.”
—John Montgomery
Principal Group Program Manager,
Developer Division, Microsoft
“This foremost series on .NET
contains vital information for
developers who need to get the
most out of the .NET Framework.
Our authors are selected from the
key innovators who create the
technology and are the most
respected practitioners of it.”
Essential C# 3.0 is an extremely well-written and well-organized
“no-fluff” guide to C# 3.0, which will appeal to programmers at all levels
of experience with C#. This fully updated edition dives deep into the new
features that are revolutionizing programming, with brand new chapters
covering query expressions, lambda expressions, extension methods,
collection interface extensions, standard query operators, and
LINQ as a whole.
—Brad Abrams
Group Program Manager, Microsoft
Before leaving Microsoft, Peter Golde was the lead developer of
the C# compiler.
Steve Resnick
Richard Crane
Chris Bowen
ISBN-13: 978-0-321-56299-9
ISBN-10:
0-321-56299-2
Cover photograph by iStockPhoto.com
Text printed on recycled paper
9
C#
“Supported by the leaders and
principal authorities of core
Microsoft technologies, this series
has an author pool that combines
some of the most insightful authors
in the industry with the lead software
architects and developers at Microsoft
and the developer community at large.”
Scott Wiltamuth is Partner Program Manager for Visual Studio. While
at Microsoft, he has worked on a wide range of developer-oriented projects,
including Visual Basic, VBScript, JScript, Visual J++, and Visual C#.
informit.com/msdotnetseries
ISBN-13: 978-0-321-44006-8
ISBN-10:
0-321-44006-4
Text printed on recycled paper
5 4 4 9 9
The C#
Programming
Language
Author Mark Michaelis covers the C# language in depth, and each important
construct is illustrated with succinct, relevant code examples. (Complete
code examples are available online.) Graphical “mind maps” at the beginning
of each chapter show what material is covered and how each topic relates
to the whole. Topics intended for beginners and advanced readers are
clearly marked.
—From the Foreword by Charlie
■
■
■
■
C# primitive data types, value types, reference types,
type conversions, and arrays
Operators and control flow, loops, conditional logic, and
sequential programming
Methods, parameters, exception handling, and structured programming
Classes, inheritance, structures, interfaces, and object-oriented
programming
Well-formed types, operator overloading, namespaces, and
garbage collection
■
Generics, collections, custom collections, and iterators
■
Delegates and lambda expressions
■
■
■
■
Standard query operators and query expressions
LINQ: language integrated query
Reflection, attributes, and declarative programming
Threading, synchronization, and multithreaded patterns
■
Interoperability and unsafe code
■
The Common Language Infrastructure that underlies C#
—Don Box
Architect, Microsoft
“This is a great resource for
professional .NET developers.
It covers all bases, from expert
perspective to reference and
how-to. Books in this series are
essential reading for those who
want to judiciously expand their
knowledge base and expertise.”
—John Montgomery
Principal Group Program Manager,
Developer Division, Microsoft
“This foremost series on .NET
contains vital information for
developers who need to get the
most out of the .NET Framework.
Our authors are selected from the
key innovators who create the
technology and are the most
respected practitioners of it.”
780321 562999
Group Program Manager, Microsoft
Mark Michaelis is a software architect and trainer at Itron and IDesign
and is the founder of intelliTechture. He is a Microsoft Regional Director
and serves on several Microsoft software design review teams, including
C#. Mark holds a B.A. in philosophy from the University of Illinois and an
M.S. in computer science from the Illinois Institute of Technology.
Anders Hejlsberg
Mads Torgersen
Scott Wiltamuth
Peter Golde
informit.com/msdotnetseries
mark.michaelis.net/EssentialCSharp
IDesign
ISBN-13: 978-0-321-53392-0
ISBN-10:
0-321-53392-5
5 4 9 9 9
Text printed on recycled paper
$44.99 U.S. | $48.99 CANADA
Essential C# 3.0
For .NET Framework 3.5
—Brad Abrams
Whether you are just starting out as a programmer, are an experienced
developer looking to learn C#, or are a seasoned C# programmer interested
in learning the new features of C# 3.0, Essential C# 3.0 gives you just
what you need to quickly get up and running writing C# applications.
Cover photograph by iStockPhoto.com
9
Calvert,
Community Program Manager, Visual C#, Microsoft
“Supported by the leaders and
principal authorities of core
Microsoft technologies, this series
has an author pool that combines
some of the most insightful authors
in the industry with the lead software
architects and developers at Microsoft
and the developer community at large.”
Following an introduction to C#, readers learn about
■
Third Edition
$49.99 U.S. | $54.99 CANADA
0321514440
“If you want to be a C# developer, or if you want to enhance your
C# programming skills, there is no more useful tool than a well-crafted
book on the subject. You are holding such a book in your hands.”
Special Annotated Edition for C# 3.0
“Based on my own experience, I can safely say
that every .NET developer who reads this will have
at least one ‘aha’ moment and will be a better
developer for it.”
Essential Windows
Communication
Foundation
Michaelis
$49.99 U.S. | $54.99 CANADA
—Don Box
“This is a great resource for
professional .NET developers.
It covers all bases, from expert
perspective to reference and
how-to. Books in this series are
essential reading for those who
want to judiciously expand their
knowledge base and expertise.”
Hejlsberg
Torgersen
Wiltamuth
Golde
informit.com/msdotnetseries
5 4 9 9 9
780321 545619
Foreword by Craig
the importance of clean architecture and design is critical....
This places an emphasis on understanding not only the platform’s
capabilities but also emerging best practices. Joe does a great job
interspersing best practices alongside theory throughout his book.”
“Supported by the leaders and
principal authorities of core Microsoft
technologies, this series has an author
pool that combines some of the most
insightful authors in the industry with
the lead software architects and
developers at Microsoft and the
developer community at large.”
Localize ASP.NET AJAX controls including client script
Discover ASP.NET AJAX client and server communication architecture
and the new support for Windows Communication Foundation (WCF)
Develop highly interactive controls using the AJAX Control Toolkit
Understand AJAX Control Toolkit architecture and build
controls that utilize the toolkit
Resnick
Crane
Bowen
ISBN-13: 978-0-321-54561-9
ISBN-10:
0-321-54561-3
9
Q
Q
Q
Q
Q
Q
Q
Q
Adam Calderon is the Application Development Practice Lead at InterKnowlogy and a Microsoft MVP. He has been
involved with ASP.NET AJAX since the Alpha release, participated in the ATLAS First Access program, and is a member of
the Microsoft UI Server Frameworks Advisory Council where he contributes to the future direction of the ASP.NET platform.
Adam is also heavily involved in the development community; he has taught classes at UCSD and has spoken at TechEd,
user groups, and Code Camps throughout southern California. Joel Rumerman, Senior .NET Developer at The CoStar
Group, develops line-of-business applications that rely heavily on ASP.NET AJAX. He’s an expert with JavaScript and an
ASP.NET programmer who has been involved with ASP.NET AJAX since it was codenamed Atlas. Joel is currently working on
a large scale Virtual Earth mash-up that plots commercial real estate information.
Duffy
Text printed on recycled paper
Second Edition
Adam Calderon and Joel Rumerman first review the core Microsoft
AJAX Library and JavaScript techniques needed to support a rich clientside experience. Next, they build upon these techniques showing how
to create distributable AJAX-enabled controls that include rich browserindependent JavaScript client-side functionality. The authors thoroughly
explain both the JavaScript and .NET aspects of control development
and how these two distinct environments come together to provide a
foundation for building a rich user experience using ASP.NET AJAX.
Conventions, Idioms, and Patterns
for Reusable .NET Libraries
Calderon
Rumerman
informit.com/msdotnetseries
Cover photograph by Getty Images, Inc.
Cwalina
Abrams
Brad Abrams is the Product Unit Manager of the Application
Framework team at Microsoft. He was the primary author of the .NET
Framework Design Guidelines, the Common Language Specification,
and the class libraries for the ECMA CLI specification.
Microsoft Programming/Concurrent Programming
Foreword by Nikhil Kothari,
“When you begin
using multi-threading
throughout an application,
Software Architect, .NET Developer
Platform,
Microsoft
Microsoft Programming/ASP.NET
ASP.NET AJAX server controls can encapsulate even the most powerful AJAX functionality, helping you build more elegant, maintainable, and
scalable applications. This is the first comprehensive, code-rich guide to
custom ASP.NET AJAX server controls for experienced ASP.NET developers. Unlike other books on ASP.NET AJAX, this book focuses solely
on server control development and reflects the significant improvements
in ASP.NET 3.5 AJAX and the latest Visual Studio 2008 features for
streamlining AJAX development.
Framework
Design Guidelines
Essential C# 3.0
— Don Box
“This is a great resource for
professional .NET developers.
It covers all bases, from expert
perspective to reference and
how-to. Books in this series are
essential reading for those who
want to judiciously expand their
knowledge base and expertise.”
The C# Programming
Language Third Edition
“Supported by the leaders and
principal authorities of core
Microsoft technologies, this series
has an author pool that combines
some of the most insightful authors
in the industry with the lead software
architects and developers at Microsoft
and the developer community at large.”
A companion DVD includes
the Designing .NET Class
Libraries video series, instructional
presentations by the authors on
design guidelines for developing classes
and components that extend the .NET
Framework. A sample API specification
and other useful resources and tools are
also included.
Essential Windows
Communication Foundation
Guidelines for—and examples of—common
framework design patterns
Concurrent Programming
on Windows
The general philosophy and fundamental principles of
framework design
Naming guidelines for the various parts of a framework
Guidelines for the design and extending of types and
members of types
Issues affecting—and guidelines for ensuring—extensibility
How (and how not ) to design exceptions
■
Framework Design Guidelines, Second Edition, is the only
definitive source of best practices for managed code API development,
direct from the architects themselves.
Krzysztof Cwalina is a Principal Program Manager in the .NET
Application Frameworks Core group at Microsoft. He was responsible for
the design of a large part of the Framework APIs, and for the development
of the .NET Framework Design Guidelines.
Advanced ASP.NET
AJAX Server Controls
Microsoft architects Krzysztof Cwalina and Brad Abrams teach framework
design from the top down. From their significant combined experience and
deep insight, you will learn
■
Guidelines in this book are presented in four major forms: Do, Consider,
Avoid, and Do not. These directives help focus attention on practices
that should always be used, those that should generally be used, those
that should rarely be used, and those that should never be used. Every
guideline includes a discussion of its applicability, and most include
a code example to help illuminate the dialogue.
Framework Design
Guidelines Second Edition
Framework Design Guidelines, Second Edition, teaches
developers the best practices for designing reusable libraries for the
Microsoft .NET Framework. Expanded and updated for .NET 3.5, this
new edition focuses on the design issues that directly affect the
programmability of a class library, specifically its publicly accessible APIs.
This book can improve the work of any .NET developer producing code that
other developers will use. It includes copious annotations to the guidelines
by thirty-five prominent architects and practitioners of the .NET Framework,
providing a lively discussion of the reasons for the guidelines as well as
examples of when to break those guidelines.
■
■
■
■
9
780321 533920
Mark Michaelis
$49.99 U.S. | $54.99 CANADA
032143482X
0321440064
Visit Safaribooksonline.com for early access to Rough Cuts of forthcoming .NET titles.
0321562992
0321533925
0321577841
0321604741
0321562313
.NET 4 Poster
Compliments of the .NET Development Team and
V1.1 – 28/ 47
plakat autorstwa firmy Addison-Wesley
Platforma .NET – Wykład 2 Składowe platformy .NET
Elementy .NET / Biblioteka klas
Analiza biblioteki klas
Notatki
Kilka klas z przestrzeni System
Przestrzeń nazw
System
System.CodeDom
System.ComponentModel
System.Collections,
System.Configuration
System.IO
System.Text
System.TextRegular
Krótki opis
Zawiera klasy definiujące najczęściej używane typy danych, zdarzenia i obsługę zdarzeń a także interfejsy, atrybuty oraz wyjątki
Reprezentacja dokumentu/kodu źródłowego w postaci
drzewa
Tworzenie komponentów, kontrolek, rejestracja oraz adaptacja
Różne kolekcje obiektów min.: listy, kolejki, tablice bitów,
tablice skrótów i słowniki
Dostęp do ustawień konfiguracyjnych .NET i podzespołów oraz obsługa błędów w plikach konfiguracyjnych
(pliki * config)
Podstawowy dostęp i zarządzanie strumieniami danych
Kodowanie i konwersje znaków, manipulacje łańcuchami
znaków
Obsługa wyrażeń regularnych
V1.1 – 29/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Budowa podzespołu
Notatki
Assemblies, czyli podzespoły
Assembly/Assemblies
(podzespół/zestaw/podzespoły/zestawy)
Podzespół to logiczny blok, skompilowany do kodu pośredniego. Z tych elementów budowane
są aplikacje .NET, zawierają one kod w języku IL oraz metadane. Podzespół opatrzony jest
numerem wersji i jest on zamkniętą spójną całością udostępniającym określoną funkcjonalność.
Istnieją dwa rodzaje metadanych: w pierwszym podzespół jest traktowany jako jednostka i jest
to tzw. manifest oraz metadane przeznaczone do opisu poszczególnych typów zawartych w
podzespole.
Manifest jest częścią podzespołu i opisuje jego kod i zasoby poprzez podanie:
I nazwy (tzw. tożsamości) podzespołu,
I numer wersji oraz tzw. opisu kultury (informacje regionalne oraz informacje o językach
obsługiwanych przez dany podzespół),
I podpisu cyfrowego dla podzespołu,
I pliki zawarte w podzespole,
I typy i zasoby zawarte w podzespole wraz z informacją które typy/zasoby są dostępne do
użycia przez inne podzespoły,
I powiązania z innymi podzespołami,
I uprawnienia które są wymagane do poprawnej pracy podzespołu.
V1.1 – 30/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Budowa podzespołu
Notatki
Assemblies, czyli podzespoły
Metadane typów zawierają opis typów zdefiniowanych w kodzie
zarządzanym. Zawarte są w tym samym pliku co kod IL, zawierają min:
1. Opis typów:
I
I
I
I
I
I
I
nazwa typu,
zasięg typu (publiczny bądź ograniczony do
podzespołu)
nazwę typu po którym typ dziedziczy,
interfejsy zaimplementowane,
metody zaimplementowane,
właściwości typu,
zdarzenia obsługiwane przez typ.
Source1.cs
I
class C ...
class D ...
csc Source1.cs Source2.cs
2. Opis atrybutów
I
Source2.cs
class A ...
class B ...
atrybuty posiadają określone nazwy i funkcje
określone w środowisku .NET,
określają sposób wykonywania kodu bądź
opisują wymagania co do bezpieczeństwa.
Program.exe
manifest
metadata
IL of type A
IL of type B
IL of type C
IL of type D
class loader
V1.1 – 31/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Budowa podzespołu
Notatki
Assemblies, czyli podzespoły
Ważne elementy związane z podzespołami to:
1. po kompilacji do kodu IL, kod zarządzany jest częścią podzespołu składającego się z
jednego bądź wielu plików DLL/EXE,
2. podzespoły mogą być określone jako prywatne bądź współdzielony umieszczone są w
GAC (Global Assembly Cache),
3. podzespół może zostać podpisany kluczem cyfrowym (sygnaturą) oraz opatrzony
4. informacje o prywatnym podzespole nie są wprowadzane do platformy .NET (rejestr nie
jest modyfikowany),
5. podzespoły w katalogu aplikacji nie wymagają dodatkowych operacji,
6. współużytkowanie podzespoły są umieszczene w GAC,
7. podzespół może mieć tzw. silną nazwę (podpis/sygnatura cyfrowa) weryfikowana
podczas ładowania podzespołu lub słabą nazwę,
8. wersja podzespołu w postaci G.D.K.K (główny/major, drugorządny/minor,
kompilacji/compilation, korekty/revision) np.: 3.0.1240.2.
9. wersja informacyjna, czyli ciąg znaków czytelnych dla ludzi,
10. numery wersji podzespołów od których zależy dany podzespół.
V1.1 – 32/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Budowa podzespołu
Notatki
Model podzespołu (assembly model)
Manifest jest zapisany w sekcji
metadanych zawierający tzw.
moduł master, który może lecz
nie jest wymagane aby opisywał również typy.
1
Podzespół
to
pojedyncza/jednolita
jednosta
w aplikacji zawieracjace klasy,
numery wersji oraz opis
bezpieczeństwa.
«use»
Pliki podzespołów
(exe, dll) pełnią
rolę podobną jak
pliki JAR w przypadku Javy lub
starsze w formacie
MS CAB.
W formacie Portable Executable (PE), pojęcia "Moduł"
oraz "Plik PE" są stosowane
wymiennie.
Stosowane są
rozszerznia
.EXE,
.DLL,
.NETMODULE.
Type
Assembly
Assembly
Metadata
Manifest
Dependencies
1 .. *
Metadata Element
1
1 .. *
.NET Assembly
1 .. *
«use»
Module
1 .. *
1
1 .. *
Type Code
*
*
0..1
Static
Dynamic Assembly
Assembly
(Created in Memory)
Private
Assembly
Public (Shared) Assembly
1
publicKey
Global
Registers
Assembly 1
Cache
*
Resource
Machine
Code
CIL
Text
Image
X509Certificate
1
Moduły oraz zasoby (np.: pliki PNG badz
JPG) sa logicznie przypisane podzespołom,
fizycznie również tego typu pliki moga znajdować się plikach assembly.
Jednak w wielu przypadkach, z praktycznych
powodów (np.: wielkość plików) pliki tego typu
nie są umieszczane w podzespołach. Istnieja
tylko odniesienia do zasobów umieszczeone
w manifescie podzespołu. Takie rozwiązanie
przyspiesza ładowanie podzespoły natomiast
dostęp do zasobów jest uzyskiwany w tzw. trybie leniwych obliczeń.
V1.1 – 33/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Język pośredni
Notatki
Język pośredni / Kod zarządzany
Język pośredni lub wspólny język pośredni (ang. Common Intermediate Language –
CIL) to język niskiego poziomu dla platformy .NET. Stanowi on odpowiednik
assemblera dla języków wysokiego poziomu jak C/C++. Ogólnie CIL jest podobny do
assemblera, jednak został on wyposażony w konstrukcje programowania obiektowego i
nie jest wykonywany przez stosową maszynę wirtualną ale kompilowany przez
JIT/ngen do kodu maszynowego.
Kod zarządzany, to kod zgodny ze specyfikacją CLR (CLS) zawiera również metadane.
W ten sposób umożliwia się realizację: usług automatycznego zarządzania zasobami,
współpracy fragmentów/podzespołów oprogramowania napisanych w różnych językach
programowania, zarządzania uprawnieniami w dostępie do podzespołu oraz ułatwia
zarządzanie cyklem życia obiektów (min. system odśmiecający – garbage collector).
MSIL czy IL
Początkowo język pośredni nazywał Microsoft Intermediate Language (MSIL), jednak
po procedurze standaryzacji C# oraz CLI obowiązująca nazwa to CIL lub IL.
V1.1 – 34/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Kompilacja i wykonywanie programów IL
Notatki
Kompilacja i wykonywanie programów IL
Diagram kompilacji i wykonania:
Source
Code
Ogólne podejście do kompilacji:
VB Source File
other .NET
Source File
VB.NET Compiler
other .NET Compiler
EXE/DLL
IL and Metadata
C# Compiler
Assembly
- CIL
- Type Info
Assembly
- CIL
- Type Info
JIT Compiler
Class Libraries
Assembly
- CIL
- Type Info
Common Language
Runtime (CLR)
IL and Metadata
Class Loader
Run time
Kompilacja
C# Source File
Compiler
JIT Compiler
[optional verification]
Trusted preJITed code.
Native Code
Native Code
Native Code
Managed
Native Code
Operating System
Execution
Class to an
uncompiled
method/class
Security Checks
Runtime Engine
V1.1 – 35/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Kompilacja i wykonywanie programów IL
Notatki
Podział instrukcji IL
Instrukcje kodu bajtowego CIL można podzielić na następujące grupy:
1. Wczytaj i Zapisz – Load and store
2. Arytmetyczne – Arithmetic
3. Konwersji typów – Type conversion
4. Tworzenia i manipulacji obiektami – Object creation and
manipulation
5. Instrukcje zarządzania stosem – Operand stack management (push /
pop)
6. Instrukcje sterujące – Control transfer (branching)
7. Wywołania metody i powrotu – Method invocation and return
8. Zgłaszania sytuacji wyjątkowej – Throwing exceptions
9. Realizujące współbieżność – Monitor-based concurrency
V1.1 – 36/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Przykłady programów
Notatki
Przykład – pusty program
Kod w IL, nie wykonuje żadnych istotnych czynności:
.assembly hello1 { }
.class hello1 {
.method static public void main() il managed
.entrypoint
ret
}
}
{
Instrukcje .entrypoint a ret stanowią „w pewnym sensie” odpowiednik
funkcji main.
V1.1 – 37/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Przykłady programów
Notatki
Przykład – wyświetlenie komunikatu
Kod w IL, wyświetla komunikat tekstowy:
.assembly hello2 { }
.class hello2 {
.method static public void main() il managed {
.entrypoint
ldstr "Witojcie!!!"
call void [mscorlib]System.Console::WriteLine(class System.String)
ret
}
}
Można powiedzieć, że assembler IL to assembler obiektowy.
V1.1 – 38/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Przykłady programów
Notatki
Odczytanie liczby całkowitej i wyświetlenie jej na ekranie
.assembly hello3 { }
.method public static void Main() il managed {
.entrypoint
.maxstack 2
.locals (int32 V_0)
ldstr "Liczba calkowita int32:"
call void [mscorlib]System.Console::WriteLine(string)
call string [mscorlib]System.Console::ReadLine()
call int32 [mscorlib]System.Int32::Parse(string)
stloc.0
ldstr "Wpisano liczbe {0}."
ldloc.0
box [mscorlib]System.Int32
call void [mscorlib]System.Console::WriteLine(string, object)
ret
}
Jednak bez klas też można tworzyć programy w IL’u.
V1.1 – 39/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Przykłady programów
Notatki
Porównanie dwóch liczb całkowitych
.assembly big_and_small_nums { }
.method public static void Main() il managed {
.entrypoint
.maxstack 2
.locals init (int32 V_0, int32 V_1)
IL_0000: ldstr
"Podaj pierwsza liczbe"
IL_0005: call
void [mscorlib]System.Console::WriteLine(string)
IL_000a: call
string [mscorlib]System.Console::ReadLine()
IL_000f: call
int32 [mscorlib]System.Int32::Parse(string)
IL_0014: stloc.0
IL_0015: ldstr
"I jeszcze druga"
IL_001a: call
void [mscorlib]System.Console::WriteLine(string)
IL_001f: call
string [mscorlib]System.Console::ReadLine()
IL_0024: call
int32 [mscorlib]System.Int32::Parse(string)
IL_0029: stloc.1
IL_002a: ldloc.0
IL_002b: ldloc.1
IL_002c: bne.un.s
IL_003a
IL_002e: ldstr
"Obie wielkosci sa rowne"
IL_0033: call
void [mscorlib]System.Console::WriteLine(string)
IL_0038: br.s
IL_0054
IL_003a: ldloc.0
IL_003b: ldloc.1
IL_003c: bge.s
IL_004a
IL_003e: ldstr
"Druga liczba jest wieksza niz pierwsza"
IL_0043: call
void [mscorlib]System.Console::WriteLine(string)
IL_0048: br.s
IL_0054
IL_004a: ldstr
"Druga liczba jest mniejsza niz pierwsza"
IL_004f: call
void [mscorlib]System.Console::WriteLine(string)
IL_0054: ldstr
"Nacisnij Enter aby zakonczyc program"
call
void [mscorlib]System.Console::WriteLine(string)
call
string [mscorlib]System.Console::ReadLine()
IL_0059: pop
IL_005a: ret
}
V1.1 – 40/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Przykłady programów
Notatki
Porównanie dwóch liczb całkowitych
using System;
namespace Test1a {
class Program {
public static void Main(string[] args) {
Console.WriteLine("Podaj pierwsza liczbe");
int x = Int32.Parse( Console.ReadLine() );
Console.WriteLine("I jeszcze druga");
int y = Int32.Parse( Console.ReadLine() );
if ( x == y ) {
Console.WriteLine("Obie wielkosci sa rowne");
}
else {
if ( x < y ) {
Console.WriteLine("Druga liczba jest wieksza niz pierwsza");
}
else {
Console.WriteLine("Druga liczba jest mniejsza niz pierwsza");
}
}
Console.WriteLine("Nacisnij Enter aby zakonczyc program");
Console.ReadLine();
}
}
}
V1.1 – 41/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Przykłady programów
Notatki
Definicja metod
.assembly extern mscorlib {}
.assembly Methods { .ver 1:0:1:0 }
.module Methods.exe
.method static void main() cil managed {
.maxstack 2
.entrypoint
ldc.i4 15
ldc.i4 27
call int32 SumCalculate(int32, int32)
call void WriteNum(int32)
ret
}
.method public static int32 SumCalculate (int32 , int32 ) cil managed {
.maxstack 2
ldarg.0
ldarg.1
add
ret
}
.method public static void WriteNum(int32) cil managed {
.maxstack 2
ldstr "Wartosc argumentu: "
call void [mscorlib]System.Console::Write(string)
ldarg.0
call void [mscorlib]System.Console::Write(int32)
ret
}
V1.1 – 42/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Przykłady programów
Notatki
Od C# przez IL do assemblera Intel x86/x64
IL source
.locals init ([0] class Vector2D v)
Source code in C#
newobj instance void Vector2D::.ctor()
Vector2D v;
stloc.0
v = new Vector();
v.x = 10;
ldloc.0
v.y = 20;
ldc.i4 0x0A
stfld int32 Vector2D::x
Source code in Intel x86_32 assembly
ldloc.0
call ED00AAD1h
ldc.i4 0x14
mov ecx, eax
stfld int32 Vector2D::y
call dword ptr ds:[00Af0012h]
mov dword ptr [ecx+4], 000Ah
mov dword ptr [ecx+8], 0014h
V1.1 – 43/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Tabela instrukcji – wybór
Notatki
Tabela instrukcji – wybór
Opcode
Instrukcja
Opis
0x58
0xD6
0xD7
0x3E
0x8C
0x38
0x2B
0x01
0x28
0xFE 0x02
0xC3
0x73
0x04
0x11
0xFE 0x0D
0x62
0x63
0x7A
0x79
0xFE 0x13
0x61
add
add.ovf
add.ovf.un
ble <int32 (target)>
box <typeTok>
br <int32 (target)>
br.s <int8 (target)>
break
call <method>
cgt
ckfinite
newobj <ctor>
ldarg.2
ldloc.s <uint8 (indx)>
ldloca <uint16 (indx)>
shl
shr
throw
unbox <valuetype>
volatile. [prefix]
xor
Add two values, returning a new value
Add signed integer values with overflow check
Add unsigned integer values with overflow check
Branch to target if less than or equal to
Convert a boxable value to its boxed form
skok do etykiety target
j.w. krótka forma
Inform a debugger that a breakpoint has been reached
Call method described by method
Push 1 (of type int32) if value1 > value2, else push 0
Throw ArithmeticException if value is not a finite number
Allocate an uninitialized object or value type and call ctor
Load argument 2 onto the stack
Load local variable of index indx onto stack, short form
Load address of local variable with index indx
Shift an integer left (shifting in zeros), return an integer
Shift an integer right (shift in sign), return an integer
Zgłoszenie wyjątku
Extract a value-type from obj, its boxed representation
Subsequent pointer reference is volatile
Bitwise XOR of integer values, returns an integer
V1.1 – 44/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Podzespół/IL
Tabela instrukcji – wybór
Notatki
Język pośredni – podsumowanie
Czy warto poznawać assembler IL?
Tak, choć naturalnie tworzenie dużych programów raczej mija się z
celem, jednak poznanie zagadnień związanych z „IL - asm” na pewno
przyczyni się do pogłębienia wiedzy o wewnętrznych mechanizmach CLR
oraz CLI. Co jest szczególne ważne, jeśli planuje się tworzenie własnego
kompilatora do platformy .NET.
V1.1 – 45/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Już za tydzień na wykładzie
Notatki
W następnym tygodniu między innymi
Wykład „Programowanie w C# – środowisko Visual Studio 2010,
MonoDevelop, syntaktyka C#, wyjątki, współpraca z DLL”,
1. przegląd narzędzi dla programistów w platformie .NET, min. ildasm,
gacutil,
2. podstawowe informacje o C#
3. pojęcie klasy,
4. podstawowe informacje wejścia/wyjścia
5. tablice, ciągi znaków, wyrażenia regularne,
6. współpraca z kodem niezarządzanym,
V1.1 – 46/ 47
Platforma .NET – Wykład 2 Składowe platformy .NET
Już za tydzień na wykładzie
Notatki
Proponowane tematy prac pisemnych:
1. analiza i porównanie bibliotek standardowych dla języka Java oraz
platformy .NET,
2. różnice pomiędzy IL dla platformy .NET a językiem pośrednim dla
maszyny wirtualnej JAVA,
3. opis technicznej struktury oraz roli podzespołów.
Dziękuje za uwagę!!!
V1.1 – 47/ 47
Notatki