Web service چیست و چه کاربردی دارد؟ یک web service در واقع یک قابلیت مبتنی بر وب است که از طریق پروتکل های وب قابل دسترسی می باشد. web service ها توسط application های تحت وب مورد استفاده قرار می گیرند. در برنامه نویسی و تولید web service ها به سه جنبه ی مختلف برمی خوریم: ایجاد web service ایجاد proxy استفاده از web service
ایجاد web service Web service در اصل یک برنامه یا اپلیکیشن تحت وب متشکل از توابع و متدهایی است که توسط دیگر برنامه ها استفاده می شود. web service همچنین از معماری code-behind که در صفحات وب ASP.NET پیاده شده و بکار می رود پیروی می کند با این تفاوت که دارای رابط کاربری (UI) نمی باشد. برای درک بهتر این مفهوم به ایجاد یک web service می پردازیم که اطلاعاتی در رابطه با ارزش و قیمت سهام عرضه می کند. مشتری ها (client) می توانند بر اساس نشانه ای (symbol) که برای سهام بکار رفته از اسم و قیمت سهام مربوطه query بگیرند (اسم و قیمت سهام مورد نظر را بر اساس symbol آن درخواست کنند). جهت آسان نگه داشتن این مثال، مقادیر لازمه درون یک آرایه ی دوبعدی hard-code شده اند. Web service مورد نظر دارای سه متد می باشد: تابع پیش فرض HelloWorld یک تابع GetName تایع GetPrice
برای ایجاد web service مراحل زیر را دنبال کنید: مرحله ی اول : به بخش File -> New -> Web Site محیط ویژوال استودیو مراجعه کرده، سپس گزینه ی ASP.NET Web Service را انتخاب کنید. مرحله ی دوم : در این مرحله یک فایل web service به نام Service.asmx به همراه file code-behind آن، Service.cs در پوشه ی App_Code پروژه ایجاد می گردد. مرحله ی سوم : اسم فایل ها را به ترتیب به StockService.asmx و StockService.cs تغییر دهید. مرحله ی چهارم : فایل .asmx تنها یک WebService directive در خود دارد: کد: < %@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" Class="StockService" % >
مرحله ی پنجم : فایل StockService.cs را باز کنید. مشاهده می کنید که کد ایجاد شده در آن تنها یک سرویس ساده ی Hello World است. web service code behind file پش فرض مشابه کد زیر می باشد: کد: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Linq; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Linq; namespace StockService { // < summary > // Summary description for Service1 // < summary > [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // To allow this Web Service to be called from script, // using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } } }
مرحله ی ششم : code behind file را اصلاح کرده و آرایه ی دو بعدی از رشته ها برای نشانه ی سهام، اسم، قیمت آن و دو متد ویژه ی بازایابی اطلاعات مربوط به سهام به آن اضافه کنید: کد: using System; using System.Linq; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml.Linq; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // To allow this Web Service to be called from script, // using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class StockService : System.Web.Services.WebService { public StockService() { //Uncomment the following if using designed components //InitializeComponent(); } string[,] stocks = { {"RELIND", "Reliance Industries", "1060.15"}, {"ICICI", "ICICI Bank", "911.55"}, {"JSW", "JSW Steel", "1201.25"}, {"WIPRO", "Wipro Limited", "1194.65"}, {"SATYAM", "Satyam Computers", "91.10"} }; [WebMethod] public string HelloWorld() { return "Hello World"; } [WebMethod] public double GetPrice(string symbol) { //it takes the symbol as parameter and returns price for (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return Convert.ToDouble(stocks[i, 2]); } return 0; } [WebMethod] public string GetName(string symbol) { // It takes the symbol as parameter and // returns name of the stock for (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return stocks[i, 1]; } return "Stock Not Found"; } }
مرحله ی هفتم : اجرای web service application یک web service test page در اختیار شما می گذارد که با استفاده از آن می توانید متدهای service را آزمایش کنید:
مرحله ی نهم : برای تست کردن متد GetName، یک از نشانه های سهام را که hard code شده است استفاده کنید. نشانه اسم سهام را باز می گرداند
استفاده از web service برای استفاده از ،web service یک وب سایت تحت همان solution ای که قبلا ایجاد کرده بودید، بسازید. این کار از طریق راست کلیک روی اسم Solution در پنجره ی Solution Explorer امکان پذیر می باشد. صفحه ی وبی که web service را فرامی خواند باید برای نمایش دادن نتایج بازگشتی دارای یک کنترل label بوده و همچنین دو دکمه که یکی ویژه ی postback و دیگری ویژه ی فراخونی سرویس است داشته باشد.
content file برنامه ی تحت وب مورد نظر به ترتیب زیر می باشد: کد: < %@ Page Language="C#" AutoEventWireup="true" CodeFile="Default1.aspx.cs" Inherits="Default1" % > < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns="http://www.w3.org/1999/xhtml" > < head runat="server" > < title >Untitled Page < /title > < /head > < body > < form id="form1" runat="server" > < div > < h3 >Using the Stock Service< /h3 > < br / > < br / > < asp:Label ID="lblmessage" runat="server" >< /asp:Label > < br / > < br / > < asp:Button ID="btnpostback" runat="server" OnClick="Button1_Click" Text="Post Back" Style="width: 132px" / > < asp:Button ID="btnservice" runat="server" OnClick="btnservice_Click" Text="Get Stock" Style="width: 99px" / > < /div > < /form > < /body > < /html >