مدل شیء مؤلفه

| 0 | 1 |
| --- | --- |
Component Object Model: Component Object Model
کوته‌نوشت: COM
وضعیت: در حال استفاده
انتشار اولیه: ۱۹۹۳؛ ۳۱ سال پیش (۱۹۹۳-خطا: زمان نامعتبر}})
آخرین ویرایش: استاندارد زنده ۲۰۲۱
سازمان: مایکروسافت
سری‌ها: System Services
استانداردهای پایه: MIDL, UUID
استانداردهای مرتبط: جایگزین: DDE ساخته‌شده براساس سی‌اوام: OLE, OLE Automation, Browser Helper Object, ActiveX, COM+, DCOM, Windows shell, DirectX, UMDF , Windows Runtime
دامنه: واسط‌دهی به مولفه
وبگاه: docs.microsoft.com/en-us/windows/win32/com/the-component-object-model
مدل شیء مؤلفه (به انگلیسی: Component Object Model) با کوته‌نوشت COM یک استاندارد واسط دودویی برای مولفه‌های نرم‌افزاری است که توسط شرکت مایکروسافت در سال ۱۹۹۳ (سال ۱۳۷۲ شمسی) معرفی شد. از این فناوری برای ایجاد توانمندی «ارتباط بین‌پردازه‌ای» در ایجاد شیء در بسیاری از زبان‌های برنامه‌نویسی استفاده می‌شود. COM مبنای چندین فناوری و چارچوب دیگر مایکروسافت است، مثلاً OLE, OLE Automation, Browser Helper Object, ActiveX, COM+, DCOM, Windows shell, DirectX, UMDF، و Windows Runtime براساس COM هستند. ماهیت COM ایجاد یک روش «خنثی از نظر زبان» برای پیاده‌سازی اشیایی است که قابلیت استفاده در محیطی را دارند که با محیطی که در آن ایجاد شده‌اند متفاوت است، یعنی حتی می‌توان در محدودهٔ بین ماشینی از آن استفاده کرد. برای مولفه‌هایی که به‌خوبی نوشته شده باشند، COM امکان استفاده مجدد از اشیا را بدون هیچ دانشی از پیاده‌سازی درونی آن‌ها می‌دهد، زیرا این فناوری پیاده‌سازهای مولفه را مجبور می‌کند تا «واسطهای خوش‌تعریف» تهیه کنند، که این واسط‌ها از پیاده‌سازی جدا هستند. معانی تخصیص در زبان‌های مختلف متفاوت است، اما این موضوع به این صورت سازگارسازی می‌شوند که اشیا «خودشان» مسئول ساخت خودشان باشند و از بین بردن آن‌ها از طریق شمارش ارجاع انجام می‌شود. ریختگری تبدیل نوع بین واسط‌های متفاوت یک شیء از طریق شگرد QueryInterface به دست می‌آید. شگرد ارجح «ارث‌بری» در COM، ساخت زیرشیءهایی است که به آن‌ها «تماس» شگردی واگذار می‌شوند.
COM یک فناوری واسط است که به عنوان یک «فقط استاندارد» در مایکروسافت ویندوز و بنیاد هسته اپل ۱٫۳ و سپس در افزونه‌های واسط برنامه‌نویسی کاربردی (API) تعریف و پیاده‌سازی شده‌است. در API فقط بخشی از کل واسط COM پیاده‌سازی می‌شود. در بعضی از کاربردها، COM تاحدی به‌وسیله چارچوب دات‌نت مایکروسافت جایگزین شده‌است، و در پشتیبانی از خدمات وب توسط بنیاد ارتباطات ویندوز (WCF) جایگزین شده‌است. با این حال، اشیای COM را می‌توان با همه زبان‌های دات‌نت، از طریق COM Interop در دات‌نت استفاده کرد. DCOMهای شبکه‌ای از قالب‌های اختصاصی دودویی استفاده می‌کنند، درحالی‌که WCF (بنیاد ارتباط ویندوز) استفاده از پیام‌های SOAP که مبتنی بر XML اند را تشویق کرده‌است. COM به دیگر فن‌آوری‌های واسط نرم‌افزار مولفه، مثل CORBA، و جاوابینز سازمانی بسیار شبیه است، اگرچه هرکدام از آن‌ها نقاط قوت و ضعف خودشان را دارند. برخلاف C++، در COM یک واسط دودویی کاربردی پایدار (ABI) فراهم شده‌است، و این واسط بین انتشارهای مختلف کامپایلر، تغییر نمی‌کند. این موضوع واسط‌های COM را برای کتابخانه‌های شیءگرای C++ جذاب ساخته‌است؛ زیرا این واسط‌ها باید توسط کارخواه‌های کامپایل شده توسط نسخه‌های کامپایلر مختلف استفاده شوند.
الگوی COM به منظور توانمندسازی ارتباطات بین پردازشی و ساختن اشیاء به صورت پویا، برای تعداد زیادی از زبان‌های برنامه‌نویسی مورد استفاده قرار گرفته‌است. اصطلاح COM در صنعت توسعه نرم‌افزاری مایکروسافت، به عنوان چتری که دربرگیرنده فناوریهای زیرمی‌باشد مورد استفاده قرار می‌گیرد.
+COM
DCOM
OLE
OLE Automation
ActiveX اکتیوایکس
نکته: هرگز نباید با قالب پروندهای COM، که پسوندی برای یک نوع از پرونده‌های اجرایی می‌باشد، اشتباه گرفته شود.