יום שני, 12 בספטמבר 2011

Php Soap Server and .NET Client

Webservices תמיד עניינו אותי ולכן חיפשתי משהו נחמד על מנת שתוכלו להכיר אותם טוב יותר, קיימת תחרות רבה בין 2 השיטות המובילות בתחום, שיטת ה REST הנפוצה במערכות Linux , כמו שראינו במאמרים בעבר , שם מרבית העבודה מתבצעת עם REST , ולכן העבודה היא הרבה יותר קשה לניתוח, כל חברה יכולה לממש את התתמשקות בצורה אישית ללא סטנדרט מסויים ובאחריות המשתמש לנתח את הנתונים בעצמו.
 השיטה השנייה Simple Object Access  Protocol - Soap , מוגדרת כסטנדרט ועל מנת להשתמש בו יש לעמוד בחוקים שלה, מיקרוספט אימצו את השיטה ומבחינתה זאת השיטה הטובה ביותר לפיתוח בפלטפורמות Windows , אני באמת לא יודע מה יותר טוב, עדיין REST פופלרי מאוד אבל Soap מומלץ לעבודה ע"י W3C העולמית שפיתחה עבורו תקן WSDL - Web Services Description Language  , לכן זה נראה לי ויכוח שכנראה אין בו מנצחים ומפסדים וצריכים להכיר את 2 השיטות.

  חשוב מאוד! המאמר הזה מתייחס לעבודה עם Soap בסביבת Linux ונוסה על מערכת הפעלה Fedora. 

 תשתית:

תחילה יש להבין שעבודה עם Soap בסביבת Linux מצריכה Php אבל לא סתם אלא Php 5.0 ומעלה , התמיכה המלאה ב Soap קיימת בגרסה 5 בלבד, גרסאות נמוכות יותר מצריכות עבודה מול כלים של צד שלישי , בקיצור סיפור מהתחת לכן לא מומלץ לשלב Soap במערכות קיימות עם Php נמוך מגרסה 5, וכמובן שרת Apache. יש להתקין את המחלקות של ה Soap ב Php

#: yum install php-soap

* יש להפעיל את ה Apache מחדש,  ולגשת לדף הבדיקות  phpinfo ולראות אם נוספו השורות הבאות:
soap
Soap Client enabled
Soap Server enabled
DirectiveLocal ValueMaster Value
soap.wsdl_cache11
soap.wsdl_cache_dir/tmp/tmp
soap.wsdl_cache_enabled11
soap.wsdl_cache_limit55
soap.wsdl_cache_ttl8640086400

אחרי שהכנו את ה Server נתחיל לרשום את הקוד, כאן העסק מתחלק ל 2 חלקים, חלק הראשון הוא המימוש של הפונקציות והפרמטרים, במקרה הזה נכתוב קובץ עם סיומת Php , בו נכתוב את הקוד עם כמה תוספות, החלק השני הוא החשיפה של ה Webservice בעזרת קובץ WSDL בפורמט Xml.

 נעבור בקצרה על מבנה הקובץ ה Wsdl , ניתן לקבל מידע רחב בנושא בלינק הבא:


  • לפי ה Element אפשר לראות שהפונקציה שחשופה לנו היא HelloWorld , מתחת שם הפונקציה ניתן לראות שיש לה "ילדים" שהם הפרמטרים שהיא מקבלת ומחזירה ומה הסוג שלהם.
  • תגיות PortType פעולות מופשטות להודעות נכנסות ויוצאות.
  • תגיות ה Message מייצגות מידע שמועבר, מאוד חשובים לשלבים הלוגיים של ה Webservice
  • תגיות ה Binding בעצם מייצגות את הפרוטוקול את מבנה ה Data שהוגדר ע"י PortType ספציפי.
  • תגית ה Port מייצגת איזה Port קצה.
  • תגית ה Service מייצגת סדרה של Ports שקשורים ל Service.


מבנה קובץ ה Php הוא מאוד פשוט, יש הצהרה תחילה על אובייקט Server$ שמסוג SoapServer , בשלב ההצהרה נעמיס את שם הקובץ ה WSDL לכן ממולץ שהקבצים ישבו באותה תקייה, לאחר מכן נוסיף לאובייקט את הפונקציה אותה אנו מעוניינים לחשוף ולאחר מכן נחבר את ה Handle על מנת שהיא תופעל. אין יותר מידי מה לפרט על הפונקציה בגדול אנחנו צריכים להוציא את הפרמטר שנשלח ע"י שימוש במערך וע"פ השם שניתן בקובץ ה Wsdl.

 

