شروع کار با Web Service (بخش اول)

در این مقاله نحوه ساخت ASP.NET Web Service ها و استفاده از آن ها در برنامه ها را می آموزیم. همچنین با مفاهیم و اصول کاری Web Service ها آشنا می شویم.

شروع کار با  Web Service (بخش اول)

Web Service

Web Service یک کلاس است که با صفت [WebService] مشخص شده است و از کلاس پایه System.Web.Services.WebService ارث بری کرده است. این صفت، مشخص می کند که این کلاس حاوی کدهایی برای یک وب سرویس است.

Web Service یک برنامه وب است برای ساخت برنامه های interoperable است. به این معنی که می تواند متدهایی از برنامه های دیگر را در خودش بپذیرد. این برنامه های interoperable می توانند بر روی سایر کامپیوتر های مشابه نیز اجرا شوند. یک Web Service از open mechanism ، استاندارد ها و پروتکل ها پیروی می کند. از جمله این پروتکل ها می توان به HTTP, XML   و  SOAP  اشاره کرد که معروف و شناخته شده هستند.

برنامه ها بر روی پلتفرم هایی ساخته می شوند که می توانند با Web Service ها تعامل و ارتباط داشته باشند. برنامه های .NET می توانند با Web Service هایی که با استفاده از Java Application ساخته شده اند، تعامل داشته باشند. به طور مشابه، یک Web Service که با .NET نوشته شده باشد، می تواند توسط یک برنامه ی Java به کار گرفته شود.

HTTP

Hypertext Transfer Protocol ، پروتکلی است که به صورت گسترده برای ارسال و دریافت پیام ها توسط Web Service ها در یک برنامه استفاده می شود.

SOAP

Simple Object Access Protocol یک پروتکل پیام رسانی است. پیام های SOAP به فرمت XML هستند.


ASMX (Active Server Method Extended) یک افزونه برای Web service ها به شمار می آید. همچنین در اغلب موارد ، Web service ها ، به صورت  ASMX web service نیز نامیده می شوند.  ASMX web service یک تکنولوژی Bequest یا Legacy می باشد. (ارث بری شده)

برای ساخت یک Web service به برنامه ی Visual Studio می رویم.

مانند شکل زیر یک پروژه جدید ایجاد کنید.

 

از منو ، گزینه ی ASP.NET Web Application را انتخاب کنید و یک نام به پروژه بدهید و سپس دکمه ی “OK” را بزنید.

ما نام پروژه را WebServiceIntro گذاشتیم، بر روی نام پروژه کلیک راست کنید و یک آیتم جدید اضافه کنید.

ما نیاز داریم تا یک صفحه asmx به پروژه اضافه کنیم، یک نام برای آن انتخاب کنید و آن را به صفحه اضافه کنید.

تغییراتی که در شکل زیر می بینید را به صفحه اضافه کنید.

 

حالا می خواهیم کدی که به صورت خودکار برای ما ایجاد شده است را بررسی کنیم.

public class MyWebService : System.Web.Services.WebService - web service ای است که ما به این کلاس اضافه کرده ایم . این کلاس با صفت [WebService] مشخص شده است. کلاس MyWebService از System.Web.Services.WebService ارث بری کرده است و از شی های مختلفی مانند session object و Application object در آن استفاده شده است.

صفت [WebService] بیان می کند که این کلاس حاوی کدهایی است که به web service مربوط است.

فضای نام Web Service مسئول مشخص کردن وهمچنین جداسازی وب سرویس ما از سایر وب سرویس ها بر روی وب است. این فضای نام می تواند هر رشته ای باشد، ولی معمولا نام دامنه ی اینترنتی و یا نام شرکت ارائه دهنده دامنه است. یک نمونه از این فضای نام به صورت زیر است :

