ایجاد یک وب سرویس (Web Service) ساده در ASP.Net با C# Language و استفاده از آن

Oxford Plus Website

Current user: Guest
10/28/2021

صفحۀ اصلی |> وبلاگ آکسفورد پلاس |> بخش توسعه ی نرم افزار |> نکات برنامه نویسی وب سایت در ASP.Net |> ایجاد یک وب سرویس (Web Service) ساده در ASP.Net با C# Language و استفاده از آن

مقدمه

با سلام خدمت دوستان گرامی و دنبال کنندگان مقالات وبلاگ آکسفورد پلاس. امروز موضوع بحث ما راجع به ایجاد و استفاده از یک وب سرویس (Web Service) ساده می باشد. اما قبل از هر چیز، یک مقدمه ی فوری: یک وب سرویس درواقع خدماتی است که بصورت آنلاین (معمولا توسط بخشی از یک وب سایت) عرضه می شود و تعدادی نرم افزار یا وب سایت دیگر می توانند از این خدمات بهره ببرند. نکته ی مهمی که وجود دارد این است که لازم نیست نرم افزارها و وب سایت هایی که از این خدمات استفاده می کنند، با همان تکنولوژی ها و زبان های برنامه نویسی نوشته شوند که خود وب سرویس با آن نوشته شده است. یک Web Service می تواند توسط ASP.Net و با C# Language نوشته شده باشد و یک برنامه ی تحت Desktop نوشته شده با ++C، یک App نوشته شده با Java برای اندورید، یک وب سایت ایجاد شده با PHP و ... نیز از آن خدمات آن استفاده کنند.

دلایل استفاده از وب سرویس می تواند زیاد باشد. در یکی از منابع استفاده شده در این مقاله، گفته شده است که "این سناریو را فرض کنید که شما می خواهید در بخشی از وب سایت خود اخبار محلی، سراسری و جهانی را داشته باشید. در بخش دیگر سایت گزارش آب و هوایی روزهای آینده را داشته باشید و غیره. اگر بخواهید خودتان بدون استفاده از وب سرویس های ارائه شونده توسط وب سایت های دیگر چنین امکاناتی را به وب سایت خود بیافزایید، باید کلی خبرنگار استخدام کنید و یک ایستگاه هواشناسی ایجاد کنید و هر روز کلی وقت برای بروز رسانی این اطلاعات صرف نمایید! درحالیکه می توانستید فقط از سرویس های آماده استفاده کنید".

دلیل جالبی برای استفاده از وب سرویس ها است اما من هم دلیل خودم را دارم. من کلی پروژه در نظر دارم که به مرور بر روی آنها کار خواهم کرد (و البته آنها را در وب سایت های amooz.in و oxford.plus خدمتتان عرضه خواهم کرد). نرم افزارهای تحت Desktop (مثل نرم افزار +KeyO که در این مقاله به آن اشاره کرده ام)، نرم افزارهای تحت موبایل، پروژه های تحت اینترنت مثل فروشگاه اینترنتی +MyO و غیره. من قصد دارم کاربران وب سایت ها و نرم افزارهای ما فقط با یک حساب کاربری که در یکی از این پروژه ها ایجاد کرده اند، بتوانند در بقیه ی پروژه ها و وب سایت های ما لاگین شوند. برای این منظور لازم است که اطلاعات کاربری در یک نقطه ی مرکزی ذخیره شود و پروژه ها و وب سایت ها با استفاده از یک Web Service که به پایگاه داده ی اطلاعات کاربری دسترسی دارد عملیات لاگین را انجام دهند. البته می شد با استفاده از Connection String مستقیما از درون پروژه ها به پایگاه داده ی مرکزی متصل شد اما به عقیده ی من در این صورت امنیت پایگاه داده به خطر می افتد چرا که شما در این حالت پسورد اتصال به پایگاه داده را نیز درون App ها و نرم افزارها، در اختیار کاربران قرار می دهید و یک هکر نیمه ماهر هم خواهد توانست با Decompile کرده برنامه به آن دست پیدا کند (دوستان صاحب نظر در این زمینه می توانند با ارسال نظرات خود، این بحث را بازتر بکنند و بر معلومات ما و سایر دوستان بیافزایند).

