กลับไปหน้าบทความ

อ่าน 2 นาที

ไอดิสแพทช์

IDispatch เป็น อินเทอร์เฟซ ที่เปิดเผยโปรโตคอล OLE Automation [ 1 ] โดยขยายจาก IUnknown ซึ่งเป็นหนึ่งในอินเทอร์เฟซมาตรฐานที่สามารถเปิดเผยได้โดย วัตถุ COM COM...

ไอดิสแพทช์

IDispatchเป็นอินเทอร์เฟซที่เปิดเผยโปรโตคอลOLE Automation [ 1 ]โดยขยายจากIUnknownซึ่งเป็นหนึ่งในอินเทอร์เฟซมาตรฐานที่สามารถเปิดเผยได้โดย วัตถุ COM COM แยกความแตกต่างระหว่างอินเทอร์เฟซสามประเภท ได้แก่ แบบกำหนดเองซึ่งเป็นอินเทอร์เฟซ IUnknown ที่ใช้ VTABLE, แบบDispatchซึ่งเป็นอินเทอร์เฟซ IDispatch ที่รองรับการตรวจสอบภายใน และ อินเทอร์เฟซแบบ คู่ที่รองรับทั้งสองประเภท

อินเทอร์เฟซ Automation (IDispatch) ช่วยให้แอปพลิเคชันไคลเอ็นต์ค้นหาคุณสมบัติและเมธอดที่รองรับโดยอ็อบเจ็กต์ในขณะรันไทม์ กล่าวคือเป็นการนำแนวคิดRTTI มาใช้ นอกจากนี้ยังให้ข้อมูลที่จำเป็นในการเรียกใช้คุณสมบัติและเมธอดเหล่านั้น แอปพลิเคชันไคลเอ็นต์ไม่จำเป็นต้องรับรู้ถึงสมาชิกของอ็อบเจ็กต์เมื่อมีการคอมไพล์ ซึ่งช่วยให้โปรแกรมสคริปต์สามารถเรียกใช้อ็อบเจ็กต์ COM และ ActiveX ได้บนแพลตฟอร์มต่างๆ เช่น เซิร์ฟเวอร์ ASPและJavaScriptบนInternet Explorerซึ่งในขณะที่IISหรือ IE ถูกสร้างขึ้นนั้นยังไม่ทราบข้อกำหนดการเรียกใช้ ในทางตรงกันข้าม ไลบรารีอ็อบเจ็กต์แบบง่ายจะถูกคอมไพล์และเชื่อมโยงเข้ากับโปรแกรม เช่น การเรียกใช้ DLL จำเป็นต้องทราบชื่อฟังก์ชันและพารามิเตอร์ในขณะคอมไพล์

ผู้เขียนสคริปต์สามารถขอเมธอดหรือคุณสมบัติจากอ็อบเจ็กต์ COM ที่มันรู้จักอยู่แล้วจากเอกสารประกอบ จากนั้น ไคลเอนต์สามารถเรียกใช้ฟังก์ชันด้วย Invoke ที่จัดเตรียมโดยอินเทอร์เฟซ IDispatch ซึ่งเป็นรูปแบบหนึ่งของการผูกแบบล่าช้าความสามารถประเภทนี้ได้รับการสนับสนุนโดยDynamic Data Exchange (DDE) เช่นกัน แต่ไม่ได้รับความนิยมเนื่องจากอยู่ในระดับต่ำเกินไป

อินเทอร์เฟซ การส่ง คำสั่ง มีความยืดหยุ่น แต่มีค่าใช้จ่ายในการตรวจสอบภายในและการเรียกใช้งานเพิ่มเติมเมื่อเทียบกับอินเทอร์เฟซแบบกำหนดเอง[ 2 ]ดังนั้นจึงมักเป็นความคิดที่ดีที่จะสนับสนุนอินเทอร์เฟซทั้งสองประเภทด้วย อินเทอร์เฟซ คู่ด้วยวิธีนี้ ลูกค้าที่สนับสนุนการเรียกใช้งานตาม VTABLE สามารถใช้ อินเทอร์เฟซ แบบกำหนดเองแทน อินเทอร์ เฟซ การส่งคำสั่ง ได้

วิธีการ

แต่ละคุณสมบัติและเมธอดที่ใช้งานโดยอ็อบเจ็กต์ที่รองรับอินเทอร์เฟซ IDispatch จะมีสิ่งที่เรียกว่า Dispatch ID ซึ่งมักย่อว่า DISPID DISPID เป็นวิธีการหลักในการระบุคุณสมบัติหรือเมธอด และต้องระบุให้กับ ฟังก์ชัน Invokeเพื่อเรียกใช้คุณสมบัติหรือเมธอดนั้น พร้อมกับอาร์เรย์ของVariantที่มีพารามิเตอร์ สามารถใช้ฟังก์ชัน GetIDsOfNamesเพื่อรับ DISPID ที่เหมาะสมจากชื่อคุณสมบัติหรือเมธอดที่อยู่ในรูปแบบ สตริง ได้

IDispatch สืบทอดมาจากIUnknownและขยายเพิ่มเติมด้วยเมธอดอีกสี่เมธอด:

interface IDispatch : public IUnknown { virtual HRESULT GetTypeInfoCount ( unsigned int * pctinfo ) = 0 ; virtual HRESULT GetTypeInfo ( unsigned int iTInfo , LCID lcid , ITypeInfo ** ppTInfo ) = 0 ; virtual HRESULT GetIDsOfNames ( REFIID riid , OLECHAR ** rgszNames , unsigned int cNames , LCID lcid , DISPID * rgDispId ) = 0 ; HRESULT เสมือนเรียกใช้( DISPID dispIdMember , REFIID riid , LCID lcid , WORD wFlags , DISPPARAMS * pDispParams , VARIANT * pVarResult , EXCEPINFO * pExcepInfo , int ที่ไม่ได้ลงนาม* puArgErr ) = 0 ; };

รหัสอินเทอร์เฟซIDispatch ถูกกำหนดเป็นGUIDที่มีค่าเป็น {00020400-0000-0000-C000-000000000046}

  • DispHelperเป็น ไลบรารี โอเพนซอร์สที่ช่วยในการใช้งาน IDispatch จากภาษา C หรือ C++
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=IDispatch&oldid=1305061055 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ไอดิสแพทช์

IDispatch เป็น อินเทอร์เฟซ ที่เปิดเผยโปรโตคอล OLE Automation [ 1 ] โดยขยายจาก IUnknown ซึ่งเป็นหนึ่งในอินเทอร์เฟซมาตรฐานที่สามารถเปิดเผยได้โดย วัตถุ COM COM...

วิธีการ

แต่ละคุณสมบัติและเมธอดที่ใช้งานโดยอ็อบเจ็กต์ที่รองรับอินเทอร์เฟซ IDispatch จะมีสิ่งที่เรียกว่า Dispatch ID ซึ่งมักย่อว่า DISPID DISPID เป็นวิธีการหลักในการระบุคุณสมบัติหรือเมธอด และต้องระบุให้กับ ฟังก์ชัน Invoke เพื่อเรียกใช้คุณสมบัติหรือเมธอดนั้น...

ลิงก์ภายนอก

DispHelperเป็น ไลบรารี โอเพนซอร์ส ที่ช่วยในการใช้งาน IDispatch จากภาษา C หรือ C++ ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=IDispatch&oldid=1305061055 "