tom perkins1 XML Web Services -.NET FRAMEWORK – Part 1 CHAPTER 1.1 – 1.3
tom perkins2.NET provides Development tools Runtime environments Server infrastructure Intelligent software Enabling you to build Applications for various platforms and devices
tom perkins3.NET Uses standards to integrate applications and devices Hypertext Transfer Protocol (HTTP) XMLSOAP
tom perkins4.NET Application 1Application 2 Allows applications to exchange data using XML Web Services XML Web Services
tom perkins5.NET Process A Process 1 Process 2 Provides remoting infrastructure Allows applications running in different processes (same or different computers) to exchange data Uses HTTP or binary protocols
tom perkins6.NET Tools and Operational Systems Smart Client SoftwareXML Web Services.Net Server Infrastructure Visual Studio.NET and the.NET Framework Access data from any location by PC, mobile, or client using Web Services Secure and scalable platform for distributing Web apps Includes: Windows 2000 servers.NET Servers.NET Enterprise Servers Core to app integration For Internet and Intranet apps; exchange data using HTTP, XML and SOAP Build, host, and consume web apps
tom perkins7 Desktop computer Mobile device XML Web Services Servers: Web Services Allow client app to exchange data with another client or server Server apps to exchange data with one another Apps on any device with apps on any other device
tom perkins8 European Computer Manufacturers Association standard defines CLS-Rules for language interoperability - Syntax CLI - Semantics VisualBasic.NETVisualC#.NETVisualJ#.NETVisual C++.NET CLS Compliant Framework runtime engine executes MSIL all produce Intermediate Language (MSIL) code
tom perkins9 CLI Specifies,.NET Framework provides: Common Language Runtime (CLR) provides execution environment CLR loads and executes your MSIL code Common Type System (CTS) a string in VB is a string in C# provides data, value, and object types no language superiority in.NET Type safety Operations performed on one type are performed on that type only Each value has a type, each reference has a type Managed Code.NET loads and executes code, allocates memory, provides automatic garbage collection Side-by-Side execution Assemblies are deployment units in.NET Assemblies contain IL code and metadata (name, version, version of dependent assemblies) Different versions of app can run side by side
tom perkins10 VisualBasic.NETVisualC#.NETVisualJ#.NETVisual C++.NET Web Forms XML Web Services ASP.NET.NET Framework Class Library – all common.NET Types Windows Forms Win 32 Common Language Runtime Loads IL code, compiles into native code, enforces security and type safety, provides thread support (managed code) Main components of.NET Framework
tom perkins11 Understanding the Common Language Runtime (CLR) Lesson 2
tom perkins12 What we’ll look at … CLR Architecture CLR Components Functions of CLR components
tom perkins13 CLR Components Class loader Loads classes into the runtime MSIL/native compiler Code manager Garbage collection Security engine Type checker Thread Support Exception mgr Debug engine COM marshaller Base class support Converts MSIL code to native code Manages code during execution Automatic memory management Enforces security restrictions Strict type enforcement Multi- threading support for apps Execption handing mechanism Debug diff types of apps Exchange data with COM apps Provide types for apps at runtime
tom perkins14 For a program to run in the CLR: Source code CLS-compliant compiler Metadata Intermediate code (MSIL) Instructions are CPU- independent Must be compiled into CPU-dependent instructions Describes the code Identifies types used in code Contains references to other types used Located in portable executable file
tom perkins15 Just-in-Time (JIT) Compilation Portable execution file Metadata MSIL Class loader Portable execution file Metadata MSIL CLR Memory Loaded into memory JIT Compiler (different for different CPU architectures) Compiled only 1 st time used Native code Native code used on 2 nd + use
tom perkins16 Program initiation Portable execution file Metadata MSIL CLR Memory Code manager Calls entry point method Main WinMain dllMain places objects into memory controls execution Native code Garbage collector Checks objects on heap Identifies objects no longer required Removes them
tom perkins17 During execution Objects Values References CLR Memory Native code Type Checker Makes sure everything has a valid type Makes sure only valid operations are performed (int value assigned to int variable) Err raised if string assigned to int Security Engine Enforces security restrictions Controls access to resources Hard disk Network connections
tom perkins18 Managed multithreading support Single process Application domain Can be divided into subprocesses Each domain can contain one or more threads Runtime monitors all threads in process
tom perkins19 Interoperating with unmanaged code CLR – Managed Code Managed Code COM Marshaller Data represented differently in diff environments COM Marshaller converts data formats when data is exchanged
tom perkins20 Other Components in CLR Structured Error Handling Mechanism Base Class Library Support Common Debug Engine Handles debugging in any CLS Language Debug on both local and remote computers
tom perkins21 CLR – Managed Execution Process eLearning – Chapter 1 Lesson 3
tom perkins22 Managed Execution Process Runs the application from within the CLR –Loads and executes the application One major advantage – Automatic Memory Management – garbage collection Other services performed: –JIT compilations –Ensuring type safety –Enforcing security –Handling exceptions
tom perkins23 Managed Execution Process involves Managed Code Managed Data Self-describing code Provides info to CLR Gets run-time services from CLR Info stored in metadata in portable executable files describes code describes types used by code Allocated and released by garbage collector Managed code can access both managed and unmanaged data
tom perkins24 With Garbage Collection, you don’t need to worry about: Allocating memory Not releasing memory that is no longer required Trying to access released memory Tasks of Automatic Memory Management –Allocating memory –Releasing memory –Implementing Finalizers
tom perkins25 Memory Allocation Process is initiated Contiguous address space is reserved (managed heap) Pointer established (where next object will be located) new creates new object Memory allocated ObjPtr moved Managed Heap ObjPtr new object Much faster than unmanaged memory allocation new operator may throw Out of Memory exception
tom perkins26 Releasing Memory Application – set of roots –Point to object on heap or are null –Global and static object pointers –Local variables –Reference object parameters on thead stack JIT compiler and runtime maintain list of roots Garbage collection creates a reachability graph Initially, all heap is considered garbage GC, using root list, identifies reachable objects GC collection process, frees memory on stack Compression through memory copy GC updates the root pointers on the list
tom perkins27 More Garbage (Collection, that is) Objects on heap divided – Generations 0,1,2 Generation 0 – recently created Gen 0 searched, collected, compressed Surviving objects promoted to higher generation Gen 1,2 searched for unreachables only when needed
tom perkins28 GC Can’t clean system resources (file handles, connection, etc) used by managed code You must release memory in Dispose method You must explicitly call Dispose method after you finish working with the object
tom perkins29 Finalize Method Release system resources in Finalize method code GC calls Finalize before releasing memory for that unreferenced object
tom perkins30 Finalization (Code cleanup) Finalizers – methods called just before object is garbage-collected. 2 Special methods – Dispose and Finalize Dispose method should release its resources plus resources owned by parent. Do so by calling Dispose() on the parent. Parent Object Dispose() Your Object Dispose()
tom perkins31 Dispose Method – 2 ways to execute Dispose() … YourClass … 1) Call Dispose directly from your code … -- or – Finalize() 2) call Dispose from your Finalize method. (Can clean both managed and unmanaged resources) (Dispose can clean only unmanaged resources - GC may have already got ‘em) Executed at GC time Dispose() should call GC.SupressFinalize() method – keeps GC from cleaning up twice
tom perkins32 Looking Ahead Portable executable file MSIL Assembly Manifest Contains info about assembly and resources required (type data) Runtime uses assembly manifest to load assemblies into runtime – required All about Assemblies