Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini menjelaskan berbagai cara untuk melakukan komunikasi antarproseksi (IPC) antara aplikasi Universal Windows Platform (UWP) dan aplikasi Win32.
Layanan aplikasi
Layanan aplikasi memungkinkan aplikasi untuk mengekspos layanan yang menerima dan mengembalikan sekumpulan properti primitif (ValueSet) di latar belakang. Objek kaya dapat diteruskan jika serial.
Layanan aplikasi dapat berjalan di luar proses sebagai tugas latar belakang, atau berjalan dalam proses dalam aplikasi utama.
Layanan aplikasi paling baik digunakan untuk berbagi data dalam jumlah kecil di mana latensi mendekati real-time tidak diperlukan.
COM
COM adalah sistem berorientasi objek terdistribusi untuk membuat komponen perangkat lunak biner yang dapat berinteraksi dan berkomunikasi. Sebagai pengembang, Anda menggunakan COM untuk membuat komponen perangkat lunak dan lapisan otomatisasi yang dapat digunakan kembali untuk aplikasi. Komponen COM dapat dalam proses atau di luar proses, dan mereka dapat berkomunikasi melalui model klien dan server . Server COM di luar proses telah lama digunakan sebagai sarana untuk komunikasi antar objek.
Aplikasi yang dikemas dengan kemampuan runFullTrust
Sistem file
Akses BroadFileSystem
Aplikasi paket dapat melakukan IPC menggunakan akses luas ke sistem file dengan menyatakan kapabilitas terbatas broadFileSystemAccess. Kemampuan ini memberikan akses API Windows.Storage dan API xxxFromApp Win32 ke sistem file yang luas.
Secara default, IPC melalui sistem file untuk aplikasi paket dibatasi untuk mekanisme lain yang dijelaskan di bagian ini.
PublisherCacheFolder
PublisherCacheFolder memungkinkan aplikasi yang dikemas untuk mendeklarasikan folder dalam manifesnya yang dapat dibagikan dengan paket lain oleh penerbit yang sama.
Folder penyimpanan bersama memiliki persyaratan dan batasan berikut:
- Data dalam folder penyimpanan bersama tidak dicadangkan atau disinkronkan.
- Pengguna dapat menghapus konten folder penyimpanan bersama.
- Anda tidak dapat menggunakan folder penyimpanan bersama untuk berbagi data di antara aplikasi dari penerbit yang berbeda.
- Anda tidak dapat menggunakan folder penyimpanan bersama untuk berbagi data di antara pengguna yang berbeda.
- Folder penyimpanan bersama tidak memiliki manajemen versi.
Jika Anda menerbitkan beberapa aplikasi dan mencari mekanisme sederhana untuk berbagi data di antaranya, maka PublisherCacheFolder adalah opsi berbasis sistem file sederhana.
SharedAccessStorageManager
SharedAccessStorageManager digunakan bersama dengan layanan Aplikasi, aktivasi protokol (misalnya, LaunchUriForResultsAsync), dll., untuk berbagi StorageFiles melalui token.
Peluncur Proses Kepercayaan Penuh
Dengan kemampuan runFullTrust , aplikasi yang dipaketkan dapat meluncurkan proses kepercayaan penuh dalam paket yang sama.
Untuk skenario di mana pembatasan paket adalah beban, atau opsi IPC kurang, aplikasi dapat menggunakan proses kepercayaan penuh sebagai proksi untuk berinteraksi dengan sistem, dan kemudian IPC dengan proses kepercayaan penuh itu sendiri melalui layanan Aplikasi atau beberapa mekanisme IPC lain yang didukung dengan baik.
LaunchUriForResultsAsync
LaunchUriForResultsAsync digunakan untuk pertukaran data sederhana (ValueSet) dengan aplikasi paket lainnya yang menerapkan kontrak aktivasi ProtocolForResults . Tidak seperti layanan Aplikasi, yang biasanya berjalan di latar belakang, aplikasi target diluncurkan di latar depan.
File dapat dibagikan dengan meneruskan token SharedStorageAccessManager ke aplikasi melalui ValueSet.
Loopback
Loopback adalah proses berkomunikasi dengan server jaringan yang mendengarkan di localhost (alamat loopback).
Untuk menjaga keamanan dan isolasi jaringan, koneksi loopback untuk IPC diblokir secara default untuk aplikasi paket. Anda dapat mengaktifkan koneksi loopback antara aplikasi paket tepercaya dengan menggunakan kemampuan dan properti manifes.
- Semua aplikasi paket yang berpartisipasi dalam koneksi loopback perlu mendeklarasikan
privateNetworkClientServerkemampuan dalam manifes paket mereka. - Dua aplikasi yang dikemas dapat berkomunikasi melalui loopback dengan mendeklarasikan LoopbackAccessRules dalam manifes paket mereka.
- Setiap aplikasi harus mencantumkan yang lain dalam LoopbackAccessRules-nya. Klien menetapkan Aturan "keluar" untuk server, dan server menetapkan Aturan "masuk" untuk klien yang didukungnya.
Nota
Nama keluarga paket yang diperlukan untuk mengidentifikasi aplikasi dalam Aturan ini dapat ditemukan melalui editor manifes paket di Visual Studio selama waktu pengembangan, melalui Pusat Mitra untuk aplikasi yang diterbitkan melalui Microsoft Store, atau melalui perintah Get-AppxPackage PowerShell untuk aplikasi yang sudah diinstal.
Aplikasi dan layanan yang tidak dikemas tidak memiliki identitas paket, sehingga tidak dapat dideklarasikan dalam LoopbackAccessRules. Anda dapat mengonfigurasi aplikasi paket untuk terhubung melalui loopback dengan aplikasi dan layanan yang tidak dikemas melalui CheckNetIsolation.exe, namun ini hanya dimungkinkan untuk skenario sideload atau penelusuran kesalahan di mana Anda memiliki akses lokal ke mesin, dan Anda memiliki hak istimewa administrator.
- Semua aplikasi paket yang berpartisipasi dalam koneksi loopback perlu mendeklarasikan
privateNetworkClientServerkemampuan dalam manifes paket mereka. - Jika aplikasi paket tersambung ke aplikasi atau layanan yang tidak dikemas, jalankan
CheckNetIsolation.exe LoopbackExempt -a -n=<PACKAGEFAMILYNAME>untuk menambahkan pengecualian loopback untuk aplikasi yang dikemas. - Jika aplikasi atau layanan yang tidak dikemas tersambung ke aplikasi yang dikemas, jalankan
CheckNetIsolation.exe LoopbackExempt -is -n=<PACKAGEFAMILYNAME>untuk mengaktifkan aplikasi yang dikemas untuk menerima koneksi loopback masuk.- CheckNetIsolation.exe harus berjalan terus menerus saat aplikasi yang dikemas menunggu koneksi.
- Bendera
-isdiperkenalkan di Windows 10, versi 1607 (10.0; Bangun 14393).
Nota
Nama keluarga paket yang diperlukan untuk -n bendera CheckNetIsolation.exe dapat ditemukan melalui editor manifes paket di Visual Studio selama waktu pengembangan, melalui Pusat Mitra untuk aplikasi yang diterbitkan melalui Microsoft Store, atau melalui perintah Get-AppxPackage PowerShell untuk aplikasi yang sudah diinstal.
CheckNetIsolation.exe juga berguna untuk men-debug masalah isolasi jaringan.
Pipa
Pipa memungkinkan komunikasi sederhana antara server pipa dan satu atau beberapa klien pipa.
Pipa anonim dan pipa bernama didukung dengan batasan berikut:
- Secara default, pipa yang diberi nama dalam aplikasi yang dikemas didukung hanya untuk komunikasi antara proses di dalam paket yang sama, kecuali jika proses tersebut memiliki hak akses penuh.
- Pipa bernama dapat dibagikan di seluruh paket mengikuti panduan untuk berbagi objek bernama.
- Pipa bernama (dalam aplikasi yang dikemas dan yang tidak dikemas) harus menggunakan sintaksis
\\.\pipe\LOCAL\untuk nama pipanya.
Direktori
Penggunaan registri untuk IPC umumnya tidak dianjurkan, tetapi didukung untuk kode yang ada. Aplikasi paket hanya dapat mengakses kunci registri yang memiliki izin untuk diakses.
Umumnya, aplikasi desktop yang dipaketkan (lihat Membangun paket MSIX dari kode Anda) memanfaatkan virtualisasi registri sedih sehingga penulisan registri global dimuat ke sarang privat dalam paket MSIX. Ini memungkinkan kompatibilitas kode sumber sambil meminimalkan dampak registri global, dan dapat digunakan untuk IPC antara proses dalam paket yang sama. Jika Anda harus menggunakan registri, model ini lebih disukai dibandingkan memanipulasi registri global.
RPC
RPC dapat digunakan untuk menghubungkan aplikasi paket ke titik akhir Win32 RPC, asalkan aplikasi yang dikemas memiliki kemampuan yang benar untuk mencocokkan ACL pada titik akhir RPC.
Kemampuan kustom memungkinkan OEM dan IHV untuk menentukan kemampuan arbitrer, ACL titik akhir RPC mereka dengannya, lalu memberikan kemampuan tersebut ke aplikasi klien yang diotorisasi. Untuk aplikasi sampel lengkap, lihat sampel CustomCapability .
Titik akhir RPC juga dapat DIALOKASIKAN ke aplikasi paket tertentu untuk membatasi akses ke titik akhir hanya untuk aplikasi tersebut tanpa memerlukan overhead manajemen kemampuan kustom. Anda dapat menggunakan API DeriveAppContainerSidFromAppContainerName untuk mendapatkan SID dari nama keluarga paket aplikasi, kemudian mengatur ACL pada titik akhir RPC dengan SID seperti yang ditunjukkan dalam sampel CustomCapability.
Memori Bersama
Pemetaan file dapat digunakan untuk berbagi file atau memori antara dua proses atau lebih dengan batasan berikut:
- Secara bawaan, pemetaan file dalam aplikasi yang dipaketkan hanya didukung di antara proses dalam paket yang sama, kecuali jika sebuah proses memiliki tingkat kepercayaan penuh.
- Pemetaan file dapat dibagikan antar paket sesuai dengan panduan untuk berbagi objek bernama.
Memori bersama direkomendasikan untuk berbagi dan memanipulasi data dalam jumlah besar secara efisien.