بخش های اصلی

وب سرویس ها

وب سرویس ها – نمونه مثال ها

بر اساس معماری وب سرویس، دو ابزار زیر را بعنوان بخشی از پیاده سازی وب سرویس ها ایجاد می کنیم:

ارائه دهنده یا انتشار دهنده ی سرویس

ارائه دهنده ی وب سرویسِه. ارائه دهنده ی وب سرویس، سرویس ها را پیاده سازی می کنه و آن ها را روی اینترنت یا اینترانت قرار میده.

در این بخش با استفاه از .NET SDK، یک وب سرویس ساده می نویسم و آن را انتشار میدیم.

درخواست کننده ی وب سرویس یا مصرف کننده

این مورد به استفاده کننده های وب سرویس اشاره داره. درخواست کننده، از طریق یک ارتباط شبکه اییِ باز و فرستادن درخواستِ XML، از وب سرویسِ موجود استفاده می کنه.

در این بخش دو درخواست کننده ی وب سرویس هم خواهیم نوشت: یک مصرف کننده ی مبتنی بر وب (برنامه ی ASP.NET) و دیگری مصرف کننده ی ویندوزِ مبتنی بر برنامه.

مثال ارائه شده ی زیر، اولین مثال وب سرویس ماست که بعنوان ارائه دهنده ی سرویس عمل می کنه و دو متد (Add و SayHello) بعنوان وب سرویس، برای استفاده توسط برنامه ها، ارائه میده و الگویی استاندار برای وب سرویسِه. به یاد داشته باشین که متدی که بعنوان وب سرویس ارائه میشه، خصیصه ی (attribute)WebMethod هم داره. این فایل را با نام FirstService.asmx در دایرکتوری مجازیِ IIS ذخیره کنین (به همان روشی که قبلاً در پیکربندیِ IIS توضیح دادیم؛ برای مثال، (c:/MyWebSerces).

FirstService.asmx

<%@ WebService language = "C" class = "FirstService" %>

using System;
using System.Web.Services;
using System.Xml.Serialization;

[WebService(Namespace="http://localhost/MyWebServices/")]
public class FirstService : WebService
{
   [WebMethod]
   public int Add(int a, int b)
   {
      return a + b;
   }

   [WebMethod]
   public String SayHello()
   {
   return "Hello World";
   }
}

برای امتحان وب سرویس باید آن را انتشار بدیم. وب سرویس می تواند روی اینترنت یا اینترانت انتشار داده بشه. این وب سرویس را روی IIS اجرا شده روی ماشین محلی، اجر می کنیم. با شروع پیکربندی IIS شروع می کنیم.

  • به مسیر زیر برین و Internet Service Manager  را باز کنین:

Start → Settings → Control Panel → Administrative tools → Internet Services Manager

  • گسترش بدین و روی وب سایتِ پیش فرض (default web site) کلیک راست کنین.
  • صفحه ی "Virtual Directory Alias" باز میشه. نام دایرکتوری مجازی را وارد کنین. برای مثال، MyWebService و روی Next کلیک کنین.
  • صفحه ی "Web Site Content Directory" باز میشه.
  • مسیرِ دایرکتوری را برای دایرکتوری مجازی وارد کنین. برای مثال، c:MyWebServices  . روی Next کلیک کنین.
  • صفحه ی  "Access Permission" باز میشه. تنظیمات را بر اساس نیازتان تغییر بدین. برای این مثال از تنظیمات پیش فرض استفاده میکنیم.
  • روی دکمه ی Next کلیک کنین. پیکربندیِ IIS تکمیل میشه.
  • برای اتمام پیکربندی روی دکمه ی Finish کلیک کنین.

برای اطمینان از صحت پیکربندیِ IIS، یک فایل HTML (مثلِ x.html) را در پوشه ی دایرکتوری مجازی (C:MyWebServices) که پیش تر ایجاد کردیم، کپی کنین. اکنون، Internet Explorer را باز کنین و این مسیر را تایپ کنین: http://localhost/MyWebServices/x.html.

با این کار باید فایلِ x.html باز بشه.

نکته: اگه کار نکرد، localhost را با آدرسِ IP سیستم تان عوض کنین. بررسی کنین که IIs در حال اجرا باشه؛ ممکنه نیاز بشه که IIS و دایرکتوری مجازی را دوباره پیکربندی کنین.

برای امتحان این وب سرویس، FirstService.asmx را در پوشه ی دایرکتوری مجازی (C:MyWebServices) که پیش تر ایجاد کردیم، کپی کنین.وب سرویس را در Internet Explorer را باز کنین.(http://localhost/MyWebServices/FirstService.asmx)

باید وب سرویس باز بشه. صفحه باید لینک هایی به دو متدی داشته باشه که توسط برنامه بعنوان وب سرویس ارائه شدن.تبریک میگم! اولین وب سرویس تان را نوشتین.

تست وب سرویس

همانطور که دیدید نوشتن وب سرویس ها در فریم ورکِ .NET، راحته. نوشتن وب سرویس مصرف کننده ها هم در فریم ورکِ .NET، به همین راحتیِه؛ با این حال یکم پیچیده تره. همان طور که پیش تر هم گفتیم، دو نوع سرویس مصرف کننده ی مشتری خواهیم نوشت، یکی مبتنی بر وب و دیگری مصرف کننده ی تحت ویندوز مبتنی بر برنامه. اجازه بدین اولین وب سرویسِ مصرف کننده را بنویسیم.

سرویس مصرف کننده ی مبتنی بر وب

بصورت زیر یک مصرف کننده ی مبتنی بر وب بنویسین. نام آن را WebApp.aspx بذارین. به یاد داشته باشین که این یک برنامه ی ASP.NET است. این فایل را در دایرکتوریِ مجازیِ وب سرویس (c:MyWebServicesWebApp.axpx) ذخیره کنین.

این برنامه دو فیلد متنی داره که برای گرفتن اعداد از کاربر و جمع کردن آن ها، استفاده میشن. یک دکمه داره، به نام Execute، که زمانی که کلیک بشه، وب سرویس هایِ Add و SayHello را می گیره.

WebApp.axpx
<%@ Page Language="C#" %>
<script runat="server">
   void runSrvice_Click(Object sender, EventArgs e){
      FirstService mySvc = new FirstService();
      Label1.Text = mySvc.SayHello();
      Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text),  Int32.Parse(txtNum2.Text)).ToString();
   }
