Megosztás a következőn keresztül:


Folyamatközi kommunikáció (IPC)

Ez a témakör az univerzális Windows-platform (UWP) és a Win32-alkalmazások közötti folyamatközi kommunikáció (IPC) különböző módjait ismerteti.

Alkalmazásszolgáltatások

Az appszolgáltatások lehetővé teszik az alkalmazások számára, hogy olyan szolgáltatásokat tegyenek elérhetővé, amelyek a háttérben elfogadják és visszaadják a primitívek tulajdonságcsomagjait (ValueSet). Gazdag objektumok akkor továbbíthatók, ha szerializált.

Az alkalmazásszolgáltatások futtathatók háttérfeladatként vagy az előtérben futó alkalmazáson belül.

Az alkalmazásszolgáltatások kis mennyiségű adat megosztására használhatók, ahol nincs szükség közel valós idejű késésre.

COM

A COM egy elosztott objektumorientált rendszer bináris szoftverkomponensek létrehozására, amelyek képesek interakcióba lépni és kommunikálni. Fejlesztőként a COM használatával hozhat létre újrahasználható szoftverösszetevőket és automatizálási rétegeket egy alkalmazáshoz. A COM-összetevők lehetnek folyamatban vagy folyamaton kívül, és ügyfél- és kiszolgálómodellen keresztül kommunikálhatnak. A folyamaton kívüli COM-kiszolgálókat régóta használják objektumközi kommunikációra.

A runFullTrust képességgel rendelkező csomagolt alkalmazások a csomagjegyzéken keresztül regisztrálhatnak folyamaton kívüli COM-kiszolgálókat az IPC-hez. Ezt csomagolt COM-nak nevezzük.

Fájlrendszer

SzélesKörűFájlrendszerHozzáférés

A csomagolt alkalmazások a broadFileSystemAccess korlátozott képesség deklarálásával a széles fájlrendszer használatával végezhetnek IPC-t. Ez a képesség hozzáférést biztosít a Windows.Storage API-khoz és az xxxFromApp Win32 API-khoz a széles fájlrendszerhez.

Alapértelmezés szerint a csomagolt alkalmazások fájlrendszeren keresztüli IPC-jének korlátozása az ebben a szakaszban ismertetett egyéb mechanizmusokra korlátozódik.

PublisherCacheFolder

A PublisherCacheFolder lehetővé teszi, hogy a csomagolt alkalmazások deklarálják a jegyzékben lévő mappákat, amelyeket ugyanaz a közzétevő megoszthat más csomagokkal.

A megosztott tármappa a következő követelményekkel és korlátozásokkal rendelkezik:

  • A megosztott tárhelyen lévő adatokról nem készül biztonsági másolat, és nem vándorolnak.
  • A felhasználó törölheti a megosztott tármappa tartalmát.
  • A megosztott tármappával nem oszthat meg adatokat a különböző közzétevők alkalmazásaiban.
  • A megosztott tármappával nem oszthat meg adatokat a különböző felhasználók között.
  • A megosztott tármappa nem rendelkezik verziókezeléssel.

Ha több alkalmazást tesz közzé, és egy egyszerű mechanizmust keres az adatok megosztására közöttük, akkor a PublisherCacheFolder egy egyszerű fájlrendszer-alapú lehetőség.

MegosztottHozzáférésTárolásKezelő

A SharedAccessStorageManager az App-szolgáltatásokkal, protokollaktiválásokkal (például LaunchUriForResultsAsync) stb. együtt használható a StorageFiles tokeneken keresztüli megosztásához.

FullTrustProcessLauncher (Teljes megbízhatóságú folyamatindító)

A runFullTrust funkcióval a csomagolt alkalmazások teljes megbízhatósági folyamatokat indíthatnak el ugyanabban a csomagban.

Azokban az esetekben, amikor a csomagkorlátozások terhet jelentenek, vagy az IPC-lehetőségek hiányoznak, az alkalmazások proxyként teljes megbízhatósági folyamatot használhatnak a rendszerhez való kapcsolódáshoz, majd magát az IPC-t a teljes megbízhatósági folyamattal az App Servicesen vagy más jól támogatott IPC-mechanizmuson keresztül.

