View
10
Download
3
Category
Tags:
Preview:
DESCRIPTION
Citation preview
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.
Recommended