Component Object Model

COM (англ. Component Object Model* - *бүрдүүлбэр объектын загвар; [ком] гэж дуудна) гэдэг бол бүрдүүлбэрт суурилсан програм хангамж бүтээхэд зориулж Microsoft компаниас 1993 онд танилцуулсан хоёртын тоон интерфейсийн стандарт юм. Үүнийг процесс хоорондын харилцаа холбоотой объектыг олон төрлийн програмчлалын хэл дээр бүтээхэд ашигладаг. COM нь OLE, OLE Automation, Browser Helper Object, ActiveX, COM+, DCOM, Windows shell, DirectX, UMDF, Windows Runtime гэх мэт Microsoft-ын бусад олон технологи, фреймворкын суурь болсон байдаг. Хоорондоо ялгаатай, олон өөр төхөөрөмжийн орчинд бүтээх объектуудыг програмчлалын хэлнүүдээс хамааралгүйгээр хэрэгжүүлэх явдал бол COM-ын гол мөн чанар юм. COM нь бүрдүүлбэрийн хэрэгжүүлэлтийг сайн тодорхойлсон, хэрэгжүүлэлтээсээ тусгаарлагдсан интерфейсээр хангахад анхаардаг учир сайн бичигдсэн бүрдүүлбэр объектуудыг COM-ын тусламжтайгаар дотоод хэрэгжүүлэлтийг нь мэдэх шаардлагагүйгээр дахин ашиглах боломжтой байдаг. 

COM бол зөвхөн Microsoft Windows, Apple-ийн Core Foundation 1.3, болон сүүлд plug-in буюу залгаас API (application programming interface буюу хэрэглүүр програмчлах харилцвар)-д  зориулан стандарт болгож тодорхойлон хэрэгжүүлсэн интерфейсийн технологи юм. Гэхдээ залгаас API-д зориулсан хэрэгжүүлэлт нь зөвхөн COM интерфейсийн зарим дэд хэсгийг хамардаг байна. Зарим хэрэглээнд COM-ыг Microsoft .NET фреймворкоор орлуулах, Windows Communication Foundation (WCF)-аар дамжуулан Web Services-ийг дэмжихэд ашиглах болжээ. Тэгэхдээ COM объектыг .NET төрлийн бүх хэлэнд .NET COM Interop-оор дамжуулан ашиглах боломжтой байдаг. 

## Түүх 
Анх 1987 онд танилцуулсан Dynamic Data Exchange (DDE) бол Windows доторх процесс хоорондын харилцаа холбооны анхны аргуудын нэг байв. Энэ арга нь хэрэглээний програм хангамжуудын хооронд мессеж илгээх болон хүлээн авах боломжоор хангасан. СОМ-ын архитектурыг бүтээх ажилд Antony Williams оролцсон байдаг бөгөөд Microsoft дотор 1988 онд Object Architecture: Dealing With the Unknown – or – Type Safety, 1990 онд Dynamically Extensible Class Library in and On Inheritance: What It Means and How To Use It гэдэг хоёр өгүүлэл гаргасан нь програм хангамжийн бүрдүүлбэрийн концептыг өөртөө агуулж байжээ. Эдгээр өгүүлэл нь COM-ын ард буй олон санааны суурь болсон юм. Microsoft-ын анхны объект суурьтай фреймворк болох Object Linking and Embedding (OLE) нь DDE дээр үндэслэгдсэн бөгөөд энэхүү технологийг compound document (бүрдмэл баримт бичиг)-д тусгайлан зориулсан байна. Үүнийг 1991 онд Windows Word болон Excel-д анх танилцуулсан ба 1992 онд гаргасан 3.1-р хувилбараас эхлэн Windows-ийн нэг хэсэг болгожээ. Compound document-ийн нэг жишээ бол Word төрлийн баримт бичиг дотор шигтгэсэн spreadsheet юм. Энэ төрлийн spreadsheet-ийг Excel ашиглан засаж өөрчилдөг бөгөөд автоматаар Word баримт бичиг дотор гарч ирдэг. 

Microsoft 1991 онд Visual Basic Extensions (VBX)-ийг Visual Basic 1.0 хувилбар дээр танилцуулжээ. VBX гэдэг нь объектуудыг маягт дээр график байдлаар байрлуулах, проперти болон методуудыг ашиглан чадварлаг удирдах боломж олгодог, dynamic-link library (DLL) хэлбэртэй багцласан өргөтгөл юм. 

## Хамааралтай технологиуд 
COM нь Windows-ийн хувьд програм хангамж хөгжүүлэх үндсэн платформ байв. Тийм болохоор олон тооны дэмжигч технологийг хөгжүүлэхэд нөлөөлсөн байдаг. 

### COM+, DCOM 
Microsoft-ын хувьд хөгжүүлэгч нарыг тархмал гүйлгээ, нөөц нэгтгэл, хоорондоо холбогдоогүй хэрэглүүрүүд, эвентийн сонордуулга ба захиалга, санах ой болон процессор (тред)-ын илүү сайн менежментээр хангахаас гадна Windows-ийг бусад энтерпрайс түвшний үйлдлийн системүүдийн алтернатив сонголт байлгах зорилгоор Windows NT 4. дээр Microsoft Transaction Server (MTS) гэдэг технологийг танилцуулжээ. 

### .NET 
### Windows Runtime 
## Аюулгүй байдал 
## Техникийн нарийн ширийн 
### Интерфейс 
Бүх COM бүрдүүлбэр лавлуур (reference) тоолох, төрөл хөрвүүлэх (кастлах) методуудыг нэвтрүүлдэг IUnknown гэдэг интерфейсийг хэрэгжүүлдэг. IUnknown интерфейс нь виртуал методын хүснэгт рүү заах заагуур (pointer)-аас бүрдэнэ. 

### Класс 
### Интерфейс тодорхойлох хэл ба төрлийн сан 
### COM-ыг объектын фреймворк байдлаар ашиглах 
### Reference тоолох 
### Програмчлах 
### Registry-ийн хэрэглээ 
### Бүртгэлгүй COM 
### Гар аргаар тохируулсан COM объект 
### Процесс, сүлжээний ил тод байдал 
### Урсгал 
## Шүүмжлэл 
### Reference тоолох 
## Notes 
Ангилал:Объект хандалтат программчлал