نحوه استفاده از سرویس های WCF در Window Application Client
یکشنبه 15 آذر 1394در این مقاله قصد داریم توضیح دهیم که چگونه می توان یک سرویس WCF با استفاده از WCF Service Library ایجاد کرد و چگونه می توان آن را در برنامه کاربر میزبانی و استفاده کرد.
در این مقاله قصد داریم توضیح دهیم که چگونه می توان یک سرویس 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 در برنامه خود استفاده کنیم.
- WCF
- 3k بازدید
- 5 تشکر