شرح الويب سيرفيس,المختصر المفيد

Web Service او خدمة الويب هى عبارة عن برنامج قادر على التعامل مع البيانات عبر الشبكة مثل الشبكة المحلية او الانترنت باستخدام تقنيتين مفتوحتى المصدر هما SOAP و XML, سأقوم بشرح كيفية عمل Web Service باستخدام تقنية Dot Net.

مع صدور Dot Net 3.0 أصبح هناك نوعان من الويب سرفيس .

  1. ASP.NET Web Service.
  2. Windows Communication Foundation (WCF).

سأتكلم عن ال ASP.NET Web Service  .

من أجل ان تعمل الويب سرفيس ستحتاج الى سرفر عليه IIS وسنكتفى هنا بالسرفر المحلى الذى يمكن ان نقوم بتنصيب ال IIS عليه من اسطوانة اكس بى او ما بعده (لن اتكلم عن اعداد ال IIS  فى ويندوز فيستا او ويندوز سبعة).

ملحوظة :اذا كنت ستقوم بتشغيل الويب سرفيس من داخل الفجوال ستوديو فلست بحاجة لتنصيب ال IIS اما اذا كنت ستقوم بتشغيلها عند العميل ,فيجب تنصيب ال IIS

يمتاز استخدام الويب سرفيس بالآتى :

  • تناقل البيانات عبر منفذ 80 بسهولة عبر الانترنت والشبكة المحلية .
  • تستخدم الويب سرفيس تقنية ال XML  وهى مدعمة من قبل جهات عدة .
  • سهولة دمجها فى العديد من البرامج وسأعطى مثال بسيط هنا عن كيف ان الويب سرفيس تحل بعض المشاكل التى تواجهنا فى بيئة العمل ومثال ذلك استخدام InfoPath  ,فاذا كنت استخدمت ال InfoPath  لعلك واجهت مشكلة فتح ال Form فى البداية لان ال InfoPath  يقوم بجلب البيانات من قاعدة البيانات كلها بدون عمل فلترة لانه يعتمد على View  وال View  لا يمكن ان تقبل متغيراتParameters  حتى الآن ,ونقوم بحل هذه المشكلة عن طريق جعل مصدر بيانات ال InfoPath  هو Web Service  ونعطى المتغيرات لهذه الويب سرفيس .

لنفهم اولا بعض التقنية التى تعتمد عليها Web Service  .

SOAP هى اختصار ل Simple Object Access Protocol وهو نظام Protocol للتعامل مع البيانات فى صورة XML عبر بروتوكولى HTTPو HTTPs, لن نتعامل معه مباشرة فالدوت نت يتعامل معها ذاتيا.

WSDL وهو اختصار ل Web Service Description Language وهى لغة تستخدم لكتابة تعريف لل Web service فى صورة XML وخصوصا هى تعرفنا بعنوان الWeb Service و الادوات التى توفرها لنا هذه الخدمة methods للتعامل معها, لن نقوم بكتابتها يدويا فالفجوال ستوديو يقوم بانشاءها ذاتيا.

UDDI وهى اختصار Universal Description Discovery and Integration وهو يسمح لنا بعمل مكتبة للويب سرفيس ليتم استخدامها فيما بعد كفهرس للخدمات التى نقدمها.

بناء ويب سرفيس بلغة VB.NET باستخدام Visual Studio 2008 :

  • قم بفتح الفجوال ستوديو ومن قائمة File  اختر Create Website  .
  • من نافذة New Website  اختر ASP.NET Web service   واكتب اسمه webserviceDemo. هل نوعه HTTP ولا FileSystem  الامر يرجع الي كيفية التعامل مع هذه الويب سرفيس ,فاذا كنت ستتعامل معها على جهازك فقط فسيكفيك ان تكون من نوع FileSystem اما اذا كنت ستتعامل معها عن طريق الشبكة المحلية فاختر من نوع HTTP.
  • نلاحظ وضغ ملف service.vb فى الApp_code  و وضع ملف service.asmx  فى المشروع ,حيث service.asmx  هى صفحة ال Web service  اما service.vb فتعتبر هى صفحة Code Behind  للخدمة والتى سنكتب فيها الكود.
  • نلاحظ انه تم وضع كود بسيط فى صفحة service.vb .
  • نلاحظ وجود <WebMethod()> _ وهو تاج واجب الوجود لجعل ال Method Exposed  اى متاحة ,فاى Method  بدون <WebMethod()> _ لن تكون متاحة مباشرة للعميل الذى سيستخدم Webmethod  اى اننا نستخدم <WebMethod()> _ لجعلها متاحة للعميل .
  • ايضا هناك Namespace  يمكننا تغيير ال Namespace  التلقائى http://tempuri.org/ الى ال NameSpace  الخاص بنا وهو الدومين الخاص بنا ,لن يغير هذا من عمل الويب سيرفيس ,ولكنه يفيد فى حالة وجود استخدام اكتر من Method  يستخدمهم العميل بنفس الاسم فسيتم معرفة الفارق عن طريق هذا ال Namespace.
  • سنقوم بحذف هذا الجزء