مراحل ایجاد یک وب سرویس (Web Service) ساده در ASP.Net با C# Language

خب، پس از مقدمه ی بالا، در ادامه ی مقاله یک وب سرویس ساده را بصورت قدم به قدم ایجاد می کنیم. من قصد دارم این وب سرویس آزمایشی را در وبلاگ developer.amooz.in (این وبلاگ قدیمی بنده است و دیگر توسط ما پشتیبانی نمی شود) ایجاد کنم. برای این منظور ابتدا در نسخه ی آفلاین وبلاگ، این سرویس را ایجاد می کنم (شکل 1) و سپس بر روی سرویس هاستینگ مربوطه آپلود خواهم کرد.

شکل 1. ورژن آفلاین وبلاگ Developer در محیط MS Visual Studio 2012 Express for Web

برای ایجاد یک وب سرویس، ابتدا مطابق شکل 2، بر روی عنوان پروژه در Solution Explorer راست کلیک کرده و از زیر منوی Add روی گزینه ی ...Add New Item کلیک می کنیم.

شکل 2. مسیر گزینه ی Add New Item

در پنجره ی باز شده مطابق شکل3، از لیست گزینه ی Web Service را انتخاب کرده و در قسمت Name یک نام دلخواه را برای وب سرویس مدنظر خود تایپ می کنیم که من از نام AmoozinService استفاده میکنم. در نهایت روی دکمه ی Add کلیک می کنیم.

شکل 3. انتخاب گزینه ی Web Service و وارد کردن یک نام برای آن

پس از مرحله ی بالا، مطابق شکل 4، دو فایل به پروژه ی ما افزوده می شود (فایل های نشان داده شده با فلش های سمت راست) یک فایل با پسوند asmx. و یک فایل با پسوند cs.. البته دقت داشته باشید که فایل با پسوند cs. که همان فایل حاوی کد وب سرویس است، در داخل پوشه ای بنام App_Code قرار می گیرد (نشان داده شده با فلش سمت چپ). این پوشه بصورت اتوماتیک ایجاد خواهد شد.

شکل 4. فایل های ایجاد شده برای وب سرویس

اکنون مطابق شکل 5، کدهای سرویس مدنظر را در فایل کد (فایل با پسوند cs.) تایپ می کنیم. هر سرویس بصورت یک کلاس درون فایل کد تعریف می شود که دارای متدهای عمومی (Public) قابل فراخوانی از طرف سرویس گیرندگان می باشد. این متدها با ویژگی [WebMethod] شروع می شوند. متد ()HelloWorld بصورت پیش فرض ایجاد می شود. اکنون من متد ()GetDayName_Farsi را نیز به وب سرویس می افزایم که شما کد مربوط به این متد را در شکل 5 داخل کادر قرمز رنگ مشاهده می کنید. فراخوانی این متد، موجب دریافت نام فارسی روز جاری از هفته خواهد شد (مثلا شنبه، یکشنبه، دوشنبه و ...).

شکل 5. افزودن خدمات دریافت نام روز به وب سرویس

فایل AmoozinService.cs را ذخیره و می بندم و فایل AmoozinService.asmx را باز کرده و اجرا می کنم. با این کار صفحه ای مطابق شکل 6 مشاهده خواهد شد که حاوی نام دو متد وب سرویس ما بصورت لینک قابل کلیک می باشد.

شکل 6. اجرای وب سرویس بصورت محلی

بر روی لینک GetDayName_Farsi کلیک می کنیم. صفحه ی شکل 7 مشاهده خواهد . با کلیک بر روی دکمه ی Invoke می توان متد مربوطه را تست کرد.

شکل 7. اجرای متد وب سرویس با دکمه ی Invoke

شکل 8 خروجی متد GetDayName_Farsi را نشان می دهد. توجه شود که اجرای متدهای وب سرویس با این شکل صرفا در حالت محلی (آفلاین) قابل انجام است و این سرویس پس از آپلود شدن در وب سایت اصلی، صرفا از طریق فراخوانی درون برنامه ای قابل دسترس خواهد بود که در ادامه خواهیم دید.

شکل 8. خروجی متد

