תגובה
אם עד לפני כמה שנים, היו כותבים מערכות בארכיטקטורה המבוססת רכיבים, הרי שבעידן ה-XML ניתן יהיה לכתוב מערכות מבוססות שירותים. הבעייתיות שהיתה בארכיטקטורת רכיבים היתה: א. חוסר אפשרות לשתף מידע ולוגיקה עם מערכות ופלטפורמות שונות. ב. חוסר אפשרות להעביר מידע דרך Firewall. ג. חוסר אפשרות להעביר מידע לגורמים צד שלישי. Web Services באו לפשט את העניינים. Web Services זו בעצם טכנולוגיה המאפשרת העברת מידע בין מחשבים מרוחקים באמצעות פרוטוקולים נפוצים הקיימים באינטרנט, כמו: HTTP ו-TCP ובאמצעות שפת XML ו-XSD הנתמכות על-ידי רוב השפות והפלטפורמות. הסטנדרט שבשימוש WS נקרא SOAP, או במילים אחרות Simple Object Access Protocol. הפרוטוקול מאפשר להעביר מידע בין מחשבים מרוחקים באמצעות שפת XML שהיא שפה אבסטרקטית. כל אובייקט הניתן להמרה ל-XML יכול לעבור בין אותם מחשבים וכשאמרו Simple Objects התכוונו לאובייקטים המורכבים מ-Simple Types כמו int, string וכו'... או מערכים של אובייקטים כאלה. באמצעות שפת XSD ניתן לאפיין את האובייקטים והמתודות של שירות מסויים. אפיון כזה נקרא WSDL או במילים אחרות Web Service Description Language. כאשר נעשה Reference לאיזשהו ,WSDL נוכל בעזרת כלים מיוחדים ליצור אצלנו אובייקטים ומתודות (proxy) זהים לאלה שנמצאים אצל נותן השירות. נניח שיש לנו את הקוד הבא:
public class SomeType { private string messageName; private string messageContent; public string MessageName { get { return messageName; } set { messageName = value; } } public string MessageContent { get { return messageContent; } set { messageContent = value; } } public SomeType() { } }
ניתן לאפיין את המחלקה בעזרת XSD בצורה הבאה:
<xs:schema> <xs:el ement name="SomeType"> <xs:complexType> <xs:sequence> <xs:element name="MessageName" type="xs:string" /> <xs:element name="MessageContent" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs :schema>
שורות אלו מתארות בעצם אובייקט שנקרא SomeType המכיל 2 מאפיינים: האחד MessageName מסוג string והשני MessageContent מסוג string. באותה שיטה ניתן לקחת אובייקט SomeType ולהפוך אותו ל-XML, לדוגמא:
<SomeType> <MessageName>value</MessageName> <MessageContent>value</MessageContent> </SomeType>
בשיטה זו, ניתן להעביר מידע בין מערכות מרוחקות המידע ברשת זורם תמיד בצורה של XML. ולשאלתך השניה, אין ממשק אחיד ל-WS. מה שאחיד הוא שכולם מומרים בסופו של דבר ל-XML. כל אחד יכול לאפיין לעצמו את המתודות והאובייקטים שיהיו חשופים כלפי העולם החיצון.