טיפ להתחלה:
 מומלץ לבנות את ה WSDL ע"ג ה Visual Studio בעזרת יצירת פרויקט Webservice , יש ליצור פונקציות פקטיביות ולאחר מכן לראות את ה WSDL שנוצר ובכך לחסוך את כתיבת ה WSDL , המנגנון האוטמטי ב VS בהחלט עושה את העבודה.

בהצלחה.

יום שני, 5 בספטמבר 2011

Skype Api With C#


חזרתי!, אחרי חופשה ארוכה של לימודים ומחקרים עם רצף מאמרים חדשים, החלטתי להתחיל דווקא מ Skype כחלק מסדרת המאמרים הנוגעים להתממשקות ל Api שונים כמו FaceBook ו Picasa.
Skype חברת התקשורת מבוססת על תשתית האינטרנט הגדולה בעולם, היא נותנת מגון שירותים חינמים ושרותים בתשלום, וכמובן היא פופלרית מאוד בגלל הפשוטות שלה , התמיכה בריבוי פלטפורומות ובכלל שינתה את כללי המשחק בכל עולם הטלפוניה.

אז ברור שאין יותר מה להוסיף על Skype ומי שלא מכיר אותה כנראה חי במערה בשנים האחרונות כי אין ספק שזה מוצר הכרחי עבור כל אחד ואין מה לעשות אם זה חינם זה תופס מה שהפך את Skype לשחקן מוביל בעולם, אבל לא הכול חינם חלק מהשרותים בתשלום כמו שליחת Sms , להתקשר לטלפון חיצוני ושיחות ועידה לכן חברות רבות משתמשות בשירותים של Skype על מנת לבסס את מערך התקשורת בחברה ללא צורך במפעיל מקומי.

תחילה לא האמינו שהעסק יצליח ואפילו Skype עצמה לא הכחישה, ונקנתה ע"י Ebay בשנת 2005 ב מעל 2 מיליארד דולר אבל Ebay לא הצליחו למנף את המוצר למימדים שהם רצו בשנת 2011 נקנתה ע"י Microsoft בסכום עצום מעל ל 8 מיליארד דולר, ובהחלט הניפה את הדגל בעולם התקשורת והיום אחד השחקנים המובלים בו, ההשקעה של Microsoft ענקית אבל גם התמורה, בקנייה אחת Microsoft נהפכה לענקית תקשורת שסביר מאוד שתשלב את Skype במערכות הפעלה עתידיות.

ל Skype קיים Api אבל הוא מפוקפק, הוא לא ממש עובד כמו שצריך , אבל קיים הרבה מידע וקהילה מאוד פעילה שניתן להעזר בה, קיימים מספר דברים הכרחיים על מנת שנוכל לעבוד מול ה Api דבר ראשון יש להתקין את ה Skype על המכונה שעליה נכתוב את התוכנית, חשוב מאוד שהגרסה תהיה פחות מ 5.0 כי יש ב Api באג שמונע להתחבר אליו מרחוק בנוסף צריך את הקובץ Skype4COM.dll שניתן למצוא ברחבי הרשת.


 using SKYPE4COMLib;

 SkypeClass myskype = new SkypeClass();

בעזרת מחלקה זאת ניתן לבצע את כל הפעולות שקשורות שליחת SMS , התקשרות וניהול אנשי קשר, ובאופן כללי זה מאוד פשוט וניתן למצוא המון מידע כיצד לבצע את רוב הפעולות בסקייפ.

יש משהו שקצת מציק, כל פעם שנפעיל את התוכנית שלנו נבקש לאשר את התחברות ב Skype לכן קיימת אפשרות לאשר את התוכנית באופן אוטומטי.


Tools -> Options -> Advanced -> Manage other programs access skype



אתרי מידע:
http://forum.skype.com/index.php?showtopic=142821
http://www.codeproject.com/KB/cs/skypecontrolapicsharp.aspx
http://archive.msdn.microsoft.com/SEHE/Release/ProjectReleases.aspx?ReleaseId=1871

בהצלחה,