خب، من تا این نقطه یک وب سرویس را داخل ورژن آفلاین وبلاگ ایجاد کرده و آنرا تست کردم اما برای اینکه نرم افزارها و وب سایت های دیگر بتوانند از این وب سرویس استفاده کنند، لازم است تا من آنرا بر روی اینترنت (داخل وبلاگ آنلاین) آپلود کنم. پس دو فایل و پوشه ی نشان داده شده در شکل 4 را روی سرویس هاستینگ وبلاگ Developer آپلود کردم و بعد سراغ افزودن کدهایی به صفحه ی نخست وب سایت دیگرم، آکسفورد پلاس رفتم. من می خواهم تغییری در وب سایت آکسفورد پلاس ایجاد کنم که در صفحه ی نخست خود، نام فارسی روز را نشان دهد و صد البته برای این کار از وب سرویس تازه ایجاد شده در وبلاگ Developer استفاده کند. برای این منظور ابتدا کد HTML نشان داده شده در شکل 9 را به صفحه ی اصلی وب سایت در نسخه ی آفلاین، افزودم. همانطور که می بینید من درواقع یک تگ div افزوده ام تا نام روز را در آن نشان دهم.

شکل 9. کد HTML افزوده شده به صفحه ی نخست سایت آکسفورد پلاس

در بخش کد نیز یک مقدار اولیه به تگ مذکور می افزاییم، شکل 10.

شکل 10. انتساب مقدار اولیه به تگی که نام روز را نشان خواهد داد

فعلا خروجی مانند شکل 11 دیده می شود. چون ما هنوز از وب سرویس استفاده نکرده ایم.

شکل 11. خروجی بدون استفاده از وب سرویس

برای استفاده از وب سرویس، مطابق شکل 12 بر روی نام پروژه راست کلیک کرده و از منوی ظاهر شده، بر روی گزینه ی ...Add Service Reference کلیک می کنیم.

شکل 12. انتخاب گزینه ی ...Add Service Reference

در پنجره ی ظاهر شده در قسمت Address آدرس کامل فایل asmx. مربوط به وب سرویس در وبلاگ Develper را وارد کرده و بر روی دکمه ی Go کلیک می کنیم، شکل 13.

شکل 13. وارد کردن آدرس کامل وب سرویس

البته در این مرحله ممکن است مانند شکل 14 با پیغام خطا مواجه شویم مبنی بر اینکه هیچ سرویسی در این آدرس شناسایی نمی شود. پس باید دکمه ی Go را چند بار بزنیم. البته من دنباله ی آدرس که با ? شروع می شود و می توانید آنرا در شکل 7 مشاهده کنید را نیز به آدرس سرویس افزودم تا بالاخره خطای عدم شناسایی سرویس برطرف شد. البته بعد از آن سرویس را حتی در آدرس اولیه هم شناسایی کرد.

شکل 14. خطای عدم شناسایی وب سرویس در آدرس عنوان شده

همانطور که در شکل 15 مشاهده می کنید، سرویس AmoozinService در کادر Services لیست شد. اکنون باید یک اسم برای فضای نام در کادر Namespace وارد کنیم. در هنگام کد نویسی، سرویس ما در این فضای نام قابل استفاده خواهد بود. و در نهایت بر روی Ok کلیک می کنیم تا یک نماینده (Proxy) از وب سرویس مورد نظر، به پروژه ی ما افزوده شود.

شکل 15. افزودن سرویس به پروژه

همانطور که در شکل 16 مشاهده می شود، یک پوشه ی پرمحتوا با نام App_WebReferences به ورژن آفلاین وب سایت آکسفورد پلاس افزوده شد.

شکل 16. افزوده شدن فایل های مربوط به وب سرویس

حال می رویم سراغ کدنویسی و سه سطر کد دیگر به آنچه در شکل 10 دیده بودید می افزاییم، شکل 17. سطر اول فضای نام یا Name Space ی که سرویس مدنظر ما به سیستم تعریف شده است را اعلان می کند. سطر دوم یک نماینده از وب سرویس داخل برنامه ایجاد می کند و سطر آخر متد ()GetDayName_Farsi وب سرویس را فراخوانی کرده و نتیجه را در خروجی نمایش می دهد.

