برنامه نویسی وب سرویس و طراحی وب

از آنجاییکه شرکت مایکروسافت از ابتدای توسعه استاندارد SOAP با آن درگیر بوده است، تکنولوژی آن برای توسعه وب‌سرویس‌ها از شرکت‌های رقیب اندکی فاصله گرفته و بیشتر مورد اقبال واقع شده است. با استفاده از محیط توسعه .NET شرکت مایکروسافت، می‌توان براحتی وب‌سرویس‌های مورد نظر را تولید کرده و مورد استفاده قرار داد. در این نوشته می‌خواهیم به صورت قدم به قدم مراحل ساخت یک وب‌سرویس و یک برنامه تحت ویندوز برای استفاده از آن وب‌سرویس را دنبال کنیم. برای برنامه‌نویسی از محیط توسعه Visual Studio.NET استفاده خواهیم کرد، بنابراین قبل از اینکه به بحث اصلی یعنی نحوه کدنویسی بپردازیم، بهتر است اشاره کوتاهی به موارد و پیش‌ نیازهای این محیط توسعه داشته باشیم.
برای استفاده از Visual Studio.NET یا .NET Framework SDK باید بر روی کامپیوتر خود Internet Information Server یا همان IIS را نصب کرده باشید. متاسفانه IIS و .NET بر روی ویندوزهای ME یا ۹۸ قابل استفاده نمی‌باشد و بنابراین باید از یکی از ویندوز‌های NT، ۲۰۰۰ یا XP Professional استفاده کرد. برای نصب IIS به Control Panel بروید و Add/Remove Programs را انتخاب کنید. در ستون سمت چپ، آیکونی با عنوان Add/Remove Windows Components وجود دارد. بر روی آن کلیک کنید. شکل زیر پنجره Add/Remove Windows Components را بر روی کامپیوتر من نمایش می‌دهد.

پنجره انتخاب کامپوننت‌های ویندوز برای نصب
همانگونه که در شکل فوق می‌بینید جعبه انتخاب کنار IIS تیک خورده است و این یعنی IIS بر روی ویندوز من نصب شده است. اگر این جعبه انتخاب نشده باشد آنرا انتخاب کرده و با کلیک بر روی دکمه Next فرایند نصب آنرا دنبال کنید. پس از نصب IIS، می‌توانید Visual Studio.NET یا .NET Framework SDK را بر روی کامپیوتر خود نصب کنید.

برنامه‌نویسی وب‌سرویس طراحی صفحات وب با استفاده از Visual Studio.NET
می‌خواهیم یک وب‌سرویس ایجاد کنیم که قیمت کالاهای مختلف موجود در انبار را بتوان از طریق آن بدست آورد. برنامه‌های دیگر می‌توانند از طریق وب به این وب‌سرویس متصل شده و قیمت کالاها را دریافت نمایند. Visual Studio.NET را باز کنید. یک پروژه جدید از نوع ASP.NET Web Service و برای زبان C# ایجاد کنید. مسیر آنرا در وب تغییر دهید و یک نام مناسب برای آن انتخاب کنید(مثلا SimpleStockQuote). پنجره ایجاد پروژه جدید در شکل زیر نمایش داده شده است:

نمایشی از نحوه ایجاد یک پروژه C# Web Service در Visual Studio.NET
پس از ایجاد یک پروژه وب‌سرویس، در Visual Studio.NET پنجره طراحی برنامه نمایش داده خواهد شد. با استفاده از لینکی که بر روی این صفحه قرار داده شده است می‌توانید به قسمت مربوط به کد برنامه بروید. یکسری کد اولیه تولید شده است که شامل نام‌های پیش‌فرض برای شناسه‌های مختلف برنامه و همچنین کد‌های استانداردی است که برای تولید هر وب‌سرویسی مورد نیاز می‌باشد.
نکته: کلید میان‌بر برای حرکت بین کد برنامه و وضعیت طراحی برنامه F7 و SHIFT+F7 می‌باشد.
در کد تولید شده قسمتی وجود دارد که با عبارت [WebMethod] شروع می‌شود و به صورت کامنت درآمده‌ است. ابتدا این خط را از حالت کامنت خارج کنید و در خط بعد از آن، متدی را اضافه کنید که برای گرفتن قیمت کالاها از آن استفاده کنیم. نام این متد را GetQuote انتخاب می‌کنیم که یک پارامتر ورودی از نوع رشته‌ای خواهد داشت. این پارامتر رشته‌ای شامل نام کالا خواهد بود و خروجی آن از نوع اعشاری است و قیمت کالا را مشخص می‌کند. این متد را به صورت زیر می‌نویسیم:

