02 Development

  • Uploaded by: api-19624280
  • 0
  • 0
  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View 02 Development as PDF for free.

More details

  • Words: 1,095
  • Pages: 29
2. Developing in .NET and C#

Objectives “Microsoft .NET development is based on an underlying framework of tools and classes. These tools and classes are known as the Framework SDK (Software Development Kit).”

• • • •

.NET development options Brief summary of C# Class-based development Component-based development

Microsoft

2

Part 1 •

.NET development options…

Microsoft

3

Recall assemblies •

1 assembly = 1 or more compiled classes – .EXE represents an assembly with classes + Main program – .DLL represents an assembly with classes code.vb code.vb code.cs

Development Tools

.EXE / .DLL

assembly Microsoft

4

.NET development •

There are currently 3 ways to develop assemblies: 1) .NET Framework SDK • free (100 MB) • complete set of command-line tools and docs • available for Windows NT, 2000, XP Pro, 2003 • http://msdn.microsoft.com/net • other platforms? – FreeBSD / Mac OS X via Rotor (i.e. SSCLI) – Linux via Mono project

Microsoft

5

Development options, cont'd 2) Visual Studio .NET • 5-6 CDs, 192 MB RAM (bare minimum) • powerful, integrated development environment (IDE) • one IDE for all: GUI, web-based, web service, DLLs, etc. • this is what 99% of the world uses • $$ – MSDNAA reduces cost to $800/year for unlimited access

3) free IDEs • #develop, a simplified clone of VS.NET • WebMatrix, for building web-based applications

Microsoft

6

Hello World in C# •

Here's the source code: /* hello.cs */ public class Startup { public static void Main() { System.Console.WriteLine("Hello World!"); } }//class hello.cs

Microsoft

7

Why System.Console prefix? • •

In .NET, all code & data must live within a module / class Often nested within namespaces to help organize things – a namespace is really just a named collection



Example: System.Console.WriteLine("Hello World!"); System namespac e in FCL

Microsoft

Consol e class WriteLine subroutin e

8

Compiling and running • To compile C# with Framework SDK, use the C# compiler – open Visual Studio .NET command prompt window to set path – csc is the command-line C# compiler – use /t:exe option to specify console-based EXE as target c:\> csc /t:exe hello.cs Microsoft (R) Visual C# .NET Compiler version 7.00.9466 for Microsoft (R) .NET Framework version 1.0.3705 Copyright (C) Microsoft Corporation 2001. All rights reserved. c:\> hello.exe Hello World!

• To run, simply use name of assembly… Microsoft

9

Viewing an assembly with ILDasm • •

IL = Microsoft's Intermediate Language (i.e. generic asm) ILDasm = IL Disassembler

c:\> ildasm hello.exe

Microsoft

10

IL? •

Very similar to Java bytecodes: – generic assembly language – stack-based – strictly typed – no direct memory addressing – verifiable for safe execution

Microsoft

11

Part 2 •

Development on FreeBSD…

Microsoft

12

Development on FreeBSD •

Working on FreeBSD is exactly the same! – i.e. same command-line tools as Framework SDK – produces *binary-compatible* .DLL and .EXE files!

Microsoft

13

Part 3 •

Brief summary of C#...

Microsoft

14

C# • • • • • •

Case-sensitive Strict type-checking Operator and method overloading Single public inheritance; any number of interfaces All classes inherit from object; classes may be nested Garbage-collected

• Multiple classes may exist in one file • Multiple files may be compiled into one assembly • Each assembly typically written in one language

• When in doubt, think Java! Microsoft

15

Part 4 •

Class-based development…

Microsoft

16

A customer class •

Here's the source code for a simple Customer class: /* customer.cs */ public class Customer { public string Name; public int ID;

// fields

public Customer(string name, int id) { this.Name = name; this.ID = id; } public override string ToString() { return "Customer: " + this.Name; } }//class Microsoft

// constructor

// method

17

Main class •

Here's the source code for Main, using our Customer class: /* main.cs */ public class App { public static void Main() { Customer c; c = new Customer("joe hummel", 94652); System.Console.WriteLine( c.ToString() ); } }//class

Microsoft

18

Compiling and running application •

Compile and run as before… – /out: option specifies name of resulting EXE – in this case we are building monolithic app (single EXE, no DLLs)

c:\> csc /t:exe /out:app.exe main.cs customer.cs Microsoft (R) Visual C# .NET Compiler version 7.00.9466 for Microsoft (R) .NET Framework version 1.0.3705 Copyright (C) Microsoft Corporation 2001. All rights reserved. c:\> app.exe Customer: joe hummel

Microsoft

19

Part 5 •

Component-based development…

Microsoft

20

Example •

Let's rebuild previous app based on components – Customer class ==> DLL – Main class ==> EXE

customer.cs

main.cs

app.exe

Microsoft

+

customer.dll

21

Compiling a component •

Use the C# compiler… – with /t:library option to specify component library as target – csc produces a DLL in this case

c:\> csc /t:library customer.cs Microsoft (R) Visual C# .NET Compiler version 7.00.9466 for Microsoft (R) .NET Framework version 1.0.3705 Copyright (C) Microsoft Corporation 2001. All rights reserved. c:\> dir *.dll customer.dll

Microsoft

22

Compiling and running application • Compile using C# compiler as before, except… – reference component so compiler can locate Customer class! – reference also stored inside assembly so CLR can locate c:\> csc /t:exe /out:app.exe main.cs /r:customer.dll Microsoft (R) Visual C# .NET Compiler version 7.00.9466 for Microsoft (R) .NET Framework version 1.0.3705 Copyright (C) Microsoft Corporation 2001. All rights reserved. c:\> app.exe Customer: joe hummel

• To run, use name of assembly containing Main… – CLR follows reference to locate DLL Microsoft

23

Where are references stored? • •

Within assembly as part of assembly manifest Visible via ILDasm

c:\> ildasm app.exe

Microsoft

24

mscorlib? • •

mscorlib = "ms-core-lib" Core FCL assembly – contains core system classes like string – contains System.Console class for console-based I/O



Automatically referenced for us by C# compiler…

Microsoft

25

Recall CLR-based execution •

All assemblies must be present: .DLL .DLL .DLL

.EXE

OS Process other FCL assemblies

JIT Compiler

obj code obj code obj code obj code

Core FCL assembly

CLR Underlying OS and HW Microsoft

26

Summary •

.NET is multi-language – Framework SDK based on C# and VB.NET – lots of other languages available



.NET development is component-based – helper classes implemented in one or more DLLs – EXE implemented using helper classes – if (assembly A uses a class from assembly B) then A must reference B!

Microsoft

27

References • Books: – J. Richter, "Applied Microsoft .NET Framework Programming" • Web sites: – http://msdn.microsoft.com/net – MSDNAA: http://www.msdnaa.net/ – Rotor (SSCLI): http://msdn.microsoft.com/net/sscli – Mono: http://www.go-mono.com/ – Free IDEs: • http://www.icsharpcode.net/OpenSource/SD/default.asp • http://www.asp.net/webmatrix/ – Anakrino reverse-engineering tool: • http://www.saurik.com/net/exemplar/ Microsoft

28

Lab? •

Work on lab #1, "Architecture"…

Microsoft

29

Related Documents