Folyamatközi kommunikáció
A Windows operációs rendszer olyan mechanizmusokat biztosít, amelyek megkönnyítik az alkalmazások közötti kommunikációt és adatmegosztást. Az e mechanizmusok által engedélyezett tevékenységeket együttesen folyamatközi kommunikációs (IPC) nevezzük. Az IPC bizonyos formái megkönnyítik a munka megosztását számos speciális folyamat között. Az IPC egyéb formái megkönnyítik a munkamegosztást a számítógépek között a hálózaton.
Az alkalmazások általában ügyfélként vagy kiszolgálóként kategorizált IPC-t használhatnak. A ügyfél olyan alkalmazás vagy folyamat, amely szolgáltatást kér más alkalmazástól vagy folyamattól. A kiszolgálói egy alkalmazás vagy folyamat, amely válaszol egy ügyfélkérésre. Számos alkalmazás ügyfélként és kiszolgálóként is működik a helyzettől függően. Előfordulhat például, hogy egy szövegszerkesztő alkalmazás ügyfélként egy kiszolgálóként működő számolótábla-alkalmazás gyártási költségeinek összegző táblázatát kéri le. A számolótábla-alkalmazás viszont ügyfélként is működhet, amikor a legújabb készletszinteket kéri le egy automatizált készletvezérlő alkalmazástól.
Miután úgy döntött, hogy az alkalmazás élvezi az IPC előnyeit, el kell döntenie, hogy melyiket használja az elérhető IPC-metódusok közül. Valószínű, hogy egy alkalmazás több IPC-mechanizmust fog használni. Az ezekre a kérdésekre adott válaszok határozzák meg, hogy egy alkalmazás egy vagy több IPC-mechanizmus használatával hasznos lehet-e.
- Képes-e az alkalmazás kommunikálni a hálózat más számítógépein futó más alkalmazásokkal, vagy elegendő, ha az alkalmazás csak a helyi számítógépen lévő alkalmazásokkal kommunikál?
- Képes-e az alkalmazás kommunikálni más számítógépeken futó alkalmazásokkal, amelyek különböző operációs rendszereken futnak (például 16 bites Windows vagy UNIX)?
- Az alkalmazás felhasználójának ki kell választania azokat az alkalmazásokat, amelyekkel az alkalmazás kommunikál, vagy az alkalmazás implicit módon megtalálja együttműködő partnereit?
- Az alkalmazásnak általánosan kell-e kommunikálnia számos különböző alkalmazással, például lehetővé kell-e tenni a kivágási és beillesztési műveleteket bármely más alkalmazással, vagy a kommunikációs követelményeit korlátozni kell-e bizonyos más alkalmazásokkal folytatott korlátozott interakciókra?
- A teljesítmény az alkalmazás kritikus eleme? Minden IPC-mechanizmus tartalmaz némi többletterhelést.
- Az alkalmazásnak GUI-alkalmazásnak vagy konzolalkalmazásnak kell lennie? Egyes IPC-mechanizmusokhoz grafikus felhasználói felületi alkalmazás szükséges.
A Windows a következő IPC-mechanizmusokat támogatja:
Az IPC-hez készült vágólap használata
A vágólap központi adattárként szolgál az alkalmazások közötti adatmegosztáshoz. Amikor egy felhasználó kivágási vagy másolási műveletet hajt végre egy alkalmazásban, az alkalmazás a kijelölt adatokat egy vagy több szabványos vagy alkalmazás által meghatározott formátumban helyezi a vágólapra. Ezután bármely más alkalmazás lekérheti az adatokat a vágólapról, és kiválaszthatja a számára elérhető formátumokat. A vágólap egy nagyon lazán összekapcsolt exchange-adathordozó, ahol az alkalmazásoknak csak az adatformátumban kell megegyeznie. Az alkalmazások ugyanazon a számítógépen vagy a hálózaton található különböző számítógépeken is elhelyezhetők.
Kulcspont: Minden alkalmazásnak támogatnia kell a vágólapot az általuk megismert adatformátumokhoz. Egy szövegszerkesztőnek vagy szövegszerkesztőnek például képesnek kell lennie a vágólapadatok tiszta szöveges formátumban történő előállítására és elfogadására. További információ: Vágólap.
A COM használata IPC-hez
Az OLE-t használó alkalmazások összetett dokumentumokat– azaz különböző alkalmazásokból származó adatokból álló dokumentumokat. Az OLE olyan szolgáltatásokat biztosít, amelyek megkönnyítik az alkalmazások számára, hogy más alkalmazásokat is meghívjanak az adatszerkesztéshez. Egy OLE-t használó szövegszerkesztő például beágyazhat egy grafikont egy számolótáblából. A felhasználó automatikusan elindíthatja a számolótáblát a szövegszerkesztőben a beágyazott diagram szerkesztéséhez való kiválasztásával. Az OLE gondoskodik a számolótábla indításáról és a diagram szerkesztésre való bemutatásáról. Amikor a felhasználó kilép a számolótáblából, a gráf frissül az eredeti szövegszerkesztő dokumentumban. Úgy tűnik, hogy a táblázat a szövegszerkesztő bővítménye.
Az OLE alapja a komponensobjektum-modell (COM). A COM-t használó szoftverösszetevők számos más összetevővel kommunikálhatnak, még azok is, amelyeket még nem írtak meg. Az összetevők objektumként és ügyfélként működnek együtt. Az elosztott COM kibővíti a COM programozási modellt, hogy az a hálózaton keresztül működjön.
Kulcspont: az OLE támogatja az összetett dokumentumokat, és lehetővé teszi, hogy az alkalmazás beágyazott vagy csatolt adatokat tartalmazzon, amelyek kiválasztásakor automatikusan elindít egy másik alkalmazást az adatszerkesztéshez. Ez lehetővé teszi, hogy az alkalmazást bármely más, OLE-t használó alkalmazás bővítse. A COM-objektumok hozzáférést biztosítanak egy objektum adataihoz egy vagy több kapcsolódó függvénykészleten keresztül, más néven interfészeken keresztül. További információ: COM és ActiveX Object Services.
Adatmásolás használata az IPC-hez
Az adatmásolás lehetővé teszi, hogy az alkalmazás adatokat küldjön egy másik alkalmazásnak a WM_COPYDATA üzenet használatával. Ehhez a módszerhez együttműködésre van szükség a küldő és a fogadó alkalmazás között. A fogadó alkalmazásnak ismernie kell az információk formátumát, és azonosítania kell a feladót. A küldő alkalmazás nem tudja módosítani a mutatók által hivatkozott memóriát.
Kulcspont: Az adatmásolással gyorsan küldhet információkat egy másik alkalmazásnak a Windows üzenetkezelés használatával. További információ: Adatmásolási.
DDE használata IPC-hez
A DDE egy protokoll, amely lehetővé teszi az alkalmazások számára az adatok különböző formátumokban történő cseréjét. Az alkalmazások használhatják a DDE-t egyszeri adatcserékhez vagy olyan folyamatban lévő cserékhez, amelyekben az alkalmazások az új adatok elérhetővé válásakor frissítik egymást.
A DDE által használt adatformátumok megegyeznek a vágólap által használt formátumokkal. A DDE a vágólap mechanizmusának kiterjesztéseként is felfogható. A vágólap szinte mindig egy felhasználói parancs egyszeri válaszához használatos, például a Beillesztés parancsot választja egy menüből. A DDE-t általában egy felhasználói parancs is kezdeményezi, de gyakran további felhasználói beavatkozás nélkül is működik. A speciális célú IPC-hez egyéni DDE-adatformátumokat is definiálhat a szorosabban összekapcsolt kommunikációs követelményekkel rendelkező alkalmazások között.
DDE-cserék történhetnek az ugyanazon a számítógépen vagy a hálózaton található különböző számítógépeken futó alkalmazások között.
kulcspont: DDE nem olyan hatékony, mint az újabb technológiák. Azonban akkor is használhatja a DDE-t, ha más IPC-mechanizmusok nem megfelelőek, vagy ha olyan meglévő alkalmazáshoz kell illesztenie, amely csak a DDE-t támogatja. További információ: Dynamic Data Exchange és Dynamic Data Exchange Management Library.
Fájlleképezés használata IPC-hez
fájlleképezési lehetővé teszi, hogy a folyamat úgy kezelje a fájl tartalmát, mintha memóriablokkok lennének a folyamat címterében. A folyamat egyszerű mutatóműveletekkel vizsgálhatja meg és módosíthatja a fájl tartalmát. Ha két vagy több folyamat ugyanazt a fájlleképezést éri el, minden folyamat a saját címterében kap egy mutatót a memóriához, amelyet a fájl tartalmának olvasására vagy módosítására használhat. A folyamatoknak egy szinkronizálási objektumot, például egy szemafortot kell használniuk, hogy megakadályozzák az adatsérülést egy többfeladatos környezetben.
A fájlleképezés speciális esetével elnevezett megosztott memóriát a folyamatok között. Ha fájlleképezési objektum létrehozásakor a rendszer felcseréli a fájlt, a rendszer megosztott memóriablokkként kezeli a fájlleképezési objektumot. Más folyamatok ugyanazon fájlleképezési objektum megnyitásával elérhetik ugyanazt a memóriablokkot.
A fájlleképezés meglehetősen hatékony, és operációs rendszer által támogatott biztonsági attribútumokat is biztosít, amelyek segítenek megelőzni a jogosulatlan adatsérülést. A fájlleképezés csak a helyi számítógépen lévő folyamatok között használható; nem használható hálózaton keresztül.
Kulcspont: A fájlleképezés hatékony módszer arra, hogy ugyanazon a számítógépen két vagy több folyamat megossza az adatokat, de szinkronizálást kell biztosítania a folyamatok között. További információ: Fájlleképezési és Szinkronizálási.
Mailslot használata IPC-hez
A mailslots egyirányú kommunikációt biztosít. A mailslotot létrehozó folyamatok egy mailslot-kiszolgáló. Más folyamatok, az úgynevezett mailslot-ügyfelek, üzeneteket küldenek a mailslot-kiszolgálónak úgy, hogy üzenetet írnak a levelezési kiszolgálónak. A bejövő üzenetek mindig hozzá vannak fűzve az e-mailekhez. A mailslot addig menti az üzeneteket, amíg a mailslot-kiszolgáló el nem olvassa őket. A folyamat lehet levelezési kiszolgáló és mailslot-ügyfél is, így a kétirányú kommunikáció több levelezőprogram használatával is lehetséges.
A levelezési ügyfél küldhet üzenetet a helyi számítógépen lévő levelezési kiszolgálónak, egy másik számítógépen található levelezési kiszolgálónak, vagy egy megadott hálózati tartomány összes számítógépén azonos nevű levelezési ügyfélnek. A tartomány összes levélküldője számára küldött üzenetek legfeljebb 400 bájt lehetnek, míg az egyetlen levélküldőbe küldött üzeneteket csak a levelezési kiszolgáló által a levelezési kiszolgáló által a levelezési levelek létrehozásakor megadott maximális üzenetméret korlátozza.
Kulcspont: Mailslots egyszerű módot kínál az alkalmazások számára a rövid üzenetek küldésére és fogadására. Emellett lehetővé teszik, hogy üzeneteket közvetítsen egy hálózati tartomány összes számítógépén. További információ: Mailslots.
Csövek használata az IPC-hez
A kétirányú kommunikációhoz kétféle cső létezik: névtelen csövek és elnevezett csövek. névtelen csövek lehetővé teszik a kapcsolódó folyamatok számára az információk egymásnak való továbbítását. A rendszer általában névtelen csövet használ egy gyermekfolyamat szabványos bemenetének vagy kimenetének átirányításához, hogy adatokat cserélhessenek a szülőfolyamattal. Kétirányú adatcseréhez (kétirányú művelet) két névtelen csövet kell létrehoznia. A szülőfolyamat az írási fogópontjával adatokat ír egy csőbe, míg a gyermekfolyamat az olvasási fogópontjával olvassa be az adatokat a csőből. Hasonlóképpen, a gyermekfolyamat adatokat ír a másik csőbe, és a szülőfolyamat beolvassa azokat. A névtelen csövek nem használhatók hálózaton keresztül, és nem használhatók a nem kapcsolódó folyamatok között sem.
Elnevezett csövek az adatok átvitelére a nem kapcsolódó folyamatok és a különböző számítógépeken futó folyamatok között. A névvel ellátott kiszolgálófolyamatok általában egy nevesített csövet hoznak létre, amely egy jól ismert névvel vagy egy olyan névvel rendelkezik, amelyet közölni kell az ügyfeleivel. Egy elnevezett cső ügyfélfolyamat, amely ismeri a cső nevét, megnyithatja a másik végét, a névvel ellátott csőkiszolgáló folyamat által meghatározott hozzáférési korlátozásokra is figyelemmel. Miután a kiszolgáló és az ügyfél is csatlakozott a csőhöz, az adatok cseréjéhez olvasási és írási műveleteket hajthatnak végre a csőn.
Kulcspont: Névtelen csövek hatékony módot nyújtanak a szabványos bemenetek vagy kimenetek átirányítására ugyanazon a számítógépen futó gyermekfolyamatokra. A nevesített csövek egyszerű programozási felületet biztosítanak az adatok két folyamat közötti átviteléhez, függetlenül attól, hogy ugyanazon a számítógépen vagy hálózaton találhatók. További információ: Csövek.
Az RPC használata IPC-hez
Az RPC lehetővé teszi, hogy az alkalmazások távolról is meghívják a függvényeket. Ezért az RPC olyan egyszerűvé teszi az IPC-t, mint egy függvény meghívása. Az RPC egyetlen számítógépen vagy a hálózat különböző számítógépein futó folyamatok között működik.
A Windows által biztosított RPC megfelel az Open Software Foundation (OSF) Distributed Computing Environment (DCE) szabványnak. Ez azt jelenti, hogy az RPC-t használó alkalmazások képesek kommunikálni a DCE-t támogató más operációs rendszerekkel futó alkalmazásokkal. Az RPC automatikusan támogatja az adatátalakítást a különböző hardverarchitektúrák és az eltérő környezetek közötti bájtsorrendezés érdekében.
Az RPC-ügyfelek és -kiszolgálók szorosan kapcsolódnak egymáshoz, de továbbra is magas teljesítményt tartanak fenn. A rendszer széles körben használja az RPC-t az operációs rendszer különböző részei közötti ügyfél-kiszolgáló kapcsolat megkönnyítésére.
Kulcspont: RPC egy függvényszintű felület, amely támogatja az automatikus adatátalakítást és a más operációs rendszerekkel folytatott kommunikációt. Az RPC használatával nagy teljesítményű, szorosan összekapcsolt elosztott alkalmazásokat hozhat létre. További információ: Microsoft RPC-összetevők.
A Windows Sockets for IPC használata
A Windows Sockets protokollfüggetlen felület. Kihasználja a mögöttes protokollok kommunikációs képességeit. A Windows Sockets 2-ben a szoftvercsatorna-leíró opcionálisan használható a standard fájl I/O-függvényekkel rendelkező fájlleíróként.
A Windows-szoftvercsatornák a Berkeley Software Distribution (BSD) által elsőként népszerűsített szoftvercsatornákon alapulnak. A Windows-szoftvercsatornákat használó alkalmazások más szoftvercsatornákkal kommunikálhatnak más típusú rendszereken. Azonban nem minden közlekedési szolgáltató támogatja az összes rendelkezésre álló lehetőséget.
Kulcspont: Windows Sockets egy protokollfüggetlen felület, amely képes támogatni az aktuális és újonnan megjelenő hálózati képességeket. További információ: Windows Sockets 2.
A Unix-szoftvercsatorna (AF_UNIX) függvény a Windowsban
A Windows Insider 17063-es buildjétől kezdve a Windows unix szoftvercsatornás (AF_UNIX) címcsaládját használhatja a Win32-folyamatok közötti kommunikációhoz. A Unix-szoftvercsatornák lehetővé teszik a folyamatok közötti kommunikációt (IPC) ugyanazon a gépen. További információkért lásd a blogbejegyzést, AF_UNIX a Windows.
A Remote Mailslot protokoll elavulása
A Windows 11 Insider Preview Build 25314-et és a Windows Server Preview Build 25314-et tekintve alapértelmezés szerint letiltottuk a Remote Mailslot protokollt. Ez az elavulás és a Windows végleges eltávolítása előfutára. További információkért lásd a blogbejegyzést A Távoli levelek vége vége a Windows Insiderrészeként.