</script>

<html>
   <head> </head>
   
   <body>
      <form runat="server">
         <p>
            <em>First Number to Add </em>:
            <asp:TextBox id="txtNum1" runat="server" Width="43px">4<  /asp:TextBox>
         </p>
			
         <p>
            <em>Second Number To Add </em>:
            <asp:TextBox id="txtNum2" runat="server" Width="44px">5</asp:TextBox>
         </p>
			
         <p>
            <strong><u>Web Service Result -</u></strong>
         </p>
			
         <p>
            <em>Hello world Service</em> :
            <asp:Label id="Label1" runat="server" Font-Underline="True">Label< /asp:Label>
         </p>

         <p>
            <em>Add Service</em> :
            & <asp:Label id="Label2" runat="server" Font-Underline="True">Label</asp:Label>
         </p>
			
         <p align="left">
            <asp:Button id="runSrvice" onclick="runSrvice_Click" runat="server"  Text="Execute"></asp:Button>
         </p>
			
      </form>
      
   </body>
</html>

بعد از این که مصرف کننده، ایجاد شد، باید یک پراکسی برای وب سرویس ایجاد کنیم تا استفاده بشه. این کار، زمان ارجاع وب سرویسِ اضافه شده، بصورت اتوماتیک توسط .NET ویژوال استادیو، انجام میشه. در ادامه مراحل انجام کار را مشاهده می کنین:

  • §یک پراکسی برای وب سرویس ایجاد کنین تا مورد استفاده قرار بگیره. پراکسی با استفاده از ابزار تأمینِ WSDL ، با .NET SDK ایجاد میشه. این ابزار اطلاعات را از وب سرویس استخراج می کنه و یک پراکسی ایجاد می کنه. این پراکسی فقط برای یک وب سرویس خاص معتبره. اگه نیاز به استفاه از وب سرویس دیگه ای دارین، باید برای این سرویس هم پراکسی ایجاد کنین. ویژوال استادیو .NET، زمانی که refrence مربوط به وب سرویس اضافه میشه، بصورت اتوماتیک پراکسی را ایجاد می کنه. ایجاد پراکسی برای وب سرویس با استفاده از ابزارِ WSDL، توسطِ .NET SDK تأمین میشه. این ابزار، فایلِ FirstSevice.cs را در دایرکتوری جاری ایجاد می کنه. باید برای ایجاد FirstService.dll (پراکسی)، برای وب سرویس، فایلِ FirstSevice.cs را کامپایل کنیم.
c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
  • پراکسی کامپایل شده را در دایرکتوریِ bin در دایرکتوری مجازیِ وب سرویس (c:MyWebServicesbin) قرار بدین. سرویس های اطلاعاتیِ اینترنت (IIS) در این دایرکتوری به دنبال پراکسی خواهند گشت.
  • سرویسِ مصرف کننده را هم به همین روش ایجاد کنین. به یاد داشته باشین شیء ای از پراکسیِ وب سرویس در مصرف کننده نمونه سازی میشه. این پراکسی مراقب برقراری ارتباط با سرویسِه.
  • برای تست کردن، URL مربوط به مصرف کننده را در IE بنویسین (برای مثال، http://localhost/MyWebServices/WebApp.aspx).

وب سرویس مصرف کننده ی مبتنی بر ویندوز

§نوشتن یک وب سرویس مصرف کننده ی ویندوزِ مبتنی بر برنامه، مثل بقیه ی برنامه های ویندوزه. فقط باید یک پراکسی (مثل همان کاری که پیش تر انجام دادیم) ایجاد کنین و زمان کامپایل برنامه به آن ارجاع بدین. در ادامه برنامه ی ویندوزی ما را می بینین که از وب سرویس استفاده می کنه. این برنامه یک شیء وب سرویس ایجاد می ک نه (و البته پراکسی) و متدهای SayHello و Add را در آن فراخوانی می کنه.

WinApp.cs

using System;
using System.IO;

namespace SvcConsumer {
   class SvcEater {
   
      public static void Main(String[] args) {
         FirstService mySvc = new FirstService();
         Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());
         Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());
      }
   }
}

این کد را با استفاده از c:>csc /r:FirstService.dll WinApp.cs کامپایل کنین. WinApp.exe، ایجاد خواهد شد. WinApp.exe را اجرا کنین تا برنامه و وب سرویس را تست کنین.

اکنون، این پرسش مطرح میشه که: چطوری می توانید مطمئن بشین که این برنامه، واقعاً وب سرویس را فراخوانی می کنه؟

ساده ست. اجرای وب سرور را متوقف کنین، با این کار، وب سرویس نمی تواند متصل بشه. اکنون، برنامه ی WinApp را اجرا کنین. این برنامه یک run-time exception اجرا خواهد کرد. اکنون دوباره وب سرویس را اجرا کنین. باید کار کنه.

مبحث آموزشی

وب سرویس ها

Web Services

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

تبلیغات

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

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