+ All Categories
Home > Documents > Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, [email protected] COMPSCI...

Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, [email protected] COMPSCI...

Date post: 19-Dec-2015
Category:
Upload: gregory-park
View: 212 times
Download: 0 times
Share this document with a friend
Popular Tags:
18
Getting Started with Microsoft Visual Studio, .NET and C# Jim Warren, [email protected] COMPSCI 280 S2 2014 Enterprise Software Development
Transcript
Page 1: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Getting Started with Microsoft Visual Studio, .NET and C#Jim Warren, [email protected]

COMPSCI 280 S2 2014Enterprise Software Development

Page 2: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Welcome (to this part of 280)! Your lecturer: Jim Warren

[email protected] x86422 Office: Tamaki 723-318 Office hours: by arrangement (try email first, and we’ll

start an FAQ for assignment 2) These 3 weeks will provide you skills to

create .NET MVC (model-view-controller) applications (a way of making websites) and to connect them to an underlying database There’s a lab sheet for each week to walk through

programming methods The tutor will also reinforce the topics from lecture

Handout 01COMPSCI 2802

Page 3: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Assignment 2 Create an MVC application

Handles viewing and updating of a database Does database connection, query and update from C# Creates HTML form interaction in the MVC framework Includes validation of user input

Assignment spec on course website Due noon Friday (before class!) on week 8 (26th

September) Worth 5% of course mark

Do lab sheet 1 and then get into the assignment before the break!

Handout 01COMPSCI 2803

Page 4: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Today’s learning objectives To be introduced to the .NET framework,

including Visual Studio and C# To be able to describe characteristics of the

Common Language Runtime To be able to describe the general characteristics

of the MVC paradigm and its rationale

Handout 01COMPSCI 2804

Page 5: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Visual Studio (VS) For Assignment 2, we will use Visual Studio to do our

application programming What is Visual Studio?

Visual Studio is an example of an "Integrated Development Environment" (IDE)

Think of an IDE as an application that combines code editor, compiler, debugging and other tools that make the design, maintenance, and documentation of large projects easier

Why an IDE? Remember how our Java projects already consisted of multiple files

for different classes? This is characteristic for large projects In MVC applications we’ll see that we have many types of files (for

‘M’, ‘V’, and ‘C’, and various aspects of the website template, system configuration and helper functions)

VS lets us manage these features and content in a convenient way

Handout 015 COMPSCI 280

Page 6: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Visual Studio and C# Helpful background reading

Visual Studio from the Microsoft Developer Network (MSDN) http://msdn.microsoft.com/en-us/library/dd831853.aspx

(and particularly the Application Development in Visual Studio link).

C# introduction http://msdn.microsoft.com/en-us/library/aa645597(v=vs.71).aspx