شکل 17. کدهای مربوط به استفاده از وب سرویس

شکل 18 نمونه ای از خروجی را نشان می دهد. باید توجه داشت که نام روز (یکشنبه) از وب سرویس آنلاین دریافت شده و در پروژه ی اجرا شده بصورت آفلاین نمایش داده شده است.

شکل 18. نمونه ای از خروجی برنامه ای که از وب سرویس استفاده می کند

حال یک سناریو را بررسی می کنیم. اگر برنامه یا وب سایت ما هنگام استفاده از یک وب سرویس، آن وب سرویس بطور موقت در دسترس نباشد چه اتفاقی خواهد افتاد؟ برای آزمایش چنین حالتی، من مودم را خواموش کردم و مرورگر را Refresh کردم. شکل 19 خطای مربوطه را نشان می دهد.

شکل 19. خطای عدم دسترسی به وب سرویس

پس بهتر بود من کدهای بیشتری را برای مدیریت چنین خطاهایی به وب سایتم می افزودم. بنابراین کدهای شکل 17 را بصورتی که در شکل 20 می بینید، دوباره نویسی می کنم.

شکل 20. افزودن کدهای مدیریت خطا

چنانچه در شکل 21 مشاهده می شود، خطای عدم دسترسی به وب سرویس به شکل مدیریت شده ای بروز می کند. لازم به ذکر است که وب سرویس مورد اشاره در این مقاله بصورت موقت در وبلاگ ایجاد شده بود و در این لحظه، بنده آنرا از روی وبلاگ حذف کرده ام.

شکل 21. بروز خطا به صورت مدیریت شده

این مقاله به مرور زمان بروز رسانی و تکمیل تر خواهد شد. شبکه های اجتماعی ما در حکم خبرنامه های وب سایت آکسفورد پلاس و مقالات و پروژه های مرتبط هستند. با عضویت در یکی از آنها (اطلاعات در پایین همین صفحه) در جریان انتشار مقالات، بروز رسانی های مطالب و اخبار ما قرار بگیرید.

موفق و پیروز باشید.

مدیریت وبسایت آکسفورد پلاس.

منابع

منبع 1 (از وب سایت c-sharpcorner.com)

منبع 2 (از وب سایت c-sharpcorner.com)

منبع 3 (از وب سایت c-sharpcorner.com)

نظرات خوانندگان این مطلب:

نوشته شده توسط: مدیریت وب سایت
7/20/2021 7:18:14 PM

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

Website's social networks:
-----------------------
https://twitter.com/oxford_plus
https://facebook.com/oxfordpluspage
telegram ID: @oxfordplus
نوشته شده توسط: احمدی
7/20/2021 11:54:35 AM

سلام ممنون از مطلب خوبتون
نوشته شده توسط: مصطفی
1/31/2020 6:38:52 PM

سلام
واقعا عالی و قدم به قدم
نوشته شده توسط: مهندس عبدالرضا قنبری
تعداد بازدیدها: 5288

تاریخ های بروز رسانی این صفحه

  • 08 October 2047 - 1396/07/16
  • 06 October 2017 - 1396/07/14
  • 01 October 2017 - 1396/07/10
  • 30 September 2017 - 1396/07/09
  • 29 September 2017 - 1396/07/08

شما در این بخش می توانید نظر خود را به گوش نویسندۀ مطالب این صفحه برسانید. نظرات شما برای ما ارزشمند هستند:

نام شما (اختیاری):
آدرس ایمیل شما (اختیاری):
توجه: آدرس ایمیل شما بصورت محرمانه، محفوظ نگه داشته خواهد شد و صرفا از آن برای اطلاع رسانی به شما در مورد نتیجۀ پاسخ گویی به نظرتان و احیانا ارسال خبرنامه های وبسایت مان یعنی آکسفورد پلاس استفاده خواهد شد، بطوریکه شما هر لحظه می توانید آن را غیرفعال کنید.
نظر ارزشمند شما:

فرآیند امنیتی: لطفا قبل از ارسال نظر، مجموع دو عدد 3 و 4 را در کادر مقابل بنویسید:
About Us

Oxford Plus (O+) website v5.2
Powered by ContentO Plus v3.1