تفاوت‌های بین WCF ،Web API ،WCF REST و Web Service

تفاوت‌های بین WCF ،Web API ،WCF REST و Web Service

وب سرویس function  هایی است که توسط سایر برنامه ها و توسط HTTP در دسترس قرار می گیرد.وقتی شما وب سایتی دارید برنامه شما و صفحاتی که دارد توسط Browser قابل دیدن است اما وب سرویس با این حالت تفاوت دارد به این دلیل که وب سرویس صفحاتی ندارد که شما ببینید بلکه عملکرد ها و متد هایی است که توسط سایر صفحات و برنامه ها قابل دستیابی است

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

در واقع می توانید فرض کنید که وب سرویس خود Application ایی است که با سایر Application تعامل دارد.که این تعامل می تواند به صورت دریافت و ارسال دیتا و یا متدی باشد که کار خاصی انجام می دهد و داخل وب سرویس نوشته شده است و از بیرون فراخوانی میشود.

انواع وب سرویس

به طور کلی به دو نوع می توان تقسیم کرد ۱ – REST- 2 , SOAP

REST یک معماری در طراحی Web API است .و از HTTP برای ارسال و دریافت اطلاعات مابین کلاینت و سرور استفاده می کند.در معماری سنتی وب سرویس ها مثلا شما نام شهر را به متدی از یک سرویس می دادید و در پاسخ مثلا جمعیت و یا درجه رطوبت هوا را می گرفتید ولی در وب سرویس های مبنتی در Rest دیگر متدهایی با این ماهیت نداریم و تنها یک سری متد های کلی داریم به نام های Get، Put،Delete،Post

بنابراین در این معماری و برای مثال درجه رطوبت که زده شد، شما یک سرویس مثلا به نام Humidity خواهید داشت و کاربر با تایپ آدرس GET http//Humiditycom/4210 HTTP/1.1 از وب سرویس خواهد خواست که رطوبت هوای شهر با کد ۴۲۱۰  را دریافت کند

درRESTهر درخواست باید با یکURIمشخص بشه.یعنی اساسا Rest بر مبنای URL کار می کند . منابع و کالکشن های خود را به صورت  http://example.com/resources دریافت می کند.علت وجودی این معماری در این است که به جای استفاده از روش های پیچیده مانند SOAP  و …. برای اتصال بین برنامه ها در جاهای مختلف از پروتکل HTTP استفاده کنیم .

SOAP : یک پروتکل (توجه کنید پروتکل و نه معماری )برای تبادل اطلاعات بین برنامه های وبی است و اصولا فرمت اطلاعات ارسالی و دریافتی در آن XML است .

تفاوت های زیادی میان وب سرویس های soap و rest وجود دارد که ما در اینجا ده مورد از مهم ترین های آن هارا برایتان ذکر میکنیم:

ردیفSOAPRest
۱SOAP  یک پروتکل استREST یک سبک معماری است
۲SOAP برپایه  دسترسی ساده به اشیاستREST بر پایه انتقال بازنمودی حالت است.
۳SOAP نمیتواند از rest استفاده کند چون یک پروتکل استREST می تواند از وب سرویس SOAP استفاده نماید زیرا یک مفهوم است و می تواند از هر پروتکل مانند HTTP، SOAP استفاده کند.
۴SOAP با استفاده از services interface ها برای نمایش منطق کسب و کار استفاده می کند.REST از URI برای نمایش منطق کسب و کار استفاده می کند.
۵JAX-WS یک api جاوا برای وب سرویس soap استJAX-RS یک api جاوا برای وب سرویس REST است
۶SOAP استانداردها را به شدت دنبال می کند.REST مانند SOAP استانداردهای بیشماری را تعریف نمی کند.
۷SOAP نیاز به پهنای باند و منابع بیشتری نسبت به REST دارد.REST نیاز به پهنای باند و منابع کمتر از SOAP دارد.
۸SOAP امنیت خود را تعریف می کند.وب سرویس RESTful اقدامات امنیتی را از انتقال اصولی به ارث می برند.
۹SOAP فقط فرمت XML را پشتیبانی میکند.REST فرمت های مختلف مانند متن ساده، HTML، XML، JSON و غیره را نیز پشتیبانی میکند.
۱۰SOAP کمتر از REST ترجیح داده می شود.REST بیشتر از SOAP ترجیح داده می شود.

برای استفاده از وب سرویس ها دو راه پیش رو دارید

