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

Slides:



Advertisements
Similar presentations
ACADEMIC HONESTY & PLAGIARISM. What is the meaning of honest (adjective) or honesty (noun) ? An honest person is someone who does not lie, cheat or steal.
Advertisements

تغيير الرقم السري لبنك المعلومات
تصميم موقع عربي حسن سليس علوم الحاسب والمعلومات. العناصر  المتطلبات الأساسية  الخطوات العملية لنشر موقع على الإنترانت / الإنترنت  مواقع الاستضافة (
إدارة وتنمية مصادر المعلومات Information Resource Management (IRM)4.
محرر قواعد التحليل الصرفي المصدري تصميم و تنفيذ : يوسف بن عبد الرحمن السحيباني هاشم بن علي الشبعان.
أ/ يعقوب العفيف جامعة ام القرى
مهارات الحاسب الآلي COMPUTER SKILLS ميسون القري. الفصل الدراسي الثاني 1431هـ الانترنت مجموعة ضخمة من شبكات الاتصالات المرتبطة ببعضها البعض، وهذه المجموعة.
Introduction to Software
كيفية عرض المكونات Hit Counter: يجب تخزينها ونشرها على موقع الويب (الخادم) Hover Button: يجب تخزينها وعرضها من الأمر Preview on Browser من قائمة File.
2-4 May Week 8. Agenda - Week 8 10:00-10:10Welcome (Starter activity) 10:10-11:10Lesson Plan 11:10-11:45Micro Teaching evaluation 11:45-12:00 Break.
بروتوكول الانترنت نظم تشغيل 1.
Computer Skills 2 for Humanities (Electronic Mail)
Objectives  Create a database using Mysql  Create a tables and insert data on them  Create a relationship between tables  Create a user  Export your.
تقسيم الشبكات Subnetting
Alphabet game…. Think of a word – Your partner has to guess that word – you can give ONE word clues – no YES/NO responses allowed!!
المحاضرة التاسعة استخدام أدوات التحكم المتقدمة Rich controls.
GF and RS, Dept of CS, Mangalore University
Activity Diagram.
GF and RS, Dept. of CS, Mangalore University
Multimedia Journalism –للصحافة والإعلام الوسائط المتعددة
إعداد المعلم : إيمان أحمد يوسف صالح
الشبكات والإتصالات الفصل الثالث
تعريف تطبيقات واستخدامات نظم المعلومات الجغرافية المحتويات تعريف نظم المعلومات الجغرافية مكونات نظم المعلومات الجغرافية الاسئلة الخمسة التى تجيب عنها.
What is “I am an IDP” App. ? ما هو تطبيق «أنا نازح» It is a free SMART phone app هو تطبيق مجاني للهواتف الذكية Can be downloaded from Google Play.
المحاضرة الأولى مقدمة أساسية: - ما هو الوب؟ ما هي خصائصه؟
محاضرة 4, 5: مفهوم الأصناف و الكائنات و التعامل معها
أدوات في التعليم الالكتروني
How to contact me Twitter Blog :-
برمجة قواعد بيانات تطبيق مفهوم الحماية في النماذج
تابع :تطبيع البيانات.
مهارات الحاسوب الوحدة الثامنة أمن المعلومات Computer skills
1 أهلا وسهلا ... بطلاب المنح الدراسية بجامعة جازان
1.الدوال Function 2.الاجراءاتSub Procedure 3.وحده نمطيه Add Module
أولاً : مقدمة خدمات الإنترنت Internet Services
المخدم الرئيسي في الشبكات
الوحدة الثالثة الاتصالات و شبكات الحاسوب
تابع جمل التحكم و معالجة الاستثناءات
أهداف الدرس: ذكر اسم وحدة البيانات في طبقة النقل (الطبقة الرابعة). تحديد وظيفة طبقة النقل (الطبقة الرابعة) ذكر أهمية تقسيم البيانات في طبقة النقل.
مقدمة ASP.NET.
إختر عنواناً لمشروعك يكون بسيطاً ويشد الانتباه!.
محاضرة 7,6: مفهوم مصفوفـة من الكائنات
يمكن استدعاء الكود الوظيفي عند حدث معين أو عند استدعاء الكود الوظيفي .
سياسات واستراتيجيات البحث
الفصل الثالث حصر و ترتيب البيانات.
إعداد المدرس : ليث المرهج
عن طريق الموقع الكتروني By the Website /
Programming -2 برمجة -2 المحاضرة-1 Lecture-1.
Electronic Payment Systems أنظمة الدفع الالكتروني
صفي شعورك عند مشاهدتها ؟؟
بسم الله الرحمن الرحيم.
Windows Security Center
البورصة نشأة البورصة سبب تسميتها معنى البورصة الأوراق المالية
ولا تنسونا من صالح دعائكم
أ.إسراء الطريقي , 306 عال , المحاضره الثالثه
معالجة الاستثناءات.
3. Browsing the Web تصفح الانترنت
شرح برنامج صانع الافلام Movie Maker (الموفي ميكر)
د. إيمان الأنور.
Gateway (بوابة العبور أو الاتصال)
User ID Symbol Description Site Engineer SE Office Engineer OE N/A SF
أساسيات تصميم مواقع الويب
مصادر على شبكة الانترنت
الكلية الجامعية للعلوم التطبيقية
المحاضرة الحادية عشر الانترنت
Prepared By : Ms Asma Prepared For : Grade 7
الأحــداث events الوينــدوز هــو محــيط رســائلي يــتم إرســال رســالة عنــد حــدوث حــدث مثــل مــرور الماوس فوق صورة أو فوق زر معين أو التركيز على نافذة.
هيكلة نظم إدارة قواعد البيانات (DBMS Architecture)
السلام عليكم ورحمة الله وبركاته سيكون درسنا اليوم الدرس الأول في الوحدة الثالثة سنقدم لكم الدرس اليوم نحنُ طلاب المجموعة الثالثة : فيصل يحيى لعجم عبد الرحمن.
Universal Description, Discovery and Integration (UDDI)
Presentation transcript:

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

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

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

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

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

لماذا خدمات الويب؟ تسهيل الوصول للبيانات توفير جهد معالجة الأوامر ووقت برمجتها 1 مثال: تويتر و فيسبوك فيهم العديد من البيانات 2 مثال: انتايني

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

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

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

REST GET http://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 POST http://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

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

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" } ]

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

JSON أو في الـ PHP و تحويلها إلى Object عبر الدالة json_decode $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 ?>

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

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> <name>Islamic Principles</name> <code>SLM101</code> <instructor>Mohammad Khaled</instructor> </courses> </student_info>

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

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

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; ?>

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" } ]

كيف تجعل عنوان الـ 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]

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

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

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

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

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

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

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

خدمات ويب فيسبوك متوفرة على العنوان 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" }

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

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

<. php require(". /src/facebook <?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); ?>

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

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

شكرا لكم  Q & A