470 likes | 486 Views
Chapter 12. Introduction to ASP.NET. 12.1 Overview of the .NET Framework. .NET is a collection of technologies Run time environment Library Programming languages. 12.1 Background. A component is a piece of software that can used by other components
E N D
Chapter 12 Introduction to ASP.NET
12.1 Overview of the .NET Framework • .NET is a collection of technologies • Run time environment • Library • Programming languages
12.1 Background • A component is a piece of software that can used by other components • A component has an interface that specifies how it can be used without necessarily exposing the implementation • Microsoft’s component system was named COM • .NET is a framework for developing and deploying software • Software consists of components • These components can reside on multiple systems • These components can be programmed in different languages
12.1 .NET Languages • .NET initially included five languages • Visual Basic .NET • Managed C++ .NET • JScript.NET (similar to JavaScript) • J#.NET (Similar to Java) • C#.NET (A new language in the C/C++/Java family) • Other languages have been added • Including COBOL, Eiffel, Fortran, Perl Python
12.1 The Common Language Runtime • CLR • Services for processing and executing .NET software no matter what language • Garbage collection • Type checking • Debugging • Exception handling • Compilers translate a .NET language in Intermediate Language (IL) • The runtime system compiles IL on the fly to native machine code and executes that code • The IL is not interpreted directly
12.1 The Common Language Infrastructure • Two components • Common Type System (CTS) • Common Language Specification (CLS)
12.1 CTS • CTS defines types supported by .NET languages • Each type has a specified representation • Integer types, for example, include Int32, 32-bit, signed integers • .NET languages map their types into the CTS types • C# type in maps to Int32 • Two categories of CTS types • Value types • Reference types (an address of a memory location)
12.1 CLS • Defines characteristics that languages must have to properly interoperate with other languages in the .NET framework • Include requirements and restrictions • No operator overloading • No pointers • Identifiers not case sensitive • The C# language violates the listed restrictions • The Framework Class Library (FCL) is a collections of classes providing resources for software
12.1 Introduction to C# • C# has many similarities with Java
12.2 Origins of C# • Designed as part of .NET • Object-oriented • Single inheritance, interfaces, garbage collection, no global variables or methods • Pointers, operator overloading, preprocessor • Properties • Delegates • Indexes, attributes, events
12.1 Primitive Types and Expressions • Unsigned integer types • byte, ushort, uint, ulong • Signed integer types • sbyte, short, int, long • Floating point types • float, double • bool • decimal • char
12.2 Data Structures • Array, ArrayList, Queue, Stack defined by the .NET FCL • Array is a class, but syntax is like C/C++/Java • int[] a = new int[100] • Length property gives number of elements in the array • Enumeration type • Value type • Finite set of values defined by the programmer • Type safe
12.2 Control Statements • The standard control statements of C/C++/Java are in C# as well • foreach is added to step through a collection foreach (type identifier in collection) … • The switch statement is almost the same except the syntax requires either a break or a goto at the end of each case
12.2 Classes, Methods, Structures • C# has no methods or variables outside of classes • Syntax of class definitions, variable declarations and function definitions similar to Java • Parameters may be passed in any of three modes • Pass by value (in) • Pass by reference (in-out) • Pass by result (out) • A method may take a single formal parameter that is an array notated by the keyword params. This allows the method to be called with a variable number of parameters of the type of the elements of the array • Overriding methods requires • Marking the overridden method with virtual • Marking the overriding method with override
12.2 Structs • A C# struct is a lightweight class • No inheritance • Can have constructors • Struct type objects are value types rather than reference types • C# primitive types are implemented as structs
12.2 Properties • A property of a class acts as if it were an instance variable • However, assignment to the property actually invokes a ‘set’ method associated with the property • Access to the property invokes a ‘get’ method • Either method may be omitted • If the set method is omitted, assignments to the property are not allowed • Methods may perform whatever checks or calculations are needed
12.2 Delegates • A delegate is a pointer to a method • Methods may be subscribed to a delegate • A delegate declaration specifies the protocol, or the signature, of methods that may be subscribed to the delegate • Methods subscribed to the delegate may be called through the delegate
12.2 Program Structure • The FCL is divided into numerous namespaces • The most important namespace is System • Input and output • String manipulation • Event handling • Threading • Collections • System.Console is used for input and output to the console • ReadLine • WriteLine • The using statement allows reference to members of a namespace without qualifying the references • The main method of a program is Main • Does not require parameters • May return int or void
12.2 File Storage for Programs • Multiple classes can be defined in a single source file • Each class may have a Main method • In that case, running a program must specify which Main is to start • Source file names do not have to match the class name • Visual Studio is the usual vehicle for developing .NET programs • Programs can, however, be developed with any text editor • The stackClass.cs file defines two classes
12.3 Basics of ASP.NET • Active Server Pages • Building dynamic web documents • The predecessor, ASP, embedded interpreted scripting languages in XHTML • This approach has performance problems • It is difficult to divide up the development to different skill sets • ASP.NET is similar • The embedded languages allowed are the .NET languages • All code is compiled • ASP.NET documents extend the System.Web.UI.Page class • Request and Response objects • HTMLControls, WebControls • IsPostBack
12.3 Page Members • The Write method in Response sends output to the response document • IsPostBack tells whether the current process is the original request for the page or a subsequent request with information from the initial page
12.3 Code-Behind • Code for ASP may be moved to a code-behind class • The ASP document itself will extend the code-behind class rather than System.Web.UI.Page
12.3 ASP.NET Documents • Documents can include • XHTML • Directives • Render Blocks Programming code in script elements • Cannot define subprograms • Program code in script elements • Declare variables, define methods • Server side comments • <%-- …--%>
12.3 Directives • Directive names begin with @ • Directives appear in <% … %> but the @ usually is attached to the <%: • <%@ directive-nameattributes %> • @Page is required • Language attribute required: specifies .NET language used for program code
12.3 Output to XHTML Document • Use Response.Write method • Takes a string parameter • Include markup since the target is an XHTML document • The string.Format method can be used to format output
12.3 Example • The ex1.aspx example creates an array of random numbers and displays them in the response page • A on object of class Random is created to generate numbers • Method Next generates the next number • None or one or two parameters • Two parameter form used, result is in range n…m-1 • A script element in the header declares three variables and defines a method • The render block in the body references these definitions and creates the dynamic part of the response • Static XHTML is sent as part of the response unchanged
12.3 Code-Behind Files • The example ex2 has two files, ex2.aspx and ex2.aspx.cs • This partitions the declaration code into a C# file • The @Page directive includes two new attributes • Inherits: value is the class name in the code-behind file • Src: value is the name of the code-behind file • The Src attribute can be omitted if a compiled version of the file is available in a bin subdirectory
12.4 ASP.NET Controls • XHTML elements associated with program code • The code is executed on the server • Two categories • HTML controls • Web controls
12.4 HTML Controls • HTML controls are based on elements of XHTML pages • The appearance and functionality of these elements can be changed as the server executes • Executable code can be associated with the controls • Certain controls can raise events • ServerClick: control was clicked • ServerChange: control content was changed • HTML elements become HTML controls if • They are on the list associated with controls (Table 12.2) • The runat attribute has the value “server”
12.4 Controls and Code • Note the runat attribute in the following XHTML: <form runat=“server”> <input type=“text” id=“address” runat=“server”/> </form> • There is a corresponding instance variable in the code generated from this protected HtmlInputText address; • There is no action attribute in the form: the ASP document defines the actions that result from submitting the form
12.4 Control Objects • Controls are represented as objects in the code generated from ASP • Control classes inherit from HtmlControl deriving properties and methods • Attributes property provides tag attributes as name/value pairs • The Href property is defined by the HtmlAnchor class • An XHTML tag can be designated as an HTML control by simply adding the runat attribute with the value “server”
12.4 Life Cycle of an ASP.NET Document • An ASP.NET document can describe both a form and the response • Two kinds of requests to a ASP.NET document • Initial request • Request with form filled in, called a postback • The IsPostBack property is true if the request is a postback request • In a postback, the Value propety of a control provides the data entered into the corresponding widget • The state of a document is stored in the response after the initial service • A hidden control named ViewState contains a reference to a StateBag object • The StateBag object stores data about the state of the document • This requires extra information to be exchanged between browser and server
10.4 Life Cycle • A request is received • A document object is created and initialized ViewState is initialized • The document is sent • The client sends a request back • A document object is created and initialized with form data, including ViewState • Form data is used to update the state of the document object • ViewState is updated • The program can directly set name/value pairs in ViewState before this point • A response is returned
10.4 Postback Sources • Clicking a submit button will cause a postback • If the AutoPostBack property is set to true, a postback will occur when a change is made to a control
12.4 Page Level Events • Two levels of events raised during processing • Control events (ServerClick, Server Change) • Page-level events • Init: after document class instantiated • Load: after state set from form data • PreRender: before instance is executed • Unload: before instance is discarded • Implementing page-level event handling • Controlled by AutoEventWireup, default true • Which means use predefined method name by default • Implement predefined method names (Page_unload, Page_load, …) • Override the virtual handlers
12.4 Control Events • Two ways to register event handlers • Assign method names to attributes OnServerClick and/or OnServerChange • Use delegates • Using attributes, the methods have predetermined signatures • Using delegates • Event handler written with proper signature • New instance of delegate type created using the event handler • Delegate subscribed to the event property of a control • This is often done in the Page_Init handler so it is done one time as the page class is instantiated
12.4 Web Controls • Web controls are based on the controls from Visual Basic • Namespace System.Web.UI.WebControls • Web controls do not match up directly with HTML form widgets • An example of including a control in a page <asp:textbox id=“phone” runat=“server”/>
12.4 Some Web Controls • Panel organizes other controls • AdRotator produces different content on different requests • ListControl has four subclasses • DropDownList • ListBox • CheckBoxList • RadioButtonList
12.4 Creating Control Elements in Code • A control can be created with <asp:button…. in the document • The same control can be created by instantiating the Button class and assigning values to properties of the object • .Text for the button label • .id for the id attribute • .OnClick for the handler • .runat to specify this as a web control • A asp:placeholder tag can be used to define a place for controls defined in code • Those controls are added to the place holder
12.4 Response Output for Controls • Response.Write does not place text properly when intermixed with controls • Using a label is an alternative in order to place text <asp:label id="output" runat="server"/> • This can be filled in later in the code <% string msg = string.Format( "The result is {0} <br />", result); output.Text = msg; %>
12.4 Example • The ex4.aspx example crates a number of controls and creates a response • File ex4.aspx.cs is the code-behind file
12.4 Validation Controls • Validation controls validate data entered from other controls • Server side validation is an important component of security • These controls are placed immediately after the control whose input is being validated • Four common validation controls • RequiredFieldValidator • CompareValidator • RangeValidator • RegularExpresionValidator • Example ex5.aspsx illustrates three of these • One field is required • One field (a phone number) must match a regular expression pattern • One field must be in a specific range of values
12.5 Web Services • “A collection of one or more related methods that can be called by remote systems” • .NET provides support for constructing and advertising web services
12.5 Constructing Web Services • A document with extension .asmx is created • This may simply have a WebService directive spcifying a codebehind file • The web service is implemented as a class that extends System.Web.Services.WebService • The web service should be place in a developer defined namespace in order to avoid conflicts • Some methods of the class will be tagged with [WebMethod] to indicate that they are available as part of the web service • Once a service is published, aspects of it can be viewed using Internet Explorer
12.5 Advertising Web Services • Two approaches to making a web service known to potential clients • A web services discovery document • A web services directory written with UDDI