COM

COM (באנגלית ראשי תיבות של: Component Object Model - מודל האובייקטים של הרכיבים) - תקן טכנולוגי של חברת מיקרוסופט, המיועד ליצירת תוכנה על בסיס שיתוף פעולה של רכיבים מבוזרים, שבכל אחד מהם ניתן להשתמש בתוכניות רבות באותו זמן, וניתן לגשר בין שפות תכנות שונות. בבסיס הטכנולוגיה רעיונות כימוס ורב-צורתיות של תכנות מונחה עצמים (OOP). טכנולוגית COM היא אוניברסלית ולא תלויה בפלטפורמה, אך השימוש בה רווח בעיקר במערכת ההפעלה "חלונות" לגרסאותיה. בגרסאות החדשות של "חלונות" השימוש ב-COM רווח מאוד, ואף פותחו על בסיסה סטנדרטים נוספים, כמו ActiveX,‏ DCOM,‏ +COM,‏ OLE automation.

היסטוריה

המודל COM פותח על ידי מיקרוסופט ב-1993 כבסיס להתפתחותה של טכנולוגיית OLE. טכנולוגיית OLE 1.0 איפשרה יצירת מסמכים מורכבים (compound documents), לדוגמה ניתן היה להוסיף למיקרוסופט וורד טבלאות מתוכנת אקסל. טכנולוגית COM הייתה אמורה לתת אחידות לתהליך שילוב, הכנסה וקישור של אובייקטים משולבים אלה וכן לשמור על סטנדרט אחד בכל המוספים, המשתמשים באובייקטים משולבים אלה.

שינוי השם

ב-1996 מיקרוסופט החליטה לשנות את השם OLE ל-ActiveX בכל יישומיו. הדבר לא עלה בידיה לגמרי. טכנולוגית OLE השתמשה ברכיבי בקרה (OLE Controls, או OCX), שהם רכיבים שהיה בהם שימוש חוזר בממשק משתמש, המבוססים על טכנולוגיית COM, כשמיקרוסופט שינתה את שמם של OLE controls ל-ActiveX Controls, סיומת .ocx לקבצים מסוג זה נשארה. מיד אחר כך מיקרוסופט התחילה לעודד שימוש ברכיבי ActiveX בגרסה החדשה של הדפדפן אינטרנט אקספלורר, והשם OLE נשאר רק לטכנולוגיית מסמכים מורכבים ואובייקטים המשולבים מקומית. OLE - אובייקטים רשתיים שינו את שמם ל-ActiveX.

יסודות פעולת ה-COM

ביסוד טכנולוגיית COM עומדים רכיבי COM, או "COM components". למעשה תוכניות שנבנו על ידי COM אינן תוכניות עצמאיות, אלא רכיבי COM המתקשרים אחד לשני בזמן ביצועם. לכל רכיב יש מזהה אישי (GUID), ובו יכולים להשתמש באותו זמן תוכניות שונות. הרכיב מתקשר עם תוכניות אחרות דרך ממשק COM, שהוא רשימה של מאפיינים, שיטות ואירועים. כל תוכנית COM חייבת לתמוך לפחות בממשק הבסיסי "IUnknown", שמאפשר פעולות בסיסיות לעבודה עם רכיבים. 
בתוך Windows API ישנן פונקציות בסיסיות המאפשרות לעבוד עם רכיבי COM. בספריות MFC ובמיוחד בספריות ATL/WTL ישנן פונקציות גמישות יותר לעבודה עם COM מאשר ב-API. ספריית ATL של מיקרוסופט היא האמצעי הנוח ביותר ליצירת רכיבי COM ועבודה איתם. למרות זאת לפעולות רבות עם COM עדיין דרושה עבודה ידנית, הדבר נכון במיוחד כשמנסים לשלב רכיבי COM בקובצי C++. מיקרוסופט מנסה לפשט את התהליך בגרסת +COM, ובמיוחד net.

התפתחות ה-COM

ב-1996 יצאה לאור טכנולוגיית DCOM (קיצור של Distributed COM), המבוססת על טכנולוגיית DCE/RPC, ונחשבת כהתפתחות של COM. טכנולוגית DCOM מאפשרת לרכיבי COM לתקשר דרך הרשת. המתחרה העיקרי של טכנולוגיה זו היא סטנדרט CORBA של קבוצת OMG.

+COM

כחלק מחלונות 2000 יצאה טכנולוגיית +COM, שביסודה תוספת בביטחון ובתפוקה של הטכנולוגיה. טכנולוגיה זו נותנת תמיכה בזרימות ברמה גבוהה יותר, וגישה לקונטקסט, שבה מתבצע הרכיב (לדוגמה, הרכיבים הפועלים על ASP מקבלים גישה לאובייקטים הפנימיים של העמוד שעליו הם מתבצעים). כמו כן, +COM מאחד רכיבים למוספי +COM, מה שמפשט ניהול הרכיבים ותמיכה בהם.

Net. ו-COM

ב-2002, לאחר יצירת פלטפורמת Net. מיקרוסופט התחילה להמליץ על שימוש בפלטפורמה זו ליצירת מוספים תחת חלונות. Net. ו-+COM אמורות להיות טכנולוגיות שמשלימות אחת את השנייה. בחלונות ויסטה שיצאה ב-2007 בטכנולוגיית COM במסגרת net. קיימת תמיכה מלאה בטכנולוגיות COM ו-Net. תמיכה זו בעצם מאפשרת ל.Net התממשקות עם אובייקטים שנכתבו בשפות יותר פרימיטיביות (native code) החושפים ממשק COM, בצורה פשוטה יותר מהממשק הרגיל של P/Invoke.