LaunchUriForResultsAsync

A LaunchUriForResultsAsync egyszerű (ValueSet) adatcserére szolgál a ProtocolForResults aktiválási szerződést megvalósító más csomagolt alkalmazásokkal. Ellentétben az App Services szolgáltatásokkal, amelyek általában a háttérben futnak, a célalkalmazás az előtérben indul el.

A fájlok megoszthatók úgy, hogy a SharedStorageAccessManager tokeneket a ValueSeten keresztül átadjuk az alkalmazásnak.

Visszacsatolási

A visszacsatolás a helyi állomáson (a visszacsatolási címen) figyelő hálózati kiszolgálóval való kommunikáció folyamata.

A biztonság és a hálózatelkülönítés fenntartása érdekében az IPC-hez tartozó visszacsatolási kapcsolatok alapértelmezés szerint le vannak tiltva a csomagolt alkalmazások esetében. Képességek és jegyzéktulajdonságok használatával engedélyezheti a visszacsatolási kapcsolatokat a megbízható csomagolt alkalmazások között.

  • A visszacsatolási kapcsolatokban részt vevő összes csomagolt alkalmazásnak deklarálnia kell a képességet a privateNetworkClientServercsomagjegyzékekben.
  • Két csomagolt alkalmazás visszacsatolással kommunikálhat azzal, hogy saját csomagjegyzékükben deklarálják a LoopbackAccessRules-t.
    • Minden alkalmazásnak fel kell sorolnia a másikat a LoopbackAccessRulesben. Az ügyfél "out" szabályt deklarál a kiszolgálóhoz, a kiszolgáló pedig "in" szabályokat deklarál a támogatott ügyfelek számára.

Megjegyzés:

A szabályokban szereplő alkalmazások azonosításához szükséges csomagcsalád neve a Visual Studio csomagjegyzék-szerkesztőjében található a fejlesztési idő alatt, a Partnerközponton keresztül a Microsoft Store áruházban közzétett alkalmazásokhoz, vagy a Get-AppxPackage PowerShell parancson keresztül a már telepített alkalmazásokhoz.

A csomagolatlan alkalmazások és szolgáltatások nem rendelkeznek csomagidentitással, ezért nem deklarálhatók a LoopbackAccessRulesben. A csomagolt alkalmazásokat úgy konfigurálhatja, hogy visszacsatoláson keresztül csatlakozzanak a kicsomagolt alkalmazásokhoz és szolgáltatásokhoz aCheckNetIsolation.exekeresztül, de ez csak olyan mellékbetöltési vagy hibakeresési helyzetekben lehetséges, ahol helyi hozzáféréssel rendelkezik a géphez, és rendszergazdai jogosultságokkal rendelkezik.

  • A visszacsatolási kapcsolatokban részt vevő összes csomagolt alkalmazásnak deklarálnia kell a képességet a privateNetworkClientServercsomagjegyzékekben.
  • Ha egy csomagolt alkalmazás csomagolatlan alkalmazáshoz vagy szolgáltatáshoz csatlakozik, futtassa CheckNetIsolation.exe LoopbackExempt -a -n=<PACKAGEFAMILYNAME> a visszacsatolási kivétel hozzáadását a csomagolt alkalmazáshoz.
  • Ha egy csomagolatlan alkalmazás vagy szolgáltatás egy csomagolt alkalmazáshoz csatlakozik, futtassa CheckNetIsolation.exe LoopbackExempt -is -n=<PACKAGEFAMILYNAME> , hogy a csomagolt alkalmazás bejövő visszacsatolási kapcsolatokat fogadhasson.
    • CheckNetIsolation.exe folyamatosan futnia kell, amíg a csomagolt alkalmazás figyeli a kapcsolatokat.
    • A -is jelző bevezetésre került a Windows 10 1607-es verziójában (10.0; Build 14393).

