Microsoft .NET Object Oriented Software Engineering
2 Agenda  .NET  C#  .NET vs. J2EE (C# vs. Java)  Any .NET or C# programmers here?
3 Definition…  “Microsoft .NET is a set of Microsoft software technologies for connecting information, people, systems and devices.”  Microsoft’s explanation of .NET: http://www.microsoft.com/net/basics/whatis.asp  More of an emphasis on web services (self-describing self modules wrapped in Internet protocols (XML and SOAP)  In real terms to the developer:  A new platform for building applications that run in stand-alone mode or over the Internet
4 Evolution  Next Generation of COM:  Component oriented software:  Win32/C-style APIs are outdated  COM was step in right direction, but painful to program with  COM was restricted to VB, C++  Binary compatibility/portability an issue: x86 version of COM component needed to be compiled for e.g. PowerPC  Memory management also a pain  Common Object Runtime:  An execution environment for components written in any language:  Eventually became .NET with incorporation of Web Services  Standardised API  Web Services:  Interoperability is key in the connected world:  Require open standards for interoperability and leveraging legacy code
5 Architecture
6 .NET Core Components • FCL is Framework Class Library, comparable to JDK’s library
7 Java and .NET: Runtime environments  Java  Intermediate language is bytecode  Original design targeted interpretation  Java VMs with JIT compilation are now also used  .NET Framework  Intermediate language is MSIL  Provides JIT compilation  What is JIT?  Just-In-Time compilation: translates a bytecode method into a native method on the fly, so as to remove the overhead of interpretation
8 Common Language Runtime  CLR sits on top of OS to provide a virtual environment for hosting managed applications  What is CLR similar to in Java?  Java Virtual Machine (JVM)  CLR loads modules containing executable and executes their code  Code might be managed or unmanaged  In either case the CLR determines what to do with it  Managed Code consists of instructions written in a pseudo-machine language called common intermediate language, or IL.  IL instructions are just-in-time (JIT) compiled into native machine code at run time
9 Compiling and executing managed code Source Code Language Compiler Microsoft Intermediate Language (MSIL) Compilation JIT Compiler Native Code The first time each method is called Execution
10 Common Language Runtime
11 .NET languages  Over 20 .NET-compatible languages  Most are provided by 3rd parties  .NET languages provided by Microsoft  C++  Visual Basic  C#
12 Language Compiler List  AdaAda  APLAPL  Basic (Visual Basic)Basic (Visual Basic)  C#C#  CC  C++C++  JavaJava  COBOLCOBOL  Component PascalComponent Pascal (Queensland U Tech)(Queensland U Tech)  ECMAScript (JScript)ECMAScript (JScript)  EiffelEiffel (Monash U.)(Monash U.)  Haskell (Utrecht U.)Haskell (Utrecht U.)  lcclcc (MS Research Redmond)(MS Research Redmond)  Mondrian (Utrecht)Mondrian (Utrecht)  MLML (MS Research Cambridge)(MS Research Cambridge)  MercuryMercury (Melbourne U.)(Melbourne U.)  OberonOberon (Zurich University)(Zurich University)  Oz (Univ of Saarlandes)Oz (Univ of Saarlandes)  PerlPerl  PythonPython  Scheme (Northwestern U.)Scheme (Northwestern U.)  SmallTalkSmallTalk
13 Why C# ?  Unofficially: because Sun owns Java  Important features are spread out over multiple languages  Example: do you think developers should have to choose between pointers (C++) or garbage collection (Java)?  Old languages + new features = poor syntax  Garbage collection in C++?  Event-driven GUIs in Java?  Increase developer productivity!  Type safety  Garbage collection  Exceptions
14 The safety of Java  100% object oriented  Automatic garbage collection  Array bounds checking at runtime  Strict type checking  Structured exception handling
15 The ease of Visual Basic  First class support for properties  First class support for events  foreach loops
16 The power of C++  Enumerations  Operator overloading  Mathematical, Indexing, and Casting  Function pointers  Called “delegates”  Type safe  Structs
17 The power of C++  Option to pass parameters by reference or by value  Can disable type-safety, garbage collection, and bounds checking  Can directly manipulate memory with pointers
.NET vs. J2EE
19 Basic Truths  J2EE  Java-centric and platform-neutral  J2EE is not a product you buy from Sun.  J2EE is a set of specifications which indicate how various J2EE functions must interoperate  If I don’t buy J2EE from Sun, how does Sun make money?  J2EE 1.4 released with features to completely support web services – JAX-RPC 1.1 API, J2EE Management 1.0 API, web service endpoints etc. (Hard to learn, hard to implement!)
20 Basic Truths  .NET  Windows-centric and language-neutral  .NET is a Microsoft product strategy that includes a range of products from development tools and servers to end-user applications.  Platform-neutral version of .NET is available Mono –Novell-sponsored, open source implementation of the .NET development environment ( http://www.go-mono.com )
21 Typical N-tier application architecture
22 .NET and Java: application platforms  .NET  The .NET Framework  Java  Java application servers  Products include:  IBM WebSphere Application Server  BEA WebLogic Application Server  Sun iPlanet Application Server  Oracle Application Server  Many others
23 .NET vs. Java: standard libraries  .NET Framework class library  Defined by Microsoft  Somewhat Windows-oriented  Organized into a hierarchy of namespaces  J2SE, J2EE  Defined by Sun and the Java Community Process  Not bound to any operating system  Defined as packages and interfaces
24 .NET Class Library  IO  GUI Programming  System Information  Collections  Components  Application Configuration  Connecting to Databases (ADO.NET)  Tracing and Logging  Manipulating Images/Graphics
25 Class Library  Interoperability with COM  Globalization and Internationalization  Network Programming with Sockets  Remoting  Serialization  XML  Security and Cryptography  Threading  Web Services
Thanks…

Csharp dot net

  • 1.
    Microsoft .NET Object OrientedSoftware Engineering
  • 2.
    2 Agenda  .NET  C# .NET vs. J2EE (C# vs. Java)  Any .NET or C# programmers here?
  • 3.
    3 Definition…  “Microsoft .NETis a set of Microsoft software technologies for connecting information, people, systems and devices.”  Microsoft’s explanation of .NET: http://www.microsoft.com/net/basics/whatis.asp  More of an emphasis on web services (self-describing self modules wrapped in Internet protocols (XML and SOAP)  In real terms to the developer:  A new platform for building applications that run in stand-alone mode or over the Internet
  • 4.
    4 Evolution  Next Generationof COM:  Component oriented software:  Win32/C-style APIs are outdated  COM was step in right direction, but painful to program with  COM was restricted to VB, C++  Binary compatibility/portability an issue: x86 version of COM component needed to be compiled for e.g. PowerPC  Memory management also a pain  Common Object Runtime:  An execution environment for components written in any language:  Eventually became .NET with incorporation of Web Services  Standardised API  Web Services:  Interoperability is key in the connected world:  Require open standards for interoperability and leveraging legacy code
  • 5.
  • 6.
    6 .NET Core Components •FCL is Framework Class Library, comparable to JDK’s library
  • 7.
    7 Java and .NET:Runtime environments  Java  Intermediate language is bytecode  Original design targeted interpretation  Java VMs with JIT compilation are now also used  .NET Framework  Intermediate language is MSIL  Provides JIT compilation  What is JIT?  Just-In-Time compilation: translates a bytecode method into a native method on the fly, so as to remove the overhead of interpretation
  • 8.
    8 Common Language Runtime CLR sits on top of OS to provide a virtual environment for hosting managed applications  What is CLR similar to in Java?  Java Virtual Machine (JVM)  CLR loads modules containing executable and executes their code  Code might be managed or unmanaged  In either case the CLR determines what to do with it  Managed Code consists of instructions written in a pseudo-machine language called common intermediate language, or IL.  IL instructions are just-in-time (JIT) compiled into native machine code at run time
  • 9.
    9 Compiling and executingmanaged code Source Code Language Compiler Microsoft Intermediate Language (MSIL) Compilation JIT Compiler Native Code The first time each method is called Execution
  • 10.
  • 11.
    11 .NET languages  Over20 .NET-compatible languages  Most are provided by 3rd parties  .NET languages provided by Microsoft  C++  Visual Basic  C#
  • 12.
    12 Language Compiler List AdaAda  APLAPL  Basic (Visual Basic)Basic (Visual Basic)  C#C#  CC  C++C++  JavaJava  COBOLCOBOL  Component PascalComponent Pascal (Queensland U Tech)(Queensland U Tech)  ECMAScript (JScript)ECMAScript (JScript)  EiffelEiffel (Monash U.)(Monash U.)  Haskell (Utrecht U.)Haskell (Utrecht U.)  lcclcc (MS Research Redmond)(MS Research Redmond)  Mondrian (Utrecht)Mondrian (Utrecht)  MLML (MS Research Cambridge)(MS Research Cambridge)  MercuryMercury (Melbourne U.)(Melbourne U.)  OberonOberon (Zurich University)(Zurich University)  Oz (Univ of Saarlandes)Oz (Univ of Saarlandes)  PerlPerl  PythonPython  Scheme (Northwestern U.)Scheme (Northwestern U.)  SmallTalkSmallTalk
  • 13.
    13 Why C# ? Unofficially: because Sun owns Java  Important features are spread out over multiple languages  Example: do you think developers should have to choose between pointers (C++) or garbage collection (Java)?  Old languages + new features = poor syntax  Garbage collection in C++?  Event-driven GUIs in Java?  Increase developer productivity!  Type safety  Garbage collection  Exceptions
  • 14.
    14 The safety ofJava  100% object oriented  Automatic garbage collection  Array bounds checking at runtime  Strict type checking  Structured exception handling
  • 15.
    15 The ease ofVisual Basic  First class support for properties  First class support for events  foreach loops
  • 16.
    16 The power ofC++  Enumerations  Operator overloading  Mathematical, Indexing, and Casting  Function pointers  Called “delegates”  Type safe  Structs
  • 17.
    17 The power ofC++  Option to pass parameters by reference or by value  Can disable type-safety, garbage collection, and bounds checking  Can directly manipulate memory with pointers
  • 18.
  • 19.
    19 Basic Truths  J2EE Java-centric and platform-neutral  J2EE is not a product you buy from Sun.  J2EE is a set of specifications which indicate how various J2EE functions must interoperate  If I don’t buy J2EE from Sun, how does Sun make money?  J2EE 1.4 released with features to completely support web services – JAX-RPC 1.1 API, J2EE Management 1.0 API, web service endpoints etc. (Hard to learn, hard to implement!)
  • 20.
    20 Basic Truths  .NET Windows-centric and language-neutral  .NET is a Microsoft product strategy that includes a range of products from development tools and servers to end-user applications.  Platform-neutral version of .NET is available Mono –Novell-sponsored, open source implementation of the .NET development environment ( http://www.go-mono.com )
  • 21.
  • 22.
    22 .NET and Java:application platforms  .NET  The .NET Framework  Java  Java application servers  Products include:  IBM WebSphere Application Server  BEA WebLogic Application Server  Sun iPlanet Application Server  Oracle Application Server  Many others
  • 23.
    23 .NET vs. Java:standard libraries  .NET Framework class library  Defined by Microsoft  Somewhat Windows-oriented  Organized into a hierarchy of namespaces  J2SE, J2EE  Defined by Sun and the Java Community Process  Not bound to any operating system  Defined as packages and interfaces
  • 24.
    24 .NET Class Library IO  GUI Programming  System Information  Collections  Components  Application Configuration  Connecting to Databases (ADO.NET)  Tracing and Logging  Manipulating Images/Graphics
  • 25.
    25 Class Library  Interoperabilitywith COM  Globalization and Internationalization  Network Programming with Sockets  Remoting  Serialization  XML  Security and Cryptography  Threading  Web Services
  • 26.

Editor's Notes

  • #4 The term .NET covers a lot of bases. The official marketing line from Microsoft can be seen on the slide here. Pretty vague don’t you think? I’d define it more succinctly as xxx. To you and me, as software developers, I would consider the above to be a good definition of the .NET framework. Not that it allows both standalone windows applications and distributed applications. You can guess which you’ll be building most, as nearly everything has some distributed component these days. Notice I also say Internet. That’s because .NET has embraced internet standards and protocols in a big way. This essentially means web services standards such as SOAP are used a lot. Although you can use your own protocols in your distributed applications using .NET. So, what does this platform offer us to develop with?
  • #5 Component oriented development has long been recognised as a sensible way of doing large scale development. So little commercial and indeed academic development is done from scratch, we all use other people’s code in some way or another, be it class libraries that come with dev envs, or purchased fro msome vendor, or that we wrote ourselves. Microsoft went a good deal of the way to realising true component oriented development with it’s COM technology…