Wednesday, December 19, 2007

Creating .NET Web Services Step 3

Step 3 - Build our Object
OK, now let's invoke the .NET C# compiler (csc.exe) or VB compiler (vbc.exe) to convert your source file into an assembly or DLL. Create a new .bat file named makelib.bat and type in:

[C#]

csc /t:library /out:bin\GetSuppliers.dll bin\GetSuppliers.cs
/reference:System.dll,System.Data.dll,System.Web.dll,
System.Web.Services.dll,System.XML.dll /optimize


[VB]

vbc /t:library /out:bin\GetSuppliers.dll bin\GetSuppliers.vb
/reference:System.dll,System.Data.dll,System.Web.dll,
System.Web.Services.dll,System.XML.dll /optimize
pause


All this does is compile the source file from the bin folder to a DLL of set name, to the bin folder.
The /t:library instructs the compiler to create a dll (dynamic link library), rather than an exe (executable) file, with /reference: importing the necessary dll's libraries that will be used in our Web service. Finally, we /optimize our dll to produce smaller, faster, and more efficient output.
Step 4 - Put it All Together
Now copy and paste the code below to an .aspx .NET page and name it. This code is for the page that will access the assembly/DLL in your bin folder, and with all the Web server controls, pass the appropriate parameters to the Web Service. Go ahead and run it (http://localhost/Websrvce.aspx).

<%@ Page Language="C#" Explicit="true" Strict="true" Buffer="true"%> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.SqlClient" %> <%@ Import Namespace="WService" %>
<html> <script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e) { Response.Flush(); }
void SubmitBtn_Click (object src, EventArgs e) {
int RcdCount; string Catg = DropDown1.SelectedItem.Text;
//Instantiate DLL GetInfo supInfo = new GetInfo();
//Pass parameter into DLL function DataSet MyData = supInfo.ShowSuppliers(Catg);
MyDataGrid.DataSource = MyData.Tables[0].DefaultView; MyDataGrid.DataBind(); RcdCount = MyData.Tables[0].Rows.Count; if (RcdCount <= 0) {
Message.InnerHtml = "<b>No results were found for <FONT Color=Red><i>"+ Catg +"</i></font>"; MyDataGrid.Visible = false; //Hide Results until needed
} else {
Message.InnerHtml = "<b><FONT Color=Red><i>" + Catg + "</i></font> has " + RcdCount + " local suppliers</b>"; MyDataGrid.Visible = true; } }
</script> <body style="font: 10pt verdana">
<h4>Accessing Data with Web Services</h4>
<form runat="server">
<asp:DropDownList id=DropDown1 runat="server"> <asp:ListItem>Australia</asp:ListItem> <asp:ListItem>Brazil</asp:ListItem> <asp:ListItem>Canada</asp:ListItem> <asp:ListItem>Denmark</asp:ListItem> <asp:ListItem>Finland</asp:ListItem> <asp:ListItem>France</asp:ListItem> <asp:ListItem>Germany</asp:ListItem> <asp:ListItem>Italy</asp:ListItem> <asp:ListItem>Japan</asp:ListItem> <asp:ListItem>Netherlands</asp:ListItem> <asp:ListItem>Norway</asp:ListItem> <asp:ListItem>Singapore</asp:ListItem> <asp:ListItem>Spain</asp:ListItem> <asp:ListItem>Sweden</asp:ListItem> <asp:ListItem>UK</asp:ListItem> <asp:ListItem>USA</asp:ListItem> </asp:DropDownList> <asp:button text="Submit" OnClick="SubmitBtn_Click" runat=server/> <p> <span id="Message" runat="server"/>
<p>
<ASP:DataGrid id="MyDataGrid" runat="server" AutoGenerateColumns="True" Width="100%" BackColor="White" Border="1" BorderWidth="1" CellPadding="1" CellSpacing="1" Font-Size="10pt" HeaderStyle-BackColor="White" HeaderStyle-ForeColor="Blue" AlternatingItemStyle-BackColor="White" AlternatingItemStyle-ForeColor="Black" ShowFooter="false" />
</form>
</body> </html>
How It Works
Pretty cool, huh? Now, aside from the common data accessing and Web server control usage, I'll outline some specifics. By virtue of creating our proxy class with a namespace in Step 2, we need to import it to the dll we created in Step 3, like this:
<%@ Import Namespace="WService" %>
We then instantiate it or reference our object:[C#]
GetInfo supInfo = new GetInfo();
[VB]
Dim supInfo As New WService.GetInfo()
This is our Web Service class. We then retrieve our dropdown list parameter, and pass it to our ShowSuppliers constructor method like so:
[C#]string Catg = DropDown1.SelectedItem.Text;
DataSet MyData = supInfo.ShowSuppliers(Catg);
[VB]
Dim Catg As String = DropDown1.SelectedItem.Text
Dim MyData As DataSet = supInfo.ShowSuppliers (Catg)
And the rest? Just common .NET stuff, which I assume you have some grip on. Nevertheless, it shouldn't be too hard to follow or figure out. The .NET documentation and Quickstart Tutorials will help with plenty more information. Well, guess what? We're done!

No comments: