1 / 39

خدمات الويب (Web Services) و كيف تنشئها

خدمات الويب (Web Services) و كيف تنشئها . صالح الزيد مهندس برمجيات. نقاط المحاضرة. ما هي خدمات الويب و لماذا؟ أنواعها و تقنياتها كيف ننشئ خدمة ويب الحماية في الاتصال بخدمات الويب استعراض لخدمات ويب فيسبوك وتويتر. مقدمة عن خدمات الويب. ما هي خدمات الويب؟.

fausta
Télécharger la présentation

خدمات الويب (Web Services) و كيف تنشئها

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. خدمات الويب (Web Services)و كيف تنشئها صالح الزيدمهندس برمجيات

  2. نقاط المحاضرة • ما هي خدمات الويب و لماذا؟ • أنواعها و تقنياتها • كيف ننشئ خدمة ويب • الحماية في الاتصال بخدمات الويب • استعراض لخدمات ويب فيسبوك وتويتر

  3. مقدمة عن خدمات الويب

  4. ما هي خدمات الويب؟ • خدمة أو مجموعة من الخدمات يقدمها موقع ويب • يستطيع أي موقع أو تطبيق أخر الاتصال بها و الاستفادة منها • تعطي نتائج (ملفات) بصيغ معينة مثل JSON و XML • بالاتصال عن طريق البروتوكولات معروفة ومتداولة (HTTP) • خطوة لتحويل موقع لتطبيق ويب

  5. موقع يعرض جامعات ومعلومات الطلاب فيها HTTP موقع أو تطبيق JSON, XML أسماء الجامعات مواد الطالب في فصل دراسي أسماء الطلاب في جامعة عدد الطلاب في جامعة معلومات طالب صفحات الموقع API

  6. لماذا خدمات الويب؟ • تسهيل الوصول للبيانات • توفير جهد معالجة الأوامر ووقت برمجتها

  7. تقنيات خدمات الويب

  8. تقنيات خدمات الويب • SOAP (Simple Object Access Protocol) • WSDL (Web Services Description Language) • UDDI (Universal Description, Discovery and Integration) • REST (Representative State Transfer)

  9. REST • تعتمد على أوامر بروتوكول الـHTTP الاعتيادية وهي:GET, POST, PUT, DELETE • تقوم باسترجاع صفحة بصيغة JSON أو XML

  10. REST • GEThttp://site.com/api/1.0/students/list?uni=ksu GET /api/1.0/students/list?uni=ksu HTTP/1.1 Host: www.site.com User-Agent: Mozilla/4.0 • POSThttp://site.com/api/1.0/students/list POST /api/1.0/students/list HTTP/1.1 Host: www.site.com User-Agent: Mozilla/4.0 uni=ksu

  11. JSON • JSON (JavaScript Object Notation) • صيغة خاصة بالجافاسكربت لتمثيل البيانات والـObjects • لها صيغة خاصة في تحويل نصوص الـUnicode • مثال: كلمة ”الرياض“ بالعربية ستصبح \u0627\u0644\u0631\u064a\u0627\u0636

  12. http://site.com/api/1.0/students/student_info?id=31219209 { "name": "Ahmed Abdullah", "age": 21, "uni": "King Saud University", "courses": [ { "name": "Mathematical Equations", "code": "MATH101", "insturctor": "Yasir Saud" }, { "name": "Islamic Principles", "code": "SLM101", "insturctor": "Mohammad Khaled" } ] }

  13. JSON • تستطيع الجافاسكربت قراءة هذه البيانات مباشرة و تحويلها إلى Object عبر الدالة eval varobj = eval('(' + result + ')');alert(obj.name); alert(obj.age); alert(obj.courses[0].name);

  14. JSON • أو في الـPHP و تحويلها إلى Object عبر الدالة json_decode <?php $result = file_get_contents(“http://site.com/api/1.0/students/student_info?id=31219209”); $obj = json_decode($result); echo $obj->name; //should print Ahmed Abdullah ?>

  15. XML • XML (Extensible Markup Language) • صيغة عامة لتبادل البيانات مدعومة في لغات وبيئات برمجية عدة

  16. http://site.com/api/1.0/students/student_info?id=31219209 <?xml version="1.0"?> <student_info> <name>Ahmed Abdullah</name> <age>21</age> <uni>King Saud University</uni> <courses> <course> <name>Mathematical Equations</name> <code>MATH101</code> <instructor>Yasir Saud</instructor> </course> <course> <name>Islamic Principles</name> <code>SLM101</code> <instructor>Mohammad Khaled</instructor> </course> </courses> </student_info>

  17. كيف ننشئ خدمة ويب؟

  18. كيف تنشئها؟ • قم بعمل مجلد خاص تحت عنوان موقعكhttp://site.com/api/1.0/ • قم بعمل ملف PHP لكل خدمة. نبدأ بواحدة (مثلا سرد معلومات الطالب)list_student_info.php

  19. http://site.com/api/1.0/list_student_info.php?id=31219209 <?php $student_id = $_GET[“id”]; … … //get required student info from DB //store it in an object or array $student_info $student_info->name = “Ahmed Abdullah”; $student_info->age = 21; … //or as array $student_info[“name”] = “Ahmed Abdullah”; $student_info[“age”] = 25; … //convert $student_info data to json $result = json_encode($student_info); echo $result;?>

  20. http://site.com/api/1.0/list_student_info.php?id=31219209 { "name": "Ahmed Abdullah", "age": 21, "uni": "King Saud University", "courses": [ { "name": "Mathematical Equations", "code": "MATH101", "insturctor": "Yasir Saud" }, { "name": "Islamic Principles", "code": "SLM101", "insturctor": "Mohammad Khaled" } ] }

  21. كيف تجعل عنوان الـAPI مرتب؟ • أي بدلا منhttp://site.com/api/1.0/list_student_info.php?id=31219209إلىhttp://site.com/api/1.0/students/student_info?id=31219209 • باستخدام الـApache Mod-Rewrite (htaccess redirect) RewriteRule^api/1.0/students/student_info$ /api/1.0/list_student_info.php [L]

  22. ماذا عن تعديل بيانات عن طريق خدمة الويب؟ • ما قمنا باستعراضه هو جلب بيانات فقط. ماذا عن تعديل بيانات؟ (حذف, إضافة, تعديل)؟ • نفس الفكرة نقوم بعمل صفحات باسم مثلاadd_new_student.phpupdate_student_info.phpdelete_student_info.php • نقوم بإعطاء المعلومات الجديدة كنص JSON أوقيم مباشرة إذا كانت المعلومات قليلة

  23. إضافة معلومات جديدة • مثال: add_new_student.php • و تقوم خدمة الويب باسترجاع إما نجاح العملية أو الرفض http://site.com/api/1.0/students/add_new_student?data={" name" : "YazeedSaleh", "age”: 25, …. } {"result":"success"} {"result":"fail", "reason":"You don’t have enough privileges"}

  24. حماية المعلومات المتداولة بين خدمة الويب والمتصل

  25. حماية المعلومات المتداولة بين الخدمة والمتصل • ماذا لو تطبيقك يتطلب اسم مستخدم وكلمة مرور؟ • تزويد المتصل برقم سري للاتصال لكل متصل (access token) يستخدمه بدلا عن استخدام اسم المستخدم و كلمة المرور, ويستطيع تغييره أي وقت. http://site.com/api/1.0/students/student_info?id=31219209&access_token=b2Aqj1G91k2smMr6KAmB91a

  26. حماية المعلومات المتداولة بين الخدمة والمتصل • ماذا لو تطبيقك يسمح أن يقوم مستخدم بالدخول على معلومات مستخدمين آخرين؟ • تزويد المتصل برقم سري لكل مستخدم سمح للمتصل بالدخول لمعلوماته (user access token) • هذه الأساليب تعرف بما يسمى الـOAuthأو الـOpen Authentication http://site.com/api/1.0/students/delete_student?id=31219209&access_token=b2Aqj1G91k2smMr6KAmB91a&user_access_token=u3ErJk8a93Mna1Lq4E

  27. حماية المعلومات المتداولة بين الخدمة والمتصل • تظل المعلومات غير محمية بشكل كافي عبر الانترنت لذا يتم استخدام اتصال مشفر HTTPS عادة في خدمات الويب ذات البيانات الحساسة

  28. استعراض خدمات ويبفيسبوك وتويتر

  29. خدمات ويب فيسبوك • متوفرة على العنوان https://graph.facebook.com • فيها شرح وافي لكل الخدمات المتوفرة مع access token مؤقت لساعتين • مثال: معلومات عامة عن حسابي في فيسبوكhttps://graph.facebook.com/saleh.alzaid { "id": "635286979", "name": "Saleh Al-Zaid", "first_name": "Saleh", "last_name": "Al-Zaid", "username": "saleh.alzaid", "gender": "male", "locale": "en_US" }

  30. معلومات الأصدقاء؟ تتطلب Access Token • https://graph.facebook.com/saleh.alzaid/friends?access_token=2227470867|2.AQCFXJ32tkL5nfOr.3600.1310313600.0-635286979|pYLUc8sTmom0GsNu4tPs6MYj7IU { "data": [ { "name": "BanderAlnogaithan", "id": "28969" }, { "name": "AbdulrahmanTarbzouni", "id": "701168" }, { "name": "Yamen S. Al-Hajjar", "id": "902805" }, { "name": "Dale D. Murphy", "id": "1408770" }, { "name": "RashaadBalbale", "id": "1907343" }, { "name": "FahadAlbutairi", "id": "7918116" }, …… ] }

  31. Access Token غير منتهي؟ • للحصول على access token غير منتهي غير محدد بفترة زمنية يجب أن تقوم بإنشاء تطبيق على الفيسبوك ثم طلب ما يسمى بالـ offilne access

  32. <?php require("../src/facebook.php"); //facebook PHP API global $facebook; $facebook = new Facebook( array( 'appId' => 'your_app_id', 'secret' => 'your_app_secret_code‘ ) ); $par['req_perms'] = "offline_access"; $loginUrl = $facebook->getLoginUrl($par); echo "loginUrl: $loginUrl\n"; $session = $facebook->getSession(); print_r($session); ?>

  33. خدمات ويب تويتر • متوفرة على العنوان http://api.twitter.com/ • يتطلب تسجيل تطبيق ومعلوماته قبل استخدامها • للحصول على Access Token يتم الاتصال على الخدمةhttp://api.twitter.com/oauth/request_tokenو إعطاءها رقم تطبيقك السري كمتغير POST

  34. مكتبات برمجية • في الحقيقة لا حاجة لمعرفة كافة خدمات الويب في موقع معين إذا ما قام بتقديم مكتبات برمجية تسهل عملية طلب الخدمة وإرسال واسترجاع المعلومات. • مكتبات برمجية لخدمات ويب تويتر لمعظم اللغات على الرابطhttp://dev.twitter.com/pages/libraries

  35. شكرا لكم Q & A

More Related