معماری و اصول WCF

پنجشنبه 6 اسفند 1394

در این مقاله در باره WCF توضیح داده خواهد شد و معماری و اصول آن را بررسی خواهیم کرد. WCF یک پلت فرم برای کسب و کار های توزیع شده و گسترش سرویسها در میان endpointهای مختلف در ویندوز است . با استفاده از آن می توان بر نامه های Service-oriented را پیاده سازی کرد که قابلیت همکاری دارند.

معماری و اصول WCF

WCF یک پلت فرم برای کسب و کار های توزیع شده و گسترش سرویسها در میان  endpointهای مختلف در ویندوز است . با استفاده از آن می توان بر نامه های  Service-oriented را پیاده سازی کرد که قابلیت همکاری دارند.

 WCF یا  Windows Communication Foundation یک مدل برنامه نویسی  است که می توان با استفاده از آن برنامه های  Service-oriented ایجاد کرد. برای ایجاد و توسعه سرویسهایی استفاده می شود که قابلیت دسترسی برای تعداد زیادی مشتریان مختلف را دارد. محیطی را فراهم میکند که بتوان سرویسی برای مشتریان  Windows همچنین مشتریان  Linux  و یا هر نوع دیگر قابل دسترسی باشد.  WCF امکانات بیشتری نسبت به Web Service  فراهم کرده است.

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

 WCF ، تکنولوژی شرکت مایکروسافت است که قبل از آن  Web Service  برای ایجاد سرویسها استفاده می شد اما این نوع از سرویسها فقط برای کاربران ویندوز که روی پروتکل HTTP میزبانی می شدند قابل دسترسی بود.  WCF بر روی پروتکل های مختلفی مانند http , tcp, msmq  و ... قابل دسترسی است.

اما معماری آن چگونه است.  WCF چهارچوبی برای ایجاد برنامه های Service-Oriented  است که به وسیله آنها می توانیم پیام یا داده ها را به صورت نا همزمان از یک Service endpoint به دیگر  service endpointارسال کنیم.

 WCF مجموعه ای از  APIها برای ایجاد سیستم هایی است که پیام هایی را بین سرویس و مشتری ارسال میکنند.  ترکیبی از امکانات همه تکنولوژی های توزیع شده است. مانند :

 COM+ Services

.NET Remoting

Web Services

 اصول  WCF

برای درک معماری  WCF باید از اصول آن مطلع باشیم که آنها را در زیر آورده ایم.

 Unification:  سرویسهای WCF توسعه برنامه های توزیع شده را افزایش می دهند و بهره وری توسعه دهندگان را بوسیله یکی کردن تکنولوژی های زیر بالا می برند.

Com+ Services  :  تکنولوژی  Com+ زیرساخت را برای ایجاد و توسعه برنامه های توزیع شده فراهم میکند. سرویس های مختلفی مانند ادغام شی فقط در زمان فعال سازی و همگام سازی . این سرویس به شما اجازه ایجاد برنامه های کاربردی بسیار امن و مقیاس پذیر می دهد.

 Web Service  :  یک جزء از برنامه است که امکان توسعه برنامه های مقیاس پذیر ،  Loosly Coupledو مستقل از پلت فرم را می دهد.

.NET Remoting  : ارتباط میان اشیاء متعدد را در حوزه های متنوع یا فرایندهای مختلف با استفاده از پروتکل هایی مانند  HTTP  و  TCP فعال میکند.

Microsoft Message Queuing  : یک برنامه  .NET را برای ارسال پیام ها حتی زمانی که برنامه مقصد قابل دستیابی نباشد و آنها  را در صفی نگهداری کند تا زمانی که برنامه مقصد  قابل دسترسی شود فعال میکند.

Interoperability :  دو برنامه ساخته شده بر روی پلت فرم های یکسان یا مختلف را برای ارتباط با یکدیگر در میان یک شبکه فعال میکند.

 Service Orientation : سرویس WCF یک مدل برنامه نویسی پرباری را برای ایجاد سیستم های توزیع شده که شامل توسعه دادن سرویس های  Loosly-Coupled می شود فراهم میکند. این سرویس ها می توانند به طور مستقیم مدیریت ، آپدیت و توسعه داده شوند.

معماری  WCF

در  WCF چهار لایه عمده داریم که برای توسعه دهندگان یک مدل برنامه نویسی Service-oriented  جدید را فراهم کرده است. این معماری شامل لایه های زیر می شود.

- Contracts :  لایه اول ، لایه قرار دادها شامل انواع مختلف قراردادها ، سیاست و اتصالات  است که در  WCF استفاده می شوند. قراردادهای موجود در این لایه به شرح زیر می باشند :

   1. Service Contract  : این قرارداد شامل عملیات هایی می شود که توسط سرویس اجرا می شوند و از طریق یک اینترفیس به عنوان یک واحد قابل مشاهده اند.


    [ServiceContract]   
    public interface IService  
    {   
       // TODO: Add your service operations here   
    }    

   2. Data Contract  :  به نمایش گذاشتن انواع داده تعریف شده کاربر و کلاسها در سرویس  WCF


    [DataContract]   
    public class Employee   
    {   
       [DataMember]   
       public int emp_id;  
       [DataMember]   
       public int emp_name;   
    }    

   3.Message Contract  : این قرارداد فرمت و ساختار  مبادله پیام ها بین برنامه سمت کاربر و سرویس تعریف میکند.


    [MessageContract]   
    public class StoreMessage   
    {   
       [MessageHeader] public DateTime CurrentTime;   
       [MessageBodyMember] public Employee emp_id;   
    }    

4.Fault Contract  :  شما را قادر می سازد پیام های خطای سفارشی شده را بوسیله کلاس user-defined  به سرویس گیرنده ارسال کنید .


    [ServiceContract]   
    public interface IService   
    {   
       [OperationContract]   
       [FaultContract(typeof(SampleFaultException))]   
       DataSet GetDetails(int Employee_ID);  
    }   
    [DataContract]   
    public class SampleFaultException  
    {   
       [DataMember]   
       public string errorMessage;   
    }    

   5. Operationn Contract : برای به نمایش گذاشتن عملیات هایی که سرویس می تواند انجام دهد استفاده می شود. متدهایی از WCF  را همراه با پارامتر ها تعریف میکند و نوع متدها را باز میگرداند.


    [ServiceContract]  
    public interface IService  
    {   
       [OperationContract]   
       DataSet GetDetails(int Employee_ID);   
    }    

   6. Policies and Binding   : شرایط لازم برای ارتباط با یک سرویس را مشخص میکند.

- Service Runtime  : این لایه شامل رفتارهایی می شود که در هنگام اجرای سرویس اتفاق می افتد. در زیر لیستی از رفتارهای مختلف که توسط لایه زمان اجرای سرویس مدیریت می شوند آورده ایم :

   1. Throttling behavior : این رفتار تعداد پیام های به انجام رسیده را کنترل میکند.

   2. Error behavior  : این رفتار تعیین میکند که هنگام بروز خطایی در زمان اجرای سرویس چه خواهد شد.

   3. Metadata behavior : این رفتار مشخص میکند چگونه و چه وقت metadata های سرویس برای سرویس گیرنده قابل دسترس خواهند شد.

   4. Instance behavior : این رفتار تعداد نمونه های سرویس مورد نیاز برای فرایند درخواست از سرویس گیرنده را مشخص میکند.

   5. Message inspection  : این رفتار بخشی از پیام را مورد بازرسی قرار می دهد. با استفاده از این می توانیم فرمت پارامترهای یک پیام را چک کنیم.

   6. Transaction behavior : این رفتار مسئولیت Rolle back در تراکنش ها را هنگامی که یک فرایند در زمان اجرای سرویس با شکست مواجه می شود ، به عهده دارد.

   7. Dispatch behavior : این رفتار مسئولیت کنترل چگونگی به انجام رسیدن پیام را بوسیله زیر ساخت  WCF به عهده دارد.

   8. Concurrency behavior : اندازه تعداد  thread هایی که می توانند به نمونه دریافتی از سرویس دسترسی داشته باشند را مشخص میکند.

   9. Parameter filtering :  این رفتار عمل یا Action از پیش تعیین شده را بر اساس هدر پیام ها فیلتر میکند.

- Messaging : با استفاده از کانالها ، لایه Messaging ، پیام پردازش شده را به سرویس گیرنده ای که به سرویس دسترسی دارد ارسال میکند. دو نوع کانال به صورت زیر وجود دارد:

   1. Transport channels : این کانال پیام ها را با استفاده از یک  Encoder  (برای تبدیل پیام به یک فرمت استاندارد) برای یک سرویس گیرنده می نویسد یا از آن میخواند .

   2. Protocol channels  :  این کانال یک پیام را بوسیله خواندن و نوشتن هدرهای اضافی برای پیام پردازش میکند.  نمونه ای از این کانال را میتوان  WS-Security و WS-Reliability دانست.

- Activation and Hosting : این لایه اجرای سرویس را در محیط های مختلف مانند  Windows Services،  IIS و Windows Activation Services (WAS)  پشتیبانی میکند. سرویس همچنین می تواند خود میزبان یا  Self-hosted  باشد و یا در برنامه دیگری میزبانی شود. که به طور خلاصه در زیر شرح داده شده اند.

   1. Self-Hosting :  یک سرویس  WCF می تواند به عنوان یک console application یا  WPF application یا در میان یک  windows form  که رابط گرافیکی دارد خود میزبان شود. این نوع از میزبانی بسیار قابل انعطاف است و براحتی استفاده می شود. اما فقط مناسب فاز توسعه برنامه های توزیع شده است.

   2.  IIS : زمانی که یک سرویس  WCF اینگونه میزبانی شود، سرویس گیرنده می تواند با استفاده از اینترنت به آن دسترسی داشته باشد. با استفاده از این میزبانی ، سرویس می تواند از مزایای  IIS مانند مدیریت پردازش طول عمر و آپدیت خودکار بعد از ایجاد تغییرات در پیکربندی برخوردار شود.

   3. Windows Service  : می توانیم یک سرویس WCF را به عنوان  Windows Server  بر روی کامپیوتر سرویس گیرنده میزبانی کنیم. و هنگامی که کامپیوتر خاموش شود سرویس به صورت خودکار متوقف می شود.

   4.  Windows Activation Services (WAS)  :  یک سرویس قابل دسترس بر روی ویندوز است که برنامه  WCF را برای اجرای خودکار زمانی که کامپیوتر شروع به کار میکند فعال میکند.  WAS با پروتکل های  HTTP ،  TCP و  MSMQ کار میکند.  سرویس  WCF را قادر می سازد اینترنت را بدون پشتیبانی  IIS به جریان بیاندازد.

مدل برنامه نویسی  WCF

همه ارتباطات با یک سرویس  WCF از طریق endpoint ها اتفاق میافتد . یک endpoint  سرویس  WCF به عنوان یک  getway  عمل میکند. مکانی است که پیام ها ارسال یا دریافت می شوند و شامل همه اطلاعات لازم برای مبادله یک پیام است .  

یک  endpoint از یک آدرس ، یک اتصال و یک قرارداد تشکیل شده است که با عنوان  ABC شناخته می شوند.

Address . :  در  ABC ، حرف  A مخفف آدرس است که مشخص میکند سرویس کجا قرار دارد. هر سرویس یک آدرس منحصر بفرد دارد که فرمت آن به صورت زیر است :

[Transport] ://[Domain Name]:[Port]//[Service Name]

Binding .  : در  ABC ، حرف  B مخفف binding است که نحوه ارتباط با سرویس را مشخص میکند.  WCF یک جفت اتصال ساخته شده برای برطرف کردن نیازهای خاصی دارد و همچنین می توانیم  اتصال سفارشی خود را نیز تعریف کنیم. همه اتصالات تعریف شده در فضای نام  System.ServiceModel قراردارند. در زیر اتصالات مختلفی که در WCF پشتیبانی می شوند آورده ایم.

   1. BasicHttpBinding  : در اینجا Web service  پایه ای برای ارتباط با یک Web server  یا یک برنامه سرویس گیرنده است. برای نمایش دادن یک سرویس  WCF به عنوان یک  asmx web service  طراحی شده است. این اتصال از پروتکل  HTTP استفاده میکند.

   2. NetMsmqBinding : برای پیاده سازی در صف قرار دادن پیام ها در  WCF استفاده می شود. یک برنامه سرویس گیرنده را برای ارسال پیام به سرویس  WCF حتی اگر سرویس در دسترس نباشد قادر می سازد.

   3. NetTcpBinding  : ارتباط بین یک سرویس  WCF و یک برنامه سرویس گیرنده  .NET روی شبکه امکان پذیر میکند. از پروتکل TCP استفاده میکند که بسیار سریعتر و قابل اعتمادتر از HTTP است.

   4. NetPeerTcpBinding : برای ارتباطات  Peer-to-peer جایی که پیام ها ارسال و دریافت می شوند پروتکل  TCP استفاده می شود.

   5. WSHttpBinding  : شبیه به  BasicHttpBinding است و از پروتکل های  HTTP  یا  HTTPS استفاده میکند.

   6. WSDualHttpBinding : شبیه  WSHttpBinding است بجز اینکه از ارتباط bi-directional پشتیبانی میکند. به این معنا که هر دوی سرویس گیرنده و سرویس می توانند بوسیله ارسال و دریافت پیام با یکدیگر ارتباط داشته باشند.

   7. NetNamedPipeBinding : این اتصال از Named Pipe ها برای ارتباط بین دو سرویس روی ماشین مشابهی استفاده میکند که امن تر و سریعتر از دیگر اتصالات است.

Contract .   : در  ABC ، حرف  C مخفف Contract یا قرارداد است که نشان می دهد سرویس چه کاری قرار است برای ما انجام دهد.

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

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

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

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