RPC NDR– sztringek formázása
NDR motor: 32 bites értelmező
Ez a dokumentum a 32 bites NDR-motor formátumsztring-leíróit, más néven MOP-ket ismerteti. Ez a szakasz a –Oi értelmezőről a –Oif értelmező rétegre történő változásokkal, valamint a csövekkel és az aszinkron támogatással kapcsolatos kiegészítéseket ismerteti.
Ez a dokumentum a Microsoft Interface Definition Language (MIDL) jelenlegi technológiáját ismerteti a motor és az aktuális NDR-motor szempontjából.
Áttekintés
Az NDR-motor a távoli eljáráshívás (RPC) és a DCOM-összetevők központi motorja. Kezeli a távoli hívások összes csonkhoz kapcsolódó problémáját. Folyamatként az NDR-műveletet a MIDL által létrehozott csonkok C-kódja, egy MIDL JIT-típusú generátor vagy más eszközök által létrehozott vagy manuálisan írt csonkok vezérlik. Az NDR-motor viszont az alapul szolgáló futási időt (DCOM vagy RPC) hajtja, amely adott átvitelekkel kommunikál.
A terv eredeti célja az volt, hogy a MIDL-fordító által biztosított információk alapján egy eszközt biztosítson az tetszőleges adatok hatékony alkalmazásához. A dokumentumban leírt formátumsztringeket – és valóban az NDR-motorhasználathoz a fordító által generált összes információt – mindig belső interfésznek tekintették a fordító és a motor között. Hasonlóképpen, a motor számára a futásidejű problémák kezelésére elérhető interfészek is többnyire belsőek (bizonyos kivételek az RPC futásidejű oldalán léteznek, és a motor által használt egyes DCOM-interfészek külsőek).
A marshaling két tipikus megközelítése mindig is beágyazott és adatvezérelt (értelmezett) technológia volt. A MIDL támogatja a –Os és –Oi* kapcsolóit a C-alapú csonkokban. Emellett a MIDL képes létrehozni az oleautomation csomag által használt TLB-kódtárakat. Ennek megfelelően a motor belső részeinek egyik perspektívája, hogy két részből áll.
Az első olyan rutinok készlete, amelyek a méretezést, a marshalingot és így tovább kezelik, és megfelelnek az olyan tipikus adattípus-objektumoknak, mint a struktúra vagy a tömb. Ezek a rutinok a teljesítményhez vannak finomhangolva; Például általában megpróbálják letiltani az adatok másolását, ahol csak lehetséges. Ezt a részt gyakran nevezik alapvető NDR motornak.
A második rész egy értelmezőből és annak kapcsolódó darabjaiból áll. Az értelmező a központi NDR-motor rutinjait használja, mintha egy belső kódtárból hajtanak végre egy távoli hívást az összes argumentumával, és szükség szerint nem lesznek elhatároltak.
A központi NDR motort hasonló módon használják, akár beágyazott csonkokból, akár az értelmezőből. Az összes alapvető motor-rutin a csonk üzenetstruktúrája által átadott állapottól függ. A struktúrát a beágyazott csonk vagy az értelmező megfelelően állítja be. Az évek során a magmotort más kontextusban használták; jelenleg az értelmező valójában több különböző értelmezőhurok halmaza. Ezek a régi és az új (–Oi és –Oif) értelmezőkkel, valamint az adatszerializálással (pácolás), az RPC aszinkron támogatásával és a DCOM aszinkron támogatásával kapcsolatos hurkokhoz kapcsolódnak (az RPC és a DCOM különböző aszinkron programozási modellekkel rendelkezik).
Az új funkciók mellett az NDR motor fejlődésének fontos aspektusa az értelmezők megközelítésének általános eltolódása. Az NDR 1.1-es verziója egy új MIDL 2.0-s megközelítés részeként kezdődött, amely a beágyazott csonkokat részesíti előnyben a teljesítmény szempontjából. Az NDR legújabb verziójával a –Oif vált a fordító legszélesebb körben használt módjává, szinte a beágyazott csonkok kizárásával.
Az RPC NDR motorformátumú sztringleíróit részletesebben az alábbi témakörök ismertetik:
- Sztringek formázása
- eljárásformázási sztringek
- eljárásfejlécleíró
- fogantyúk
- Fejléc
- paraméterleírók
- Formázási sztringek