C sharp

Post on 03-Nov-2014

9 views 3 download

Tags:

description

 

Transcript of C sharp

Programming withProgramming with

C# and .NETC# and .NET

Outline

Demo

.NET introduction

C# Programming

2

3

1

4 .NET Remoting

Programming withProgramming with

C# and .NETC# and .NET

DemoDemo

The Basic Idea

C# is the programming language that I am long waiting for, because my bad MFC experience.

Question: How to use C# to do Image Processing OpenGL Programming(3D Graphics) DirectX Programming

SEE DEMO

Programming withProgramming with

C# and .NETC# and .NET

.NET.NET

CLR Common Language Runtime a runtime environment concept similar to JVM

FCL Framework Class Library built on top of the CLR provide services for modern applications

Major Components

Applications written in J# .NET, VB .NET, or C#

CLR

FCL

Windows Operating System (Windows ME, 98, 2000, XP etc)

Windows API

.NET Framework Overview

MSIL

Microsoft Intermediate Language

a CPU independent set of instructions

.NET compliant language compile into

MSIL

similar to Java Byte Code

sometimes abbreviated as IL

C# VB .NET Visual J# .NET

MSIL

Linux native code

.NET

Windows native code

Mac OS native code

Compile into MSIL

CLR do this

Support now

Will Support soon

Will Support soon

Java

Java Byte Code

Linux native code

Java

Windows native code

Mac OS native code

JVM do this

.NET Compliant Languages

Any language that can be compiled into

MSIL is called a .NET compliant language APL, Pascal, Perl, Python, Scheme, Eiffel,

Fortran, Java, Jscript, Haskell, COBAL, RPG, APL, Smalltalk, Component Pascal, Curriculum, Mercury, Oberon, Oz, VB .NET , C#, Visual C++ .NET, Visual J# .NET, …

MSIL Advantages

Portability between OS .NET compliant language are all compiled into

MSIL (portable between OS) and can be further

compiled into native OS machine codes by CLR

Language Interoperability Different languages can communicated easily

MSIL codes from different languages can be

linked together to form a program

C# VB .NET Visual J# .NET

MSIL

Interoperability

Windows native code

Compile into MSIL

linked the MSIL codesMSIL MSIL

CLR generated a single application (native code)

Rules defined in Common Type System (CTS)

Common Language Specification (CLS)

Cross-language development Cross-language Debugging

Cross-language Exception Handling

Cross-language Inheritance

Language Interoperability

Common Type System (CTS)

To unify the data types Common data types play an important role in

language interoperability

Types can be of two types Value Type Reference Type

.NET vs. Java

Runtime environment .NET CLR

Java JVM

Intermediate Code .NET MSIL

Java Java Byte Code

Support .NET Multiple Languages, Multiple Platform

Java Single Language, Multiple Platform

CLR Load and execute the C # program Compile the MSIL into native code

use Just-in-Time (JIT) compilers Garbage Collection

use Garbage Collector (GC)

Security Management Exception Handling

Managed vs. Unmanaged Code

Managed Code executed under the control of CLR, and use

the .NET Framework libraries. Unmanaged Code

does not execute under the CLR

It is possible for managed and unmanaged code to work together

FCL

concept similar to MFC for Windows programming

FCL classes are grouped by namespaces and exported by assemblies

namespace similar to Java package assembly similar to .dll

Some Namespaces in FCL (has hierarchy)

System System.IO System.Windows.Forms System.Drawing

Example: System.Windows.Forms is located in

System.Windows.Forms.dll

FCL

CLR vs. CLI

CLI (Common Language Infrastructure) CLR vs. CLI

CLI is the rule CLR is the implementation

your own CLR You can implement your own CLR according

the CLI

MSIL vs. CIL

CIL (Common Intermediate Language) MSIL vs. CIL

CIL is the rule MSIL is the implementation

your own IL You can implement your own IL according

the CIL

Web Services

ASP .NET host on IIS server

.NET Remoting can host on any type of applications

Programming withProgramming with

C# and .NETC# and .NET

C#C#

Windows Programming so easy!

Anders Hejlsberg

Creator of C# Turbo Pascal Delphi

Anders studied engineering at the Technical University of Denmark, previously worked for Borland, now works for Microsoft.

Special features

PropertiesIndexers

Delegates and EventsOperator OverloadingReflectionAttributesFormattingRegular Expression

Pointer Miscellaneous features

jagged array foreach loop Runtime type identification (RTTI) goto structure (not the same with C/C++)

Start Programming

1. Simple Console Program

Visual Studio .NET IDE introduction C# program overview System.Console.WriteLine(…);