[WebMethod]
public double GetQuote(string name)
{
if (name==”good1”) return 55.6;
else return -1;
}

به همین سادگی وب‌سرویس نوشته شده آماده اجرا شده است. از منوی Debug گزینه Start without Debugging را انتخاب کنید. این گزینه باعث اجرای برنامه و نمایش پنجره مرورگری مشابه شکل زیر می‌شود:

نمایشی از اجرای وب‌سرویس دریافت قیمت کالا
اولین لینک از این پنجره با عنوان Service Description باعث نمایش توصیف سرویس می‌شود که یک فایل WSDL است. برای نمایش توصیف وب‌سرویس‌های توسعه داده شده توسط شرکت مایکروسافت که دارای پسوند asmx هستند، کافیست که پرس‌وجوی wsdl به آن ارسال شود. به عنوان مثال، در برنامه‌ای که در بالا نوشتیم با استفاده از پرس‌وجوی زیر توصیف وب‌سرویس نمایش داده خواهد شد.
http://www.shojaee.com/SimpleStockQuote/Service1.asmx?wsdl
شکل زیر اطلاعات WSDL را در پنجره مرورگر نمایش می‌دهد.

نحوه نمایش اطلاعات WSDL مربوط به وب‌سرویس
بعد از لینک مربوط به نمایش اطلاعات WSDL لینک GetQuote قرار دارد. از طریق این لینک می‌توان به متد نوشته شده در وب‌سرویس دسترسی پیدا کرده و از آن استفاده نمود. انتخاب این لینک باعث نمایش پنجره زیر می‌شود.

دسترسی به متد GetQuote از طریق مرورگر
اگر عبارت good1 را در قسمت name وارد کنید، جواب ۵۵/۶ را دریافت خواهید کرد. ورود هر عبارت دیگر باعث نمایش -۱ خواهد شد.

مستند‌سازی وب‌سرویس
با استفاده از تگ‌ WebMethod و همچنین تگ WebService در داخل کد برنامه می‌توان توضیحات بیشتری از وب‌سرویس را برای مشتری آن فراهم کرد چه این مشتری یک صفحه وب باشد یا یک برنامه کاربردی. اگر دقت کرده باشید در هنگام اجرای وب‌سرویس در صفحه اول پس از نمایش لیست متدهای موجود در آن، پیغامی نمایش داده می‌شود که از شما می‌خواهد فضای نام(namespace) انتخاب شده برای وب‌سرویس خود را که یک نام پیش‌فرض برای آن انتخاب شده است را تغییر دهید. برای انتخاب یک فضای‌نام و همچنین توضیحاتی در مورد وب‌سرویس توسعه داده شده، می‌توان از تگ WebService قبل از تعریف کلاس برنامه استفاده کرد. به عنوان مثال برای وب‌سرویس دریافت قیمت کالا که با یکدیگر نوشتیم، می‌توان تغییرات زیر را در آن اعمال کرد.


