Asp.Net Web Api
بستری است که با ما کمک می کند سرویس های مبتنی بر پروتکل HTTP را آسان تر
از پیش پیاده سازی کنیم. سرویس گیرنده های زیادی قادر هستند که از امکانات
این بستر (Web Api) استفاده نمایند، سرویس گیرنده هایی مانند: مرورگر های
وب، دستگاه های موبایل و نرم افزار های دسکتاپ. Web Api یک بستر ایده آل برای پیاده سازی برنامه
های مبتنی بر معماری Restful در بستر اصلی DotNet FrameWork است.
زمانی که Api را در بستر Web پیاده سازی می کنیم، از روش های مختلفی برای
این کار استفاده می کنیم. این روش ها شامل پروتکل های Http/Rpc می باشند.
بدین معنی که این برنامه ها از پروتکل http و امکانات RPC برای
فراخوانی متد های مورد نیاز خود در بستر وب استفاده می کنند. ( RPC به طور
اختصار این امکان را برای ما بوجود می آورد تا در محیط شبکه بتوانیم از
توابع و متد هایی که بر روی یک کامپیوتر دیگر قرار دارند استفاده کنیم )
افعال/عملیات مورد نیاز برنامه های ما نیز در Web API قرار داده شده اند،
اعمالی مانند بازیابی اطلاعات اشیا، درج اشیا، حذف اشیا و بروز رسانی
اطلاعات اشیا(منظور از شیء همان آبجکت ها هستند که ممکن است هر چیزی را
شامل شوند: محصولات/ تصاویر / اخبار و ...). هر کدام از این اعمال توسط یک
آدرس اینترنتی اختصاصی پشتیبانی می شوند.
به یاد داشته باشیم که HTTP تنهای برای خدمت رسانی به صفحات وب به وجود نیامده
است، HTTP همچنین برای ایجاد بستری قدرتمند است که سرویس ها و اطلاعات را
در معرض استفاده قرار دهد. HTTP مبحث پیچیده ای نیست،بلکه بسیار منعطف و
فراگیر است. تقریبا اکثر پلتفرم ها کتابخانه های مرتبط با HTTP را دارند،
بنابر این همانطور که کمی بالاتر گفته شد، سرویس های مبتنی بر HTTP به بازه
وسیعی از سرویس گیرنده ها خدمات ارائه می کنند.
با وجود اینکه Asp.net Web Api با Asp.Net MVC ارائه شده است، بدین معنی نیست
که قادر نیستیم از امکانات آن در Asp.Net Web Forms استفاده کنیم، استفاده
از این امکانات در Web Form ها به همان سادگی استفاده در MVC
است.
با یک نگاه دیگر، Web API نرم افزار های دیگر را قادر می سازد از متد ها و
امکاناتی که در برنامه ما تعبیه شده است، استفاده کنند.Web Api شاید
مناسبترین بستر برای استفاده در برنامه های مبتنی بر تلفن همراه باشد.
از آنجا که Wb Api بر مبنای سرویس های Restful پیاده سازی شده است، بهتر است اشاره کوتاهی به مشخصات سرویس های Restful بکنیم.
سرویس های Restful برای دریافت اطلاعات از سرویس سرور فراخوانی می شوند.
این سرویس ها می توانند اطلاعات را از طریق افعال HTTP ایجاد، ویرایش و حذف کنند.
از URL برای منحصر به فرد سازی موجودیت ها و یا عملیات روی موجودیت ها
استفاده می شود.
از افعال HTTP برای تعریف عملیات مورد نیاز برنامه استفاده می کند، همانطور
که می دانیم این افعال عبارتند از: Get ، Post ، PUT ، Delete
اشاره کوتاهی نیز به قالب های دیتای مورد استفاده در Web Api می
کنیم.
Web Api نتیجه عملیات را به صورت Json و یا XML برمی گرداند.
Web Api از Media Formatter (تعریف کننده قالب اطلاعات) استفاده می کند و
وظیفه آن موارد زیر است:
- شکل دهی و نحوه Serialize کردن اطلاعات به فرمتهای خاص را بر عهده دارد
، اطلاعاتی که قرار است سرویس Rest برگرداند.
- فرمت و قالب دیتا را در هدر مربوط به HTTP تعیین می کند
- فرمت و قالب کلیه اطلاعاتی که قرار هست سرور مشخص کرده و به سمت سرویس
گیرنده ارسال کند را نیز تعیین می کند.
Web Api از یک کلاس معینی به نام ApiController و همچنین کلاس RouteTable
برای تعیین نحوه ایجاد URL های مورد نیاز خود استفاده می کند که در ادامه
به صورت عملی به آنها خواهیم پرداخت.
اگر بخواهیم سیر تغییراتی را که در ساختار سرویس های Restful ای که با WCF
پیاده سازی می شدند و سرویس های Restful ای که اکنون با Web Api پیاده سازی
می شوند، به وجود آمده را بررسی کنیم به شکل زیر خواهیم رسید:
شاید بتوان گفت تعداد خط کدی که برای یک هدف خاص با استفاده از Web Api
نوشته می شود کمتر از تعداد خط کدی باشد که با WCF برای رسیدن به همان هدف
نوشته می شود.بنابراین به نطر می رسد این کار نوشتن کد با Web Api را
ساده تر کرده است، عدم نیاز به قرار دادن تنظیمات خاص در Web.Config برای
تعریف سرویس و binding های مربوطه نیز از درجه سختی کار با Web Api کم کرده
است. البته کسانی که سرویس هایی با استفاده از WCF نوشته اند و در برنامه
های خود از آنها استفاده می کنند هنوز به آنها پایبند بوده و نیازی هم برای
مهاجرت به سمت Web Api ندارند.
در قسمت دوم از این مقاله یک برنامه ساده را با استفاده از این تکنولوژی (Web
API)
پیاده سازی خواهیم کرد تا توضیحات ارایه شده قابل فهم تر گردند.