Build and Run C# program

namespaceclass

method

link

2. Rapid Application Development

RAD like Visual Basic and Borland C++ Builder

concise syntax as Java event-driven programming style

link

3. Use Assembly classes may be compiled into .exe or .dll,

such files are called assemblies and are the packaging units of C#

An assembly is composed of four sections

manifest type matadata program code (in MSIL format) resources used by the program

link

Manifest contain information about the assembly itself

Type matadata information about the data types used by the

program

Program Code stored in MSIL format

Resources used by the program such as .bmp or .jpg files

4. Namespaces Namespace prevent name conflicts

A namespace can be split over several files separated within the same files

Namespaces can be nested

Example 1 A namespace split over several files link

Example 2 Namespaces Prevent Name Conflicts link

The same class name

The same method name

Example 3 Namespaces Can Be Nested link

5. Properties Question:

How do you access private data in Java?

Properties provide the illusion that we can use private data directly

example:

Property

Example 1 link

6. Indexers An indexer allows an object to be indexed like an array

example:

Example 1 link

set

get

7. Delegate & Event A delegate is an object that can refer to a method

A delegate can invoke instance method associated with an object static method associated with a class

A delegate is similar to a function pointer in C/C++A delegate supports Multicasting

An object that has an interest in an event registers an handler for that event When the event occurs, all registered handlers are called.Event handlers are represented by delegate.You can use event accessors to change the way the event handlers are add to or remove from the invocation list

Example 1 linkCall instance method

Instance method

Example 2 Call class static method link

class static method

Example 3 Delegate supports multicasting link

Example 4 Simple Event & Delegate Demo link

Delegate

Class static method

8. RTTI Runtime type identification(RTTI) allows the type of an object to be determined during program execution.

There are three keywords support RTTI is as typeof

Example 1 RTTI Demo link

9. Reflection System.Type is at the core of the reflection sub-system

Remember using System.Reflection;

Several commonly used methods defined by Type

ConstructorInfo[ ] GetConstructors( )

EventInfo[ ] GetEvents FieldInfo[ ] GetFields

MemberInfo[ ] Getmembers()

MethodInfo[ ] GetMethods() PropertyInfo[ ] GetProperties()

Example 1 Obtain class method link

Example 2 Obtain class constructor link

Example 3 Obtain Types from Assemblies link

MyClass.cs

Compile the MyClass.cs into a MyClass.dll, you need to

1. Locate the csc.exe, and set the path

2. csc /t:library MyClass.cs

Example 4 How to create and use a DLL with MS Visual Studio .NET

link

Step 1

No Main()

1

2

3

Step 2

1

2

10. Pointer Enable C# to use C/C++ high-performance,

systems code Code must be marked as unsafe

unsafe code does not execute under the full management of the CLR

When a pointer points to a managed variable,

it must use fixed to prevented the variable from being moved by the garbage collector.

Example 1 linkSimple pointer demo

Right-click the mouse

1

2

3

4

Example 2 Using fixedt should be fixed in one location while p was point to &t.num

Managed object

link

11. The object class base class of all C# classes object is just another name for System.Object used in Boxing & Unboxing

Boxing : an object reference refers to a value type Unboxing : retrieve a value from a object

as a Generic Data type

Example 1 Boxing and Unboxing link

Example 2 object as a generic data type link

12. ref & out parameter passing

Value Type : pass by value Reference Type : pass by reference

ref & out let you pass value type by reference

Example 1 ref & out link

Example 2 swap with ref link

13. Inheritance a derived class inherits all of the variables, methods, properties, and indexers defined by the base class and add its own unique elements.Three major topics when using inheritance

Data Constructor Methods

Polymorphism

Example 1 Access bass class’s private data through properties

link

Example 2 Calling Base Class Constructor link

Example 3 Inheritance and Name Hiding link

Example 4 Using base to access a hidden item link

Example 5 Virtual Methods and Overriding (polymorphism and dynamic binding)

link

Example 6 Using sealed to prevent inheritance link

14. Interface No data members No constructors, destructors Not allow static member Class members have no implementation Many classes can implement the same

interface When a class implements an interface, the

class must implement the entire interface.

Class can implement more than one inter- face. The interfaces are separated with a comma.

A class can inherit a base class and also implement one or more interface. In this case, the name of the base class must come first.

The method that implement an interface must be declared public.

Interface can be inherited

Example 1 Interface Properties link

Example 2 Interface Indexers link

Example 3 Interface can be inherited link

Example 4 Interface Polymorphism link

15. Structures A structure is similar to a class, but it is of

value type. cannot inherit or be a base for other struc-

