نحوه استفاده از سرویس های WCF در Window Application Client

یکشنبه 15 آذر 1394

در این مقاله قصد داریم توضیح دهیم که چگونه می توان یک سرویس WCF با استفاده از WCF Service Library ایجاد کرد و چگونه می توان آن را در برنامه کاربر میزبانی و استفاده کرد.

 نحوه استفاده از سرویس های WCF در Window Application Client

در این مقاله قصد داریم توضیح دهیم که چگونه می توان یک سرویس WCF  با استفاده از  WCF Service Library ایجاد کرد و چگونه می توان آن را در برنامه کاربر میزبانی و استفاده کرد.   

دو دسته بندی برای سرویس های  WCF در ویژوال استودیو وجود دارد. یکی  WCF service library  و دیگری WCF service application است.

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

ایجاد  WCF Service Library  جدید

از پنجره New Project  گزینه  WCF Service Library  را انتخاب میکنیم.

در Solution explorer  دو کلاس  IService1.cs  و  Service1.cs وجو دارند .

اینها هنگام ایجاد پروژه جدید به صورت خودکار ایجاد می شوند ، هر دوی آنها را حذف میکنیم.

یک رابط یا interface  جدید با نام   IEmployee.cs اضافه میکنیم و صفت [ServiceContract]  را که در فضای نام  system.ServiceModel موجود است به آن اضافه میکنیم. پس از آن بعضی توابع عضو را با صفت [OperationContract]  اضافه میکنیم.

    using System.Collections.Generic;  
    using System.ServiceModel;  
    namespace MyWcfLibrary  
    {  
        [ServiceContract]  
        public interface IEmployee  
        {  
            [OperationContract]  
            string GetFullName(string firstName, string lastName);  
            [OperationContract]  
            List < EmployeeInfo > GetAllEmployeeList();  
        }  
    }  

سپس یک کلاس  EmployeeInfo.cs به همراه صفت  [DataContract]  که در فضای نام system.Runtime.Serialization قرار دارد اضافه میکنیم. در اینجا ویزگی هایی برای Employee  ایجاد خواهیم کرد.

    using System.Runtime.Serialization;  
    namespace MyWcfLibrary  
    {  
        [DataContract]  
        public class EmployeeInfo  
        {  
            [DataMember]  
            public int EmployeeId  
            {  
                get;  
                set;  
            }  
            [DataMember]  
            public string FirstName  
            {  
                get;  
                set;  
            }  
            [DataMember]  
            public string LastName  
            {  
                get;  
                set;  
            }  
            [DataMember]  
            public string Address  
            {  
                get;  
                set;  
            }  
        }  
    }  

در آخر لازم است تا یک کلاس که قرارداد  IEmployee.cs  را پیاده سازی میکند اضافه کنیم. پس کلاس Employee.cs  را برای پیاده سازی متد  IEmployee اضافه میکنیم.

    using System.Collections.Generic;  
    namespace MyWcfLibrary  
    {  
        public class Employee: IEmployee  
        {  
            public string GetFullName(string firstName, string lastName)  
            {  
                return firstName + " " + lastName;  
            }  
            public List < EmployeeInfo > GetAllEmployeeList()  
            {  
                List < EmployeeInfo > employeeList = new List < EmployeeInfo > ();  
                employeeList.Add(new EmployeeInfo()  
                {  
                    EmployeeId = 101, FirstName = "Mukesh", LastName = "Kumar", Address = "New Delhi"  
                });  
                employeeList.Add(new EmployeeInfo()  
                {  
                    EmployeeId = 102, FirstName = "Banky", LastName = "Chamber", Address = "Noida"  
                });  
                return employeeList;  
            }  
        }  
    }  

 اکنون می توانید  WCF Service Library را با فشردن  F5 اجرا کنید. اما یک خطا را نمایش می دهد.

نشان می دهد که نام سرویس در app.config  صحیح نمی باشد. پس نام سرویس را از  Service1 به  Employee تغییر می دهیم.

//From  
< service name = "MyServiceLibrary.Service1" >  
    //To   
    < service name = "MyServiceLibrary.Employee" >

همچنین می توانید آن را در  endpointتغییر دهید .

<endpoint address="" binding="wsHttpBinding" contract="MyWcfLibrary.IEmployee"></endpoint>

اکنون  F5را برای مشاهده نتیجه می فشریم.

ایجاد کاربر Window Application

 در اینجا از یک  Window Application به عنوان کاربری که سرویس WCF  ایجاد شده را مصرف میکند استفاده میکنیم. برای ایجاد  Window applicationقدم های زیر را دنبال کنید.

 New Project   .1   را انتخاب کرده

   2.   در پنجره باز شده  Visual C# را باز کرده ، Windows  را انتخاب کرده و سپس  Windows Form Application  را انتخاب میکنیم.

   3.    نام برنامه را  ClientWindowForm قرار می دهیم .

 GUI    .4    را بصورت زیر برای تست کردن سرویس ایجاد میکنیم.

استفاده از سرویس  WCF  

برای استفاده از سرویس  WCF در پنجره برنامه ، بر روی  ClientWindowForm راست کلیک کرده و Add Service Reference  را انتخاب میکنیم. در پنجره باز شده بر روی  Discover کلیک میکینم.

در تصویر بالا دو متد ایجاد شده در سرویس  WCF  قابل مشاهده است. با کلیک بر روی OK  منابع سرویس  WCFبه پنجره برنامه اضافه می شود. برای استفاده از آن به ایجاد یک نمونه از کاربر سرویس احتیاج داریم . تغییراتی در فرم به صورت زیر برای استفاده از سرویس ایجاد میکنیم.

    using System;  
    using System.Windows.Forms;  
    namespace ClientWindowForm  
    {  
        public partial class Form1: Form  
        {  
            public Form1()  
            {  
                InitializeComponent();  
            }  
            private void btnGetName_Click(object sender, EventArgs e)  
            {  
                ServiceReference1.EmployeeClient client = new ServiceReference1.EmployeeClient();  
                var firstName = txtFirstName.Text;  
                var lastName = txtLastName.Text;  
                lblFullName.Text = client.GetFullName(firstName, lastName);  
            }  
            private void btnGetEmployeeList_Click(object sender, EventArgs e)  
            {  
                ServiceReference1.EmployeeClient client = new ServiceReference1.EmployeeClient();  
                dgvEmployeeList.DataSource = client.GetAllEmployeeList();  
            }  
        }  
    }  

برای تست کردن ، هنگامی که بعد از پر کردن دو  textbox بر روی دکمه ثبت نام کلیک میکنید خروجی به صورت زیر نمایش داده می شود.

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

در این مقاله توانستیم از یک سرویس  WCF  در برنامه خود استفاده کنیم.

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

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

نویسنده 3224 مقاله در برنامه نویسان
  • WCF
  • 2k بازدید
  • 5 تشکر

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

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