1 / 27

C#/.NET

C#/.NET. Basics 2 Some code is from “C# in a Nutshell” and “Programming C#”. This week. Event Handling and delegates ASP.NET Web Forms ASP.NET Web Services. Event Handling Model. Delegates listen for the events and call registered handlers

Download Presentation

C#/.NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C#/.NET Basics 2 Some code is from “C# in a Nutshell” and “Programming C#” Carnegie Mellon University MSCF

  2. This week • Event Handling and delegates • ASP.NET Web Forms • ASP.NET Web Services Carnegie Mellon University MSCF

  3. Event Handling Model • Delegates listen for the events and call registered handlers • Each component has a delegate for every event it can raise • We register a method with the delegate and the delegate will call the method asynchronously Carnegie Mellon University MSCF

  4. Delegates (1) • A Button, for example, needs to notify some object when it is pushed • We don’t want to hardwire (in the button) which object to call • A delegate is a reference type used to encapsulate a method with particular parameter types Carnegie Mellon University MSCF

  5. Delegate (2) using System; delegate String Foo(String x); // create a delegate class class Test { public static void Main() { Foo f = new Foo(ConvertToUpperCase); // create a delegate object String answer = f("abcd"); // call the method in the // object Console.WriteLine(answer); } public static String ConvertToUpperCase(String s) { return s.ToUpper(); } } Carnegie Mellon University MSCF

  6. Delegate (3) Delegate reference public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.Button multiplyButton; public void foo() { this.multiplyButton = new System.Windows.Forms.Button(); this.multiplyButton.Text = "Multiply"; this.multiplyButton.Click += new System.EventHandler(this.multiplyButton_Click); } private void multiplyButton_Click(object sender, System.EventArgs e) { textBox3.Clear(); string op1Str = op1.Text; string op2Str = op2.Text; : } Delegate Encapsulated method Carnegie Mellon University MSCF

  7. Multicast Delegate using System; // From C# In A Nutshell delegate void MethodInvoker(); // define delegate class class Test { static void Main() { // create a Test object // and call its constructor new Test(); } Carnegie Mellon University MSCF

  8. Test() { MethodInvoker m = null; m += new MethodInvoker(Foo); // overloaded += m += new MethodInvoker(Goo); // delegate holds m(); // pointers to two } // methods MethodInvoker void Foo() m void Goo() Carnegie Mellon University MSCF

  9. void Foo() { Console.WriteLine("Foo"); } void Goo() { Console.WriteLine("Goo"); } } Output: Foo Goo Carnegie Mellon University MSCF

  10. ASP.NET Web Forms (1) • Web Forms bring rapid appplication development to the web • Similar technology is available on J2EE platforms (struts, Java Server Faces) • Drag and drop development for the web tier – write event handlers as in Windows Forms • User interacts with the sever via a standard browser Carnegie Mellon University MSCF

  11. ASP.NET Web Forms (2) • Web pages are dynamically generated • Standard HTML is sent to the browser • Notepad would work but Visual Studio makes life easy • The user interface code is in an .aspx file • The logic (C# code) is stored in a separate file (containing event handling code) Carnegie Mellon University MSCF

  12. ASP.NET Web Forms (3) • Postback events are handled on the server with an HTTP request. For example, the submit button is clicked. • Non-postback events are not handled by the server immediately. For example, text is entered into a form or the mouse is moved. • State is automatically added to an otherwise stateless protocol. .NET maintains the user’s session. Carnegie Mellon University MSCF

  13. Web Form Life Cycle • Complicated series of activities similar to what is found in J2EE struts and JSF • For this class let’s just say that a lot of pre- and post-processing goes on for each web request Carnegie Mellon University MSCF

  14. Creating A Web Form(1) • Prerequisites: IIS and Front Page Server Extensions (use Internet Service Manager and right click on the web site/All Tasks/Configure Server Extensions) • Start/Microsoft Visual Studio .NET/ New Project/Visual C#/ASP.NET Web Application/BinomialTreeWebApp • Generated code goes into c:\Inetpub\wwwroot\BinomialTreeWebApp Carnegie Mellon University MSCF

  15. Creating A Web Form(2) • Two files generated - The .aspx file holds the HTML - The aspx.cs file holds the C# • To see the C# code right click the form and select view code • Note that you can see the design view or the HTML view (tabs on bottom) Carnegie Mellon University MSCF

  16. Web Services “The internet is evolving from a collection of isolated web sites and applications into a general communication bus for distributed applications.” Pradeep Tapadiya, author of “.NET Programming” Carnegie Mellon University MSCF

  17. ASP.NET Web Services 0) Check if IIS is running by attempting to visit http://localhost 1) If it's not running click Start/Settings/Control Panel/Add Remove Programs/ Add Remove Windows Components and enable IIS. 2) If .NET was installed after IIS reconfigure IIS by running aspnet_regiis.exe /i from a command prompt. Carnegie Mellon University MSCF

  18. ASP.NET Web Services Suppose we want to provide a student name given a student ID. Carnegie Mellon University MSCF

  19. ASP.NET Server Code <%@ WebService Language="C#" Class="Student.QueryService" %> // CoolService.asmx using System.Web.Services; using System.Collections; namespace Student { [WebService(Namespace="http://localhost/ACoolQueryService/")] public class QueryService : WebService { private static Hashtable nameValuePairs; Carnegie Mellon University MSCF

  20. static QueryService() { nameValuePairs = new Hashtable(); nameValuePairs.Add("12345","Moe"); nameValuePairs.Add("01234","Curly Joe"); nameValuePairs.Add("54321","Larry"); } [WebMethod] public string GetName(string id) { return (string)nameValuePairs[id]; } } } Carnegie Mellon University MSCF

  21. Create a virtual directory under IIS • Start • Settings • Control Panel • Administrative Tools • Select Internet Information Services • Expand and select the default web site • Click Action/New/Virtual Directory • Provide a name (ACoolQueryService in this case) and browse to the directory holding the .asmx file • Select everything but write Carnegie Mellon University MSCF

  22. Checking the service • Visit the service with your browser • http://localhost/ACoolQueryService/CoolService.asmx • HTML is generated that allows you to test the service via standard HTTP Carnegie Mellon University MSCF

  23. Testing With HTTP Get Request GET /ACoolQueryService/CoolService.asmx/GetName?id=string HTTP/1.1 Host: localhost HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length Response <?xml version="1.0" encoding="utf-8"?> <string xmlns="http://localhost/ACoolQueryService/">string</string> Carnegie Mellon University MSCF

  24. Testing with SOAP POST /ACoolQueryService/CoolService.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length of document SOAPAction: "http://localhost/ACoolQueryService/GetName" <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> Carnegie Mellon University MSCF

  25. <soap:Body> <GetName xmlns="http://localhost/ACoolQueryService/"> <id>string</id> </GetName> </soap:Body> </soap:Envelope> Carnegie Mellon University MSCF

  26. SOAP Response HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> Carnegie Mellon University MSCF

  27. <soap:Body> <GetNameResponse xmlns= "http://localhost/ACoolQueryService/"> <GetNameResult>string</GetNameResult> </GetNameResponse> </soap:Body> </soap:Envelope> Carnegie Mellon University MSCF

More Related