Presentation is loading. Please wait.

Presentation is loading. Please wait.

Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, COMPSCI 280 S2 2014 Enterprise Software Development.

Similar presentations


Presentation on theme: "Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, COMPSCI 280 S2 2014 Enterprise Software Development."— Presentation transcript:

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

2 Welcome (to this part of 280)!  Your lecturer: Jim Warren  jim@cs.auckland.ac.nz jim@cs.auckland.ac.nz  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

3 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 (26 th September)  Worth 5% of course mark  Do lab sheet 1 and then get into the assignment before the break! Handout 01COMPSCI 2803

4 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

5 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 015COMPSCI 280

6 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). http://msdn.microsoft.com/en-us/library/dd831853.aspx  C# introduction  http://msdn.microsoft.com/en-us/library/aa645597(v=vs.71).aspx 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 016COMPSCI 280

7 .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 017COMPSCI 280

8 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 018COMPSCI 280

9 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) CompilingRunning Engine JIT Compiler Native Code Execution

10 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 0110COMPSCI 280

11 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 0111COMPSCI 280

12 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 use MessageBox.Show("Hello, world!");

13 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 terms of the domain logic)  View – the rendering. What it looks like to the user and the detail of how they interact with the application  Controller – Handles and responds to user interaction. Uses the model and selects the next view to offer the user. Handout 01COMPSCI 28013 See http://www.asp.net/mvc/tutorials/older-versions/overview/asp-net-mvc-overview

14 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

15 MVC application from the template Handout 01COMPSCI 28015 Runs at ‘localhost’ served up by the built-in IIS Express local Web server

16 The Controller  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(); }

17 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 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

18 The View  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 { @ViewBag.Title. @ViewBag.Message To learn more about ASP.NET MVC visit http://asp.net/mvc....  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


Download ppt "Getting Started with Microsoft Visual Studio,.NET and C# Jim Warren, COMPSCI 280 S2 2014 Enterprise Software Development."

Similar presentations


Ads by Google