כשכתבתי coupling
למעשה התכוונתי ל tight coupling... אתה צודק שאנחנו לא מדברים כרגע על No Coupling. השאלה היא האם אנחנו רואים את המונח loosly coupled באותו אופן. בעיני רכיבים בעלי צמידות נמוכה ביניהם צריכים "להסכים" ביניהם על מינימום פרטים. ואני לא בדיוק מתכוון להסכמה במובן של contract. ה contract בהחלט מעודד loose coupling אבל ברגע שעובר באמצע הרבה מידע ששני הרכיבים צריכים להסכים על המהות שלו שלא(!) מוגדרת ב contract נוצר מצב של tight coupling. קח למשל בדיקות תקינות, אני לא בטוח מהי ההגדרה לשדות חובה ב WSDL אבל אני מניח שאתה תרצה להוסיף בדיקה במסך שבו נקלט הערך שבסופו של דבר צריך להישלח לאותו שירות. עכשיו קח שדה שמוגדר כשדה רשות שאתה שולח אותו בלי בדיקת תקינות, פתאום ספק השירות מחליט שזה בכל זאת שדה חובה - והנה לך באג בזמן ריצה ובמקרה הגרוע גם שכתוב של מקומות רבים בקוד שעושים שימוש בשירות הזה. איך אנחנו מתמודדים עם זה? אז אני כבר ארכז גם תגובה להודעה של ארנון שמתחת, השימוש ב adapter הוא פתרון טוב ואכן כמעט בכל מקום שבו אני עובד מול רכיבים חיצוניים אני משתמש ב adapter על מנת ליצור loose coupling. אבל, ברגע ששירותים הופכים להיות לשימוש פנים-אפליקטיבי ולא לטובת אינטגרציה מול גורם זר, אני יכול לחסוך את כל ה adapter-ים הללו בעזרת רכיבים שמעודדים צמידות נמוכה (וביצועים משופרים). כלומר, אני מוכן להיות מפרסם של שירות או לקוח של שירות אבל לא שניהם - ולפי מה שאני רואה SOA מדבר על להיות שניהם.
למעשה התכוונתי ל tight coupling... אתה צודק שאנחנו לא מדברים כרגע על No Coupling. השאלה היא האם אנחנו רואים את המונח loosly coupled באותו אופן. בעיני רכיבים בעלי צמידות נמוכה ביניהם צריכים "להסכים" ביניהם על מינימום פרטים. ואני לא בדיוק מתכוון להסכמה במובן של contract. ה contract בהחלט מעודד loose coupling אבל ברגע שעובר באמצע הרבה מידע ששני הרכיבים צריכים להסכים על המהות שלו שלא(!) מוגדרת ב contract נוצר מצב של tight coupling. קח למשל בדיקות תקינות, אני לא בטוח מהי ההגדרה לשדות חובה ב WSDL אבל אני מניח שאתה תרצה להוסיף בדיקה במסך שבו נקלט הערך שבסופו של דבר צריך להישלח לאותו שירות. עכשיו קח שדה שמוגדר כשדה רשות שאתה שולח אותו בלי בדיקת תקינות, פתאום ספק השירות מחליט שזה בכל זאת שדה חובה - והנה לך באג בזמן ריצה ובמקרה הגרוע גם שכתוב של מקומות רבים בקוד שעושים שימוש בשירות הזה. איך אנחנו מתמודדים עם זה? אז אני כבר ארכז גם תגובה להודעה של ארנון שמתחת, השימוש ב adapter הוא פתרון טוב ואכן כמעט בכל מקום שבו אני עובד מול רכיבים חיצוניים אני משתמש ב adapter על מנת ליצור loose coupling. אבל, ברגע ששירותים הופכים להיות לשימוש פנים-אפליקטיבי ולא לטובת אינטגרציה מול גורם זר, אני יכול לחסוך את כל ה adapter-ים הללו בעזרת רכיבים שמעודדים צמידות נמוכה (וביצועים משופרים). כלומר, אני מוכן להיות מפרסם של שירות או לקוח של שירות אבל לא שניהם - ולפי מה שאני רואה SOA מדבר על להיות שניהם.