23-10-13, 05:59 PM
(آخر تعديل لهذه المشاركة : 18-01-14, 07:11 PM {2} بواسطة الشاكي لله.)
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
والصلاة والسلام على اشرف الخلق محمد وعلى اله الطيبين الطاهرين
--
اهلا وسهلا بكم اخواني في المقالة الثالث من [سلسلة التحكم]
هذا المقال لايتحدث بشكل عام عن التحكم ، بل سنتحدث عن شيئ يسمى Web Service
وسنقوم بعملها ثم رفعها على استضافة واخيرا سنقوم بالتعامل معها من خلال برنامجنا على سطح المكتب.
صفر :- اجزاء المقالة
اولا :- التعريف ب WebService
ثانيا :- إنشاء WebService
ثالثا :- كتابة WebService وتجريبها
رابعا :- رفع الWebService على استضافة Somee
خامسا :- استدعاء محتويات الWebService
سادسا :- المراجع & الخاتمة
اولا :- التعريف ب WebService
Web Service او بالعربية (خدمة الويب) هي تطبيق من تطبيقات الويب ،
لايوجد لها واجهة رسومية ، ولازم تكون منصبة على Host (مضيف) لكي تعمل ،
وظيفتها هي استقبال الطلبات وتعالجها على الHost (اي يتم تنفيذ الاكواد على Host)
وترجع لك ب (الناتج) < في حالة كانت دالة طبعا
كيف تعمل WebService ؟؟
شاهد الصورة :-
العلاقة كما ترى تكون بين طرفين ، طرف العميل < طبعا ليس بالضرورة ان يكون عميل واحد
يتعامل مع الخدمة (WebService) ممكن ان يتعامل مع الخدمة 1000000 عميل او اكثر
طبعا حسب تحمل الHost لذلك .
سنقوم في هذا المقال بطرح بكتابة WebService فيها 3 دوال :
أ- AddSerial : حفظ سيريال
ب- IsHaveSerial : التأكد من السيريال (هل اضفناه سابقا او لا)
جـ- GetExternalIP : جلب الIP
هذه الدوال تحل بعض التساؤلات في هذا المنتدى ، فقبل عدة ايام قام احد الاعضاء
بطرح سؤال عن كيفية جلب ال Public ip من دون الاعتماد على مواقع نفس WhatsMyIp
فالاعتماد على مواقع مثل WhatsMyIp ليس عمليا .. فلو افترضنا ان الموقع خلاص اغلقوه ولم يعد يعمل .. سيتوقف برنامجك بالتأكيد
ولكن في خدمة الويب سنقوم نحن بأنفسنا بتصميم خدمة تجلب الايبي لنا
ونرفعها على استضافة .. فيمكننا تعديل الخدمة متى اردنا واضافة ميزات ك جلب تاريخ اليوم والكثير
وايضا لو تعطلت الاستضافة ماعليك سوا نقل الخدمة الى استضافة ثانية وتنزيل ابديت بسيط
لبرنامجك لتغيير رابط الاستضافة فقط ، ناهيك عن سهووووولة جلب ماتريده من الخدمة
ثانيا :- إنشاء WebService
سنقوم الان بإنشاء خدمة ويب بواسطة Visual Web Developer
(طبعا بإمكانك إنشاء الخدمة بواسطة Visual Studio)
--
خطوات إنشاء خدمة الويب :-
1- إنشاء مشروع جديد من نوع ASP.NET Empty Web Application
2- قم بإضافة WebService من خلال Project > Add new item > Web Service
خطوات إنشاء خدمة الويب (بالصور) :-
1
2
--
خلاص الحين أنشأنا Web Service جاهزة للعمل مباشرة على الLocal Host
اي انه سيتم استضافتها على جهازنا ، وليس على استضافة عالمية
لاحقا سنقوم برفعها على استضافة عالمية حتى يستطيع اي شخص الوصول لها عبر الانترنت
ولكن الان سنقوم بالعمل على Local host لتجريب الخدمة وتنقيحها
ثالثا :- كتابة WebService وتجريبها
بعد إنشاء الخدمة كما فعلنا في الجزء السابق ، سينتج لنا ملف كما في الصورة
هذا الملف تكتب فيه كود الخدمة سواء كان الكود (دالة او خاصية او مفوض ...) كل هذا تكتبه في هذا الملف
لكن إنتبه ، لايحق لك سوا مشاركة الدوال في خدمة الويب .
اعتقد الجملة مو مفهومة ، مو مشكلة نواصل وبتفهم
لاحظ عندما قمنا بإنشاء الخدمة ، وجدنا دالة باسم hello world
كما تلاحظ توجد مواصفة اعلى الدالة باسم WebMethod ، هذه المواصفة تمكن
اي عميل من طلب هذه الدالة عبر الانترنت ، طيب لو اردنا عمل دالة عادية (اي لايمكن لأحد طلبها عبر الانترنت)
ببساطة نكتب الدالة بدون [WebMethod]
لو فكرت تسوي خاصية بهذا الشكل مثلا :
فورا سيحصل خطأ سيقول لك ان WebMethod وهي المواصفة التي تسمح لك بمشاركة الدوال عبر الانترنت
مخصصة فقط للدوال او الاجراءات ، ولايجوز استعمالها للخصائص
اذن لايمكنك مشاركة الخصائص عبر الانترنت ، الحل هو استعمال دالتين بهذه الطريقة
الخاصية name لن يتم مشاركتها . ولكن يمكنك اسناد والاستعلام عن قيمتها باستعمال
دالتين من نوع WebMethod يعني سيتم مشاركتها . وبذلك قمنا بعمل خاصية بطريقة
غير مباشرة.
نرجع للدالة HelloWorld الي أنشاها البرنامج افتراضيا .
وظيفة هذه الدالة هو ارجاع نص "Hello World" عندما يتم استدعائها
--
كيف نستدعي دوال الWeb Service ؟؟ :-
1- من خلال المتصفح (فقط على الLocal host)
2- من خلال برنامج على سطح المكتب
--
1- من خلال المتصفح :-
قم بتشغيل الخدمة كما في الصورة :
سترى ظهور الدالة Hello World كما في الصورة ، نقوم بالضغط عليها :
بعدها سيتم توجيهنا إلى هذه الصفحة
نضغط Invoke وتعني أستدعاء الدالة HelloWorld ، ستظهر لك هذه الصورة
وهكذا قمنا بطلب الدالة HelloWorld من خلال المتصفح .
ننتقل للجزء الاهم وهو طلب الدالة من خلال برنامجنا على سطح المكتب .
2- من خلال برنامج على سطح المكتب :-
قم بإنشاء مشروع Windows Application ، ثم قم بإضافة زر على الفورم :
الان روح الى toolbar واختار Project ثم Add Service Reference :
ستظهر لك نافذة تطلب رابط الخدمة :
للحصول على رابط الخدمة ، قم بتشغيل الخدمة وستحصل على الرابط من المتصفح :
بعد كتابة الرابط والضغط على GO ، قم بكتابة اي Namespace وليكن FirstService
خلاص إحنا الحين اضفنا الخدمة الى برنامجنا ، باقي علينا نستدعي الدالة Hello World
ندخل على حدث click للزر الي اضفناه سابقا ونكتب الnamespce الي كتبناه في الخطوة السابقة
انا كتبت FirstService :
اختار الclass الي اخرها SoapClient ، ثم قم بإنشاء Instance كالتالي :
بعدها بكل بساطة وسهولة تقدر تسدعي الدالة HelloWorld وكأنها جزء من مشروعك :
خلاص عرفنا الحين كيف نتعامل مع دالة من خلال برنامجنا . (طبعا لازم تكون الدالة تحتوي على المواصفة WebMethod) .
عرفنا الحين كيف نتعامل مع الدوال ، قلنا في بداية المقال اننا سنقوم ببرمجة خدمة ويب
تقوم بحفظ سيريال وجلب الايبي الخارجي ثم سنقوم برفعهم على استضافة ليتمكن جميع
الناس من الوصول لها من خلال برنامجك (لما ترفعها على استضافة ماتقدر تتعامل مع الخدمة الا عن طريق برنامجك)
الان قم بكتابة دالة باسم AddSerial واخرى IsHaveSerial واخرى GetMyIP . سيكون الكود بهذا الشكل:
ملاحظة : الطريقة الي استخدمتها غير عملية في حفظ السيريالات .. حيث استخدام قاعدة بيانات ك SQL
وربطها مع الخدمة افضل بكثير . (طريقة الربط سهلة جدا كأنك تتعامل مع برنامج عادي)
بس لازم بعد ماتسوي القاعدة ترفعها على الاستضافة . ولكن الان نحن مبتدأين وسنقوم
على الاقل باستعمال هذه الطريقة التي تحفظ السيريال في الخدمة >>
(بالضبط مثل Setting في برامج سطح المكتب ولكن قد تختفي البيانات بعد فترة لان Application.set تحفظ البيانات في ذاكرة الHost).
والان سنقوم برفع الخدمة على الاستضافة وسنستدعي الدوال من برنامجنا
رابعا :- رفع الWebService على استضافة Somee
في الجزء السابق قمنا بعمل خدمة فيها 3 دوال ، الاولى لجلب الExternal IP الخاص بنا
والثانية لتسجيل سيريال ، والثالثة لفحص السيريال هل هو موجود او لا
وهتان الدالتان تحلان بعض التساؤلات في هذا المنتدى
كيف احصل على الايبي الخارجي لجهازي ؟؟ حيث ستعمل الخدمة مثل المبدأ المذكور في المشاركة هنا
كيف اسجل البرنامج لمرة واحدة (اي بعد استعمال السيريال ، لايمكن لاي شخص استعماله مرة اخرى)
وهذه الخدمة ستحل كل هذه التساؤلات .
في السابق إنشأنا خدمة تعمل على Local host يعني ان الخدمة ستعمل على جهازك فقط
طيب لو قررت تنشر برنامجك على المستخدمين ماالعمل ؟؟
ببساطة نرفع الخدمة على استضافة ، وانا بدل ماشرح بالصور قمت بعمل شرح فيديو
طبعا تجاهلت تصوير طريقة التسجيل في الموقع (Somee.com) ، لأن بصراحة كمبرمجين
امر مخجل ان اقوم بشرح كيفية التسجيل . لو حبيت تشوف الطريقة ابحث في اليوتيوب .
طريقة رفع الخدمة على استضافة Somee.com :-
او على اليوتيوب مباشرة
خامسا :- استدعاء محتويات الWebService
بعد أن قمنا برفع الاستضافة ، سنقوم باستعمال دوالها من خلال برنامجنا
الطريقة قمنا بشرحها في الجزء الثالث ولكن هذه المرة "بالفيديو"
او على اليوتيوب مباشرة
طبعا البرنامج المستخدم في الفيديو + الخدمة الي سويناها تلاقونها في المرفقات
البرنامج جاهز يمكنك تجريبه فهو مربوط بالخدمة المركبة على Somee
سابعا :- المراجع & الخاتمة
المراجع المعتمد عليها في هذه المقالة :-
خدمة ويب - ويكيبيديا، الموسوعة الحرة
HOW TO: Write a Simple Web Service by Using Visual C# .NET
--
أتمنى أن تستفيدو من هذه التقنية الراائعة جدا
وتطورو الامثلة لتلبي احتياجتكم فمجال هذه التقنية واسع جدا ويتم استعماله
في العديد من التطبيقات حاليا (خاصة البرامج التي تعتمد على الانترنت في تسجيلها ، Skype، والعديد العديد غيرها)
شكرا للمتابعة وسنلقاكم إن شاء الله في الاسبوع القادم في مقالة بسيطة جدا
للتحكم عن بعد بواسطة خدمة الويب ، نلقاكم بخير .
إنتهى
السلام عليكم ورحمة الله وبركاته
والصلاة والسلام على اشرف الخلق محمد وعلى اله الطيبين الطاهرين
--
اهلا وسهلا بكم اخواني في المقالة الثالث من [سلسلة التحكم]
هذا المقال لايتحدث بشكل عام عن التحكم ، بل سنتحدث عن شيئ يسمى Web Service
وسنقوم بعملها ثم رفعها على استضافة واخيرا سنقوم بالتعامل معها من خلال برنامجنا على سطح المكتب.
صفر :- اجزاء المقالة
اولا :- التعريف ب WebService
ثانيا :- إنشاء WebService
ثالثا :- كتابة WebService وتجريبها
رابعا :- رفع الWebService على استضافة Somee
خامسا :- استدعاء محتويات الWebService
سادسا :- المراجع & الخاتمة
اولا :- التعريف ب WebService
Web Service او بالعربية (خدمة الويب) هي تطبيق من تطبيقات الويب ،
لايوجد لها واجهة رسومية ، ولازم تكون منصبة على Host (مضيف) لكي تعمل ،
وظيفتها هي استقبال الطلبات وتعالجها على الHost (اي يتم تنفيذ الاكواد على Host)
وترجع لك ب (الناتج) < في حالة كانت دالة طبعا
كيف تعمل WebService ؟؟
شاهد الصورة :-
العلاقة كما ترى تكون بين طرفين ، طرف العميل < طبعا ليس بالضرورة ان يكون عميل واحد
يتعامل مع الخدمة (WebService) ممكن ان يتعامل مع الخدمة 1000000 عميل او اكثر
طبعا حسب تحمل الHost لذلك .
سنقوم في هذا المقال بطرح بكتابة WebService فيها 3 دوال :
أ- AddSerial : حفظ سيريال
ب- IsHaveSerial : التأكد من السيريال (هل اضفناه سابقا او لا)
جـ- GetExternalIP : جلب الIP
هذه الدوال تحل بعض التساؤلات في هذا المنتدى ، فقبل عدة ايام قام احد الاعضاء
بطرح سؤال عن كيفية جلب ال Public ip من دون الاعتماد على مواقع نفس WhatsMyIp
فالاعتماد على مواقع مثل WhatsMyIp ليس عمليا .. فلو افترضنا ان الموقع خلاص اغلقوه ولم يعد يعمل .. سيتوقف برنامجك بالتأكيد
ولكن في خدمة الويب سنقوم نحن بأنفسنا بتصميم خدمة تجلب الايبي لنا
ونرفعها على استضافة .. فيمكننا تعديل الخدمة متى اردنا واضافة ميزات ك جلب تاريخ اليوم والكثير
وايضا لو تعطلت الاستضافة ماعليك سوا نقل الخدمة الى استضافة ثانية وتنزيل ابديت بسيط
لبرنامجك لتغيير رابط الاستضافة فقط ، ناهيك عن سهووووولة جلب ماتريده من الخدمة
ثانيا :- إنشاء WebService
سنقوم الان بإنشاء خدمة ويب بواسطة Visual Web Developer
(طبعا بإمكانك إنشاء الخدمة بواسطة Visual Studio)
--
خطوات إنشاء خدمة الويب :-
1- إنشاء مشروع جديد من نوع ASP.NET Empty Web Application
2- قم بإضافة WebService من خلال Project > Add new item > Web Service
خطوات إنشاء خدمة الويب (بالصور) :-
1
2
--
خلاص الحين أنشأنا Web Service جاهزة للعمل مباشرة على الLocal Host
اي انه سيتم استضافتها على جهازنا ، وليس على استضافة عالمية
لاحقا سنقوم برفعها على استضافة عالمية حتى يستطيع اي شخص الوصول لها عبر الانترنت
ولكن الان سنقوم بالعمل على Local host لتجريب الخدمة وتنقيحها
ثالثا :- كتابة WebService وتجريبها
بعد إنشاء الخدمة كما فعلنا في الجزء السابق ، سينتج لنا ملف كما في الصورة
هذا الملف تكتب فيه كود الخدمة سواء كان الكود (دالة او خاصية او مفوض ...) كل هذا تكتبه في هذا الملف
لكن إنتبه ، لايحق لك سوا مشاركة الدوال في خدمة الويب .
اعتقد الجملة مو مفهومة ، مو مشكلة نواصل وبتفهم
لاحظ عندما قمنا بإنشاء الخدمة ، وجدنا دالة باسم hello world
PHP كود :
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
كما تلاحظ توجد مواصفة اعلى الدالة باسم WebMethod ، هذه المواصفة تمكن
اي عميل من طلب هذه الدالة عبر الانترنت ، طيب لو اردنا عمل دالة عادية (اي لايمكن لأحد طلبها عبر الانترنت)
ببساطة نكتب الدالة بدون [WebMethod]
لو فكرت تسوي خاصية بهذا الشكل مثلا :
PHP كود :
[WebMethod]
public string Test { get; set; }
فورا سيحصل خطأ سيقول لك ان WebMethod وهي المواصفة التي تسمح لك بمشاركة الدوال عبر الانترنت
مخصصة فقط للدوال او الاجراءات ، ولايجوز استعمالها للخصائص
اذن لايمكنك مشاركة الخصائص عبر الانترنت ، الحل هو استعمال دالتين بهذه الطريقة
PHP كود :
public string name { get; set; }
[WebMethod]
public string Get()
{
return num
}
[WebMethod]
public void Set( string num)
{
name = num;
}
الخاصية name لن يتم مشاركتها . ولكن يمكنك اسناد والاستعلام عن قيمتها باستعمال
دالتين من نوع WebMethod يعني سيتم مشاركتها . وبذلك قمنا بعمل خاصية بطريقة
غير مباشرة.
نرجع للدالة HelloWorld الي أنشاها البرنامج افتراضيا .
وظيفة هذه الدالة هو ارجاع نص "Hello World" عندما يتم استدعائها
--
كيف نستدعي دوال الWeb Service ؟؟ :-
1- من خلال المتصفح (فقط على الLocal host)
2- من خلال برنامج على سطح المكتب
--
1- من خلال المتصفح :-
قم بتشغيل الخدمة كما في الصورة :
سترى ظهور الدالة Hello World كما في الصورة ، نقوم بالضغط عليها :
بعدها سيتم توجيهنا إلى هذه الصفحة
نضغط Invoke وتعني أستدعاء الدالة HelloWorld ، ستظهر لك هذه الصورة
وهكذا قمنا بطلب الدالة HelloWorld من خلال المتصفح .
ننتقل للجزء الاهم وهو طلب الدالة من خلال برنامجنا على سطح المكتب .
2- من خلال برنامج على سطح المكتب :-
قم بإنشاء مشروع Windows Application ، ثم قم بإضافة زر على الفورم :
الان روح الى toolbar واختار Project ثم Add Service Reference :
ستظهر لك نافذة تطلب رابط الخدمة :
للحصول على رابط الخدمة ، قم بتشغيل الخدمة وستحصل على الرابط من المتصفح :
بعد كتابة الرابط والضغط على GO ، قم بكتابة اي Namespace وليكن FirstService
خلاص إحنا الحين اضفنا الخدمة الى برنامجنا ، باقي علينا نستدعي الدالة Hello World
ندخل على حدث click للزر الي اضفناه سابقا ونكتب الnamespce الي كتبناه في الخطوة السابقة
انا كتبت FirstService :
اختار الclass الي اخرها SoapClient ، ثم قم بإنشاء Instance كالتالي :
PHP كود :
FirstService.MyServiceSoapClient service = new FirstService.MyServiceSoapClient();
بعدها بكل بساطة وسهولة تقدر تسدعي الدالة HelloWorld وكأنها جزء من مشروعك :
خلاص عرفنا الحين كيف نتعامل مع دالة من خلال برنامجنا . (طبعا لازم تكون الدالة تحتوي على المواصفة WebMethod) .
عرفنا الحين كيف نتعامل مع الدوال ، قلنا في بداية المقال اننا سنقوم ببرمجة خدمة ويب
تقوم بحفظ سيريال وجلب الايبي الخارجي ثم سنقوم برفعهم على استضافة ليتمكن جميع
الناس من الوصول لها من خلال برنامجك (لما ترفعها على استضافة ماتقدر تتعامل مع الخدمة الا عن طريق برنامجك)
الان قم بكتابة دالة باسم AddSerial واخرى IsHaveSerial واخرى GetMyIP . سيكون الكود بهذا الشكل:
PHP كود :
[WebMethod]
public void AddSerial(string serial)
{
Application.Set(serial,"null");
}
[WebMethod]
public bool IsHaveSerial(string serial)
{
if (Application.AllKeys.Contains(serial))
{
return true;
}
return false;
}
[WebMethod]
public string GetMyIP()
{
return HttpContext.Current.Request.UserHostAddress;
}
ملاحظة : الطريقة الي استخدمتها غير عملية في حفظ السيريالات .. حيث استخدام قاعدة بيانات ك SQL
وربطها مع الخدمة افضل بكثير . (طريقة الربط سهلة جدا كأنك تتعامل مع برنامج عادي)
بس لازم بعد ماتسوي القاعدة ترفعها على الاستضافة . ولكن الان نحن مبتدأين وسنقوم
على الاقل باستعمال هذه الطريقة التي تحفظ السيريال في الخدمة >>
(بالضبط مثل Setting في برامج سطح المكتب ولكن قد تختفي البيانات بعد فترة لان Application.set تحفظ البيانات في ذاكرة الHost).
والان سنقوم برفع الخدمة على الاستضافة وسنستدعي الدوال من برنامجنا
رابعا :- رفع الWebService على استضافة Somee
في الجزء السابق قمنا بعمل خدمة فيها 3 دوال ، الاولى لجلب الExternal IP الخاص بنا
والثانية لتسجيل سيريال ، والثالثة لفحص السيريال هل هو موجود او لا
وهتان الدالتان تحلان بعض التساؤلات في هذا المنتدى
كيف احصل على الايبي الخارجي لجهازي ؟؟ حيث ستعمل الخدمة مثل المبدأ المذكور في المشاركة هنا
كيف اسجل البرنامج لمرة واحدة (اي بعد استعمال السيريال ، لايمكن لاي شخص استعماله مرة اخرى)
وهذه الخدمة ستحل كل هذه التساؤلات .
في السابق إنشأنا خدمة تعمل على Local host يعني ان الخدمة ستعمل على جهازك فقط
طيب لو قررت تنشر برنامجك على المستخدمين ماالعمل ؟؟
ببساطة نرفع الخدمة على استضافة ، وانا بدل ماشرح بالصور قمت بعمل شرح فيديو
طبعا تجاهلت تصوير طريقة التسجيل في الموقع (Somee.com) ، لأن بصراحة كمبرمجين
امر مخجل ان اقوم بشرح كيفية التسجيل . لو حبيت تشوف الطريقة ابحث في اليوتيوب .
طريقة رفع الخدمة على استضافة Somee.com :-
او على اليوتيوب مباشرة
إقتباس :http://www.youtube.com/watch?v=-FWs7LaeS80
خامسا :- استدعاء محتويات الWebService
بعد أن قمنا برفع الاستضافة ، سنقوم باستعمال دوالها من خلال برنامجنا
الطريقة قمنا بشرحها في الجزء الثالث ولكن هذه المرة "بالفيديو"
او على اليوتيوب مباشرة
إقتباس :http://www.youtube.com/watch?v=xnoUcFQC4EQ
طبعا البرنامج المستخدم في الفيديو + الخدمة الي سويناها تلاقونها في المرفقات
البرنامج جاهز يمكنك تجريبه فهو مربوط بالخدمة المركبة على Somee
سابعا :- المراجع & الخاتمة
المراجع المعتمد عليها في هذه المقالة :-
خدمة ويب - ويكيبيديا، الموسوعة الحرة
HOW TO: Write a Simple Web Service by Using Visual C# .NET
--
أتمنى أن تستفيدو من هذه التقنية الراائعة جدا
وتطورو الامثلة لتلبي احتياجتكم فمجال هذه التقنية واسع جدا ويتم استعماله
في العديد من التطبيقات حاليا (خاصة البرامج التي تعتمد على الانترنت في تسجيلها ، Skype، والعديد العديد غيرها)
شكرا للمتابعة وسنلقاكم إن شاء الله في الاسبوع القادم في مقالة بسيطة جدا
للتحكم عن بعد بواسطة خدمة الويب ، نلقاكم بخير .
إنتهى