بعد از مدتی سروکار داشتن با مفاهیم WCF ،Web API ،WCF REST و Web Service برای تهیه یک فریم ورک قوی، به این نتیجه رسیدم که اکثر برنامه نویسان در مقایسه بین مفاهیم یاد شده به مشکل میخورند. در این مطلب سعی بر این است که تفاوتهای اساسی آنها را بهصورت کلی بیان کنم.
دانت فریم ورک با بهرهگیری از این تکنولوژیها، امکاناتی را برای ایجاد HTTP سرویسها، به ما میدهد و قبل از بکارگیری لازم است انتخاب کنیم که از کدام تکنولوژی باید استفاده کنیم.
Web Service
1. پایهی آن براساس SOAP است و دادهها را در قالب XML به ما میدهد.
2. فقط از HTTP پروتکل پشتیبانی میکند.
3. متن باز نیست اما میتوان از آن در هر کلاینتی که از XML پشتیبانی میکند، استفاده کرد.
4. فقط بر روی IIS میتوان آنرا هاست کرد.
WCF
1. پایهی پیش فرض آن براساس SOAP است و دادهها را در قالب XML به ما میدهد.
2. تکامل یافتهی وب سرویسها است (ASMX) و از پروتکلهای مختلفی همچون TCP, HTTP, HTTPS, Named Pipes, MSMQ پشتیبانی میکند.
3. مشکل اصلی WCF در بد قلقی و گسترده بودن تنظیمات آن میباشد.
4. متن باز نیست، اما میتوان از آن در هر کلاینتی که از XML پشتیبانی میکند، استفاده کرد.
5. بر روی IIS یا برنامهها و یا ویندوز سرویسها، میتوان آنرا هاست کرد.
WCF REST
1. برای استفاده از WCF و WCF REST باید حتما webHttpBindings را فعال کرده باشید.
2. از دستور العملهای HTTP Get و HTTP POST با استفاده از ترکیب خصیصههای [WebGet] و [WebInvoke] ، پشتیبانی میکند.
3. برای فعال کردن سایر دستور العملهای HTTP باید تنظیماتی را در IIS انجام دهید، تا درخواستهایی که بر اساس دستورالعملهای ویژهی در فایل svc. میباشند را قبول کند.
4. ارسال دیتا به آن از طریق پارامتر، با استفاده از WebGet احتیاج به تنظیماتی دارد و یا UriTemplate باید مشخص شود.
5. از XML, JSON and ATOM پشتیبانی میکند.
Web API
1. یک فریم ورک جدید برای ساختن HTTP سرویس، یک راه ساده و آسان.
2. متن باز است و یک راه ایده آل برای ساخت REST-ful سرویسها بر روی دات نت فریم ورک.
3. برخلاف WCF Rest، سرویسهای آن از ویژگیهای کامل HTTP مانند ( URIs, request/response headers, caching, versioning various content formats) پشتیبانی میکنند.
4. همچنین از ویژگیهای کامل MVC از قبیل routing, controllers, action results, filter, model binders, IOC container or dependency injection, unit testing بهسادگی و قوی پشتیبانی میکند.
5. بر روی IIS و یا برنامهها، میتوان آنرا هاست کرد.
6. یک معماری سبک و مناسب برای دستگاههایی که پهنای باند محدودی دارند، مانند گوشیهای هوشمند.
7. پاسخها بوسیله Web API’s MediaTypeFormatter به صورت JSON, XML فرمت میشوند؛ و یا هر فرمتی را که شما میخواهید، بهعنوان MediaTypeFormatter اضافه کنید .
انتخاب بین WCF یا WEB API
1.انتخاب WCF زمانی مناسب است که شما میخواهید یک سرویس را ایجاد کنید که باید از سناریوهای مختلفی از قبیل پیغامهای یکطرفه و صف پیغامها و ارتباطات دو طرفه پشتیبانی کند و یا میخواهید یک سرویس را ایجاد کنید که از کانالهای انتقال سریع استفاده کند؛ از قبیل TCP و Named Pipes و یا شاید گاهی UDP در WCF 4.5 و همچنین میخواهید از HTTP پشتیبانی کند؛ وقتی که همهی کانالهای دیگر انتقال در دسترس نیستند.
2. انتخاب Web API زمانی مناسب است که شما میخواهید یک resource-oriented سرویس را بر روی HTTP ایجاد کنید. در اینجا میتوان از ویژگیهای کامل HTTP مانند URIs, request/response headers, caching, versioning, various content formats استفاده کرد و یا میخواهید سرویس را در معرض طیف گستردهای از کلاینتها شامل مرورگرها، موبایلها، iphone و تبلت قرار دهید.
دانت فریم ورک با بهرهگیری از این تکنولوژیها، امکاناتی را برای ایجاد HTTP سرویسها، به ما میدهد و قبل از بکارگیری لازم است انتخاب کنیم که از کدام تکنولوژی باید استفاده کنیم.
Web Service
1. پایهی آن براساس SOAP است و دادهها را در قالب XML به ما میدهد.
2. فقط از HTTP پروتکل پشتیبانی میکند.
3. متن باز نیست اما میتوان از آن در هر کلاینتی که از XML پشتیبانی میکند، استفاده کرد.
4. فقط بر روی IIS میتوان آنرا هاست کرد.
WCF
1. پایهی پیش فرض آن براساس SOAP است و دادهها را در قالب XML به ما میدهد.
2. تکامل یافتهی وب سرویسها است (ASMX) و از پروتکلهای مختلفی همچون TCP, HTTP, HTTPS, Named Pipes, MSMQ پشتیبانی میکند.
3. مشکل اصلی WCF در بد قلقی و گسترده بودن تنظیمات آن میباشد.
4. متن باز نیست، اما میتوان از آن در هر کلاینتی که از XML پشتیبانی میکند، استفاده کرد.
5. بر روی IIS یا برنامهها و یا ویندوز سرویسها، میتوان آنرا هاست کرد.
WCF REST
1. برای استفاده از WCF و WCF REST باید حتما webHttpBindings را فعال کرده باشید.
2. از دستور العملهای HTTP Get و HTTP POST با استفاده از ترکیب خصیصههای [WebGet] و [WebInvoke] ، پشتیبانی میکند.
3. برای فعال کردن سایر دستور العملهای HTTP باید تنظیماتی را در IIS انجام دهید، تا درخواستهایی که بر اساس دستورالعملهای ویژهی در فایل svc. میباشند را قبول کند.
4. ارسال دیتا به آن از طریق پارامتر، با استفاده از WebGet احتیاج به تنظیماتی دارد و یا UriTemplate باید مشخص شود.
5. از XML, JSON and ATOM پشتیبانی میکند.
Web API
1. یک فریم ورک جدید برای ساختن HTTP سرویس، یک راه ساده و آسان.
2. متن باز است و یک راه ایده آل برای ساخت REST-ful سرویسها بر روی دات نت فریم ورک.
3. برخلاف WCF Rest، سرویسهای آن از ویژگیهای کامل HTTP مانند ( URIs, request/response headers, caching, versioning various content formats) پشتیبانی میکنند.
4. همچنین از ویژگیهای کامل MVC از قبیل routing, controllers, action results, filter, model binders, IOC container or dependency injection, unit testing بهسادگی و قوی پشتیبانی میکند.
5. بر روی IIS و یا برنامهها، میتوان آنرا هاست کرد.
6. یک معماری سبک و مناسب برای دستگاههایی که پهنای باند محدودی دارند، مانند گوشیهای هوشمند.
7. پاسخها بوسیله Web API’s MediaTypeFormatter به صورت JSON, XML فرمت میشوند؛ و یا هر فرمتی را که شما میخواهید، بهعنوان MediaTypeFormatter اضافه کنید .
انتخاب بین WCF یا WEB API
1.انتخاب WCF زمانی مناسب است که شما میخواهید یک سرویس را ایجاد کنید که باید از سناریوهای مختلفی از قبیل پیغامهای یکطرفه و صف پیغامها و ارتباطات دو طرفه پشتیبانی کند و یا میخواهید یک سرویس را ایجاد کنید که از کانالهای انتقال سریع استفاده کند؛ از قبیل TCP و Named Pipes و یا شاید گاهی UDP در WCF 4.5 و همچنین میخواهید از HTTP پشتیبانی کند؛ وقتی که همهی کانالهای دیگر انتقال در دسترس نیستند.
2. انتخاب Web API زمانی مناسب است که شما میخواهید یک resource-oriented سرویس را بر روی HTTP ایجاد کنید. در اینجا میتوان از ویژگیهای کامل HTTP مانند URIs, request/response headers, caching, versioning, various content formats استفاده کرد و یا میخواهید سرویس را در معرض طیف گستردهای از کلاینتها شامل مرورگرها، موبایلها، iphone و تبلت قرار دهید.