ایجاد سرویس WCF REST

سه شنبه 28 مهر 1394

در این مقاله نحوه ایجاد سرویس WCF REST را با هم بررسی می کنیم.ابتدا توضیحات کلی راجع به اینکه اصولا WCF چیست ارائه می دهیم سپس سرویس REST را ایجاد می کنیم

ایجاد سرویس WCF REST

ابتدا توضیحات کلی راجع به اینکه اصولا WCF چیست ارائه می دهیم ، سرویس مجموعه ای از متد هاست که کار خاصی برای ما انجام می دهد. وب سرویس ها، این امکان را فراهم می کنند که سایر برنامه ها از جمله برنامه های تحت دسکتاپ و تحت وب با یک ارتباط روی HTTP به توابع داخل آن ها دسترسی پیدا کنند و نتیجه اش را در قالب فرمت استاندارد XML و سایر فرمت ها دریافت کنند.توسط WCF  و یا Windows Communication Foundation می توان برنامه ها را سرویس گرا تولید کرد.با کمک WCF می توان سرویس هایی در برنامه تعریف کرد و همچنین ارتباط مناسب بین این سرویس ها برقرار کرد.

 در صورت تمایل میتوانید به صورت رایگان آموزش WCF به همراه پروژه عملی را در سایت تاپ لرن مشاهده کنید .

تعدادی متد استاندارد در WCF REST وجود دارد که بر روی همه اشیا قابلیت اجرایی دارد.این متد ها

GET

POST

PUT

DELETE

نام دارند.این متد های شبیه Http هستند وقتی که آدرسی را در مرورگر خود وارد می کنید پروتکل http برای نمایش صفحه به شما، یک درخواست Get ارسال می کند . و توسط Post آن را از سرور بر روی مرورگر بارگذاری می کند.پس  WCF REST عموما بر روی HTTP کار می کند فقط شی ارائه می دهد و چهار متد استاندارد ذکر شده را که با HTTP مشترک است را نیز پیاده سازی کرده است.

می توان گفت REST یک معماری است برای ارتباط کلاینت و سرور .در این معماری کلاینت درخواست خود را به صورت URL به سمت سرور ارسال می کند و پاسخ را در قالب Json و یا XML دریافت می کند.در این معماری فرقی نمی کند که کلاینت چه چیزی باشد کلاینت می تواند مرورگر یا اپلیکیشن اندروید و یا .... باشد.

متد GET اطلاعات را از طریق URL منتقل می کند.متد PUT برای این به کار می رود که منبعی که در URL مشخص شده است را بسازیم و یا تغییر دهیم.DELETE زمانی استفاده می شود که بخواهیم منبعی که در URL مشخص شده است را پاک کنیم. POST در واقع پردازش سمت سرور را تکرار می کند.

بعد از این توضیحات اجمالی اکنون پروژه WCF REST خود را شروع می کنیم .

یک پروژه از نوع WCF مانند شکل زیر ایجاد کنید و نام آنرا PayMentService بگذارید

2-Interface  و سرویسی که به صورت خودکار ایجاد شده است را پاک کنید

delete the auto created Interface

3-یک سرویس WCF به نام PayMentRESTService ایجاد کنید.

بعد از افزودن این سرویس به برنامه به صورت خودکار یک سرویس و یک اینترفیس به پروژه اضافه خواهد شد.

solution explorer

4- اینترفیس IPaymentService.cs را باز کنید و کدهای زیر را در آن اضافه کنید.

namespace PayMentRESTService
{

    [ServiceContract]
    public interface IPayMentService
    {
        [OperationContract]
        [WebInvoke(Method = "GET",UriTemplate = "/PayBill/{PayId}", BodyStyle = WebMessageBodyStyle.Wrapped,RequestFormat = WebMessageFormat.Json,ResponseFormat = WebMessageFormat.Json)]
        string PayBill(string PayId);
       
    }
}

کد بالا دارای قسمت های زیر است

Code

Service Contract خاصیتی است که بر روی interface  اعمال می شود و تعیین می کند که کلاینت چه فعالیتهایی را روی سرویس می تواند انجام دهد.

 Operation Contract

Operation Contract خاصیتی است که بر روی متدهای یک اینترفیس تاثیر می گذارد و معین می کند که چه متدهایی در اختیار قرار خواهد گرفت.

 Data Contract

Data Contract تعیین می کند که چه data types از طریق سرویس انتقال داده می شوند Data Contract برای تعریف کلاس استفاده می شود و DataMember برای تعریف Properties ها استفاده می شود.

5- برای اینکه متدی که در این اینترفیس پیاده سازی شده است را پیاده سازی کنید در کلاس PaymentService.svc.cs که همان سرویس ماست کد زیر را وارد می کنیم

public class PayMentService : IPayMentService
    {
        public string PayBill(string PayId)
        {
            //return "Transaction having PayId " + PayId + " was successful";
            return "تراکنشی که شماره پرداخت آن برابر با " + PayId + "است موفقیت آمیز بود";
        }
    }

6-برای تنظیم رفتار وب سرویس و پایانه ای(End Point) که سرویس ما را درخواست می دهد به web.config رفته و کد زیر را در آن وارد می کنیم.

Configure service

و کد مربوط به End Point به صورت زیر است

Configure End points

بعد از تنظیمات نهایی تگ مربوط به system.serviceModel در web.config به شکل زیر خواهد بود.

 <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service name="PayMentRESTService.PayMentService" behaviorConfiguration="ServiceBehavior">
        <endpoint binding="webHttpBinding" contract="PayMentRESTService.IPayMentService" behaviorConfiguration="web"/>
      </service>
    </services>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>

6-برای تست REST Service به صورت زیر عمل می کنیم.

در آدرس بار خود آدرس    http://localhost:64858/PayMentService.svc/PayBill/100 را وارد کنید.پاسخی که از WCF REST service داده می شود مانند شکل زیر است .

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • WCF
  • 3k بازدید
  • 9 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید