مقدمه ای بر WCF

این مقاله پیش درآمدیست برWCF . ما در این مقاله به بررسی مطالبی نظیر : WCF چیست ؟ ، چرا WCF ؟ و به مطالبی که مرتبط با WCF هستند ، خواهیم پرداخت . در ادامه نیز ، با برنامه های توزیع شده و سازگار آشنا خواهید شد و در آخر با ارائه یک مثال ، WCF را با تکنولوژِی های ما قبل آن مقایسه خواهیم کرد.

مقدمه ای بر WCF

WCF چیست ؟

WCF مخفف Windows Communication Foundation می باشد و این تکنولوژی جزئی از NET Framework. میباشد . WCF یک Microsoft Platform است که برای ایجاد برنامه های سازگار و توزیع شده مورد استفاده قرار میگیرد . 

منظور از برنامه های توزیع (distributed Applications) شده چیست ؟ 
به زبان ساده ، برنامه توزیع شده برنامه ای میباشد که قسمت های مختلف آن روی دو یا چند کامپیوتر اجرا میشود . برنامه های توزیع شده را همچنین با نام Connected System نیز میشناسند . 

حال ، مثالی از این دست از برنامه ها را در زیر مشاهده میکنید :

مثال 1 :




تصویر بالا نمونه ای از سیستم های connected میباشد . 

مثال 2 : 
یک برنامه وب بزرگ همانطور که در زیر مشاهده میکنید ممکن است دارای چند لایه باشد ، و امکان این وجود دارد که هر لایه بر روی یک ماشین یا یک سرور جداگانه اجرا شوند :

• Presentation Tier
• Business Tier
• Data Access Tier


حال ، ممکن است که این سوال در ذهنِ شما به وجود آمده باشد که چرا باید یکی برنامه خودش را به چند قسمت و لایه تقسیم کرده و آن لایه ها را در ماشین های مختلف مستقر سازد ، این کار برای بالا بردن Scalability یا مقیاس پذیری برنامه ها میباشد . 

Scalability یا مقیاس پذیری برنامه به چه معناست ؟!
Scalability یا مقیاس پذیری بدین معناست که با افزایش تعداد کاربران ، کارآمد و Performance برنامه کاهش پیدا کند . برای مثال ، اگر برنامه شما تعداد بازدیدکنندگان کمی دارد  ، شما این امکان را دارید که هر سه لایه بالا را بر روی یک ماشین یا سرور برای مدیریت این درخواست ها ، مستقر کنید . اما اگر برنامه شما پربازدید است و شما بیش از 100 هزار کاربران را پیش بینی میکنید ، بهتر است که هر کدام ازاین لایه ها بر روی یک ماشین و سرور جداگانه مستقر شوند و آن بدین دلیل است که پردازش درخواست های زیاد نیاز به سخت افزار مناسب دارد . 

این کار برنامه شما را بیشتر Scalable میکند و آن بدین دلیل است که هر کدام از سه لایه Presentation ،Business و Data Access بر روی ماشین های مختلف و جداگانه در حال اجرا هستند . به جای داشتن همه ی این لایه ها بر روی یک ماشین ، اگر ما آنها را در ماشین های مختلف مستقر کنیم ، این قابلیت مدیریت درخواست های خیلی زیاد را بدون کاهش کارایی برنامه خواهد داشت .

سوال بعدی که ممکن است ذهن شما را مشغول کرده باشد این است که چرا کسی قصد ایجاد برنامه های توزیع شده را میکند ؟

1. برنامه های بزرگ ممکن است قصد استفاده از سرویسی را داشته باشند که توسط یک شرکت دیگر ارائه میشود . برای مثال ، یک سایت فروشگاه اینترنتی ، از سرویس درگاه اینترنتی استفاده میکند . 

2. برنامه های بزرگ ممکن است که دارای هر سه لایه ی Presentation ، Business و Data Access باشند و هر کدام ازاین لایه ها بر روی ماشینی جداگانه اجرا شود . 

برنامه سازگار(interoperable Application)
چیست؟
یک برنامه، که با هر برنامه ی ساخته شده در هر Platform ای میتواند ارتباط برقرار کند را یک برنامه سازگار میگویند . 

وب سرویس ها ، سازگار هستند ، از سوی دیگر ، NET remoting Services. سازگار نیست . وب سرویس ها قادر به برقراری ارتباط با برنامه ها همه Platformها هستند ، در حالی که این امکان برای NET remoting Services. وجود ندارد و این فقط میتواند با برنامه ای NET. ارتباط برقرار کند . 



تکنولوژی های موجود برای ایجاد برنامه های توزیع شده قبل از ارائه WCF را در زیر مشاهده میکنید :

• Enterprise Services
• NET Remoting.
• Web Services

چرا ما باید از WCF استفاده کنیم ؟

مثال 1:


ما دو کاربر داریم و نیاز است که برای آنها یک سرویس را پیاده سازی کنیم . اولین کاربر از یک برنامه Java برای داشتن تعامل با سرویس ما استفاده میکند ، بنابراین برای سازگاری ، این کاربر میخواهد که پیام ها با فرمت XML باشد و پروتکل نیز HTTP خواهد بود .

بدون WCF ما برای مرتفع کردن نیاز کاربر اول ، ما باید یک ASMX Web Service را پیاده سازی کنیم . 

مثال 2 :


کاربر دوم از NET. استفاده میکند ، بنابراین برای کارایی بهتر ، این کاربر میخواهد که پیام ها با فرمت باینری باشند و از پروتکل TCP استفاده کنند . برا ی مرتفع ساختن نیاز کاربر دوم ما باید یک remoting Service را پیاده سازی میکردیم . 

web serviceها و remoting Serviceها دو تکنولوژی متفاوت هستند و مدل های برنامه نویسی کاملا متفاوتی با یکدیگر دارند . و توسعه دهندگان میبایست تکنولوژی های کاملا متفاوتی را می آموختند . 

در نهایت ، برای واحد کردن تمام این تکنولوژی های ارتباطی ، ماکروسافت تصمیم گرفت که یک مدل برنامه نویسی واحد را برای ارتباطات ارائه دهد که این مدل برنامه واحد همان WCF میباشد . 

با استفاده از WCF :



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