tures or class (but it inherit object) can implement one or more interface can define constructors, but not destructors

However, you cannot define a default const- ructor (no parameters)

can be created using new or performed the in- itialization manually.

a struct was accessed directly, not through reference variable, so it saved space and got more efficiency.

Example 1 Structure Demo link

Programming withProgramming with

C# and .NETC# and .NET

.NET Remoting.NET Remoting

Outline

Introduction

Basic Architecture

Examples

2

3

1

4 Conclusion

Introduction

1. Basic Model

Proxy

Formatter

Client Channel

Remote Object

Formatter

Server Channel

Client Server

2

3

4

5

6

7

8

1 9

2. Calling Procedure Client Side

client called the proxy. For the client, the proxy looks like the real object with the same public methods.

When the methods of the proxy are called, messages will be created.

The messages are serialized using a formatter class, and are sent into a client channel.

1

2

3

4

Server Side

The server channel sends the serialized data to a formatter.

The formatter deserialized the message.

The client channel communicates with the server chan

nel to transfer the message across the network.

5

6

7

8 The deserialized messages are then dispatched to the remote object.

3. Configuration Option

Well-known

Remote ObjctSingleton

SingleCall

Client-activated

Binary

Formatter

SOAP

HTTP

Channel

TCP

4. Related Technology

1

2

3

DCOM

Java RMI

CORBA

Architecture & Examples

Architecture OverviewRemote Objects

Well-known: SingleCall vs. Singleton Client-activated

Activation Server-activated object (SAO) Client-activated object (CAO)

Channel TCP HTTP

Formatter Binary SOAP

Proxy Transparent Real

Marshaling Marshal-by-value (MBV) Marshal-by-reference (MBR)

Lease-Base Lifetime lease.RenewOnCallTime sponsor.RenewalTime

Lease machanism is for long-lived objects

1. Well-known singleton

2. Client-activated

SingleCall types do not participate in the lifetime lease system.

1. SingleCall

Remote object

Remote object

Remote object

Client Server

Did not cause the server to create a remote object

each method call caused the server to create a new remote object

Server

??

Every remote method call will create a new remote object on the server

SingleCall types do not participate in the lifetime lease system

remote objects will automatically be garbage collected after the call complete

useful when objects are required to do a finite amount of work

Example 1 programmatic configuration link

Assembly

Endpoint

Example 2 with configuration file link

2. Singleton

Remote object

Client Server

Did not cause the server to create a remote object

A remote object was created for the first method call.All of the clients will share the same remote object.

Server

The first remote method call will create a remote object on the server

Multiple clients be serviced by only one remote object

be careful about the concurrency and data protection problem

use lease-based lifetime mechanism

3. Client-activated

Remote object

Client Server

Cause the server to create a remote object

Did not create any more remote object

Server

Example 1 programmatic configuration link

RemoteObject Constructor Argument

Example 2 with configuration file link

4. Lease-Based Lifetime

Long-lived remote objects use lease machanism for their objects lifetime

Two ways to extend the lifetime Clients make remote method calls use a sponsor

When the leasing time is expired, the sponsor

is asked if it extends the lease.

A value is defined with RenewOnCallTime to extend the leasing time when client calls the method of the remote object

The ISponsor interface defines the method Renewal( )

The class ClientSponsor provides a default implementation for ISponsor interface.

Remote object

Client Server

RenewOnCallTime

CurrentLeaseTime

If (CurrentLeaseTime >= RenewOnCallTime) {//Do nothing}

else {CurrentLeaseTime= RenewOnCallTime;}

Remote object

Client Server

Leasing time expired

Client-activated

Cause a exception

Client Server

Leasing time expired

Remote object

Well-known singleton

Remote object

Create a new remote object

Example 1 CAO lease.RenewOnCallTime link

Example 2 sponsor link

5. Marshal-By-Value

a

Client Server

a

Marshaling means converting the object in order to send it across the network (or across processes or application domains)

With MBV the object is serialized into the channel, and a copy of the object is created on the other side of the network

The class must be marked with the attribute [Serializable]

Example 1 return object with MBV link

Client side

6. Marshal-By-Reference Client Server

a

proxy

MBR creates a proxy on the client that is used to communicate with the remote object

The class must derived from MarshalByRefObject

Example 1 return object with MBR link

Server side

Conclusion

Conclusion

.NET Remoting is built on a layered model, with each layer replaceable by custom code created by a developer. Therefore, new messaging, transport, and communication protocols can be implemented and plugged in as needed. Thus we can apply it to our distributed or web service system with least difficulties and at the same time have higher performance or interoperability than other technology can provide.