Public Function HelloWorld() As String

Return "Hello World"

End Function

  • ونقوم بكتابة الخاصة بنا ولتكن مثلا كالتالى :

Public Function CalcSum(ByVal first As Decimal, ByVal last As Decimal) _As Decimal

Return (first + last)

End Function

  • يمكننا تجربة ال WebService  مبدأيا بالذهاب الى Solution  وعمل ضغطة بزر الفأرة اليمين على ملف service.asmx  وعمل browse .
  • نكتب Method  اخرى تطلب مننا رقم الOrder  فى جدول Orders  الموجود بقاعدة بيانات  Northwind  وترجع لنا البيانات عن هذه الطلب

<WebMethod()> _

Public Function order(ByVal orderid As Integer) As System.Data.DataSet

Dim con As New SqlConnection("server=.;database=northwind;integrated security = true;")

Dim com As New SqlCommand("select * from orders where orderid=@orderid", con)

com.Parameters.AddWithValue("@orderid", orderid)

Dim da As New SqlDataAdapter(com)

Dim ds As New System.Data.DataSet

da.Fill(ds)

Return ds

End Function


الآن نريد تجربة ما قمنا بعمله من Methods  وعمل Consumption  لهم.

  • نصنع مشروع Window Application  ونسميه مثلا WinConsumption .
  • نضغط على ملف المشروع فى Solution Explorer  ضغطة بالفأرة يمين ونختار Add service reference .
  • نضع عنوان الويب سرفيس وفى حالتنا http://localhost/demowebservices/Service.asmx
  • ونضغط على Go
  • نضغ Namespace  لها ولتكن مثلا Myservice  .
  • الآن نريد استهلاك السرفيس داخل المشروع نصنع واجهة كما بالشكل

interface

  • نستخدم Namespace  Imports Webconsumption.myservice وهو الخاص بالويب سرفيس .
  • وهذا هو الكود

Public Class Form1

Dim myserv As New Webconsumption.myservice.ServiceSoapClient

Private Sub btncalcsum_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncalcsum.Click

MessageBox.Show(myserv.CalcSum(txtlast.Text, txtfirst.Text))

End Sub

Private Sub btnshoworder_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnshoworder.Click

Dim ds As New Data.DataSet

ds = myserv.order(txtorder.Text)

DataGridView1.DataSource = ds.Tables(0)

End Sub

End Class

ملف المشروع

حول أحمد حسان
Senior IT Specialist @ German Hospital of Alexandria ,Co-Developed Medxpress ,Hospital ERP system ,Microsoft Certified Solution Developer

13 Responses to شرح الويب سيرفيس,المختصر المفيد

  1. محمد says:

    ممكن ترسل المشروع على الاميل

  2. احمد says:

    ارجوا التكرم بما يلي:
    معرفة كيفية ربط الويب سيرفس مع xml schema
    ثم معرفة كيفية تأثير constraint facet على الـ input parameters
    ارجوا الرد على الايميل
    ahmedalshtnawi@hotmail.com

  3. malika says:

    مرحبا اخي اريد مساعدتك في انشاء service web والموضوع هو gestion de pharmacier

  4. Noga Beso says:

    ازاي اخلي الداتا بيز لconnect علي ال webservice

    • adminahmed says:

      رجاء التوضيح هل تريدى من قاعدة بيانات مثلا MS SQl ان تقرأ البيانات من Webservice ام تريدى ان تقوم ال Webservice بالقراءة من قاعدة بيانات , اذا كانت الحالة الثانية فالكود بالأعلى يوضح ذلك

  5. mohsen says:

    انا لو عايز اعمل web service /apl الهدف منها انى اعمل layer / back end اقدر استخدمها بعد كده لو عندى اى ابلكيشين سواء اندرويد او ios استخدمها فيهم فكنت عايز تقنيه معينه ابدا ادرسها بعد ماقريت فى الاساسيات والبروتكول بشكل عام وهل لازم استخدم node js ولا مش شرط
    فى حاله استخدام الدوت نت معنى كده ان لازم اى تطبيق استخدمه يكون بيدعم iis

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s

%d مدونون معجبون بهذه: