Title: .NET Fundamentals
1.NET Fundamentals
2Introduction
- Chip Schopp
- www.pondviewsoftware.com
- chipschopp_at_comcast.net
- (978) 779-5126
3Class Schedule November 6, 2003
- Introductions and other beginning stuff
- Review Class Syllabus / Class Goals
- Class Dates
- Introduction to .NET
- Introduction to C
- Class Exercise(s)
- Homework Assignment
4.Net FundamentalsCT-186
5Text Books
- Applied .NET Framework Programming by Jeffrey
Richter - Programming C by Jessie Liberty
6Grades
- 5 take-home assignments (75)
- Final Exam (part of last class) (25)
7Prerequisites
- Fundamental of Programming (CT100)
- or
- by permission of the instructor.
8Class Goals
9Class Goals
- Provide an overview of the .NET Architecture with
Major Components - Programming Languages
- ADO.NET
- ASP.NET
- Web Services
- XML Integration
10Class Goals
- Understand the .NET Frameworks as an Object
Oriented Strongly Typed Computing Environment
11Class Goals
- Work with various .NET Framework components
- Common Language Runtime (CLR)
- .NET Framework Class Library (FCL)
- Assemblies
- Strong Names
- The Global Assembly Cache (GAC)
- Using the GACUTIL
12Class Goals
- Introduction to the C Programming Language
13Course Schedule
Week Topics
1 Introduction to .NET Framework, C
2 Basic C Windows Forms Programming
3 Types, Objects, and Classes in .NET
4 .NET ADO and XML
5 Exceptions, Intro to ASP.NET, Assemblies
6 Web Services, Final Exam
14Class Dates
- Class Dates ( 6, 7, or 8 classes ?)
- November 6, 13, 20 December 4, 11, 18
- November 27, Thanksgiving, no class
- Other possible dates
- Monday November 24th
- Monday December 1st
- Monday December 8th or Tuesday December 9th
- Monday December 15th or Tuesday December 16th
- Or ?
15Effective Learning
- First is Doing
- Class exercises
- Coaching
- Helping each other
- Homework
- Second is Discussing
- Class discussions
- Asking questions
- Sharing ideas and information
- Last is Listening
16Learning Environment
- Learn something ? Write some code
- Homework Assignments
- Write some code
- Programming is Fun!
17The only dumb questions are the ones not asked!
18Time to Address Open Questions
- Begin each class with a time for questions
- Questions left open from previous classes
- Questions emailed to me during the week
- Questions triggered by the homework
- Or other ???
19Your introductions
- Programming background
- Operating systems, languages
- Any exposure to .NET ? Other courses ?
- What do you expect to get out of this course ?
20Please email me the following
- Full Name, Nick Name, Student ID
- Home Phone / Work Phone
21Email Address (s) email gives me one
- Your background in computing/programming
- Any experience with .NET, other courses, ?
- Your objective or goals for this course
- Any material you have a special interest in
covering? - Any issues or questions that you have?
- Additional dates you can attend classes on.
22(No Transcript)
23What Is the Microsoft .NET Framework?
- The Microsoft .NET Framework is an important new
component of the Microsoft Windows family of
operating systems. It is the foundation of the
next generation of Windows-based applications
that are easier to build, deploy, and integrate
with other networked systems.
24The .NET Initiative
- To create rich applications, businesses must
offer a programmatic interface to their business
logic services which must be callable
remotely using a network like the Internet.
Simply stated, the .NET initiative is about
connecting information, people and devices - - Jeff Richter
25What Is the Microsoft .NET Framework?
- Most consumers will never notice that the .NET
Framework is running on their Pocket PC,
smartphone, or desktop computer. But they may
appreciate the reliability, ease of use, and
ability to connect to other systems that the .NET
Framework helps bring to computers.
26What Is the Microsoft .NET Framework?
- The .NET Framework helps software developers and
systems administrators more easily build and
maintain systems with improvements toward
performance, security, and reliability. Here's
how.
27A New Approach to Building Windows Software
- The .NET Framework simplifies Windows software
development. It provides developers with a single
approach to build both desktop applicationssometi
mes called smart client applicationsand
Web-based applications. It also enables
developers to use the same tools and skills to
develop software for a variety of systems ranging
from handheld smartphones to large server
installations.
28A New Approach to Building Windows Software
- Software built on the .NET Framework can be
easier to deploy and maintain than conventional
software. Applications can be designed to
automatically upgrade themselves to the latest
version. The .NET Framework can also minimize
conflicts between applications by helping
incompatible software components coexist.
29Benefits of the .NET Framework
- Helps IT professionals better integrate existing
systems with its native support for Web services.
- Assists with the deployment of software to both
users and Web servers. - Facilitates the development of software with
improved reliability, scalability, performance,
and security.
30Helps developers be more productive by
- Making it easier for them to reuse existing code.
- Enabling them to more easily integrate components
written in any of the more than 20 supported
programming languages. - Helping them more easily build software for a
wide range of devices using same skills and tools.
31The Development Environment Visual Studio.NET
- Finally , Visual Studio truly becomes an
Integrated Development Environment, with
multi-language development. - Runs on Windows 2000, NT, XP and the .NET server
family. - Support for building 32 and 64 bit applications
- Usual gamut of wizards, debuggers, linkers
- Plenty of good documentation
- Free .NET Framework SDK compilers, tools,
documentation
32The Development/Runtime platform the .NET
Framework
- The new runtime environment in .NET
- Provides a set of base classes for developers to
build on - A unified type system to allow language
inter-operability - This course deals with the fundamentals of
programming this framework
33To summarize, .NET is
- An OS platform
- The .NET Enterprise Servers.NET building block
services - .NET Device Software
- The Development Environment Visual Studio.NET
- The Development/Runtime platform the .NET
Framework
34The .NET Framework
- Think of what device drivers do in terms of
abstracting access by an application
Application
Windows
Scanner Driver
Mouse Driver
35The .NET Framework
- If we abstract the underlying OS in the same way
Application
.NET Framework
Windows 2000
Windows XP
FreeBSD UNIX
36The .NET Framework
- The .NET Framework introduces a layer of
abstraction (and obviously, some overhead) to the
OS as we currently know it. - Is this reason enough to move to it ? Lets look
at the state of Windows development without .NET
37The current state of affairs
- Win32/C programming
- Fairly low-level, not object oriented,
interoperability with other languages is hard,
memory leaks an issue. - C/MFC programming
- Large language, complex idioms, prone to abuse,
interoperability with other languages and other
C implementations still hard, memory leaks
still an issue - Visual Basic programming
- Object aware, but not object oriented.
- Interop with other languages possible, but ugly.
38The current state of affairs
- COM programming
- Allows you cross language integration at the
binary level. - Interface based programming encouraged
- Fairly complex to understand and set up
- Deployment is registry based, fairly fragile.
- Distributed COM was notoriously hard to set up
because of the security issues involved - A Microsoft-only solution
- Java programming
- Great language, but no cross language
integration. - Interpreted byte-code did have performance issues
39The current state of affairs
- Into the mix just discussed, throw in JavaScript,
ASP, HTML, DHTML - Everything we just talked about has its own
runtime engine/environment, its own set of
libraries and its own set of development tools. - In a highly connected world, our solutions need
to span languages, machines and network
boundaries.
40What the .NET Framework gives us
- Consistent programming model
- A simple OO programming model
- Application component isolation
- Newer versions can be installed safely
- Goes a long way in helping improve DLL Hell
- Simplified installation model
- Xcopy, no registry entries
- Uninstalls involve just deleting files/folders
- Shared components easier to install than COM
components
41What the .NET Framework gives us
- Multi-platform support
- The fact that the OS is abstracted away, with
code compiled to an intermediate language makes
this possible - Cross language integration
- This is in contrast with COMs cross-language
interoperation. Types can be used between
languages. - This also makes cross language debugging
possible. - Automatic memory management
- Reduces the incidence of memory leaks . The
Visual Basic runtime has done this for sometime,
but it is now available to all languages
42What the .NET Framework gives us
- Code verifiability
- Rich type information gives us the ability to
check that code is operating safely - e.g. Buffer overflows prevented.
- Consistent error handling mechanism
- Exceptions used instead of error codes and
HRESULTS - Exceptions have to be handled cannot ignore
them - Code security
- Signing allows the runtime to verify that code
has not been tampered with. - Code access security associates permissions with
code.
43(No Transcript)
44Basic Components of the .NET Framework
- The .NET Framework consists of two main parts
- common language runtime
- .NET Framework class library
45The heart of the Framework
- The most important elements of the franework are
- The Common Language Runtime (CLR)
- The Framework Class Libraries (FCL)
WinForms
ASP.NET
Framework Class Library
Base
Data
XML
Common Language Runtime
OS Services
46Common Language Runtime
- Provides the common services for .NET Framework
applications. - Programs can be written for the common language
runtime in just about every language, including
C, C, C, and Microsoft Visual Basic, as well
as some older languages such as Fortran. - The runtime simplifies programming by assisting
with many mundane tasks of writing code,
including memory managementwhich can be a big
generator of bugssecurity management, and error
handling.
47Common Language Runtime (CLR)
- Locates, loads and runs code written in
runtime-aware languages. - Handles object creation, memory management,
making method calls, enforces code security and
provides a process abstraction. - Code that targets the CLR is called managed code,
while code that uses the native OS services
directly is called unmanaged code. - Languages that can produce managed code (or .NET
programming languages) - C, VB.NET, VC with managed extensions, Fujitsu
COBOL.NET, Jscript.NET, Eiffel, Python, Perl
48Managed Module
- A Managed Module is a standard windows portable
executable (PE) file that requires the CLR to
execute.
49Managed Code
- Code executed and managed by the Microsoft .NET
Framework, specifically by the .NET Framework's
common language runtime. - Managed code must supply the information
necessary for the common language runtime to
provide services such as memory management,
cross-language integration, code access security,
and automatic lifetime control of objects. - All code based on Microsoft Intermediate Language
executes as managed code.
50.NET Framework Class Library
- The library includes prepackaged sets of
functionality that developers can use to more
rapidly extend the capabilities of their own
software. The library includes three key
components - o ASP.NET to help build Web applications and Web
services. - o Windows Forms to facilitate smart client user
interface development. - o ADO.NET to help connect applications to
databases.
51Framework Class Library (FCL)
- Provides base class libraries available to all
.NET programming languages. - Access to primitive types, file I/O, graphical
rendering, crypto, GUI, XML support, etc. - Think of the CLR as abstracting the underlying OS
(e.g. Windows), and the FCL as abstracting the OS
libraries. (e.g. Win32)
52Platforms the CLR runs on
- Windows 98, Windows 98 SE, Windows Me
- Windows NT 4.0 with SP 6.0a or greater
- Windows XP family
- Windows .NET Server (Whistler)
- Windows PocketPC 2002 (with the .NET Compact
Framework). - FreeBSD Unix (Rotor)
- Linux (Ximians Mono)
53(No Transcript)
54An introduction to C
- C is a language that was developed by Microsoft
specifically targeted for the .NET platform.
55C Features
- No pointers
- Automatic memory management
- Completely object-oriented
- Supports interface-based programming
- Both implementation inheritance and interface
inheritance supported - Support for overloaded operators
- Support for aspect-based (attribute-based)
programming - Can only produce managed-code
56Lets try a simple program.
57- Create a Working Directory
- mkdir k\week1\hello
- Copy corvars.bat
- copy
- c\Program Files\Microsoft Visual
Studio.NET \FrameworkSDK\bin\corvars.bat - k\week1\hello\corvars.bat
- Set up environment, run covars.bat
- Cd k\week1\hello
- Type corvars.bat lthit returngt
58Open notepad, create the following file and save
it in the k\week1\hello directory as hello.cs.
- class Hello
-
- static void Main()
-
- System.Console.WriteLine("Hello World")
-
59- Compile the program
- k\week1\hellogtcsc Hello.cs
- Run the program
- K\week1\hellogtHello.exe
- K\week1\hellogt Hello World
60(No Transcript)
61C.NET Language Basics
- Types in C
- Defining integer types
- A Bit About Strings
- Reading From and Writing To The Console
- If Then Statement
- Looping The For Next Statement
62Primitive Types
C Type .NET Framework type
bool System.Boolean
byte System.Byte
sbyte System.Sbyte
char System.Char
decimal System.Decimal
double System.Double
float System.Single
63Primitive Types (contd.)
int System.Int32
uint System.UInt32
long System.Int64
ulong System.UInt64
object System.Object
short System.Int16
ushort System.UInt16
string System.String
64A word on types
- All types in .NET derive from System.Object
- They are provided implementations of ToString()
and GetType() - To get a string with the type of any variable,
you can call ltvargt.GetType() - Whenever you call Console.WriteLine(obj) the
ToString() method on obj is implicitly called.
The default ToString implementation for classes
simply returns the name of the class.
65What Are Integers
- 0, 432, -5, 10000000, -10000000
- Integers are whole numbers
- Integer variables are stored as signed 32-bit
(4-byte) integers ranging in value from
-2,147,483,648 through 2,147,483,647.
66Defining Integers
- int i
- int i, j, k
- int i 12
- j i ? j is now equal to 12
- i 15
- k i j ? k is equal to 27
- To write an Integer, convert it to a String
using - k.ToString()
67A Bit About Strings
68What are strings?
- abcdef Abcdef aBcdEf A23-/789 q
- John J. Smith
- How do you do?
- 123 South Street, Calais, ME 04235
- Are we there?
- ? an empty string
69How do we define strings?
- string strTmp
- strTmp time will tell
- string strTmp time will tell
- strTmp Console.ReadLine()
- string strTmp2
- strTmp2 strTmp
- strTmp2 ? time will tell
70Concatenating Strings
- string strCity Calais
- string strState ME
- string strZip 04270
- string strLoc
- strLoc strCity , strState
strZip - strLoc ? Calais, ME 04270
71Some String Functions
- string strTmp
- strTmp.Trim() removes leading and trailing
spaces - strTmp.ToUpper() converts string to all upper
case - strTmp.ToLower() converts string to all lower
case - strTmp.Length returns string length as an
integer - strTmp.SubString() extracts a substring
72String Function Examples
- string strTmp Hello World
- strTmp.Trim()
- strTmp ? Hello World
- string strTmp Hello World
- strTmp.ToLower() ? hello world
- strTmp.ToUpper() ? HELLO WORLD
73String.Length Function
- string strTmp
- strTmp in the beginning
- The value of strTmp.Length is 16.
- int i
- i strTmp.Length
- The value of i is 16.
74String.SubString() Function
- String.Substring(startIndex , length )
- Parameters (are Integers)
- startIndex Where the substring starts.
startIndex is zero-based. - length The number of characters in the
substring.
75Substring Examples
- string strTmp
- strTmp around the world
- strTmp.Substring(0,6) ? around
- strTmp.Substring(11,5) ? world
- strTmp.Substring(0,strTmp.Length)
- ? around the world
76Writing to the Console
- Console.WriteLine(String) write with line return
- Console.WriteLine(Hi There)
- C\gtHi There
- C\gt
- Console.Write(String) write with no line
return Console.Write(Hi There) - C\gtHi There
77Reading from the Console
- Console.ReadLine() returns a string
- string tmp
- Console.Write(What is your name? )
- tmp Console.ReadLine()
- Console.WriteLine(Hi tmp)
- C\gtWhat is your name? Chip
- C\gtHi Chip
- C\gt
78if Statement
- if (some condition is true)
-
- do something in here,
- using one or more lines of code
-
-
79What is difference between and ?
- is for assignment of value
- String tmpString Hello world
- int i 12
- is for equivalence
- if (str1 str2) some code
- if (str.Length 0) some code
- if (str1 ! end) some code
80Sample if Statement
- string strInput
- strInput Console.ReadLine()
- if (strInput )
-
- Console.WriteLine(Input required.)
-
-
81The For Loop
82A Simple For Loop
- int i
- for (i 1 ilt10 i)
-
- Console.WriteLine("The value of i is "
i.ToString()) -
- The Value of i is 1
- The Value of i is 2
- The Value of i is 3
-
- The Value of i is 9
- The Value of i is 10
83Or You Could Reverse It
- int i
- for (i 10 igt0 i--)
-
- Console.WriteLine("The value of i is "
i.ToString()) -
- The Value of i is 10
- The Value of i is 9
- The Value of i is 8
-
- The Value of i is 2
- The Value of i is 1
84To Walk Through a String
- string tmp hello world
- for (int k 0 klt tmp.Length-1k)
-
- Console.WriteLine(tmp.Substring(k,1))
-
85To Walk Through a String Backward
- string tmp "hello world"
- for (int k tmp.Length-1kgt-1k--)
-
- Console.WriteLine(tmp.Substring(k,1))
-
86What About?
- What If We Want To Enter More Data?
- What If No String Is Entered?
- What If The Entered String Is Too Long?
- How Do We Know When We Are Done?
-
87What If We Want To Enter More Data?
- Labels
- A Label is Defined with a Colon ?
ReturnHere - goto Statements
- goto Statements Direct Program Flow To A
Label - goto ReturnHere
- GoTo Statements are Evil and High Risk!!!
88What If No String Is Entered?
- Checking for a zero length string.
- if (tmpStr.Length 0)
-
- Console.WriteLine(No String Entered)
- goto ReturnHere
-
- Note You could also check for tmpStr
89What If The Entered String Is Too Long?
- Lets only work with strings up to 10 characters
- if (strTmp.Length gt 10)
-
- strTmp strTmp.SubString(0,10)
-
90How Do We Know When We Are Done?
- Lets check for the string end to end the
program - if (strTmp end)
-
- return
-
- Note return tells the program to exit the
subroutine, which in this case will end the
program.
91Comments in C
- Both / / and // can be used for comments.
- VS provides comment/uncomment selections.
- Use the menu bar, or Ctrl-K Ctrl-C for comment
and Ctrl-K Ctrl-U for uncomment
92(No Transcript)
93Now lets redo hello.cs as a Visual Studio
project.
94Visual Studio.NET
- The newest version of Visual Studio
- Multiple language development finally in one
environment. - Can program in
- Visual C
- Visual Basic.NET
- Visual C.NET
- Can build
- Desktop console and GUI applications
- Web services
- ASP.NET Web applications
- Mobile applications
95To get Visual Studio.NET
- You need to purchase either
- An MSDN subscription
- A copy of Visual Studio.NET
- Academic editions are available (in or through
the bookstore ?)
96Visual Studio.NET
- Start up Visual Studio.NET
- Open a new project by either
- Clicking on the New Project button on the Start
Page OR - File-gt New-gt Project from the Menu Bar
- In Visual C Projects, create a Console
Application - Implement the Main() method
- Notice you now have IntelliSense
- Add the Console.WriteLine line of code.
- Compile using the Build menu.
- Run using the Debug menu
97Your code should look like this
using System namespace HelloVS ///
ltsummarygt /// Summary description for App. ///
lt/summarygt class App /// ltsummarygt ///
The main entry point for the application. ///
lt/summarygt STAThread static void
Main(string args) System.Console.WriteLin
e("Hello World")
98Class Exercise (time permitting)
- Using the Visual Studio.NET write an interactive
console program to accept information from the
keyboard and then format and display the
information back. It might be a persons name
and address or a variable list of favorite pets
including name and type of animal or whatever.
Focus on formatting the data, looping to accept
multiple entries, testing for missing information
and also testing for an at end condition. A
sample, somewhat simplified example is in the
Class Collections zip file on the web (i.e.
www.PondviewSoftware.com).
99(No Transcript)
100Homework Part 1
- Send Me An Email ? ChipSchopp_at_comcast.net,
include the following - Full Name, Nick Name, Student ID
- Home Phone / Work Phone
- Email Address (s) email gives me one
- Your background in computing/programming
- Any experience with .NET, other courses, ?
- Your objective or goals for this course
- Any material you have a special interest in
covering? - Any issues or questions that you have?
- Which additional dates you would attend classes
on.
101Homework Part 2
- C.Net Programming
- Homework Assignment Week 1
- Assignment Due November 13, 2003 530 PM
-
-
102Write a C.NET Console Application, which
performs the following
- Accepts a first name string, a middle name
string, and a last name string from the console.
The first name and last name are required. The
middle name is optional. - Concatenates the two or three fields together
creating a full name string. - Truncates the full name to 20 characters if the
length of the full name is longer than 20
characters. - Provides the capability of displaying the full
name either vertically or horizontally and
forward or backward as desired. - Allows the full name field to be displayed in
either of these four ways as many times as
desired. - Allows the user to go back to the top and start
over, entering a new name. - Terminates gracefully.
- Note
- There was enough information discussed in
todays class to complete this assignment. Feel
free to use any additional commands, structures,
or functions you wish.
103(No Transcript)