Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
C# for JAVA programmers ASP.NET Rina Zviel-Girshin Lecture 1 1 Overview C# Basics Syntax Classes ASP.NET 2 Introduction C# is derived from C ++, Java, Delphi, Modula-2, Smalltalk. Designed to be the main development medium for future Microsoft products Similar to Java syntax. Some claim - C# is more like C++ than Java. Authors: Hejlsberg, Wiltamuth and Golde. Modern object oriented language. Internet-centric the goal of C# and .NET is to integrate the web into desktop. 3 What Can you do with C#? You can write: Console applications Windows Application ASP.NET projects Web Controls Web Services 4 Keywords C# has 77 keywords. C++ has 63. Java has 48. 35 are shared. 13 in Java are omitted: boolean,extends,final, implements import,instanceof, native,package,strictfp, super, synchronized, throws, transient 5 List of keywords abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false fixed float for foreach goto if implicit int interface internal lock long namespace new null object out override private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using volatile void while 6 C# Program Structure Namespaces Type declarations Contain types and other namespaces Classes, structs, interfaces, enums and delegates Members Constants, fields, methods, properties, events, operators, constructors, destructors 7 Syntax Case-sensitive. White space means nothing. Semicolons (;) to terminate statements. Code blocks use curly braces ({}). C++/Java style comments // or /* */ Also adds /// for automatic XML documentation 8 Hello World using System; //the same as import Hello.cs class Hello { static void Main() { Console.WriteLine("Hello world"); } } 9 Writing and compiling Use any text editor or STUDIO.NET to write your programs. File .cs. Compile using csc (C# Compiler) or “Compile” option of Studio. Compilation into MSIL (Microsoft Intermediate Language) (as ByteCode in Java). The MSIL is then compiled into native CPU instructions MSIL is a complete language more or less similar to Assembly language by using JIT (Just in Time) compiler at the time of the program execution. CLR (Common Language Runtime) provides a universal execution engine for developers code CLR is independent and is provided as part of the .NET Framework. 10 Type System Value types Primitives Enums Structs int i; enum State { Off, On } struct Point { int x, y; } Reference types Classes Interfaces Arrays Delegates class Foo: Bar, IFoo {...} interface IFoo: IBar {...} string[] a = new string[10]; delegate void Empty(); 11 Data Types Value types (primitive types and enumerated values and structures) byte, sbyte, char, bool, int, uint, float, double, long (int64).. string or reference types (objects and array). Casting is allowed. Identifier’s name as in Java. 12 Primitive types Type bool sbyte byte short ushort int uint Size 1 1 1 2 2 4 4 Type long ulong char float double decimal string Size 8 8 2 4 8 16 20+ 13 Arrays Zero based, type bound. Built on .NET System.Array class. Declared with type and shape, but no bounds Created using new or initializers int [ ] one; int [ , ] two; int [ ][ ] three; one = new int[20]; two = new int[,]{{1,2,3},{4,5,6}}; three = new int[1][ ]; three[0] = new int[ ]{1,2,3}; Arrays are objects one.Length System.Array.Sort(one); 14 Data All data types derived from Declarations: System.Object datatype varname; datatype varname = initvalue; C# does not automatically initialize local variables (but will warn you)! 15 Statements Conditional statements have the same syntax as in Java. if else, switch case, for, while, do .. while, && , || , ! and a bitwise & and | Function calls as in Java. 16 foreach Statement Iterates over arrays or any class that implements the IEnumerable interface Iteration of arrays public static void Main(string[] args) { foreach (string s in args) Console.WriteLine(s); } Iteration of user-defined collections foreach (Customer c in customers.OrderBy("name")) { if (c.Orders.Count != 0) { ... } } 17 Classes All code and data enclosed in a class. Class members Constants, fields, methods, properties, events, operators, constructors, destructors Static and instance members Nested types C# supports single inheritance. class B: A, IFoo {...} All classes derive from a base class called Object. You can group your classes into a collection of classes called namespace. 18 Example using System; namespace ConsoleTest { public class Name { public string FirstName = "Rina"; public string LastName = "ZG"; public string GetWholeName() { return FirstName + " " + LastName; } static void Main(string[] args) { Name myClassInstance = new Name(); Console.WriteLine("Name: " + myClassInstance.GetWholeName()); Console.ReadLine(); } } } 19 More about class File name the same as class name. The same name as class. Exists a default constructor. Overloading is allowed. this keyword can be used. 20 Passing parameters by reference Passing parameters – by value value types and by reference reference type. Adding ref or out keyword before value type arguments in function call results into by reference function call. Example: void Swap(ref int a , ref int b) function call – Swap(ref x, ref y); The difference b/t ref and out – out values can be uninitilized. 21 Inheritance C# like Java has no Multiple Inheritance. C# like Java allows multiple implementations via interfaces. C# has different access modifiers: C# access modifier private public internal protected internal protected Java access modifier private public protected N/A N/A 22 Enumerations Define a type with a fixed set of possible values enum Color { Red, Green, Blue } … Color background = Color.Blue; Integer casting must be explicit Color background = (Color)2; int oldColor = (int)background; 23 Delegates Object oriented function pointers Multiple receivers Each delegate has an invocation list Thread-safe + and - operations Foundation for events delegate double Func(double x); Func func = new Func(Math.Sin); double x = func(1.0); 24 ASP .Net and C# Easily combined and ready to be used in WebPages. Powerful. Fast. Most of the works are done without getting stuck in low level programming and driver fixing and … 25 Why ASP.NET? ASP.NET makes building real world Web applications relatively easy. Displaying data, validating user input and uploading files are all very easy. ASP.NET uses predefined .NET Framework classes: Just use correct classes/objects. over 4500 classes that encapsulate rich functionality like XML, data access, file upload, image generation, performance monitoring and logging, transactions, message queuing, SMTP mail and more ASP.NET pages work in all browsers including Netscape, Opera, AOL, and Internet Explorer. 26 ASP.NET in the Context of .NET Framework VB C++ C# JScript J# Common Language Specification Web Forms Web Services Windows Forms ADO.NET and XML Base Class Library Common Language Runtime Operating System Visual Studio.NET ASP.NET We will start with Web Forms 27 HTML page User Agent asks HTML page by sending HTTP request to the web-server. Web-server sends a response which includes the required page including additional data objects. Server PC running UA – IE 28 ASP.NET page modus operand Usually ASP.NET page constructed from regular HTML instructions and server instructions. Server instructions are a sequence of instructions that should be performed on server. An ASP .NET page has the extension .aspx. ASP+ = ASP.NET If UA requests an ASP .NET page the server processes any executable code in the page (the code can be written in current page or can be written in additional file). The result is sent back to the UA. 29 Adding Server Code You can add some code for execution simply by adding syntactically correct code inside <% %> block. Inside <% %> block you write instruction that should be implemented on server machine. Example: <html> <body bgcolor=“silver"> <center> <p> <%Response.Write(now())%> </p> </center> </body> </html> Where now() returns the date on the server computer and adds it to the resulting html page. Response is a Response object and it has a write method that outputs it’s argument to the resulted text. 30 Dynamic Pages ASP.NET pages are dynamic. Different users get different information. In addition to using <% %> code blocks to add dynamic content ASP.NET page developer can use ASP.NET server controls. Server controls are tags that can be understood by the server and executed on the server. 31 Types of Server Controls There are three types of server controls: HTML Server Controls – regular HTML tags with additional attribute id and runat=“server”directive: Web Server Controls - new ASP.NET tags that have the following syntax: <input id="field1" runat="server"> <asp:button id="button1" Text="Click me!" runat="server" OnClick="submit"/> Validation Server Controls – those controls are used for input validation: More about server controls in the future <asp:RangeValidator ControlToValidate=“gradesBox" MinimumValue="1" MaximumValue="100" Type="Integer" Text="The grade must be from 1 to 100!" runat="server" /> 32 How to run ASPX file? To run ASPX file on your computer you need to install IIS, .NET SDK, IE6 and Service Pack 2. Now you can write asp.net pages using any text editor even Notepad! Exists many other tools Visual Studio.NET or Web-Matrix. Place your code to the disk:\Inetpub\wwwroot directory (or you can change this default directory). Now open your browser and request the following page: http://127.0.0.1/mypage.aspx or http://localhost/mypage.aspx It is a loopback call. Your PC now plays 2 roles: a client and a server. 33 Loopback call Using your UA you type a request for a specific page. The actual request is sent to your computer’s IIS. Now your computer is a server that receives a request and runs it at server. The resulting code – the response - is sent back to your computer. Your computer’s UA displays the response message. The loopback is completed. 34 ASP.NET Execution Model Client Server public class Hello{ protected void Page_Load( Object sender, EventArgs e) {…} } Hello.aspx.cs First request Postback Output Cache 35 Language Support The Microsoft .NET Platform currently offers built-in support for three languages: C#, Visual Basic and Jscript (Microsoft JavaScript) You have to specify language using one of the following directive <script language="VB" runat="server"> or <%@Page Language=“C#” %> The last directive defines the scripting language for the entire page. 36 What’s in a name? Web Forms All server controls must appear within a <form> tag. The <form> tag must contain the runat="server" attribute. The runat="server" attribute indicates that the form should be processed on the server. An .aspx page can contain only ONE <form runat="server"> control. That is why .aspx page is also called a web form. 37 Web Forms creation ASP.NET supports two methods of creation dynamic pages: a spaghetti code - the server code is written within the .aspx file. a code-behind method - separates the server code from the HTML content. 2 files – .cs and .aspx 38 Spaghetti code - Copy.aspx <%@ Page Language="C#" %> <script runat=server> void Button_Click(Object sender, EventArgs e) { field2.Value = field1.Value; } </script> <html><body> <form Runat="Server"> Field 1:<input id="field1" size="30" Runat="Server"><br> Field 2: <input id="field2" size="30" Runat="Server"><br> <input type="submit" Value=“Submit Query” OnServerClick="Button_Click" Runat="Server"> </form> </body></html> A server code is written within the .aspx file 39 Output The output after inserting www to the first field and pressing the button. 40 Code-behind– myCodeBehind.cs file using System; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; public class myCodeBehind: Page { protected Label lblMessage; protected void Button_Click(Object sender , EventArgs e) { lblMessage.Text="Code-behind example"; } } 41 Presentation.aspx file <%@ Page src="myCodeBehind.cs" Inherits="myCodeBehind" %> <html><body> <form runat="Server"> <asp:Button id="Button1" onclick="Button_Click" Runat="Server" Text="Click Here!"></asp:Button> <br/> <asp:Label id="lblMessage" Runat="Server"></asp:Label> </form> </body></html> 42 The Code-Behind Example Output After onclick event 43 IIS - Installation If exists: MY Computer ->(rc=right click, manage) Computer Management -> Services and Applications -> IIS- Internet Information Service (5.0 or 5.1). Or: C:\WINDOWS\system32\inetsrv\inetmgr.exe Install: Start -> Control Panel -> Add or Remove Programs -> Add/Remove Windows Components -> IIS -> next … 44 IIS – Ins’ Problems Trying to open a project (VS): “visual studio .net has detected that the specified web server is not running ASP.NET version 1.1 you will be unable to run ASP.NET web applications or services” Solution: in command prompt c:\windows\microsoft.net\framework\v1.1.4322 -> run: aspnet_regiis –I 45 IIS – Ins’ Problems 1. 2. 3. Trying to run\debug in VS: “Error while trying to run project…Debugging failed because integrated windows authentication is not enabled…” Solution: To enable integrated Windows authentication Log onto the Web server using an administrator account. From the Start menu, open the Administrative Tools Control Panel. In the Administrative Tools window, double-click Internet Information Services. 46 IIS – Ins’ Problems 4. In the Internet Information Services window, use the tree control to open the node named for the Web server. A Web Sites folder appears beneath the server name. 5. You can configure authentication for all Web sites or for individual Web sites. To configure authentication for all Web sites, right-click the Web Sites folder and choose Properties from the shortcut menu. To configure authentication for an individual Web site, open the Web Sites folder, right-click the individual Web site, and choose Properties from the shortcut menu 6. In the Properties dialog box, select the Directory Security tab. 7. In the Anonymous access and authentication section, click the Edit button. 8. In the Authentication Methods dialog box, under Authenticated access, select Integrated Windows authentication. 9. Click OK to close the Authentication Methods dialog box. 10. Click OK to close the Properties dialog box. 11. Close the Internet Information Services window. 47 Start Programming Default Home Directory is in C:\Inetpub\wwwroot\ but you can work in any directory you choose using Virtual directory. Virtual directory: Web Sites -> Default Web Site -> (rc, New ) -> Virtual Directory.. -> next -> Alias -> Path… Run your .aspx: after compilation you can run in the visual studio environment or calling the .aspx through the I-Explorer with the following link http://localhost/’Alias’/’filename’.aspx http://127.0.0.1/’Alias’/’filename’.aspx . To prevent script from running, ,not to allowed to execute the code , Alias -> (rc, Properties) Execute Permissions – none. 48 Start Programming The Html – page (only html) is different from the aspx - page (html, asp.net, script) it was making from. Always give reasonable names to: Project, functions, variables, files, windows…!!! Always document (explain) the code!!! The two paragraph above are matter of life!!! (grades will be taken regardless the correctness of the code when not documented\named !!!) 49