Lecture_4__Service_Discovery_in_Pervasive_Computing_Environment.
طيب، إحنا النهاردة المحاضرة الرابعة، تمام؟ بنتكلم فيها برضه عن Pervasive computing، وإيه الـ Topic اللي إحنا هنتكلم فيه النهاردة؟ هنتكلم على الـ...
Service discovery in pervasive computing environment، يعني إيه Service discovery في الـ Pervasive computing environment؟ إحنا فهمنا يعني إيه الـ Environment بتاعت الـ Pervasive computing إنه بيبقى Multiple devices، Multiple services موجودة في مكان، والـ User بيدخل بيحاول إنه يـ interact مع الحاجات دي بشكل Invisible
تمام؟ في Challenge مهمة جداً في الـ Pervasive environment اللي هي الـ Service discovery، إن أنا لما بدخل مكان، وأجي أبقى عايزة Service معينة، Let's say مثلاً إن إحنا دخلنا مكان زي Smart room، والـ User عايز مثلاً يـ print document فالمفروض إنه يبقى قادر إنه يـ discover إيه الـ Printers اللي موجودة
علشان يقدر يعمل Printing للـ Document ده، أو مثلاً ياخد Connection، أو مثلاً في Some sort of مثلاً Location discovery، فبيبقى في Device بيـ provide service اسمه Service provider
واحد بيبقى الـ User هو الـ Service provider بس هو whoever بقى، في Component من الـ Components اللي surrounding الـ Environment، بتـ provide service وأنا الـ Service دي عايز استخدمها، فـ Service discovery protocol والـ Components اللي إحنا بنتكلم عليها النهاردة، هتتكلم إزاي الـ Service provider بيقدر إنه
يعلن ويـ announce عن الـ Service بتاعته، وإزاي الـ Service consumer يقدر إنه يكتشف الـ Service ديه ويـ register فيها أو يستخدمها بشكل، يعني، طول ما هو موجود جوه الـ Environment.
في طبعاً Challenges في الـ Service discovery هنتكلم عليها برضه. طيب، إحنا mainly النهاردة، دي كانت Task من المرة اللي فاتت، أنا مش عارف محمد فتحي موجود ولا لأ؟ سامعني؟ محمد فتحي
محمود فتحي يا دكتور. محمود فتحي، محمود فتحي، بس هو لسه مـ joinـش يعني. بس هو لسه مـ joinـش تمام خلاص Okay. محمود فتحي تمام، تمام. طيب خلونا نبدأ المحاضرة وبعدين in case إنه عمل Join للمحاضرة ممكن يبقى يتكلم على الـ Score technology، الـ Topic اللي إحنا مأجلينه من المرة اللي فاتت
Actually المرة اللي قبل اللي فاتت. طيب، زي ما قلنا كدة إن أنا بيبقى عندي زي Directory، الـ Directory ده بيبقى فيه Registered كل الـ Services الموجودة جوه الـ Environment، وفي الـ Service provider ده هو اللي بيـ register الـ Service بتاعته جوه الـ Directory، وبيبدأ الـ Consumer لما الـ Service consumer لما بيدخل الـ Environment أو بيـ join الـ Pervasive environment يبدأ..
"يـ browse الـ Directory ده علشان يشوف إيه الـ Service اللي ممكن يستخدمها، المتاحة ليه إنه يستخدمها. طيب، المهمة، الـ Task المهمة اللي بتحصل أو الـ Objective
اللي أنا بعمل على أساسه Service discovery، ليه Service discovery ده مهم في الـ Pervasive environment؟ أولاً لأن أنا لما بدخل Environment أنا ممكن ما بقاش عارفة الـ Devices الموجودة جوه الـ Environment، مين الـ existent جوه الـ Environment. فأنا بيبقى هدف الـ Service discovery أولاً إن أنا أعرف مين اللي موجود معايا.
ثانياً إن أنا أبدأ أسيت Communication مع الحاجات اللي أنا مسموح لي إن أنا أـ communicate معاها، وثالثاً إن أنا أبدأ أستخدم أو هما يبدأوا يستخدموا الـ Services اللي عندي أو أستخدم الـ Services اللي عندهم. فبالتالي الـ Service discovery ده الـ Objective بتاعها إن أنا أـ discover مين اللي موجود معانا في الـ Environment، ثانياً إن أنا أـ communicate معاهم وثالثاً إن أنا أقدر إن أنا أستخدم الـ Services اللي ممكن يعملولها discovery.
زي ما قلنا، سوري الـ Services اللي ممكن يعملولها providing. زي ما قلنا كدة لما بدخل Smart room، لما مثلاً Mobile حد شايل Mobile device يدخل Smart room، Once إنه دخل مش محتاج إنه يبذل Effort أو يعمل Setup علشان يشوف إيه الـ Services اللي موجودة في الـ Smart room.
عادةً، عادةً في الـ Traditional computing العادية لما مثلاً عايزة أعمل Printing، أولاً لازم أـ communicate معاها مثلاً بـ Wire أو Wireless أو أبقى موجودة على نفس الـ Network بتاعتها فأنا أبقى عارفة إيه الـ Network اللي الـ Printer دي موجودة فيها، ثانياً لازم أبقى عارفة اسم الـ Printer.
ثالثاً لو ليها Password مثلاً أبقى عارفاه، يبقى عندي الـ مثلاً أبقى عاملة Installing للـ Driver بتاع الـ Printer. ففي الـ Traditional computing بيبقى في Administration overhead إن أنا أـ communicate أو إن أنا أستخدم الـ Services اللي موجودة حواليّ.
أو أستخدم الـ Services الموجودة جوه الـ Devices اللي حواليّ. في الـ Service discovery protocol الموجودة في الـ Pervasive environment، أولاً بيـ minimize administration overhead، مش المفروض أصلاً إنه يبقى في Administration overhead مش، يعني طبيعة الـ Pervasive computing تفرض عليّ إن ما يبقاش في Administration.
وما يبقاش في يعني Intensive setup process علشان إن أنا أستخدم الـ Service ديه. بيـ increase الـ Usability لأن إحنا قلنا مش محتاجة Setup أصلاً وبيـ simplify بقى الـ Pervasive computing design. لازم يبقى في Protocol للـ Service discovery ديه لكل الـ Components عشان تتكلم مع بعضها.
اللي أنا بعمل على أساسه Service discovery، ليه Service discovery ده مهم في الـ Pervasive environment؟ أولاً لأن أنا لما بدخل Environment أنا ممكن ما بقاش عارفة الـ Devices الموجودة جوه الـ Environment، مين الـ existent جوه الـ Environment. فأنا بيبقى هدف الـ Service discovery أولاً إن أنا أعرف مين اللي موجود معايا.
مثلاً. الفرق الأساسي ما بين إن أنا أستخدم الـ Service اللي هي الـ Web service أو إن أنا أستخدم الـ Service الموجودة في الـ Pervasive environment اللوكيشن (Location) بتاع الـ Service. لما أجي أدخل Smart room فأنا بتكلم على Service موجودة Locally في المكان اللي أنا موجودة فيه، موجودة Locally surrounding في الـ Environment اللي أنا موجودة فيها، فأنا بدور على Printer عشان أعمل عليها Printing، بدور على
مثلاً جهاز أعمل عليه some sort of communication، some sort of computation، بدور على الـ Smart board علشان أبدأ أـ communicate معاها، بدور مثلاً على الـ Speaker علشان أبدأ أشغل الـ Playlist بتاعتي. فأنا بدور على Service locally، لكن في الـ Web service، الـ Service...
إني أتكلم عليها متبقاش مشترطة إن هي تبقى موجودة في المكان بتاعي؛ أستخدم سيرفس موجودة على جوجل مثلاً، أستخدم سيرفس موجودة على الكلاود (Cloud)، أستخدم سيرفس موجودة في أمازون. فالـ Web service لما بنيجي نتكلم عليها إحنا مابنبقاش مرتبطين بـ Physical location، مالهاش Physical location limitation. لكن السيرفس اللي بتكلم عليها في الـ Pervasive Computing، أنا بعمل Discover للسيرفس
اللي موجودة  (locally) في المكان اللي أنا موجودة فيه. ثانيًا، حاجة مهمة إن الـ Web Services دي بتـ... بتعمل Interoperability ما بين ال (applications) عمومًا، فيه أبلكيشن بيكلم أبلكيشن، أنا أبلكيشن على الموبايل عندي أو أبلكيشن على اللاب توب بتاعي بيستخدم (service) على جوجل، أو بيستخدم سيرفس على أمازون.
فأنا عموماً بتكلم على الـ Operation ما بين Two applications أو الـ Communication ما بين Two applications، لكن في الـ Service Discovery مش لازم يبقوا Two applications، ممكن يبقوا Two hardwares، ممكن يبقى Two people، أو ممكن يبقى إنسان بيكلم ديفايس، أو ممكن يبقى.
application لكلم device فبالتالي المجال بتاع الcommunication أو طبيعة الcommunication service discovery في الpervasive computing أوسع من أنا أستخدم الweb service ففي شوية challenges موجودة في service discovery protocol المفروض يعني إن هي لما أجي a design protocol أو أحط communication strategy
في الـ Pervasive Computing لازم إني آخد بالي من الـ Challenges دي. أول حاجة، إزاي أعمل Protect للـ Private data؟ دلوقتي فيه يوزر دخل بالموبايل ديفايس بتاعه جوه Pervasive computing، قد إيه... قد إيه معلومات لازم تبقى معروفة عن اليوزر ده؟
تمام؟ Minimum معلومات، بحيث إن أنا أحافظ على الـ Privacy بتاعة اليوزر، وفي نفس الوقت ممعنش عنه سيرفسز موجودة في الـ Environment. فهو لا هو هيقدر يعمل Reveal لكل الـ Information بتاعته، مثلاً إنه لما أدخل مثلاً يبقى عارف الـ Identity بتاعتي وعارف الـ Location بتاعي وعارف أنا جاي منين وعارف الـ History بتاعي، ده مش صح.
الصح، لازم أبقى Keeping an eye على الـ Privacy بتاعة اليوزرز (users) جوه الـ Pervasive Computing، ودي Issue مهمة جدًا في الـ Pervasive Computing أصلًا من الـ Challenges بتاعة الـ Pervasive Computing مش بس في الـ Service Discovery؛ قد إيه معلومات هعملها Reveal عن اليوزر لما يقدر يـ Join عشان يقدر يـ Join الـ Pervasive environment.
تاني حاجة، قد إيه معلومات أنا محتاجاها علشان أعمل Setup للـ Communication مع السيرفس بروفايدر (service provider). يعني أنا مثلاً محتاجة أعرف اسمه بس، ولا محتاجة أعرف اسمه والسيرفس بروفايدر ونوع السيرفس اللي أنا هستخدمها واليوزر نيم (username) والباسورد (password) بتاعتها مثلاً؟
تمام، فقد إيه Prior knowledge أنا هبقى محتاجاها قبل ما Setup الـ Communication مع السيرفس... يعني فيه حاجات بتبقى أنا... يعني في الـ Pervasive Computing بيستخدموا Standard naming عشان لما أدخل أي Pervasive environment ألاقي مثلًا السيرفس اللي أنا بستخدمها.
ألاقي مثلاً... ميبقاش مثلاً مسميها Brand مثلاً، فيها Branding، ففيه Search keywords اللي أنا هدور عليها ليها Standard علشان أقدر إني أعمل Discover للـ Devices اللي حواليا في الـ Pervasive Computing. تالت حاجة بقى إزاي إني أسمح لكذا Service provider.
إن هم يبقوا موجودين في نفس الlocation من غير ما يحصل Conflict، إزاي إن أنا يبقى عندي Option إن يبقى فيه أكتر من Printer وأنا أشوف إيه الـ Options بتاعة الـ Printing اللي أنا عايزاها مثلاً وأستخدم الـ Printer اللي أنا... يعني I recommend أو I preferred. فأول حاجة إن أنا يبقى الـ Challenge.
الـ Challenges اللي بتنتج عن طريق... أو اللي نتجت عن طريق إن فيه Human في النص؛ أول حاجة إن أنا أحافظ على الـ Private data أو الـ Privacy بتاعة اليوزر، تاني حاجة هو محتاج يبقى عنده معلومات قد إيه علشان يـ Join الـ Pervasive environment
تالت حاجة إن أنا أبقى سامحة إن يبقى فيه أكتر من Service provider موجودين ويبقى فيه Some sort of selection ممكن يحصل من غير ما يحصل Conflict ما بين الـ Service providers. وفي Challenges بتنتج عن إن أنا بعمل Integration with environment.
الـ Challenges دي أول واحدة فيها إن أنا لو دخلت Location معين وأنا مثلاً في Smart hospital مثلاً وفي Smart room اللي جوه الـ Hospital، فأنا دلوقتي دخلت الـ Hospital، دخلت جوه أوضة جوه المستشفى.
فأنا (target) لما أجي أعمل Discover للسيرفس اللي حواليا، إيه التارجت بتاعي؟ أنا  (discover) السيرفسز اللي Related للمستشفى كلها، ولا بدسكفر السيرفسز... ولا أنا دكتور مثلاً وبدسكفر السيرفسز اللي موجودة جوه أوضة جوه المستشفى؟ إن أنا مثلاً أعمل Communicate مع الـ Smart bed مثلاً أو أعمل Communicate مع.
الـ Screen عشان تعمل View للـ Medical history بتاع الـ Patient، فممكن... ممكن الـ Environments يحصل ما بينها Overlap فيبقى فيه... يعني زي ما إحنا قلنا كده إن أهم حاجة الـ Invisible computing، إن يبقى فيه طريقة إن أنا أقدر أحدد إيه الـ Environment اللي اليوزر دلوقتي بيعملها Targeting.
فأنا بالتالي أشوف السيرفسز الموجودة فيها. تاني حاجة في الـ Challenges بتاعة الـ Pervasive environment إنه بيبقى عندي Devices كتيرة، Operating systems كتيرة، Platforms كتيرة، Infrastructure مختلفة، فإزاي إن أنا أحط بروتوكول.
Standard للـ Communication والـ Service discovery يقدر يـ Cope مع كل الـ Heterogeneity اللي موجودة جوه الـ Pervasive environment. طيب، الـ Service discovery protocol... أي Service discovery protocol ليه Components، تمام؟ هي 10 Components
وجوه كل Component بيبقى فيه كذا طريقة إنه يـ Implement الـ Component ده، تمام؟ إن أنا أعمل Discover للـ WiFi، إن أنا أعمل Discover للـ Bluetooth، إن أنا... بروتوكول زي الـ Plug and Play مثلاً، ده كله كده بروتوكولات علشان أعمل Communicate مع Other devices جوه الـ Pervasive computing.
طيب، أي protocol من البروتوكولات دي بيبقى ليه شوية Components اللي هم الـ 10 دولت؛ أول واحدة إزاي إن أنا أعمل Naming للـ Attributes أو إن أنا أعمل سوري Naming للسيرفسز، إزاي إن أنا أعمل Initial communication، إزاي إن أنا أعمل Discover للsurvers  وأعمل Registration فيها
إزاي إني أعمل (implement) للـ (infrastructure) بتاعة الـ  (service discovery protocol)، إزاي إني أعرف الـ  (status) بتاعة الـ service ، إزاي إني (discover) الـ سكوب بتاعي لحد فين، إزاي إني أختار لما يكون عندي كذا service إزاي إني أعمل ليها  (selection)
طيب إزاي بقى بعد ما أعمل selection إزاي أإنفوك (invoke) الـ sever دي وأبدأ أستخدمها، آخر حاجة إني يبقى الـ (status) بتاعة الـ serves هل هي متاحة ولا مش متاحة إزاي إني أعمل عليها (inquiry). طيب دولت الـ 10 (components) كل componentمن دولت في طرق مختلفة عشان أعمل  (implementation)
طيب أول حاجة أول component إزاي إني أعمل  (specifying) للـ  (service name)، لو service and attribute naming تمام يا إما بستخدم في techniqe يا إما حاجة بستخدمها اسمها تمبلت بيسد يعني مثلاً وهو لما يجي يدور على (printers) هيكتب برنتنج (printing)، يجي يكتب مثلاً يجي يdiscover
واي فاي مثلاً يبقى أي واي فاي الـ initial بتاعتها اسمها WI underscore FI مثلاً يبقى فيه template عمشان أنام بيها template دي ما بين كل الـ service discovery protocol templates سبتة بعمل بيها naming
للـ (services)، وفي كمان طريقة تانية بتبقى (template based) برضه template للـ سيرفسز أسماء محددة للـ serveces ويبقى في كمان الحاجات اللي هي  (commonly used) (frequently used)
يبقى لها اسماء universal unique identifiers لما اجي مثلا اعمل search على الاجهزة بتاع ال blog and play هسرش ال identifiers معينة هي في الاخر ويا templates مشي اما templates ليا keywords محددة هsearch بيها على services اللي موجودة حوالي
أو أن أنا أستخدم Keywords مع Identifiers حاجة اسمها 128-bit Universal Unique Identifier يعني مثلاً Plug and Play بيستخدم عشان أdiscover الأجهزة بتاعت ال-Plug and Play أو تستخدم ال-Protocol ده بيبقى لها code
(search) بيه والأكواد دي بتبقى ليها علاقة بالحاجات الـ  (common used) أو الـ frequant used الحاجات المشهورة أوي في الـ  (pervasive environment)، فياtemplate based يا mixمابين الاتنين، طيب الـ (initial communication method) إزاي إني دلوقتي دخلت على نيتورك (network) عشان (communicate) لازم أبقى عارفة الـ IPs فأنا دلوقتي مش عارفة الـ IPs
ولا أنا (assigned) ليا IP، فأنا عشان أبدأ c مع الـ (devices) اللي حواليا الـ إinitial communication method أو الـ initial communication setup  في كذا طريقة حاجة اسمها الـ يونيكاست (unicast) أو الـ UDP  (multicast) أو الـ (broadcast)، تمام؟ من اسمها كدة unicast
أنا بcommunicate مع device بـ IP معين وده ب (requires) إني أبقى عارفة الـ IPs أبقى في (prior knowledge) عن الـ network setup شكلها عامل إزاي فأنا داخلة الـ environment عارفة أكcommunicate مع كل device
.على حسب الـ IP عامل إزاي. ودي نادراً جداً لما بتستخدم في الـ pervasive computing إلا الحاجات اللي بتبقى in-house وعليها security عالية. فأنا بكون عارفة إن الـ user لازم يكون عنده الـ prior knowledge دي عشان يتواصل. طيب في طريقة تانية..
.تمام؟ الـ UDP multicast، ده إني ببعت messages. حاجة اسمها multicast يعني ببعت messages لـ IPs معينة عشان توصل لأكثر من حد. وبعدين بعد ما أبدأ أعرف مين اللي حولي ويبدأوا يردوا عليّ.
...بالـ IPs بتاعتهم أبدأ أحول الـ communication بتاعي من multicast لـ unicast. يعني في الأول هبعت لـ range من الـ IPs، وبعد ما يردوا عليّ وأعرف الجهاز المعين، أحول التواصل لـ unicast. أو الـ broadcast، إني ببعت على IP واحد بس كل الناس بتسمعها.
عارفاها. الـ message المبعوثة بـ header IP ده المفروض كل الناس تعرف تسمعها. بس في مشكلة في الـ broadcast إني بعمل restrict للـ communication على one hop. يعني الـ network الـ local اللي حولي، والـ devices القريبة مني جداً
تمام؟ ما ينفعش تبقى على مساحة كبيرة. فيبقى الـ initial communication يا إما أنا عندي prior knowledge عن الـ IPs فببدأ أتواصل individually على IP معين للجهاز اللي أنا عايزاه، أو إني أبدأ أتواصل مع مجموعة IPs بنظام الـ multicast. وبعد شوية لما بعرف الـ IP اللي عايزة أتواصل عليه..
بدا حاول الcommunication بتاعي لunicast او ان انا استغل من الprobecast بس الprobecast فيه مشكلة ان هو بيرستركت ال usage بتاعتي على single hub world or wireless network طيب بعد ما عملت الcommunication عايزة ابتدأ كده انا بقيت ممبو في الnetwork
.تمام؟ عايزة أشوف إيه الـ services اللي موجودة حولي وإزاي أعمل لها registration. إزاي أعمل discovery للـ services؟ في طريقة اسمها announcement-based approach أو query-based approach. الـ announcement-based approach.
بيبقى في channel جوه الـ pervasive environment كل الـ devices اللي موجودة بتبعت عليها messages بشكل periodic إيه الـ services اللي تقدر تعمل لها provide. فأنا دلوقتي user جديد دخلت جوه الـ pervasive environment فأنا عارفة الـ channel، وعملت initial setup للـ communication.
..خلاص أنا قادرة أسمع للـ messages اللي بتتبعت جوه الـ pervasive environment. فأبدأ أعمل listen على الـ channel اللي بيحصل عليها announcement للـ services. لما ألاقي الـ service اللي أنا عايزاها أبدأ أعمل لها register. أو في طريقة تانية اللي هي الـ query approach، إني أبعت query.
...يا جماعة كل واحد يقول لي الـ service اللي بيعمل لها provide. فالناس كلها ترد عليّ بالـ services اللي ممكن يعملوها. أو أعمل query لو الـ service دي موجودة جوه directory مثلاً أو في server هو المسؤول إنه يعمل manage للـ services دي.
فالـ server يرد عليا يقولي والله عندي تلاتة printer عندي اتنين smart board عندي تلاتة speaker عندي الـ AC الـ communication channel بتاعته كذا. يبقى يقولي كل الـ services الموجودة جوا الـ pervasive environment، فيبقى إني أـ discover أصلًا الـ variety of services جوا الـ pervasive environment.
يا إما إني بدخل listen على channel معينة فبسمع إيه الـ services اللي موجودة، تمام؟ أو إني أول ما بدخل بعمل query لـ الـ devices الموجودة أو لـ الـ server اللي هو مسؤول عن الـ service discovery أو الـ services management فهو يرد عليا بـ list كدا فيها كل الـ services اللي موجودة.
نرجع تاني لـ الـ discovery، فيه الـ announcement based approach والـ query based approach، أنهي أحسن وأنهي أسوأ؟ هو مفيش حاجة اسمها أحسن ومافيش حاجة اسمها أسوأ بس فيه كل approach بيبقى ليه مميزات وليه عيوب. أولاً الـ announcement based approach
بيبقى مش محتاج إني أعرف prior knowledge عن كل الـ devices اللي موجودة أو أكلمهم كلهم لو مش بشكل directory، ماشي بس فيه عيب إنه أنا محتاجة أسمع شوية لو بدور على service معينة محتاجة أسمع شوية لحد ما حد يـ announce إن الـ service دي عنده. تمام؟
لكن الـ query based هي immediate response، أنا أول ما بدخل بعرف الـ service دي موجودة ولا مش موجودة. طيب الـ infrastructure بتاعت الـ service discovery يا إما بشكل directory ده معناه إن فيه component أو فيه server أو فيه device أو هو ever بقى إيه الـ entity اللي موجودة.
بتبقى dedicated علشان maintain services information و إن هي reply على الـ queries بتاعة الـ users اللي ممكن يدخلوا. فيه بقى الشكل التاني اللي هو non-directory based دا مبيبقاش فيه dedicated component إن هو يبقى مسؤول عن إنه يعمل management لـ الـ services
لما query بتوصل جوا الـ pervasive environment، كل واحد بـ match الـ query ديت أو كل واحد بتوصله الـ query بـ respond عن نفسه. كل device بتوصله الـ query بـ respond عن نفسه. ففي شكل الـ directory بيبقى فيه حد مسؤول عن إنه يـ manage كل الـ services الموجودة.
أو كل واحد مسؤول عن نفسه تمام؟ طيب كمان الـ service information state ده معناه إن أنا عايز أعرف هي الـ service دي يعني الـ information بتاعتها مثلاً printer بتسمح لي إني print لحد إيه؟ طب هي printer ألوان ولا أبيض وأسود؟ طب الـ communication مثلاً لو أنا هـ communicate
هيديني bandwidth لحد قد إيه؟ طب مثلاً هـ communicate مع speakers، هـ communicate مع AC ده محتاج password ولا مش محتاج password؟ الـ information بتاعة الـ services ديت يا إما حاجة اسمها soft state يا إما حاجة اسمها hard state. أغلب الحاجات
أو هي أصلًا الـ service دي متاحة ولا مش متاحة يعني الـ printer ديت دلوقتي busy بتطبع حاجة تانية أو dedicated مثلًا لمدة ساعة قدام حد بيستخدمها ولا هي free to use؟ الـ soft state
الـ device أو الـ service provider هو اللي بيـ maintain الـ status دي. وده معناه إن الـ status بتتغير أول ما الـ service دي الـ state بتاعتها تتغير. يعني أنا اللي بـ maintain الـ service دي متاحة ولا مش متاحة، الـ printer متاحة ولا مش متاحة. أول ما تخلص printing، الـ printer بتخلي الـ state بتاعتها إنها available.
أول ما بدأت printing، الـ printer بتخلي الـ status بتاعتها إنها busy. فالـ soft state، كل واحد هو اللي بيـ maintain الـ status بتاعة الـ service بتاعته، الـ information بتاعة الـ status بتاعة الـ service. طيب الـ hard state..
بيبقى فيه زي housekeeping كده، مثلاً بتبقى matching أكتر مع شكل الـ directory. إن الـ service تكون موجودة بشكل directory، إن بيبقى فيه حد هو المسؤول إنه يعمل update للـ information دي. كل شوية كده يروح يعمل scan للـ services الموجودة.
ويعمل update؛ والله الـ printer دي بقت busy، الـ printer دي بقت free، الـ scanner ده بقى مثلاً down. الـ service دي، الـ sensor ده الـ battery بتاعته خلاص قربت تخلص فمش هستخدمه كتير. الـ services الـ status أو الـ information بتاعتها بيتعمل لها update بشكل periodically مش instantly
عن طريق component مسؤول عن إنه يـ maintain الـ services دي. ففي بقى الـ soft state، ليه سميناها soft state؟ لأنها بتتغير بشكل أسهل و frequently أكتر وبتبقى فعلاً معبرة عن الـ state بتاعة الـ service. الـ hard state.
اسمها hard state لأن مش الـ service provider هو اللي بيعمل لها update. هو حد تاني، زي كأنه فيه board مثلاً، وواحد واقف جنب الـ board عمال يبص على كل الـ services الموجودة وعمال يعلّم صح ولا غلط، دي موجودة ودي مش موجودة. عشان كده اسمها hard state.
طيب، discovery scope؛ أنا أقدر أعمل discovery للـ services بناءً على إيه؟ يعني أعمل discovery للـ services اللي حولي لحد range قد إيه أو scope قد إيه؟ يا إما بناءً على الـ network topologies، يعني بعمل discovery لكل الـ services الموجودة locally على الـ network بتاعتي.
أو based على الـ user role أنا دلوقتي الـ user رأسي هو patient ولا هو doctor فبالتالي services اللي هتبقى viewed للpatient غير services اللي هتبقى viewed للdoctor
غير الـ service لو دكتور بتاع الباطنة، غير دكتور الأعصاب، غير دكتور العظام. كل واحد الـ view بتاع الـ services هيكون مختلف عن التاني. فده بيبقى based على الـ user role. وساعتها لازم يبقى معروف إن فلان الفلاني ده بيشتغل كذا
ده الدكتور بتاع الباطنة، ده patient، ده visitor عادي جوه المستشفى. أو مثلاً smart room، ده الـ professor بتاع الكورس الفلاني، ده الـ professor بتاع كورس تاني خالص، ده student داخل جوه الـ environment أو بـ communicate مع الـ environment. فبالتالي الـ user role بيـ reflect إيه الـ services اللي هتبقى متاحة للـ user ده
أو الـ context information، ده بقى تفاصيل أكتر جوه الـ user role. يعني أنا دلوقتي الـ doctor بتاع الباطنة، جاي علشان يـ view reports ولا جاي علشان يغير الـ medication مثلًا؟ ولا جاي علشان يـ sign paper عشان المريض ده يخرج؟
فالـ services اللي هتبقى متاحة according to الـ context بتاع الـ environment، يعني هو مين وناوي يدخل يعمل إيه؟ ليها علاقة مثلًا بالوقت، ليها علاقة بالـ user activity اللي هو عايز يعملها. تمام؟ أنا دلوقتي دخلت الـ smart house بتاعي، أنا دخلت الصبح مثلًا ولا دخلت في نص اليوم ولا دخلت بالليل؟
إيه نوع الـ lighting اللي هيبقى available بالنسبة لي؟ أنا دلوقتي داخلة أنام ولا داخلة أطبخ مثلًا؟ ولا داخلة إني أـ relax مثلاً فعايزة أسمع music؟ ولا داخلة أشغل الـ TV؟ فـ according to الـ context بتاع الـ situation، أنا ببدأ أعمل view للـ user الـ services اللي هو محتاجها.
احتمال أو بـ forecast إنه احتمال إنه يحتاجها أو يستخدمها في الوقت ده. طيب، الـ service selection يا إما بيحصل manual يا إما بيحصل automatic. من اسمها automatic إن أنا بـ assign services..
للـ user ده automatically بشكل أوتوماتيك. الـ protocol هو اللي بيـ select الـ service provider. وده بيبقى فيه ميزة إن أنا بقدر أعمل balance للـ load among service providers. يعني عندي أكتر من printer، فلما يجي user عايز يعمل printing مثلًا بـ أعمل له assign للـ printer الأقل في الـ load أو أقل.
في الاستخدام، فـ أنا بقدر باستخدام الـ directory أو إن أنا.. اللي هو الـ component اللي مسؤول إنه يـ announce عن الـ services ديت، تمام؟ إن أنا أقدر أعمل balance ما بين الـ usage بتاع الـ devices الموجودة أو الـ service provider.
اللي موجودة. أو الطريقة الـ manual، دي الـ user هو اللي محتاج ياخد القرار هو هـ register في أنهي service من الـ services. ودي بتبقى صعبة لإنه مش لازم الـ user يبقى عنده knowledge كافية إنه يقدر يختار.
بيـ violate الـ concept بتاع الـ zero interaction، إنه invisible computation. دي هتبقى محتاجة تدخل من الـ user إنه يختار أنا عايز أـ communicate أو أـ register في أنهي service. طيب، الـ service invoke بقى إن أنا بشغل الـ service دي، بشغلها عن طريق إيه؟
هي بيبقى فيه تلاتة levels، بستخدم التلاتة. أول حاجة إني بـ invoke الـ service عن طريق الـ network، إني بيبقى عندي IP address فـ أنا ببعت لها message عن طريق الـ network. تاني حاجة بستخدم بقى بـ أكون عارفة إيه الـ communication mechanism اللي أنا هكلمها عليه، والله هكلمها UDP ولا TCP ولا إيه شكل الـ..
الـ messages أو الـ communication بتاعي اللي أنا هستخدمه، هل مثلاً أنا هعمل procedure call مثلًا؟ هستخدم الـ service أبعت لها file وهي تعمل له processing عندها ولا مثلاً هـ download code عندي فـ أنا أعمل له run؟ فيبقى according to الـ communication mechanism.
للـ service دي بتستخدمها، يبقى أنا بعمل communicate network الأول عن طريق الـ IP addresses، تمام؟ ولازم تبقى الـ network دي جوه الـ locally أو الـ... سوري، الـ service provider موجود على الـ network بتاعتي. تاني حاجة ببدأ أستخدم الـ communication method.
اللي مفروض أستخدمها مع الـ service provider ده. تالت حاجة ببدأ بقى جوه الـ بعد ما عملت معاه communication، ببدأ أعمل request وأشغل الـ service اللي أنا محتاجاها. لو في parameters معينة ببعتها، لو في username مثلاً أو password ببدأ أعملها setup. فببدأ أستخدم جوه الـ device specific أبعتله specific information علشان أعمل operate.
أو أشغل الـ service اللي موجودة. هعمل communicate مثلاً مع printer، يبقى أنا لازم أعمل communicate through network الأول، بعد كده أشوف أنا هبعتلها الـ document إزاي اللي هي هتطبعه، هبعتهولها مثلاً على cloud وهي تاخده ولا أنا ببعتهولها direct ولا ببعتهولها bluetooth ولا ببعتهولها.
إزاي، تمام؟ جت الـ communication mechanism. تاني حاجة بقى ببدأ أعمل printing، أنا عايزة أطبع portrait ولا landscape ولا أبيض وأسود ولا ألوان. أبدأ أستخدم الـ service اللي موجودة جوه الـ printer. الـ service usage، إن أنا بستخدمها بقى، تمام؟ عندي نوعين من الاستخدام..
حاجة اسمها explicit release أو lease-based mechanism. الـ explicit release، أنا باخد الـ service وأستخدمها، الـ service دي مش بتبقى free تاني غير لما أنا أقول 'يا جماعة أنا خلصت'. أنا الـ printer دي خلصتها خلاص أنا مش بستخدمها تاني. فده الـ usage بتاع الـ service، الـ explicit release.
release، إن الـ client، الـ user اللي بيستخدم الـ service، لازم explicitly يعمل release للـ service والـ resources اللي هو بيستخدمها اللي granted ليه أثناء الـ usage، تمام؟ طيب، في كمان الـ lease-based mechanism، ده الـ client والـ service provider بيبدأوا يعملوا negotiate مع بعض أنا هستخدم الـ service دي قد إيه
.والله أنا عايزاها five minutes، أنا عايزاها تطبعلي 100 ورقة. فـ once إن أنا خلصت الـ task دي، ماشي، أبدأ يا إما خلاص الـ service هتبقى release وأبدأ أعمل negotiate تاني، هو أنا هكمل، هـ renew الـ registration بتاعي ليها ولا والله في مثلاً الـ queue في ناس كتير مستنية الـ service دي فأنا هبقى disconnected وحد تاني هيستخدم الـ service وبعدين أبدأ.
أعمل communicate تاني أو آخد دور جديد. فيبقى إن أنا أستخدم فيه الـ explicit release، وفي الـ lease-based mechanism. الـ explicit release، الـ client بياخد الـ service وتبقى granted ليه لحد ما يقول 'أنا خلصت'. بيعملها release بشكل explicit. أو الـ lease-based mechanism ده بيحصل negotiation ما بين الـ user وما بين الـ service provider في الأول
.أنا هستخدمها قد إيه. أول ما الـ service دي تخلص، مش بيحصل negotiation تاني، هـ renew ولا هـ cancel، accordingly للـ status بتاعة الـ service provider. طيب، الـ service status inquiry، أنا دلوقتي لو أنا عايزة أسأل على service معينة، أنا خلاص عاملة registration في service، تمام..
..وعارفة الـ IP بتاعها، وعاملة... وعارفة إزاي أعمل communicate معاها. دلوقتي أنا عايزة أسأل عن الـ status بتاعتها، تمام؟ يا إما عن طريق الـ notification، أو عن طريق الـ polling. الـ notification إن الـ status هي اللي بتجيلي. الـ polling الـ status أنا بروح أجيبها.
تمام؟ طب يعني إيه الـ notification هي اللي بتجيلي أو الـ status أنا بروح أجيبها؟ أنا بكون طول ما أنا registered في الـ service دي، أنا بيجيلي notification بتقولي إيه الـ status بتاعتها أو إيه الـ information بتاعتها. والله الـ printer دي كانت busy، الـ printer دي بقت free.
الـ printer دي حالياً down، الـ sensor ده الـ battery بتاعته هتخلص، الـ AC ده عطلان. الـ AC ده دلوقتي حد غيره وبقى على 24 بدل 22. مثلاً الـ smart board دلوقتي في حد بيستخدمها، واللي بيستخدمها ده الـ professor بتاع الكورس الفلاني في السكشن الفلاني مثلاً
..تمام؟ فكل شوية من الـ service provider عمال يجيلي notification بيقولي إيه هي الـ service status. في الـ polling لا، أنا بروح أبعت query، بسأل هي الـ service دي الـ status بتاعتها إيه
.بشكل periodic للحاجات اللي أنا عاملة registration فيها. طيب، دي تالت task، كده إحنا خلصنا المحاضرة. تالت task يعني حد فيكم هياخدها، دي مجموعة protocols جوه الـ service discovery زي الـ Bonjour Multicast DNS، الـ Bluetooth Discovery Protocol.
Service Location Discovery Protocol، الـ Plug and Play، الـ Jini protocol، دي كلها protocols جوه الـ service discovery، بتستخدم الـ service discovery technique في الـ pervasive environments. Presentation، أنا بس عايزة presentation صغيرة جداً، تتكلم يا إما عن الـ Jini Sun Microsystems أو الـ Universal Plug and Play.
protocol عاملاه Microsoft، إيه هي الـ components اللي جوه الـ protocol؟ تمام؟ إيه هي الـ components اللي جوه الـ protocol ده؟ ده الـ reference بتاعنا، هتلاقوا الـ reference التاني فيه كل الكلام اللي قلناه في المحاضرة، تمام؟ وهتلاقوا فيه بيتكلم برضه على الـ two protocols اللي هو الـ Jini أو الـ Universal Plug and Play.
..وبيفتح هو بيستخدم أنهي components من الـ 10 components، أو إيه الطريقة اللي بيستخدمها جوه كل component من الـ service discovery protocol بتاعه. كده إحنا خلصنا المحاضرة.
عايزة بقى كذا حاجة منكم، ثانية واحدة بس أعمل pause للـ recording