ตัวอย่างโมเดลวัตถุ (com) ตัวอย่าง
COM เป็นเทคโนโลยีที่ทรงพลังมากในการประกอบซอฟต์แวร์ตามการออกแบบเชิงวัตถุ โปรดดูเอกสารที่นี่สำหรับรายละเอียดเพิ่มเติม
หนึ่งในข้อเสียที่สำคัญของ COM คือแผ่นหม้อต้มเริ่มต้นที่จำเป็นในการตั้งค่าส่วนประกอบ COM ATL เป็นชุดของไลบรารีที่ช่วยสร้างหม้อไอน้ำ แต่มาพร้อมกับความซับซ้อนของตัวเอง
ตัวอย่างนี้ที่นี่ให้รหัสโครงกระดูกที่จะทำให้การตั้งค่า COM และการลงทะเบียนเพื่อให้นักพัฒนาสามารถมุ่งเน้นไปที่ตรรกะทางธุรกิจเพียงอย่างเดียวแทนที่จะกังวลเกี่ยวกับโครงสร้างพื้นฐาน มัน ไม่ได้ใช้ ATL แต่ใช้รหัส C ++ ธรรมดาอย่างง่ายเพื่อให้นักพัฒนาสามารถเข้าใจและดีบักโครงกระดูกพื้นฐานหากจำเป็น
ข้อกำหนดที่ใช้
- เซิร์ฟเวอร์ COM เป็นวัตถุที่ให้ตรรกะทางธุรกิจ
- ไคลเอนต์ COM คือรหัสที่เข้าถึงเซิร์ฟเวอร์ COM ผ่านอินเทอร์เฟซใด ๆ ที่เปิดเผยโดย COM Server
- การโต้ตอบระหว่างไคลเอนต์ COM และเซิร์ฟเวอร์ COM เกิดขึ้นผ่านการจัดการและต้องใช้พร็อกซีสเตบ DLL
- โปรดดูเอกสารที่นี่สำหรับรายละเอียดเพิ่มเติม
โครงการนี้
นี่คือบทสรุปเกี่ยวกับไดเรกทอรีต่าง ๆ ในตัวอย่างนี้
- comsampleproxy : proxystub dll ในการเพิ่มอินเทอร์เฟซใหม่เพียงเพิ่มไฟล์ IDL ใหม่ลงในโครงการ
- comsampleserver : สนับสนุนการเปิดใช้งาน COM Server ในกระบวนการเช่นเดียวกับนอกกระบวนการ (ในระบบปฏิบัติการที่ให้ตัวแทน DLL คือ dllhost.exe)
- Comsampleservice : สนับสนุนการเปิดใช้งาน COM Server ในบริการ LocalSystem
- comsampleClient : ไคลเอนต์ตัวอย่าง COM ที่โทรเข้าและทดสอบเซิร์ฟเวอร์ COM ที่กล่าวถึงข้างต้น
การสร้างและการลงทะเบียนคอมโพเนนต์ COM ใหม่
การสร้างส่วนประกอบ COM ใหม่นั้นง่ายมากด้วยรุ่นนี้
- เพิ่มอินเทอร์เฟซของคุณ :
- เพิ่มไฟล์ IDL ใหม่ด้วยอินเทอร์เฟซของคุณไปยังโครงการ ComsAmpleProxy ดูตัวอย่างไฟล์ /CompleProxy/ICOMTEST.IDL
- ใช้คลาส COM ของคุณ :
- สำหรับการเปิดใช้งานในกระบวนการหรือนอกกระบวนการในการเปิดใช้งานตัวแทน : เพิ่มการใช้งานชั้นเรียนของคุณในโครงการ Comsampleserver ดูตัวอย่าง comsampleserver/ccomservertest.cpp ตอนนี้ไปที่ comsampleserver/dll.cpp และเพียงเพิ่มรายการคลาสของคุณใน "g_classes"
- สำหรับการเปิดใช้งานนอกกระบวนการในบริการ LocalSystem : เพิ่มการเพิ่มการใช้งานคลาสของคุณในโครงการ Comsampleservice ดูตัวอย่าง comsampleservice/ccomserviceTest.cpp ตอนนี้ไปที่ Comsampleservice/main.cpp และเพียงเพิ่มรายการคลาสของคุณใน "g_classes"
- ลงทะเบียนส่วนประกอบ COM ของคุณ :
- คัดลอก comsampleproxy.dll ไปยังเครื่องเป้าหมายของคุณ จากพรอมต์ที่เพิ่มขึ้น Run: regsvr32 comsampleproxy.dll
- สำหรับการเปิดใช้งานในกระบวนการหรือนอกกระบวนการในการเปิดใช้งานตัวแทน : คัดลอก comsampleserver.dll ไปยังเครื่องเป้าหมายของคุณ จากพรอมต์ที่สูงขึ้น Run: regsvr32 comsampleserver.dll
- สำหรับการเปิดใช้งานนอกกระบวนการในบริการ LocalSystem : คัดลอก comsampleservice.exe ไปยังเครื่องเป้าหมายของคุณ จากพรอมต์คำสั่งยกระดับให้เรียกใช้: comsampleservice.exe /registerserver
นั่นคืออะไร!
เครื่องหมายการค้า
โครงการนี้อาจมีเครื่องหมายการค้าหรือโลโก้สำหรับโครงการผลิตภัณฑ์หรือบริการ การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft ที่ได้รับอนุญาตขึ้นอยู่กับและต้องปฏิบัติตามแนวทางเครื่องหมายการค้าและแบรนด์ของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของ Microsoft ในรุ่นที่แก้ไขของโครงการนี้จะต้องไม่ทำให้เกิดความสับสนหรือบอกเป็นสปอนเซอร์ของ Microsoft การใช้เครื่องหมายการค้าหรือโลโก้ของบุคคลที่สามจะอยู่ภายใต้นโยบายของบุคคลที่สามเหล่านั้น