[WebService(Description=”Webservice for Stock Quote”,
Namespace=”http://www.shojaee.com/”)]
public class Service1: System.Web.Services.WebService
{

با استفاده از تگ WebMethod و صفت Description آن می‌توان توضیحاتی برای متدهای تعریف شده در وب‌سرویس به برنامه اضافه کرد. به عنوان مثال برای متد GetQuote می‌توان از دستور زیر استفاده کرد.

[WebMethod(Description=”A simple method for getting Stock Quote. Submit good1 else get -1”)]

خروجی برنامه بعد از تغییرات فوق به صورت زیر خواهد بود.

خروجی اجرای وب‌سرویس پس از افزودن تگ‌های WebMethod و WebService

تولید یک مشتری برای وب‌سرویس
مشتری وب‌سرویس می‌تواند یک صفحه وب‌ باشد یا یک برنامه کاربردی که در حقیقت از متدهای تعریف شده در وب‌سرویس استفاده می‌کنند. در ادامه یک برنامه تحت ویندوز ایجاد خواهیم کرد که از متد وب‌سرویسی که توسعه داده‌ایم استفاده خواهد کرد. برای استفاده از وب‌سرویس از طریق یک برنامه تحت ویندوز، Visual Studio.NET را باز کنید. در پنجره New Project گزینه Widows Application را انتخاب کنید. شکل زیر نحوه انتخاب درست را نمایش می‌دهد.

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

طراحی ظاهر برنامه تحت ویندوز
حال در پنجره Solution Explorer بر روی پوشه References کلیک سمت راست کرده و گزینه Add Web Reference را انتخاب نمایید. در پنجره‌ای که ظاهر می‌شود باید URL مربوط به فایل WSDL وب‌سرویس را وارد کرده و کلید Enter را فشار دهید تا محتویات فایل WSDL وب‌سرویس در همان پنجره نمایش داده شود. حال دکمه Add Reference را انتخاب کنید. شکل زیر نمایشی از این پنجره را بر روی کامپیوتر من نمایش می‌دهد.

نحوه اضافه کردن یک ارجاع به وب‌سرویس
حال می‌توان عمل کدنویسی برنامه را انجام داد. بر روی دکمه Get Quote در برنامه دوبار کلیک کنید. با اینکار قسمتی از کد برنامه که مربوط به رویداد کلیک‌کردن دکمه است، نمایش داده خواهد شد. در این قسمت باید متنی که کاربر در جعبه متنی اول وارد کرده است را به عنوان پارامتر ورودی به متد GetQuote از وب‌سرویس ارسال کند و سپس نتیجه اجرای متد را در جعبه متنی دوم نمایش دهد. همانطور که در هنگام ایجاد مثال‌ وب‌سرویس دیدیم، نامی که برای کلاس وب‌سرویس انتخاب شد، Service1 می‌باشد و GetQuote در حقیقت یک متد از این کلاس می‌باشد. طبق روال عادی فراخوانی یک چنین متدی، ابتدا باید یک شئ از نوع کلاس Service1 ایجاد کنیم و سپس متد GetQuote از آن شئ را فراخوانی کنیم. در هنگام اضافه کردن ارجاع به وب‌سرویس در شکل بالا، یک پوشه جدید به پنجره Solution Explorer با عنوان Web References اضافه می‌شود. در داخل این پوشه، پوشه دیگری اضافه شده است که حاوی فایل WSDL مربوط به همان کلاس Service1 می‌باشد. نام این پوشه مشخص‌کننده نام کلاسی است که باید در برنامه، یک شئ از آن ساخته شود. نام این پوشه در کامپیوتر من localhost است و بنابراین نام کلاس مربوط به وب‌سرویس بر روی کامپیوتر من localhost.Service1 خواهد بود. با توضیحات داده شده، کدی مشابه زیر، باید در رویداد onClick مربوط به دکمه Get Quote نوشته شد.

localhost.Service1 obj1=new localhost.Service1();
textBox2.Text = obj1.GetQuote(textBox1.Text).ToString();

حاصل اجرای برنامه به صورت زیر خواهد بود.

اجرای برنامه تحت ویندوز که از وب‌سرویس استفاده می‌کند
منبع:

Brian Hochgurtel, Cross-Platform Web Services Using C# and Java, 2003

نظر بگذاريد