شروع کار با WCF برای مبتدیان
سه شنبه 21 مهر 1394در این مقاله قصد داریم اطلاعاتی در مورد WCF ارائه دهیم . WCF یا Windows Communication Fundation یک پلت فرم(platform) یا جایگاهی است که برای ایجاد سرویس برنامه های کاربردی توزیع شده استفاده می شود. WCF یک پلت فرم متقابل کاربردی است به این معنا که توسط مشتری که در تکنولوژی .Net یا Java و... ایجاد شده است استفاده می شود.
WCF یا Windows Communication Fundation یک پلت فرم(platform) یا جایگاهی است که برای ایجاد برنامه های سرویس گرا استفاده می شود. WCF یک پلت فرم متقابل کاربردی است به این معنا که توسط مشتری که در تکنولوژی .Net یا Java و... ایجاد شده است استفاده می شود. WCF با عنوان Indigo که نام قبلی آن می باشد نیز شناخته شده است ، اما از زمانی که با .Net Framework معرفی شد با نام WCF شناخته می شود. WCF همراه با .Net Framework3.0 توسط مایکروسافت در سال 2006 معرفی شد .
در صورت تمایل میتوانید به صورت رایگان آموزش WCF به همراه پروژه عملی را در سایت تاپ لرن مشاهده کنید .
با توجه به تصویر بالا، WCF یک تکنولوژی اشتراکی است که تمام امکانات تکنولوژی های بالا را فراهم میکند.
استفاده WCF چیست؟
WCF یک مدل برنامه نویسی برای ایجاد سرویس هایی است که می تواند قابل دسترس طیف گسترده ای از مشتریان باشد، که از انواع پروتکل ها، رمز گذاری ها، امنیت و ... پشتیبانی میکند. WCF در مقایسه با Web Service ها از امنیت بالایی برخوردار است.
به طور مثال فرض میکنیم شما یک سرویس برای مشتری ایجاد کنید که از پروتکل HTTP برای برقراری ارتباط استفاده می کند. فرض میکنیم که شما سرویستان را با استفاده از Web Service ایجاد کرده اید. قرار است در آینده یک مشتری دیگر سرویس مشابهی را درخواست کند اما از پروتکل TCP استفاده کند، شما چه خواهید کرد؟
شما نیاز دارید برای مشتری جدید سرویس جدید ایجاد کنید، پس برای یک سرویس مشابه دو بار تلاش کرده اید.
در اینجا WCF مشکل را حل میکند. اگر WCF را انتخاب کنید، می توانید سرویس خود را در اختیار تعدادی از مشتریان بدون ایجاد سرویس جدید یا توسعه جدید قرار دهید. فقط نیاز به تغییراتی در پیکربندی دارید تا سرویس را در اختیار یک مشتری خاص قرار دهید.
ABC در WCF
ABC مخفف Address و Binding و Contract است. اگر شما سرویس خود را در اختیار یک مشتری جدید قرار دهید، فقط نیاز دارید که ABC را به پیکربندی خود بیافزایید.
<endpoint address="ServiceUrlGoesHere" binding="TypeOfBinding" contract="NameOfContract" />
A یا آدرس : منظور از آدرس ، آدرس سرویس است. یعنی جایی که سرویس شما میزبانی می شود. شما فقط نیاز دارید که آدرس سرویس خود را درون پیکرندی آن قرار دهید .
B یا اتصال : بدین معناست که چگونه سرویس شما با جهان بیرون ارتباط برقرار می کند و مشتری با کدام پروتکل به سرویس دسترسی خواهد داشت .
C یا قرارداد : یعنی چه وظیفه ای توسط سرویس انجام خواهد شد. نیاز داریم که اسم قرارداد را در نقطه پایانی که توضیح می دهد چه عملیاتی انجام گرفته است قرار دهیم .
<endpoint address="http://localhost:8731/DemoService/" binding="basicHttpBinding" contract=" DemoService.IDemo">
قراردادها در WCF
Contracts یا قرارداد برای ساختن یک سرویس WCF کاربردی بسیار مفید است. که تعریف میکند از کدام نوع از پروتکل در سرویس استفاده شده است ، چه عملیاتی توسط سرویس انجام می گیرد و چه نوع داده ای روی پروتکل فرستاده می شود .
قراردادهایی که در WCF در دسترس هستند عبارتند از :
1. Service contracts
2. Data contracts
3. Message contracts
4.Fault contract
5.Operation contract
Service contracts یا قرارداد سرویس درباره همه عملیات هایی که ما توسط سرویس اجرا می کنیم توضیح می دهد. که می تواند رابط یا یک کلاس باشد. استفاده از Interface یا رابط به دلیل امنیت آن بجای کلاس پیشنهاد می شود. صفت [ServiceContract] برای تعریف قرارداد سرویس استفاده می شود.
[ServiceContract] public interface IMyService { // All the Operation goes here }
Operation contract یا قرارداد عملیات، همه اعمال یا به عبارتی متدها یا توابع که توسط سرویس، زمانی که مشتری در حال استفاده است اجرا خواهند شد را تعریف میکند. این متدها برای تبدیل کردن داده ها بین سرویس و مشتری استفاده می شوند. از صفت [OperationContract] برای تعریف آن استفاده می کنیم.
public interface IMyService { [OperationContract] string GetData(int myValue); [OperationContract] int AddData(int first, int second); }
Data Contract برای تعریف داده های روی شبکه شما استفاده می شود. در اینجا خاصیتهای get set را تعریف می کنید. اما استفاده مهم آن اینست که مسئولیت Serialized و de-serialized کردن داده های پیچیده روی شبکه را بر عهده دارد. Data Contract چگونگی serialized و de-serialized انواع داده ها را تعریف می کند .
[DataContract] public class MyClass { private string _Name; private string _City; [DataMember] public string Name { get { return _Name; } set { _Name = value; } } }
Fault Contract ، گاهی اوقات برای سرویس بعضی exception ها در زمان اجرا رخ می دهد و به کاربران داده هایی که لازم نیست نشان داده می شود. پس برای حل این مشکل در WCF از Fault contract استفاده می شود.
در اینجا ما نمیتوانیم از بلوک try-catch برای حل اینگونه خطاها استفاده کنیم . اما همانطور که می دانید سرویس WCF میتواند توسط هر یک از مشتری ها که از تکنولوژیهای مشابه یا غیر مشابه استفاده میکنند مصرف شود.
[ServiceContract] public interface IMyService { [OperationContract] [FaultContract(typeof(Employee))] Employee GetDetails(string Name); } [DataContract] public class Employee { private string _Name; private string _City; [DataMember] public string Name { get { return _Name; } set { _Name = value; } } [DataMember] public string City { get { return _City; } set { _City = value; } } }
Message contracts ، به صورت پیش فرض، WCF از فرمت پیام SOAP پشتیبانی میکند. اما اگر مشتری چیز متفاوتی نیاز داشته باشد ، باید فرمت پیام خود را تعریف کنید که می توانید با استفاده از Message Contracts آن را انجام دهید. از صفت [MessageContract] برای دسترسی به آن استفاده میکنیم.
[MessageContract] public class Employee { [MessageHeader] public Operation EmpName; [MessageHeader] public string city; [MessageBodyMember] private Home Address; [MessageBodyMember] public int Salary; }
میزبانی سرویس WCF
اگر شما یک سرویس WCF ایجاد کرده باشید و بخواهید به مشتری ارائه دهید، به یک میزبان برای سرویس خود نیاز دارید. سرویس می تواند روی IIS میززبانی شود و یا Self-hosted باشد و ...
تصویر نشان دهنده راه های میزبانی WCF برای ارائه به مشتری می باشد.
میزبانی IIS
شما می توانید سرویس خود را روی IIS (Internet Information Service) میزبانی کنید. میزبانی روی IIS مزایای زیادی دارد و می تواند از پروتکل HTTP استفاده کند.
Windows Activation Service Hosting
میزبانی Window Activation Service(WAS) یک راه برای میزبانی سرویس است که با IIS 7.0 برای ارتباطات بر اساس HTTP استفاده می شود. همچنین WCF می تواند از WAS برای فراهم کردن پیام های پایه ای فعال سازی Message-based روی پروتکل های دیگر مانند TCP استفاده می شود.
Self Hosting
اگر بخواهید سرویس شما در جاهای دیگر میزبانی نشود می توانید آن را Self-hosted کنید. سرویس در Console Aplication و Windows Forms Application خودمیزبان می شود.
Windows Service Hosting
شما می توانید سرویس خود را به عنوان یک window service که شروع و پایان آن بر اساس نیازهای شماست میزبانی کنید.
مزایای WCF
. از پروتکل های مختلف برای ارتباط با مشتری پشتیبانی میکند.
. فرمت پیام امن را روی شبکه فراهم میکند.
. از Load balancing و Scaling پشتیبانی میکند.
. میتوانید یک سرویس WCF را روی IIS ، WAS ، Self-Hosting و Windows Service میزبانی کنید.
. از الگوی پیام چندگانه استفاده میکند.
- WCF
- 4k بازدید
- 12 تشکر