Download presentation
Presentation is loading. Please wait.
1
Programming with C# and .NET
2
Outline 1 Demo .NET introduction C# Programming 2 3 .NET Remoting 4
3
Programming with C# and .NET Demo
4
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
5
Programming with C# and .NET .NET
6
Major Components 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
7
Windows Operating System (Windows ME, 98, 2000, XP etc)
.NET Framework Overview Applications written in J# .NET, VB .NET, or C# CLR FCL Windows Operating System (Windows ME, 98, 2000, XP etc) Windows API
8
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
9
.NET Visual J# .NET C# VB .NET Compile into MSIL MSIL CLR do this
Linux native code Windows native code Mac OS native code Will Support soon Support now Will Support soon
10
Java Java Java Byte Code JVM do this Linux native code
Windows native code Mac OS native code
11
.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, …
12
MSIL Advantages Portability between OS Language Interoperability
.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
13
Interoperability Visual J# .NET C# VB .NET Compile into MSIL MSIL MSIL
linked the MSIL codes CLR generated a single application (native code) Windows native code
14
Language Interoperability
Rules defined in Common Type System (CTS) Common Language Specification (CLS) Cross-language development Cross-language Debugging Cross-language Exception Handling Cross-language Inheritance
15
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
16
.NET vs. Java Runtime environment Intermediate Code Support .NET CLR
Java JVM Intermediate Code .NET MSIL Java Java Byte Code Support .NET Multiple Languages, Multiple Platform Java Single Language, Multiple Platform
17
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
18
Managed vs. Unmanaged 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
19
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
20
FCL 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
21
CLR vs. CLI CLI (Common Language Infrastructure) your own CLR
CLI is the rule CLR is the implementation your own CLR You can implement your own CLR according the CLI
22
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
23
Web Services ASP .NET .NET Remoting host on IIS server
can host on any type of applications
24
Windows Programming so easy!
Programming with C# and .NET Windows Programming so easy! C#
25
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.
26
Special features Properties Indexers Delegates and Events
Operator Overloading Reflection Attributes Formatting Regular Expression
27
Miscellaneous features
Pointer Miscellaneous features jagged array foreach loop Runtime type identification (RTTI) goto structure (not the same with C/C++)
28
Start Programming
29
1. Simple Console Program
link Visual Studio .NET IDE introduction C# program overview System.Console.WriteLine(…); Build and Run C# program namespace method class
36
2. Rapid Application Development
link 2. Rapid Application Development RAD like Visual Basic and Borland C++ Builder concise syntax as Java event-driven programming style
46
3. Use Assembly classes may be compiled into .exe or .dll,
link 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
47
Resources used by the program
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
52
4. Namespaces Namespace prevent name conflicts A namespace can be
split over several files separated within the same files Namespaces can be nested
53
Example 1 A namespace split over several files link
55
Example 2 Namespaces Prevent Name Conflicts link The same class name The same method name
56
Example 3 Namespaces Can Be Nested link
58
5. Properties Question: How do you access private data in Java?
Properties provide the illusion that we can use private data directly
59
example: Property
60
Example 1 link
61
6. Indexers An indexer allows an object to be indexed like an array
example:
62
Example 1 link
63
set get
64
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
65
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
66
Example 1 Call instance method link
67
Instance method
68
Example 2 Call class static method link
69
class static method
70
Example 3 Delegate supports multicasting link
73
Example 4 Simple Event & Delegate Demo link Class static method Delegate
74
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
75
Example 1 RTTI Demo link
77
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
78
MethodInfo[ ] GetMethods()
MemberInfo[ ] Getmembers() MethodInfo[ ] GetMethods() PropertyInfo[ ] GetProperties()
79
Example 1 Obtain class method link
80
Example 2 Obtain class constructor link
81
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
84
Example 4 How to create and use a DLL with MS Visual Studio .NET link Step 1
85
2 1 3 No Main()
86
Step 2 2 1
87
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.
88
Example 1 Simple pointer demo link
89
Right-click the mouse 1 3 4 2
90
t should be fixed in one location while p was point to &t.num
Example 2 Using fixed link t should be fixed in one location while p was point to &t.num Managed object
91
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
92
Example 1 Boxing and Unboxing link
93
Example 2 object as a generic data type link
94
12. ref & out parameter passing
Value Type : pass by value Reference Type : pass by reference ref & out let you pass value type by reference
95
Example 1 ref & out link
96
Example 2 swap with ref link
97
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
98
Example 1 Access bass class’s private data through properties link
99
Example 2 Calling Base Class Constructor link
101
Example 3 Inheritance and Name Hiding link
103
Example 4 Using base to access a hidden item link
104
Example 5 Virtual Methods and Overriding (polymorphism and dynamic binding) link
107
Example 6 Using sealed to prevent inheritance link
109
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.
110
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
111
Example 1 Interface Properties link
112
Example 2 Interface Indexers link
114
Example 3 Interface can be inherited link
115
Example 4 Interface Polymorphism link
116
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
117
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.
118
Example 1 Structure Demo link
120
Programming with C# and .NET .NET Remoting
121
Outline 1 Introduction Basic Architecture Examples 2 3 Conclusion 4
122
Introduction
123
1. Basic Model Client Server Proxy 1 Remote Object 9 2 8 3 Formatter
7 4 6 Client Channel Server Channel 5
124
2. Calling Procedure Client Side client called the proxy. For the client, the proxy looks like the real object with the same public methods. 1 When the methods of the proxy are called, messages will be created. 2 The messages are serialized using a formatter class, and are sent into a client channel. 3 4
125
The client channel communicates with the server channel to transfer the message across the network.
5 Server Side The server channel sends the serialized data to a formatter. 6 The formatter deserialized the message. 7 The deserialized messages are then dispatched to the remote object. 8
126
3. Configuration Option SingleCall Well-known Singleton Remote Objct
Client-activated
127
Binary Formatter SOAP HTTP Channel TCP
128
4. Related Technology DCOM 1 2 Java RMI 3 CORBA
129
Architecture & Examples
130
Architecture Overview
Remote Objects Well-known: SingleCall vs. Singleton Client-activated Activation Server-activated object (SAO) Client-activated object (CAO) Channel TCP HTTP
131
Formatter Proxy Marshaling Binary SOAP Transparent Real
Marshal-by-value (MBV) Marshal-by-reference (MBR)
132
Lease-Base Lifetime lease.RenewOnCallTime sponsor.RenewalTime
Lease machanism is for long-lived objects Well-known singleton Client-activated SingleCall types do not participate in the lifetime lease system.
133
1. SingleCall Client Server Remote object Remote object Remote object
134
Did not cause the server to create a remote object
each method call caused the server to create a new remote object
135
Server ??
136
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
137
Example 1 programmatic configuration link
138
Assembly Endpoint
140
Example 2 with configuration file link
145
2. Singleton Client Server Remote object
146
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.
147
Server
148
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
149
3. Client-activated Client Server Remote object
150
Cause the server to create a remote object
Did not create any more remote object
151
Server
152
Example 1 programmatic configuration link
154
RemoteObject Constructor Argument
155
Example 2 with configuration file link
160
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.
161
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.
162
If (CurrentLeaseTime >= RenewOnCallTime) {//Do nothing}
Client Server Remote object RenewOnCallTime CurrentLeaseTime If (CurrentLeaseTime >= RenewOnCallTime) {//Do nothing} else {CurrentLeaseTime= RenewOnCallTime;}
163
Client-activated Client Server Remote object Cause a exception
Leasing time expired Cause a exception
165
Well-known singleton Server Client Remote object Remote object
Leasing time expired Remote object Create a new remote object
167
Example 1 CAO lease.RenewOnCallTime link
168
Example 2 sponsor link
170
5. Marshal-By-Value Client Server a a
171
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]
172
Example 1 return object with MBV link
174
Client side
175
6. Marshal-By-Reference
Client Server a proxy
176
MBR creates a proxy on the client that is
used to communicate with the remote object The class must derived from MarshalByRefObject
177
Example 1 return object with MBR link
179
Server side
180
Conclusion
181
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.
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.