Megjegyzés:

A -n jelzőjéhez szükséges csomagcsalád neve a Visual Studio csomagjegyzék-szerkesztőjében található a fejlesztési idő alatt, a Partnerközponton keresztül a Microsoft Store áruházban közzétett alkalmazásokhoz, vagy a Get-AppxPackage PowerShell parancson keresztül a már telepített alkalmazásokhoz.

CheckNetIsolation.exe a hálózatelkülönítési problémák hibakereséséhez is hasznos.

Csövek

A csövek egyszerű kommunikációt tesznek lehetővé egy csőkiszolgáló és egy vagy több cső-ügyfél között.

A névtelen csöveket és a nevesített csöveket a következő korlátozások támogatják:

  • Alapértelmezés szerint a csomagolt alkalmazásokban lévő elnevezett csövek csak az ugyanazon a csomagon belüli folyamatok között támogatottak, kivéve, ha egy folyamat teljes megbízhatóságú.
  • A nevesített csövek a megnevezett objektumok megosztására vonatkozó irányelveknek megfelelően oszthatók meg a csomagok között.
  • A nevesített csöveknek (csomagolt és csomagolatlan alkalmazásokban) a csőnév szintaxisát \\.\pipe\LOCAL\ kell használniuk.

Nyilvántartás

Az IPC beállításjegyzék használata általában nem ajánlott, viszont meglévő kódok esetében elfogadott. A csomagolt alkalmazások csak azokhoz a beállításkulcsokhoz férhetnek hozzá, amelyekhez hozzáféréssel rendelkeznek.

A csomagolt asztali alkalmazások (lásd: MSIX-csomag létrehozása a kódból) általában a beállításjegyzék virtualizálását használják, hogy a globális beállításjegyzék-írások az MSIX-csomagban lévő privát hive-ben legyenek tárolva. Ez lehetővé teszi a forráskódok kompatibilitását, miközben minimalizálja a globális beállításjegyzékre gyakorolt hatást, és IPC-hez használható az ugyanabban a csomagban lévő folyamatok között. Ha a beállításjegyzéket kell használnia, ezt a modellt részesíti előnyben a globális beállításjegyzék módosítása helyett.

RPC

Az RPC használható a csomagolt alkalmazások Win32 RPC-végponthoz való csatlakoztatásához, feltéve, hogy a csomagolt alkalmazás megfelelő képességekkel rendelkezik az RPC-végpont ACL-einek megfelelően.

Az egyéni képességek lehetővé teszik az OEM-ek és az IHV-k számára, hogy tetszőleges képességeket definiáljanak, ACL-megoldásokat alkalmazzanak RPC végpontjaikon ezekkel, majd adják meg ezeket a képességeket az engedélyezett ügyfélalkalmazások számára. A teljes mintaalkalmazásért tekintse meg a CustomCapability mintát.

Az RPC-végpontok ACLed típusúak is lehetnek adott csomagolt alkalmazásokhoz, így a végponthoz való hozzáférés csak ezekre az alkalmazásokra korlátozható anélkül, hogy az egyéni képességek felügyeleti többletterhelése kellene. A DeriveAppContainerSidFromAppContainerName API-val levezethet egy SID-et egy csomagcsalád nevéből, majd az CustomCapability mintában látható módon az RPC-végpontra alkalmazhatja az ACL-t a SID segítségével.

Megosztott memória

A fájlleképezéssel megoszthat egy fájlt vagy memóriát két vagy több folyamat között az alábbi korlátozásokkal:

  • Alapértelmezés szerint a csomagolt alkalmazások fájlleképezései csak az ugyanabban a csomagban lévő folyamatok között támogatottak, kivéve, ha egy folyamat teljes megbízhatóságú.
  • A fájlleképezések a megnevezett objektumok megosztására vonatkozó irányelveket követve oszthatók meg a csomagok között.

A megosztott memória nagy mennyiségű adat hatékony megosztásához és manipulálásához ajánlott.