Paul Stubbs MCSD, MCSE 4.0, MCP+I, MCT, MCAD .Net
description
Transcript of Paul Stubbs MCSD, MCSE 4.0, MCP+I, MCT, MCAD .Net
C#
Paul StubbsMCSD, MCSE 4.0, MCP+I, MCT, MCAD .Net
Agenda Language Features Development Environment Performance Total Cost of Ownership (TCO)
Hello World
using System;using System;
class Helloclass Hello{{ static void Main() {static void Main() { Console.WriteLine("Hello world");Console.WriteLine("Hello world"); }}}}
Operating SystemOperating System
Common Language RuntimeCommon Language Runtime
Base Class LibraryBase Class Library
ADO .NET and XMLADO .NET and XML
ASP .NETASP .NETWeb Forms Web ServicesWeb Forms Web Services
Mobile Internet ToolkitMobile Internet Toolkit
WindowsWindowsFormsForms
Common Language SpecificationCommon Language Specification
VBVB C++C++ C#C# J#J# ……V
isual Studio .N
ET
Visual S
tudio .NE
T
.Net Framework
Design Goals Component Oriented
Properties, methods, events Design-time and run-time attributes Integrated documentation using XML No header files, IDL, etc.
Everything is an Object
Design Goals Garbage Collection
No memory leaks Versioning
Built into the framework Exceptions
Baked into the language and framework Type Safe
No unsafe casts
Design Goals Multi-Platform
Win32 , Win64 Rotor
FreeBSD Mono
GNU/Linux , Unix, Mac OS X, Solaris Multi-Language
Over 20 languages supported
Interoperability No need to rewrite everything Interop with COM+, XML, SOAP, DLL
and other .Net assemblies Use .Net assemblies from COM C++
Pointers (in unsafe code) Unsigned integers Can only be run from FullyTrusted code
C# only Delegates
Provide callbacks Eventing model Type safe function pointers Multicast Asynchronous
C# only Enumerations
Group together user defined constants Type Safe
Structs (value types) Created on the stack Passed by value No need to garbage collect
C# only Foreach
Iterate through arrays, collections and classes
Consistent and concise
String[] months = {“Jan”,”Feb”,”Mar”,”Apr”,”May”};
Foreach{string month in months}Console.WriteLine(“The month is “ + month);
C# only Properties
Accessed as if it were a field Same as getter and setter pattern Maintains relationship between get and
setFoo.setSize(getSize() + 1);Label.getFont().setBold(true);
Foo.size++;Label.font.bold = true;
Java/C++
C#
C# only Preprocessor Directives Runtime code generation Pass by reference Variable length parameter lists Explicit Interface Implementation
Development Tools Visual Studio .Net
Rich Client development Web Client development Mobile Client (WAP) development Windows CE (PocketPC) development Office 11 (soon) development XML/XSL development Integrated Source Control
Visual Studio .NET
Performance / Pet Shop
Maintainability / Pet Shop
Affordability Windows on Intel delivers more bang
for the buck than the Mainframe or UNIX-based servers
Visual Studio .NET Less code End to End Debugging XCOPY deployment Integrate existing code Use existing developers skills
Summary C# and Java are very similar Power of C++ simplicity of VB C# is a standard
ECMA-334 C#, ECMA-335 CLI, ISO Robust Development Environment High Performance Lower cost
Links MaineBytes .Net User Group
http://www.MaineBytes.com Pet Shop benchmark test
http://www.middleware-company.com/j2eedotnetbench/
Comparison of C# and Java http://www.25hoursaday.com/
CsharpVsJava.html (80 page white paper)
Links Mono
http://www.go-mono.com Rotor
http://www.corel.com/ssclii/