[WebService(Namespace=http://c-sharpcorner.com/webservices)]

فضای نام به شما اطمینان می دهد وب سرویسی که شما استفاده می کنید منحصر بفرد است.

[WebService(Namespace = "http://c-sharpcorner.com/webservices")]

[WebMethod] – اگر می خواهید یک متد را به عنوان بخشی از وب سرویس قرار بدهید که کاربر آن را فراخوانی می کند، باید آن متد  دارای صفت [WebMethod] باشد. اگر از صفت [WebMethod] در آن استفاده نکنید ، برنامه ی کاربر قادر به مشاهده ی آن متد نخواهد بود.

اگر می خواهید متدی که دارید را کاربر ببیند ، باید از صفت [WebMethod] برای آن استفاده کنید و همچنین آن متد را Public  تعریف کنید. اگر از این صفت برای آن استفاده نکنید، برنامه کاربر نمی تواند آن را ببیند. این صفت Property های زیادی مانند BufferResponse ، CacheDuration ، Description ، EnableSession و ... دارد که اساساً برای سفارشی سازی عملکرد وب سرویس استفاده می شوند.

    using System;  
    using System.Collections.Generic;  
    using System.Linq;  
    using System.Web;  
    using System.Web.Services;  
      
    namespace WebServicesIntro  
    {  
        /// <summary>  
        /// Summary description for MyWebService  
        /// </summary>  
        [WebService(Namespace = "http://c-sharpcorner.com/webservices")]  
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
        [System.ComponentModel.ToolboxItem(false)]  
        // [System.Web.Script.Services.ScriptService]  
        public class MyWebService : System.Web.Services.WebService  
        {  
      
            [WebMethod]  
            public string AddName(string FirstName, string SecondName)  
            {  
                return FirstName + SecondName;  
            }  
      
            [WebMethod]  
            public int Sub(int FirstNumber, int SecondNumber)  
            {  
                return FirstNumber - SecondNumber;  
            }  
        }
{

ما دو تا متد تعریف می کنیم، AddName و Sub ، که خروجی هایی از نوع string و int برمی گردانند و هر دو دارای صفت [WebMethod] هستند.

بر روی صفحه asmx کلیک راست کنید و آن را به عنوان start page تنظیم کنید و سپس آن را در مرورگر ببینید.

همانطور که در شکل زیر می بینید، ما MyWebService را به کار می گیریم که به تازگی آن را ایجاد کردیم. پروتکلی که استفاده کردیم نیز ، http است. در زیر یک گزینه ی Service Description نیز وجود دارد که می توانید بر روی آن کلیک کنید.

با این کار در URL یک WSDL ظاهر می شود که نشان دهنده Web Service Description Language است و اغلب توسط کاربر برای تولید کلاس های Proxy استفاده می شود.

به Web Service  بازگردید و بر روی متد AddName کلیک کنید.

مقادیر مورد نظرتان را به دو پارامتر موجود در صفحه پاس بدهید.

خروجی این بخش به صورت زیر خواهد بود:

به صورت مشابه ، برای متد دوم نیز همین کارها را انجام بدهید.

اعدادی که وارد کردیم پس از انجام عمل تفریق، حاصل زیر را به ما خواهند داد:

برای تست کردن متد Web service در این صفحه ، کدهای درخواست و پاسخ به صورت SOAP نیز قرار داده شده است. کدهای زیر در فرمت XML هستند ولی بر اساس پروتکل SOAP قالب بندی شده اند.

فرمت درخواست به صورت زیر است :

    <?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/">  
        <soap:Body>  
            <Sub xmlns="http://c-sharpcorner.com/webservices">  
                <FirstNumber>int</FirstNumber>  
                <SecondNumber>int</SecondNumber>  
             </Sub>  
        </soap:Body>  
    </soap:Envelope>  

فرمت پاسخ نیز به صورت زیر است:

    <?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/">  
        <soap:Body>  
            <AddNameResponse xmlns="http://c-sharpcorner.com/webservices">  
                <AddNameResult>string</AddNameResult>  
            </AddNameResponse>  
        </soap:Body>  
    </soap:Envelope>  

تصویر این دو بخش در زیر نیز آورده شده است.

فایل های ضمیمه
دانلود نسخه ی PDF این مطلب