2.4 אובייקטי COM הרצאה
אובייקטי COM¶
COM (Component Object Model) הוא פרוטוקול שנוצר על ידי מיקרוסופט שמאפשר לתוכנות להיתמך ולהתממשק זו עם זו בצורה גמישה, באמצעות יצירת אובייקטים נפרדים שאותם ניתן להפעיל ולהשתמש בהם מכל תוכנה אחרת. אובייקטים אלה מקנים יכולת לתקשר עם תוכנות אחרות בצורה של תכנות מונחה אובייקטים (OOP).
מה זה אובייקט COM?¶
אובייקט COM הוא אובייקט שנוצר בתוך תוכנה אחת, ומספק ממשק שמאפשר לתוכנה אחרת להתחבר אליו ולקרוא לפונקציות שמופיעות בו, כמו ב-API של אותה תוכנה. בצורה כזו, כל תוכנה יכולה להיות זמינה למפתחים אחרים לשימוש ולהתממשקות. יתרון חשוב באובייקטי COM הוא התמיכה בממשק אחיד ונפוץ שמאפשר אינטגרציה של תוכנות שונות, ובכך נשמרת תאימות טובה בין תוכנות שפועלות בווינדוס.
איך משתמשים באובייקטי COM ב-PowerShell?¶
מיקרוסופט התממשקה עם אובייקטי COM עבור תוכנות רבות, כולל Microsoft Office, ונתנה למפתחים את הכלים לתקשר עם תוכנות אלו בצורה נוחה ויעילה.
דוגמה: אינטגרציה עם Microsoft Word¶
אם נרצה ליצור מסמך ב-Microsoft Word ולהוסיף טקסט אליו באמצעות PowerShell, נוכל לעשות זאת על ידי יצירת אובייקט COM שמייצג את Word, ואז להפעיל את הפקודות הרלוונטיות. הנה דוגמת קוד ב-PowerShell שמדגימה את הדרך:
# Create a new instance/object of MS Word
$MSWord = New-Object -ComObject Word.Application
# Make MS Word visible
$MSWord.Visible = $True
# Add a new document
$mydoc = $MSWord.Documents.Add()
# Create a reference to the current document so we can begin adding text
$myText = $MSWord.Selection
# Add some text with new paragraphs in between.
$myText.TypeParagraph()
$myText.TypeText("This is on a new line!")
$myText.TypeParagraph()
$myText.TypeText("My username is $($Env:USERNAME) and the date is $(Get-Date)")
$myText.TypeParagraph()
# Start using bold
$myText.Font.Bold = 1
$myText.TypeText('Some Bold text.')
# Turn off bold
$myText.Font.Bold = 0
$myText.TypeParagraph()
# Start using Italic
$myText.Font.Italic = 1
$myText.TypeText('Some italic text.')
# Save and quit
$filename = 'C:\work\Demo99.docx'
$saveFormat = [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatDocumentDefault
$mydoc.SaveAs([ref][system.object]$filename, [ref]$saveFormat)
$mydoc.Close()
$MSWord.Quit()
הסבר על הקוד:¶
- קודם כל, נוצר אובייקט COM שמייצג את Microsoft Word באמצעות הפקודה
New-Object -ComObject Word.Application. - הפקודה
Write-Outputלא תוכל לפעול עם אובייקטי COM, ולכן עלינו להגדיר את הפקודות באופן שיתקשרו עם אובייקט ה-Word. - בסקריפט זה אנחנו יכולים להוסיף טקסט למסמך, להחיל עליו פורמטים כמו בולד ואיטלקי, ולהשמור את המסמך כקובץ DOCX.
- בסופו של דבר, הסקריפט שומר את המסמך ומסיים את הפעולה על ידי סגירת האובייקט Word.
יתרונות השימוש באובייקטי COM:¶
- אוטומציה של משימות בתוכנות מיקרוסופט: אובייקטי COM מאפשרים אוטומציה של פעולות בתוכנות כמו Word, Excel, Outlook ועוד, מה שמועיל מאוד בסביבות ארגוניות בהן יש צורך בביצוע פעולות חוזרות ונשנות.
- הפשטת אינטגרציות עם תוכנות אחרות: באמצעות COM, אפשר להחיות את האפשרות לממשק ולהתממשק עם תוכנות שונות מבלי להיות תלוי ב-API או ממשק תוכנה מסובך.
- שימוש בחומרה חיצונית: בנוסף לכך, אובייקטי COM יכולים להיתמך גם על ידי חומרה חיצונית, מה שמקל על האינטגרציה עם מכשירים אחרים כמו מדפסות, מצלמות ועוד.
למה זה חשוב לפיתוח בווינדוס?¶
היתרון המרכזי של אובייקטי COM הוא היכולת להפוך תוכנות קיימות ל-"שירותים" שניתן להתחבר אליהם ולהשתמש בהם על ידי תוכנות אחרות. אם אתה מפתח תוכנה בווינדוס, תוכל לשלב בקלות אובייקטי COM במערכת שלך כדי לספק תמיכה בשירותים חיצוניים (כגון יצירת דוחות, שליחה אוטומטית של דוא"ל, אוטומציה של פעולות במערכת, ועוד).
יצירת אובייקטי COM בתוכנה שלך¶
לא רק שמיקרוסופט מאפשרת שימוש באובייקטי COM, אלא גם מפתחי תוכנה יכולים ליצור אובייקטי COM בתוכנות שלהם, כך שהתוכנה שלהם תהיה זמינה גם למפתחים אחרים. זהו תהליך מצוין להכיר את עקרונות ה-OOP תוך שימוש בטכנולוגיות של ווינדוס וללמוד איך לפתח אפליקציות שתומכות באינטגרציה רחבה.