Problem Statement

Task: Web services execution model

Execution Model

Model snapshot

Problem Statement

Task: Develop a web service with four web methods as follows: (a) Add (b) Subtract (c) Multiply (d) Divide Assume all above methods need two parameters and return a single value as string value.

Code Implementation

MathLibService.asmx

<%@ WebService Language="VB" Class="MathLibService" %>
                

MathLibService.vb

Imports System.Web.Services

<WebService(Namespace:="http://tempuri.org/")>
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)>
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Public Class MathLibService
    Inherits System.Web.Services.WebService

    <WebMethod()>
    Public Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function

    <WebMethod()>
    Public Function Subtract(a As Integer, b As Integer) As Integer
        Return a - b
    End Function

    <WebMethod()>
    Public Function Multiply(a As Integer, b As Integer) As Integer
        Return a * b
    End Function

    <WebMethod()>
    Public Function Divide(a As Integer, b As Integer) As Double
        If b = 0 Then
            Throw New Exception("Cannot divide by zero")
        End If
        Return a / b
    End Function
End Class
                

ServiceClient.aspx

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="ServiceClient.aspx.vb" Inherits="ServiceClient" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Math Client</title>
</head>
<body>
    <form id="form1" runat="server">
        <h2>Math Client</h2>
        Number 1: <asp:TextBox ID="txtNum1" runat="server" /><br /><br />
        Number 2: <asp:TextBox ID="txtNum2" runat="server" /><br /><br />
        <asp:Button ID="btnAdd" runat="server" Text="Add" OnClick="btnAdd_Click" />
        <asp:Button ID="btnSubtract" runat="server" Text="Subtract" OnClick="btnSubtract_Click" />
        <asp:Button ID="btnMultiply" runat="server" Text="Multiply" OnClick="btnMultiply_Click" />
        <asp:Button ID="btnDivide" runat="server" Text="Divide" OnClick="btnDivide_Click" />
        <br /><br />
        Result: <asp:Label ID="lblResult" runat="server" Text="" />
    </form>
</body>
</html>
                

ServiceClient.aspx.vb

Partial Class ServiceClient
    Inherits System.Web.UI.Page

    ' Use the proxy class (generated using Add Web Reference)
    Dim proxy As New localhost.MathLibService()

    Protected Sub btnAdd_Click(sender As Object, e As EventArgs)
        lblResult.Text = "Result: " & proxy.Add(Convert.ToInt32(txtNum1.Text), Convert.ToInt32(txtNum2.Text))
    End Sub

    Protected Sub btnSubtract_Click(sender As Object, e As EventArgs)
        lblResult.Text = "Result: " & proxy.Subtract(Convert.ToInt32(txtNum1.Text), Convert.ToInt32(txtNum2.Text))
    End Sub

    Protected Sub btnMultiply_Click(sender As Object, e As EventArgs)
        lblResult.Text = "Result: " & proxy.Multiply(Convert.ToInt32(txtNum1.Text), Convert.ToInt32(txtNum2.Text))
    End Sub

    Protected Sub btnDivide_Click(sender As Object, e As EventArgs)
        Try
            lblResult.Text = "Result: " & proxy.Divide(Convert.ToInt32(txtNum1.Text), Convert.ToInt32(txtNum2.Text))
        Catch ex As Exception
            lblResult.Text = "Error: " & ex.Message
        End Try
    End Sub
End Class
                

MathLibService

Addition Addition Subtraction Subtraction Multiplication Multiplication Division Division

Problem Statement

Task: Test the web service using browser on local pc. Install Internet Information Services on your laptop/pc (if not installed) Using IIS manager create two separate applications as follows: (a) MathLibService (b) ServiceClient

IIS Manager Output

Applicatons

Problem Statement

Task: Implement a web application “ServiceClient” which will use the MathLibService as a web service. Develop a suitable web page for its demonstration. Use some text boxes to take input from user. Use proxy class to get answer (response from web service) and display it on page to user.

Code Implementation

Default.aspx

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="ServiceClient._Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Math Service Client</title>
</head>
<body>
    <form id="form1" runat="server">
        <h2>Math Operations</h2>
        <div>
            <label>First Number:</label>
            <asp:TextBox ID="txtNumber1" runat="server" />
        </div>
        <div>
            <label>Second Number:</label>
            <asp:TextBox ID="txtNumber2" runat="server" />
        </div>
        <div>
            <label>Operation:</label>
            <asp:DropDownList ID="ddlOperation" runat="server">
                <asp:ListItem Text="Add" Value="Add" />
                <asp:ListItem Text="Subtract" Value="Subtract" />
                <asp:ListItem Text="Multiply" Value="Multiply" />
                <asp:ListItem Text="Divide" Value="Divide" />
            </asp:DropDownList>
        </div>
        <br />
        <div>
            <asp:Button ID="btnCalculate" runat="server" Text="Calculate" OnClick="btnCalculate_Click" />
        </div>
        <br />
        <div>
            <asp:Label ID="lblResult" runat="server" Font-Bold="True" />
        </div>
    </form>
</body>
</html>
        

Default.aspx.vb

Imports MathLibClient.MathLibService

Public Class _Default
    Inherits System.Web.UI.Page

    Protected Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click
        Try
            Dim service As New MathLibServiceSoapClient()

            Dim num1 As Integer = Convert.ToInt32(txtNumber1.Text)
            Dim num2 As Integer = Convert.ToInt32(txtNumber2.Text)
            Dim operation As String = ddlOperation.SelectedValue
            Dim result As String = ""

            Select Case operation
                Case "Add"
                    result = service.Add(num1, num2).ToString()
                Case "Subtract"
                    result = service.Subtract(num1, num2).ToString()
                Case "Multiply"
                    result = service.Multiply(num1, num2).ToString()
                Case "Divide"
                    result = service.Divide(num1, num2).ToString()
            End Select

            lblResult.Text = "Result: " & result

        Catch ex As Exception
            lblResult.Text = "Error: " & ex.Message
        End Try
    End Sub
End Class
        

Client End

Addition Subtraction Multiplication Division
Web hosting by Somee.com