Upload
tarunsingh19866
View
227
Download
0
Embed Size (px)
Citation preview
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 1/26
Synapse India DotnetFramework Development
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 2/26
Agenda
• Goals
• Background Information• C# - Up and Running
• Quick Comparison to Java
• Networking Namespaces
• References
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 3/26
Goals
• Provide enough information to allow you to
follow the code samples• Highlight key differences with Java
• Tell you where you can get the compilers
• Tell you where to go for more details on C#
• Tell you where to go for more detailedcomparisons with Java
• Not to debate which is better, more important,faster, slower, or looks better in emacs
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 4/26
Quick Glossary
• BCL – Base Class Library
• CLR – Common Language Runtime• GUI – Graphic User Interface
• MSIL – Microsoft Intermediate Language
• MS – Microsoft
• SCM – Service Control Manager
•
SOA – Service Oriented Architecture
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 5/26
.NET
• .NET is:
• Microsoft’s Platform for Windows Development • CLR – the Virtual Machine that runs MSIL aka MS
Byte Code
•
BCL aka .NET Framework• A set of compilers that can generate MSIL C#,
Visual Basic, C++, Java (the MS flavor)
• Most interoperate with each other
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 6/26
C#
• Language Created by Anders Hejlsberg (fatherof Delphi)
• The Derivation History can be viewed here:Principle Influencing Languages:
• C++
• Delphi
• Java
• Designed to be an optimal Windowsdevelopment language
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 7/26
C# - Up and Running
• A Simple C# Application
• Application Types• Compiler & Run Time
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 8/26
A Sample C# Application
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 9/26
Application Types
• Console Application
•
Has standard streams (out, in, err)• GUI can be added manually
• Windows Application
• GUI based
• No standard streams (out, in, err)
• Main thread is shared by the GUI message pump & yourcode
•
Service• No standard streams (out, in, err)
• Main thread is commandeered by the SCM
• No GUI
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 10/26
Compiler Options from MS
• SDK contains the command line compiler
(C:\WINDOWS\Microsoft.NET\Framework\{version}\csc.exe)
• {version} looks like v2.0.50727
•
Express Edition – Free IDE to work with VisualC#
• Reduced runctionality version of Visual Studio
•
Visual Studio – The full development system• Optimizations, Data Access, Multi-Language, etc
• $$$
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 11/26
Options Beyond MS
• Mono
• Open source development SDK for .NET• Windows, Linux, Mac OS X, Solaris, Unix
• Sponsored by Novell
•
Food for thought: Suse + KDE + Mono = ???• Sharp Develop
• Open source IDE that uses .NET SDK or Mono
•
Written in C#
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 12/26
Quick Comparison to Java
• What’s the same
• Syntactically Similar• Garbage Collected VM Environment
• Immutable Strings
•
Exceptions (try / catch / finally)• Object as root
• Single Inheritance model
•
Multi-Interface model
’ ff &
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 13/26
What’s Different & Relevant
• Keywords
• base vs. super• lock vs. synchronized
• : vs. extends & implements
•
is vs. instanceof• Exceptions
• No throws keyword
Wh t’ Diff t & R l t t
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 14/26
What’s Different & Relevant – cont.
• Namespaces
• namespace vs. package• using vs. import
• No wildcard using
• using namespace; // brings it all in – non-recursive
• Type Aliasing
• using newtypename = namespace.type;
• Directory structure != namespace hierarchy (as in
C++)
Wh t’ Diff t & R l t t
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 15/26
What’s Different & Relevant – cont.• Properties
• get, set and get/set• public string MyProperty { get { return(_text); } set { _text =
value; } }
• Delegates• Type safe function pointers
• To create• public delegate bool CompareHandler(object left, object
right);
•
To use• CompareHandler ch = new CompareHandler(myMethod);
• bool retval = ch(obj1, obj2);
Wh t’ Diff t & R l t t
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 16/26
What’s Different & Relevant – cont.
• Enumerations
• public enum Protocol { UDP, TCP };• public enum Direction { Up = 0, Down = 1, Left = 2,
Right = 4 };
•
Direction d = Direction.Down;• int x = (int)d;
• Direction d = Direction.Parse(“Up”);
• string s = d.ToString();
Wh t’ Diff t & R l t t
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 17/26
What’s Different & Relevant – cont.
• Value Types
• Primitives are the same plus• Unsigned values
• ubyte, ushort, uint, ulong
• Careful : by te in java is sb yte in C#
• Class objects to wrap primitives• Int32 x = new Int32(4);
• int x = Int32.Parse(“4”);
Wh t’ Diff t & R l t t
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 18/26
What’s Different & Relevant – cont.
• Structures
• Stack based elements, not heap based• Value type
• struct packet { int code; string data; };
• Boxing / Unboxing• Conversion between value type and reference type
• packet p = new packet();
•
object o = (object)p; // boxed• packet p2 = (packet)o; // unboxed
• Significant performance cost!
Wh t’ Diff t & R l t t
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 19/26
What’s Different & Relevant – cont.
• Cross Platform Support
• .NET from Microsoft is not cross platform• It is for Windows only
• Mono can run cross platform, but is unproven in
large production environments• MS is currently resisting moving cross platform
• The future is not set
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 20/26
What’s not Relevant, but Useful
• App Domains
• One or more per process• Represents a VM hosted logical process
• Communications between App Domains requires
marshalling (IPC)• Assemblies
• Similar to Java JAR files
•
Physically they are EXE and/or DLL files
Wh t’ t R l t b t U f l
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 21/26
What’s not Relevant, but Useful
• Attributes
• Meta tags that provide run time information for atype, NOT the instance
• Example: [Serializable] public class foo { int x; };
•
[Serializable] is converted into the classSerializableAttribute
• Attributes can be retrieved at run time
• Many framework sub-systems use attributes
• Serialization, XML, Interop, Conditional, Obsolete, etc…
Wh t’ t R l t b t U f l
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 22/26
What’s not Relevant, but Useful
• Polymorphism
• Methods default to being non-virtual
• To be virtual it must be defined as virtual
• eg: public virtual int Add(int x, int y);
• To override a virtual method, you use the override
keyword• eg. public override int Add(int x, int y);
• Methods not marked virtual are equivalent to Java
final methods• Methods can be marked with new to break the
virtual chain
Wh t’ t R l t b t U f l
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 23/26
What’s not Relevant, but Useful
• Interop
• Access to native code through attributes• [DllImport(“user32.dll”)] static int
GetSystemMetrics(int);
•
The DllImport attribute informs the compiler andruntime that the tagged method is inside a nativeDLL.
• Options such as the actual name in the DLL,
marshalling strategies, calling convention, and morecan be set using the attribute
What’s not Relevant but Useful
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 24/26
What’s not Relevant, but Useful • .NET 2.0 – out now
• Generics
• Partial Types
•
Anonymous Methods• Nullable Types
• .Net 3.0• Its all about data
• Tuples & Query constructs
public void Linq1()
{int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var lowNums = from n in numbers where n < 5 select n;
Console.WriteLine("Numbers < 5:");
foreach (var x in lowNums) { Console.WriteLine(x); }
}
Result
Numbers < 5:41320
Networking Namespaces
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 25/26
Networking Namespaces
• System.Messaging• Functionality for MSMQ
• System.Net• Provides access to higher protocols (FTP, HTTP, DNS)
• System.Net.Information• Network information classes providing statistics, interface
information, and ping• System.Net.Sockets
• Light weight wrappers around TCP and UDP sockets
• System.Runtime.Remoting
• Provides functionality for high level distributed programming(similar to RMI)
• System.Web• Provides high level access to HTTP
Future of NET Networking
8/10/2019 Synapse India Dotnet Framework Development
http://slidepdf.com/reader/full/synapse-india-dotnet-framework-development 26/26
Future of .NET Networking
• Windows Communications Foundation
•Formally code named Indigo
• Designed to make SOA an integral part of Windows
• Tight coupling with .NET designs