خدمة الويب هي وظيفة قائمة على الشبكة يمكن الحصول عليها عن طريق تطبيقات الويب من خلال بروتوكولات شبكة الويب. يتضمن تطوير خدمات الويب بشكل أساسي الجوانب الثلاثة التالية:
إنشاء خدمة ويب
إنشاء خادم وكيل
استخدم خدمات الويب
خدمة الويب هي تطبيق ويب. شكلها الأساسي عبارة عن فئة تحتوي على طرق متعددة يمكن استدعاؤها بواسطة تطبيقات أخرى، كما أنها تستخدم بنية تعليمات برمجية مخفية مثل صفحة ويب ASP.NET، ولكنها لا تحتوي على واجهة مستخدم.
لفهم هذا المفهوم بشكل أفضل، دعونا ننشئ خدمة ويب توفر معلومات عن أسعار الأسهم. يمكن لعملاء الخدمة البحث عن الأسماء والأسعار ذات الصلة من خلال علامة السهم. لتبسيط هذا المثال، قمنا بتعيين سعر السهم على قيمة ثابتة وحفظه في قائمة ثنائية الأبعاد. تحتوي خدمة الويب هذه على ثلاث طرق:
طريقة HelloWorld الافتراضية
طريقة GetName
طريقة GetPrice
قم بالخطوات التالية لإنشاء الخدمة:
الخطوة (1) : حدد ملف -> جديد -> موقع ويب في Visual Studio، ثم حدد خدمة ويب ASP.NET.
الخطوة (2) : يتم إخفاء ملف خدمة ويب باسم Service.asmx ورمزه، وسيتم إنشاء Service.cs في مسار App_Code لهذا المشروع.
الخطوة (3) : قم بتغيير أسماء الملفات إلى StockService.asmx و StockService.cs.
الخطوة (4) : يقوم الملف .asmx بتبسيط تعليمات WebService كما يلي:
<%@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" Class="StockService" %>
الخطوة (5) : افتح ملف StockService.cs الكود الذي تم إنشاؤه في هذا الملف هو الكود الأساسي لخدمة Hello World. رمز خدمة الويب الافتراضي هو كما يلي:
باستخدام System.Collections؛ باستخدام System.ComponentModel؛ باستخدام System.Linq؛ باستخدام System.Web.Services؛ ; namespace StockService { // <summary> // وصف ملخص للخدمة 1 // <summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // للسماح باستدعاء خدمة الويب هذه من البرنامج النصي، // باستخدام ASP.NET AJAX، قم بإلغاء تعليق السطر التالي // [System.Web.Script.Services.ScriptService] public class Service1: System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World" } } };
الخطوة (6) : تعديل الكود الموجود في الملف لإضافة مؤشر ثنائي الأبعاد يخزن سلسلة تسمية كل سهم واسمه وسعره، وكتابة طريقتين للويب للحصول على معلومات المخزون على النحو التالي؛
باستخدام System.Linq؛ باستخدام System.Web. باستخدام System.Web.Services؛ ")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // للسماح باستدعاء خدمة الويب هذه من البرنامج النصي، // باستخدام ASP.NET AJAX، قم بإلغاء التعليق السطر التالي // [System.Web.Script.Services.ScriptService] public class StockService : System.Web.Services.WebService { public StockService () { // قم بإلغاء التعليق على ما يلي في حالة استخدام المكونات المصممة //InitializeComponent() } سلسلة[,] الأسهم = { {"RELIND"، "Reliance Industries"، "1060.15"}، {"ICICI"، "ICICI Bank"، "911.55"}، {"JSW"، "JSW Steel"، "1201.25"}، {"WIPRO"، "Wipro Limited"، "1194.65"}، {"SATYAM"، "Satyam Computers"، "91.10"} }؛ [WebMethod] عام string HelloWorld() { return "Hello World" } [WebMethod] public double GetPrice(string code) { // يأخذ الرمز كمعلمة و إرجاع السعر لـ (int i = 0; i < Stocks.GetLength(0); i++) { if (String.Compare(symbol, Stocks[i, 0], true) == 0) return Convert.ToDouble(stocks[i , 2]); } return 0; } [WebMethod] public string GetName(string code) { // يأخذ الرمز كمعلمة و// يُرجع اسم السهم for (int i = 0; i < Stocks.GetLength(0); i++) { if (String.Compare(symbol, Stocks[i, 0], true) == 0) return Stocks[i, 1] } return "لم يتم العثور على المخزون" } }
الخطوة (7) : تشغيل تطبيق خدمة الويب يعطي صفحة اختبار خدمة الويب حيث يمكننا اختبار طرق الخدمة.
الخطوة (8) : اضغط على اسم الطريقة للتأكد من أنها تعمل بشكل صحيح.
الخطوة (9) : للكشف عن طريقة GetName، قم بتوفير إحدى علامات المخزون المحددة بالفعل، إذا كان ذلك صحيحًا، فسيتم إرجاع اسم السهم ذي الصلة.
لاستخدام خدمة الويب هذه، نقوم بإنشاء موقع ويب تحت نفس الحل (الحل). فقط انقر بزر الماوس الأيمن على اسم الحل في مدير الحلول. يجب أن تحتوي صفحة الويب التي تستدعيها خدمة الويب على إدارة تحكم لعرض نتيجة الإرجاع واثنين أزرار التحكم، واحد للعودة والآخر لبدء الاتصال بالخدمة.
محتوى ملف تطبيق الويب هو كما يلي:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="wsclient._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// AR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title> صفحة بلا عنوان </title> </head> <body> <form id="form1 " runat="server"> <div> <h3>استخدام خدمة المخزون</h3> <br /> <br /> <asp:Label ID="lblmessage" runat="server"></asp:Label> <br /> <br /> <asp:Button ID = "btnpostback" runat = "server" onclick = "Button1_Click" Text = "إعادة النشر" /> <asp: Button ID = "btnservice" runat = "server" onclick = "btnservice_Click" Text = "احصل على المخزون" /> </div> </form> </body> </html>
رمز تطبيق الويب هو كما يلي:
باستخدام System.Collections؛ باستخدام System.Configuration؛ باستخدام System.Linq؛ باستخدام System.Web.Security؛ ; باستخدام System.Web.UI.WebControls; باستخدام System.Web.UI.WebControls.WebParts; { public Partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { lblmessage.Text = "وقت التحميل الأول: " + DateTime.Now.ToLongTimeString } else { lblmessage.Text = "PostBack at: " + DateTime.Now.ToLongTimeString(); } } محمي باطل btnservice_Click(object sender, EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format("سعر SATYAM الحالي:{0}"، proxy.GetPrice("SATYAM").ToString() }); } }
يشير الخادم الوكيل إلى بديل لرمز خدمة الويب. قبل استخدام خدمة الويب، يجب علينا إنشاء خادم وكيل. يتم تسجيل هذا الخادم الوكيل بواسطة تطبيق العميل. يقوم تطبيق العميل بعد ذلك بتنفيذ الاتصال بخدمة الويب كما لو كان يستخدم طريقة أصلية.
سيقوم الخادم الوكيل بإجراء المكالمة وإرسال المكالمة إلى الخادم بالتنسيق المناسب كطلب SOAP. يدعم SOAP بروتوكول الوصول إلى الكائنات البسيطة. هذا البروتوكول مناسب لتبادل بيانات خدمة الويب.
عندما يستجيب الخادم ويعيد حزمة SOAP إلى العميل، يقدم الخادم الوكيل كل شيء إلى تطبيق العميل.
قبل الاتصال بخدمة الويب باستخدام btnservice_click، يجب إضافة تطبيق الويب إلى التطبيق. سيؤدي هذا إلى إنشاء فئة وكيل بشفافية يمكن استخدامها بواسطة حدث btnservice_click.
protected void btnservice_Click(object sender, EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format("سعر SATYAM الحالي: {0}"، proxy.GetPrice("SATYAM").ToString()) }
اتبع الخطوات التالية لإنشاء وكيل:
الخطوة (1) : انقر بزر الماوس الأيمن على إدخال تطبيق الويب في Solution Explorer وحدد "إضافة مرجع الويب".
الخطوة (2) : حدد "خدمات الويب في هذا الحل" وسيتم إرجاع مرجع خدمة المخزون الذي كتبناه.
الخطوة (3) : انقر على الخدمة لفتح صفحة الاختبار. عند إنشاء الوكيل، يكون الإعداد الافتراضي هو "المضيف المحلي"، ويمكنك أيضًا إعادة تسميته. انقر فوق "إضافة مرجع" لإضافة وكيل إلى تطبيق العميل.
أضف العبارة التالية إلى التعليمات البرمجية الخاصة بك لتضمين الوكيل:
باستخدام المضيف المحلي.