آموزش ساخت یک سرویس JSON WCF RESTful در #C

پنجشنبه 11 خرداد 1396

در این مقاله نحوه ساخت یک اینترفیس RESTfull در سرویس های WCF که خروجی آن به صورت یک فایل JSON است به صورت گام به گام و کاملا عملی آموزش داده می شود،

آموزش ساخت یک سرویس JSON WCF RESTful در #C

به کمک WCF می توان به راحتی داده های JSON را به وسیله یک اینترفیس RESTful نمایش داد. بزودی تمامی تنظیمات لازم و کدهای لازم برای ساخت این برنامه توضیح داده می شود و شما بجای اینکه درگیر انجام تنظیمات WCF باشید می توانید روی منظق برنامه تان بیشتر تمرکز کنید.

برای شروع، ابتدا یک پروژه WCF Service Library می سازیم.

سپس ما نیاز داریم تا چارچوب System.ServiceModel.Web را به reference های پروژه اضافه کنیم. برای اینکار روی نام پروژه راست کلیک کرده و گزینه Add Reference را انتخاب کنید.

کد های زیر را در داخل فایل App.Config کپی کنید.

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
	<services>
	  <service name="WcfJsonRestService.Service1">
		<endpoint address="http://localhost:8733/service1" 

				  binding="webHttpBinding" 

				  contract="WcfJsonRestService.IService1"/>
	  </service>
	</services>
	<behaviors>
	  <endpointBehaviors>
		<behavior>
		  <webHttp />
		</behavior>
	  </endpointBehaviors>
	</behaviors>
  </system.serviceModel>
  <startup>
	<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

توجه کنید که در اینجا مقدار binding برابر با مقدار webHttpBinding است در حالی که در حالت نرمال این مقدار برابر با wsHttpBinding می باشد. از دیگر تغییر های مهم این است که مقدار endpointBehavior را برابر با  WebHttp  قرار می دهیم. این دو تغییر برای فعال کردن ارسال JSON بر روی REST در سرویس های WCF لازم است.

کد های زیر را در داخل فایل IService1 کپی کنید.

using System.ServiceModel;

namespace WcfJsonRestService
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        Person GetData(string id);
    }
}

توجه کنید که ما در این مثال یک پارامتر ورودی id از نوع string می گیریم و یک شی از نوع Person برمی گردانیم.

کد های زیر را در داخل فایل Service1.cs کپی کنید.

using System;
using System.ServiceModel.Web;

namespace WcfJsonRestService
{
    public class Service1 : IService1
    {
        [WebInvoke(Method = "GET", 
                    ResponseFormat = WebMessageFormat.Json, 
                    UriTemplate = "data/{id}")]
        public Person GetData(string id)
        {
            // lookup person with the requested id 
            return new Person()
                       {
                           Id = Convert.ToInt32(id), 
                           Name = "Leo Messi"
                       };
        }
    }

    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

در اینجا صفت هایی برای متد قرار داده شده است، در اینجا ما دسترسی به متد از طریق HTTP GET را فعال کرده ایم و مقدار خروجی را به صورت Json برمی گردانیم و Uri نمونه برای دسترسی به متد و ارسال پارامتر به آن را مشخص کرده ایم تا مطمعن باشیم که حتما از یک اینترفیس RESTful استفاده می کنیم.

برای تست برنامه ساخته شده، آدرس زیر با مرورگر باز کنید. در اینجا مقدار 10 را به یک Value ارسال شده است.

http://localhost:8733/Service1/data/10

آموزش سی شارپ

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

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

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

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 3k بازدید
  • 8 تشکر

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

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