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