VS supports multiple languages (C#, C++, Visual Basic, J#) in the one IDE All with nearly identical functionality and performance because the use

a common core VS produces many types of applications

‘Console’ (processing with text interaction), Windows, Web, mobile

It can also integrate with Microsoft Office applications (Word, Excel, etc.)

Handout 016 COMPSCI 280

Page 7: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

.NET Languages All Visual Studio .NET languages are object-oriented

True inheritance and polymorphism are supported No matter the language, all programs have a similar

structure Note that if you've done VB 6 in the past - the language has

changed considerably! C# (C-sharp) is relatively a new language

With syntax similar to C++, but also borrowing a lot of ideas from Java

Visual J# is also a new language with syntax similar to Java

File structure is similar for all languages Files are grouped into projects

All programs compiled into Common Intermediate Language (CIL) Also known as Microsoft Intermediate Language (MSIL)

Handout 017 COMPSCI 280

Page 8: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

The .NET Framework The .NET Framework define the rules for language

interoperability and how an application is compiled into executable code.

It is also responsible for managing the execution of an application created in any VS .NET language.

The .NET Framework has two main components: the common language runtime (CLR) and the .NET Framework class library. CLR

Manages memory, thread execution, code execution, code safety verification, compilation, and other system services Memory allocation, starting up and stopping processes

The .NET Framework class library Provides developers with a unified, object-oriented,

hierarchical and extensible set of class libraries (‘application programmer interfaces’, APIs)

Handout 018 COMPSCI 280

Page 9: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Execution Management The managed execution process includes the following steps:

Choosing a compiler Compiling, code -> CIL/MSIL

Compiling translates the source code into CIL and generates the required metadata (this package is an ‘assembly’ (e.g. a DLL is an assembly) The format is similar to assembly language but is hardware independent

Compiling, CIL -> native code A just-in-time (JIT) compiler translates the assembly into native code (or

runs it in a virtual machine) Conceptually, the process is similar to the Java Virtual Machine

Running code The CLR provides the infrastructure that enables managed execution to

take place as well as a variety of services that can be used during execution.

Handout 01COMPSCI 2809

Source code

Language Specific Compiler

Language Specific Compiler

EXE/DLL(CIL and metadata)

Compiling Running Engine

JIT Compiler

NativeCode

Execution

Page 10: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Garbage Collection The CLR performs memory management

It manages the allocation and release of memory for an application Automatic memory management can eliminate common

problems, such as forgetting to free an object and causing a memory leak,

(common problems in C and C++ that lack garbage collection!) or attempting to access memory for an object that has already been freed.

A contiguous area of memory allocated to a process is called the managed heap Reference types are allocated from the managed heap

The CLR reclaims memory using the Garbage Collector (GC) The GC examines variables to reclaim unused memory

It looks for memory without a corresponding variable (root)

Handout 0110 COMPSCI 280

Page 11: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Namespace Physical assemblies are organized into logical

components called namespaces Namespaces are organized into a hierarchy Microsoft has divided VS .NET into two primary

namespaces: The System namespace contains components developed by

the .NET team The Microsoft namespace contains components developed by

Microsoft but outside of the .NET development team Common Namespaces:

The ‘System’ namespace contains fundamental classes System.Data namespace contains classes supplying data access

capabilities

As compared to e.g. Microsoft.Media.AdaptiveStreaming Namespace (we’ll mostly use parts of the System namespace)

You’ll create namespaces for your own content (e.g. the data ‘model’ in your MVC application)

Handout 0111 COMPSCI 280

Page 12: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

Creating a Console Application with VS

Open Visual Studio (note I’m using VS 2012 – a few features get added most years, but mostly it stays the same) To create a new project called HelloWorldApp

Choose File->New Project Select the project type: Visual C# Select the project template: Console Application Enter a name, Select a save Location and enter solution Name Select Create directory for solution Click OK – a program skeleton with a Main method that appears in the

editor Insert the following code:

Note: The Main method is the entry point of your program, where the program

control starts and ends Insert Console.ReadLine() to the Main method which causes the program

to pause until ENTER is pressed To run your application

Press F5 to run the application, or Click the ‘Start’ button (with the green triangle [‘play’]

icon)Handout 03COMPSCI 28012

Console.WriteLine("Hello World"); Console.ReadLine();

You could also create a Windows Forms Applications and might

useMessageBox.Show("Hello,

world!");

Page 13: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

The Model-View-Controller approach

MVC is an architectural pattern Well, it’s ‘architectural’ when you make a project with

directories for the 3 areas of concern; conceptually, it’s a design pattern

Separates responsibilities in the application Model – the data (including the connection and mapping to

the DBMS) and its integrity constraints (e.g. legal values of variables in termsof the domain logic)

View – the rendering. What it looks like to the userand the detail of how they interact with the application

Controller – Handles and responds to userinteraction. Uses the model and selects thenext view to offer the user.

Handout 01COMPSCI 28013

See http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview

Page 14: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

An MVC Project in VS Open VS

File/New Project… select Visual C# and the ASP .NET MVC 4 Web Application type*

Give it a name and location, press OK Select the default ‘Internet Application’

template with the Razor view engine Press OK and listen to the hard drive grind Solution Explorer (righthand side of screen

in IDE) produces folders for the Controllers, Models and Views (alphabetical order) In this one I’ve added an additional C# class file

(.cs) for entities in an employer database The default template includes account

management (login, new user) MVC elements

Handout 01COMPSCI 28014

* I went with v4; 5 is out – there’s always something newer

Page 15: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

MVC application from the template

Handout 01COMPSCI 28015

Runs at ‘localhost’ served up by the built-in IIS Express local Web

server

Page 16: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

TheController

The controller has a method of type ActionResult for each webpage in the solution

The ViewBag object is dynamic; shortcut for tossing data to the View

C# moment: note the “:” operator to indicate deriving a child class from a base class

Handout 01COMPSCI 28016

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;

namespace DefaultMVC.Controllers{ public class HomeController : Controller { public ActionResult Index() { ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";

return View(); }

public ActionResult About() { ViewBag.Message = "Your app description page.";

return View(); }

Page 17: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

The Model

Handout 01COMPSCI 28017

...using System.Data.Entity;using System.Globalization;using System.Web.Security;

namespace DefaultMVC.Models{ public class UsersContext : DbContext { public UsersContext() : base("DefaultConnection") { }

public DbSet<UserProfile> UserProfiles { get; set; } }

[Table("UserProfile")] public class UserProfile { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } public string UserName { get; set; } }

Defines a database context (invoking the parent [base] class

constructor to establish the database connection

Creates model definition for a table in the database

(autogenerated primary key and a username). The context’s DbSet is a collection of user profile objects

Page 18: Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, jim@cs.auckland.ac.nz COMPSCI 280 S2 2014 Enterprise Software Development.

TheView

One .cshtml (C# HTML) file for each page of the solution

Here we have the HTML for what the user sees on the index / home page

But it’s not just HTML

Handout 01COMPSCI 28018

@{ ViewBag.Title = "Home Page";}@section featured { <section class="featured"> <div class="content-wrapper"> <hgroup class="title"> <h1>@ViewBag.Title.</h1> <h2>@ViewBag.Message</h2> </hgroup> <p> To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.

...

The @ indicates Razor Syntax markup that is converted at run-time into HTML Can be a code block (essential C# syntax inside curly braces) Or can be an expression (e.g. @ViewBag.Message)

Can be cryptic (e.g. @section featured is interpreted by the @RenderSection expression in the autogenerated _Layout.cshtml file


Recommended