Presentation is loading. Please wait.

Presentation is loading. Please wait.

Programming with C# and .NET.

Similar presentations


Presentation on theme: "Programming with C# and .NET."— Presentation transcript:

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

30

31

32

33

34

35

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

37

38

39

40

41

42

43

44

45

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

48

49

50

51

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

54

55 Example 2 Namespaces Prevent Name Conflicts link The same class name The same method name

56 Example 3 Namespaces Can Be Nested link

57

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

71

72

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

76

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

82

83

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

100

101 Example 3 Inheritance and Name Hiding link

102

103 Example 4 Using base to access a hidden item link

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

105

106

107 Example 6 Using sealed to prevent inheritance link

108

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

113

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

119

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

139

140 Example 2 with configuration file link

141

142

143

144

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

153

154 RemoteObject Constructor Argument

155 Example 2 with configuration file link

156

157

158

159

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

164

165 Well-known singleton Server Client Remote object Remote object
Leasing time expired Remote object Create a new remote object

166

167 Example 1 CAO lease.RenewOnCallTime link

168 Example 2 sponsor link

169

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

173

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

178

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.


Download ppt "Programming with C# and .NET."

Similar presentations


Ads by Google