بسم الله الرحمن الرحیم
تفاوت بین Webservice و WCF یکی از معمول ترین سوالات مصاحبه های استخدامی است . یکبرنامه نویس حرفه ای باید بتواند تشخیص دهد که چه موقع از Webservice استفاده کند و چه وقت از WCF .
برای درک این موضوع ، باید به یک تعریف مشخص از Webservice و WCF دست پیدا کنیم . در اینجا تعریف مختصری از این دو مفهوم به صورت زیر ارائه شده است
Webservice چیست ؟
بر طبق تعریف موجود در ویکی :
" ... وب سرویس یک متد ارتباطی بین دو وسیله الکترونیکی در جهان گستر وب(WWW) می باشد . وب سرویس یک فانکشن نرم افزاری است که با یک آدرس شبکه ای در سراسر وب قابل دسترسی است و یک سرویس خدماتی را به دیگران ارائه می دهد. "
وب سرویس یک مکانیزم است که داده را به عنوان یک service/response بر اساس پروتکل HTTP و درخواست برخی برنامه های دیگر تامین می کند.
wcf چیست؟
به توسعه و کاربرد سرویس های توزیع شده تحت شبکه بر اساس اصول معماری سرویس گرا (soa) ، Windows Communication Foundation (WCF) گفته می شود . مشخصه بارز wcf همکارری و تعامل است . این نوع سرویس به شما این امکان را می دهد که ساخت و استفاده از سرویس ها را با روش های مدیریت شده تری انجام دهید.
در این جدول تفاوت های wcf و وب سرویس خلاصه شده است.
در یکی از مباحث تالار گفتمان برنامه نویس به تعریف جامعتری برخوردم :
"WCF بستری است برای یکپارچه سازی برنامه نویسی تکنولوژی های قدیمی تر مانند وب سرویس، دات نت ریموتینگ، کام پلاس و ... و البته امکانات مخصوص به خودش.
Web Service سرویسی است که تحت وب عرضه میشه مثل یه سایت که کارش مثلا محاسبه قیمت دلار به ریاله و ما فقط می تونیم از خروجی اون استفاده کنیم و مثلا توی سایت خودمون نشون بدیم.
پروتکلی که وب سرویس کارهاشو بر اساس اون انجام میده، پروتکل http است و برای تبادل داه که اصطلاحا بهش Message میگن هم از ساختار XML ای به نام SOAP استفاده میکنه.
بنابراین اگر سرویس WCF شما، تنظیمات مربوط به وب سرویس رو داشته باشه یک وب سرویسه!
یک وب سرویس و یک ُسرویس WCF که تنظیماتش مثل وب سرویسه از نظر کارایی، هیچ تفاوتی با هم ندارند.
تفاوتهای این دو رو در این لینک به صورت دقیقتر میتونید ببینید."
بنابر این وب سرویس نوعی از WCF است که به صورت محدودتری به فعالیت و ارائه خدمات در بستر وب می پردازد . ولی WCF این امکان را می دهد که علاوه بر تکنولوژی وب سرویس از تکنولوژی ها و پروتکل های دیگر هم برای ارائه خدمات در بستر استفاده نماییم .