![]() |
|
[سلسلة التحكم] {3} - خدمة الويب (Web Service) - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (https://vb4arb.com/vb) +-- قسم : قسم لغة السي شارب C#.NET (https://vb4arb.com/vb/forumdisplay.php?fid=175) +--- قسم : قسم مقالات C#.NET (https://vb4arb.com/vb/forumdisplay.php?fid=177) +--- الموضوع : [سلسلة التحكم] {3} - خدمة الويب (Web Service) (/showthread.php?tid=660) |
[سلسلة التحكم] {3} - خدمة الويب (Web Service) - الشاكي لله - 23-10-13 بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته والصلاة والسلام على اشرف الخلق محمد وعلى اله الطيبين الطاهرين -- اهلا وسهلا بكم اخواني في المقالة الثالث من [سلسلة التحكم] هذا المقال لايتحدث بشكل عام عن التحكم ، بل سنتحدث عن شيئ يسمى 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]كما تلاحظ توجد مواصفة اعلى الدالة باسم WebMethod ، هذه المواصفة تمكن اي عميل من طلب هذه الدالة عبر الانترنت ، طيب لو اردنا عمل دالة عادية (اي لايمكن لأحد طلبها عبر الانترنت) ببساطة نكتب الدالة بدون [WebMethod] لو فكرت تسوي خاصية بهذا الشكل مثلا : PHP كود : [WebMethod]فورا سيحصل خطأ سيقول لك ان WebMethod وهي المواصفة التي تسمح لك بمشاركة الدوال عبر الانترنت مخصصة فقط للدوال او الاجراءات ، ولايجوز استعمالها للخصائص اذن لايمكنك مشاركة الخصائص عبر الانترنت ، الحل هو استعمال دالتين بهذه الطريقة PHP كود : public string name { get; set; }الخاصية 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]ملاحظة : الطريقة الي استخدمتها غير عملية في حفظ السيريالات .. حيث استخدام قاعدة بيانات ك 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، والعديد العديد غيرها) شكرا للمتابعة وسنلقاكم إن شاء الله في الاسبوع القادم في مقالة بسيطة جدا للتحكم عن بعد بواسطة خدمة الويب ، نلقاكم بخير . إنتهى RE: [سلسلة التحكم] {3} - خدمة الويب (WebService) - Sajad - 23-10-13 السلام عليكم صراحة استمتعت بالمقالة من مبدع مثلك أنار قسم لغة C#.NET وجزاك الله خير الجزاء بانتظار المزيد من ابداعاتك ![]() تحياتي RE: [سلسلة التحكم] {3} - خدمة الويب (WebService) - sherif khalid - 23-10-13 مقالة اكثر من رائعة يا اخى ابورائد
دائما متفوق بمقالاتك المتميزة RE: [سلسلة التحكم] {3} - خدمة الويب (WebService) - الشاكي لله - 24-10-13 (23-10-13, 10:12 PM)Sajad كتب : السلام عليكم شكرا استاذي .. انت وجودك نور جميع الاقسام وهذي السلسلة لاشيئ من مقالاتك التي كانت تملأ قسم السي شارب سابقا وإن شاء الله بقي القليل على تنزيل المنتدى القديم (حوالي 5 اجزاء) وسأبدأ بتفيذ برنامج النشر الالي على هذا المنتدى. تحياتي (23-10-13, 11:07 PM)sherif khalid كتب : شكرا على المرور اخوي ابو شريف واتمنى انك استفدت من المقالة بالمناسبة انا "ابو جاسم" وليس "ابو رائد" هههههه
RE: [سلسلة التحكم] {3} - خدمة الويب (Web Service) - الشاكي لله - 24-10-13 بالنسبة لموضوع الامن او Security
كيف لا تجعل احد يستعمل خدمتك فلو حصل شخص على رابط خدمتك فبساطة يمكنه تصميم form application ليتمكن من تنفيذ دوال الخدمة .. وبالتالي يمكن ان يضيف سيريال جديد وغيره من العبث موضوع السيكيورتي فيه طرق كثيرة جدااا ، وبما انني لم اركز على هذا الجانب ابدا سأدعك تقرأ مقالة كاملة من مايكروسوفت تتحدث عن كيفيات حماية خدمتك http://msdn.microsoft.com/en-us/library/ff648667.aspx او ممكن تبحث في قوقل باسم How to secure web service ، وبالتأكيد ستحصل على الكثير من الاجوبة. ودائما لاتجعل احد يحصل على رابط خدمتك . - اعذروني فلم إعطي هذا الموضوع حقه ، فأنا لان مشغول جدا مع تقنية اخرى ولايوجد عندي وقت لقراءة مقالة عن هذا الامر وكتابة مقالة اخرى RE: [سلسلة التحكم] {3} - خدمة الويب (Web Service) - @@أبورائد@@ - 24-10-13 السلام عليكم ورحمة الله وبركاته أسجل إعجابي الشديد لهذا الشخص (الشاكي لله) لما يتميز به من عقلية برمجية إحترافية أسأل الله أن يزيدك من فضله ![]() السلام عليكم ورحمة الله وبركاته RE: [سلسلة التحكم] {3} - خدمة الويب (Web Service) - ahmed tark - 07-01-14 درس رائع
فى انتظار المزيد من ابداعاتك RE: [سلسلة التحكم] {3} - خدمة الويب (Web Service) - احمد تيم - 05-02-14 ما شاء الله عنك يا اخي موضوع رائع وانا راح استخدم هذه الاداة في الايام القادمة بارك الله فيك ويعطيك العافية RE: [سلسلة التحكم] {3} - خدمة الويب (Web Service) - CLARO - 02-06-16 الله يعطيك العافيههه RE: [سلسلة التحكم] {3} - خدمة الويب (Web Service) - al9atl - 25-09-19 ممكن الطريقة على vb.net 2019 حتى الصور لا تظهر
|