[ Home | Syllabus | Course Notes | Assignments | Search]
Demonstrate building a simple web service and client using just a text editor and command prompt
Start .NET command prompt window
With your favorite editor create "TimeServiceByHand.asmx file containing
<%@ WebService Language="c#" Class="TimeServiceByHand" %> using System; using System.Web.Services; public class TimeServiceByHand : System.Web.Services.WebService { public TimeServiceByHand() { } [WebMethod (CacheDuration=10)] public string GetTime() { return DateTime.Now.ToShortTimeString (); } }
Define a web.config file to contain at least
<configuration> <system.web> <webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices> </system.web> </configuration>
Export both files to Server (eg sensor.cs.odu.edu) using ftp
I installed mine in http://sensor.cs.odu.edu:8000/cwild/Examples/TimeServerByHand/TimeServiceByHand.asmx
NOTE: does not need to be an application
Using your favorite text editor create a Windows Form source file
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; public class TimeForm : System.Windows.Forms.Form { private System.Windows.Forms.Label theTime; private System.Windows.Forms.Button getTime; public TimeForm() { this.theTime = new System.Windows.Forms.Label(); this.getTime = new System.Windows.Forms.Button(); // // theTime // this.theTime.Location = new System.Drawing.Point(48, 24); this.theTime.Name = "theTime"; this.theTime.Size = new System.Drawing.Size(128, 48); this.theTime.TabIndex = 0; this.theTime.Text = "The time goes here"; // // getTime // this.getTime.Location = new System.Drawing.Point(88, 96); this.getTime.Name = "getTime"; this.getTime.Size = new System.Drawing.Size(112, 72); this.getTime.TabIndex = 1; this.getTime.Text = "GetCurrentTime"; this.getTime.Click += new System.EventHandler(this.getTime_Click); // // Form1 // this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.getTime); this.Controls.Add(this.theTime); this.Name = "Get Time"; this.Text = "Get Current Time"; } static void Main() { Application.Run(new TimeForm()); } private void getTime_Click(object sender, System.EventArgs e) { TimeServiceByHand service = new TimeServiceByHand(); theTime.Text = service.GetTime(); } }
Create the proxy class using the wsdl command in the command prompt window (I have left the username and password parts blanks)
wsdl /username: /password: http://sensor.cs.odu.edu:8000/Examples/TimeServerByHand/TimeServiceByHand.asmx
Compile the form and proxy
csc TimeForm.cs TimeServiceByHand.cs
Run the form "TimeForm"
NOTE: I put the service in a unsecure part of the web server. Need to figure out permissions issue.
Using your favorite text editor, create two files, the aspx file
<%@ Page language="c#" Inherits="TimeClient" %> <HTML> <HEAD> <title>Time Client</title> </HEAD> <body> <form id="Form1" method="post" runat="server"> <asp:Label id="Label1" runat="server">Web Time Client</asp:Label> <br/> <asp:Label id="Label2" runat="server"></asp:Label> </form> </body> </HTML>
Also the source file
using System; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; public class TimeClient : System.Web.UI.Page { protected System.Web.UI.WebControls.Label Label2; protected System.Web.UI.WebControls.Label Label1; private void Page_Load(object sender, System.EventArgs e) { TimeServiceByHand service = new TimeServiceByHand(); Label2.Text = "The time is now is " + service.GetTime(); } }
Create the proxy class using the wsdl command in the command prompt window (I have left the username and password parts blanks)
wsdl /username: /password: http://sensor.cs.odu.edu:8000/Examples/TimeServerByHand/TimeServiceByHand.asmx
Compile the form and proxy and place the DLL in the "bin" directory
csc /t:library TimeServiceByHand.cs TimeClient.aspx.cs
Move aspx page and "TimeServiceByHand.dll" to web server
Notice the architecture in this last example
Client Web Browser (computer 1 - front end) calls aspx page (computer 2- middle tier) which calls asmx web service (computer 3 - back end service)
The folders for these examples are here.