۱- استفاده از WCF و ۲- استفاده از Web API

Web Service
۱. پایه‌ی آن براساس SOAP است و داده‌ها را در قالب XML به ما می‌دهد.
۲. فقط از HTTP پروتکل پشتیبانی می‌کند.
۳. متن باز نیست  اما می‌توان از آن در هر کلاینتی که از XML پشتیبانی می‌کند، استفاده کرد.
۴. فقط بر روی IIS می‌توان آن‌را هاست کرد.

WCF
۱. پایه‌ی پیش فرض آن براساس SOAP است و داده‌ها را در قالب XML به ما می‌دهد.
۲. تکامل یافته‌ی وب سرویس‌ها است (ASMX) و از پروتکل‌های مختلفی همچون  TCP, HTTP, HTTPS, Named Pipes, MSMQ  پشتیبانی می‌کند.
۳. مشکل اصلی WCF در بد قلقی و گسترده بودن تنظیمات آن می‌باشد.
۴.  متن باز نیست، اما می‌توان از آن در هر کلاینتی که از XML پشتیبانی می‌کند، استفاده کرد.
۵.  بر روی IIS یا برنامه‌ها و یا ویندوز سرویس‌ها، می‌توان آن‌را هاست کرد.

WCF REST
۱. برای استفاده از WCF  و WCF REST  باید حتما  webHttpBindings را فعال کرده باشید.
۲. از  دستور العملهای HTTP Get و  HTTP  POST با استفاده از ترکیب خصیصه‌های [WebGet] و [WebInvoke] ، پشتیبانی می‌کند.
۳. برای فعال کردن سایر دستور العمل‌های  HTTP باید تنظیماتی را در IIS انجام دهید، تا درخواست‌هایی که بر اساس دستورالعمل‌های ویژه‌ی در فایل svc. می‌باشند را قبول کند.
۴. ارسال دیتا به آن از طریق پارامتر، با استفاده از  WebGet احتیاج به تنظیماتی دارد و یا  UriTemplate  باید مشخص شود.
۵. از  XML, JSON and ATOM  پشتیبانی می‌کند.

Web API
۱. یک فریم ورک جدید برای ساختن HTTP سرویس، یک راه ساده و آسان.
۲. متن باز است و یک راه ایده آل برای ساخت  REST-ful سرویس‌ها بر روی دات نت فریم ورک.
۳. برخلاف  WCF Rest، سرویس‌های آن از ویژگی‌های کامل HTTP مانند ( URIs, request/response headers, caching, versioning various content formats) پشتیبانی می‌کنند.
۴. همچنین از ویژگیهای کامل MVC از قبیل routing, controllers, action results, filter, model binders, IOC container or dependency injection, unit testing به‌سادگی و قوی پشتیبانی می‌کند.
۵.  بر روی IIS و یا برنامه‌ها، می‌توان آنرا هاست کرد.
۶. یک معماری سبک و مناسب برای دستگاه‌هایی که پهنای باند محدودی دارند، مانند گوشی‌های هوشمند.
۷. پاسخها بوسیله  Web API’s MediaTypeFormatter به صورت JSON, XML  فرمت می‌شوند؛ و یا هر فرمتی را که شما می‌خواهید، به‌عنوان MediaTypeFormatter اضافه کنید .

انتخاب بین WCF  یا WEB API
۱.انتخاب WCF زمانی مناسب است که شما می‌خواهید یک سرویس را ایجاد کنید که باید از سناریو‌های مختلفی از قبیل پیغام‌های یکطرفه و صف  پیغام‌ها و ارتباطات دو طرفه پشتیبانی کند و یا می‌خواهید یک سرویس را ایجاد کنید که از کانال‌های انتقال سریع استفاده کند؛ از قبیل TCP و  Named Pipes و یا شاید گاهی UDP در  WCF 4.5 و همچنین می‌خواهید از HTTP  پشتیبانی کند؛ وقتی که همه‌ی کانال‌های دیگر انتقال در دسترس نیستند.
۲. انتخاب  Web API زمانی مناسب است که شما می‌خواهید یک  resource-oriented سرویس را بر روی HTTP ایجاد کنید. در اینجا می‌توان از ویژگی‌های کامل HTTP  مانند  URIs, request/response headers, caching, versioning, various content formats استفاده کرد و یا می‌خواهید سرویس را در معرض طیف گسترده‌ای از کلاینت‌ها شامل مرورگرها، موبایل‌ها، iphone و تبلت قرار دهید.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *