Share via


Jenis-jenis isolasi

Akses ke penyimpanan yang terisolasi selalu dibatasi untuk pengguna yang membuatnya. Untuk mengimplementasikan jenis isolasi ini, runtime bahasa umum menggunakan gagasan yang sama tentang identitas pengguna yang dikenali sistem operasi, yang merupakan identitas yang terkait dengan proses di mana kode berjalan saat penyimpanan dibuka. Identitas ini adalah identitas pengguna yang diautentikasi, tetapi peniruan identitas dapat menyebabkan identitas pengguna saat ini berubah secara dinamis.

Akses ke penyimpanan terisolasi juga dibatasi sesuai dengan identitas yang terkait dengan domain dan rakitan aplikasi, atau dengan rakitan saja. Runtime memperoleh identitas ini dengan cara berikut:

  • Identitas domain mewakili bukti aplikasi, dalam kasus aplikasi web mungkin merupakan URL yang lengkap. Untuk kode yang dihosting-shell, identitas domain mungkin didasarkan pada jalur direktori aplikasi. Misalnya, jika yang dapat dieksekusi berjalan dari jalur C:\Office\MyApp.exe, identitas domain akan berupa C:\Office\MyApp.exe.

  • Identitas rakitan adalah bukti rakitan. Ini mungkin berasal dari tanda tangan digital kriptografi, yang dapat menjadi nama yang kuat milik rakitan, penerbit perangkat lunak rakitan, atau identitas URLnya. Jika rakitan memiliki nama yang kuat dan identitas penerbit perangkat lunak, identitas penerbit perangkat lunak yang akan digunakan. Jika rakitan berasal dari Internet dan tidak ditandatangani, identitas URL yang akan digunakan. Untuk informasi selengkapnya tentang rakitan dan nama yang kuat, lihat Pemrograman dengan Rakitan.

  • Penyimpanan roaming berpindah dengan pengguna yang memiliki profil pengguna roaming. File ditulis ke direktori jaringan, dan diunduh ke komputer mana pun tempat pengguna masuk. Untuk informasi selengkapnya tentang profil pengguna roaming, lihat IsolatedStorageScope.Roaming.

Dengan menggabungkan konsep identitas pengguna, domain, dan rakitan, penyimpanan yang terisolasi dapat mengisolasi data dengan cara berikut, yang masing-masing memiliki skenario penggunaannya sendiri:

Salah satu isolasi ini dapat dikombinasikan dengan profil pengguna roaming. Untuk informasi selengkapnya, lihat bagian Penyimpanan Terisolasi dan Roaming.

Ilustrasi berikut menunjukkan bagaimana penyimpanan diisolasi di dalam cakupan yang berbeda:

Diagram that shows isolation by user and assembly.

Kecuali untuk penyimpanan roaming, penyimpanan terisolasi selalu secara implisit diisolasi oleh komputer karena menggunakan fasilitas penyimpanan bersifat lokal ke komputer tertentu.

Penting

Penyimpanan terisolasi tidak tersedia untuk aplikasi Store Windows 8.x. Sebagai gantinya, gunakan kelas data aplikasi di namespace Windows.Storage yang disertakan dalam API Runtime Windows untuk menyimpan data dan file lokal. Untuk informasi selengkapnya, lihat Data aplikasi di Windows Dev Center.

Isolasi oleh Pengguna dan Rakitan

Ketika rakitan yang menggunakan penyimpanan data harus dapat diakses dari domain aplikasi apa pun, isolasi oleh pengguna dan rakitan sesuai. Biasanya, dalam situasi ini, penyimpanan terisolasi digunakan untuk menyimpan data yang berlaku di beberapa aplikasi dan tidak terkait dengan aplikasi tertentu, seperti nama pengguna atau informasi lisensi. Untuk mengakses penyimpanan yang diisolasi oleh pengguna dan rakitan, kode harus dipercaya untuk mentransfer informasi antar aplikasi. Biasanya, isolasi oleh pengguna dan rakitan diizinkan pada intranet, tetapi tidak di Internet. Memanggil metode statis IsolatedStorageFile.GetStore dan meneruskan pengguna dan rakitan IsolatedStorageScope mengembalikan penyimpanan dengan isolasi semacam ini.

Contoh kode berikut ini mengambil penyimpanan yang diisolasi oleh pengguna dan rakitan. Penyimpanan dapat diakses melalui objek isoFile.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
    IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly, Nothing, Nothing)

Untuk contoh yang menggunakan parameter bukti, lihat GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type).

Metode GetUserStoreForAssembly ini tersedia sebagai pintasan, seperti yang ditunjukkan di dalam contoh kode berikut. Pintasan ini tidak dapat digunakan untuk membuka toko yang mampu menjelajah; gunakan GetStore dalam kasus seperti itu.

IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForAssembly();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForAssembly();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForAssembly()

Isolasi oleh Pengguna, Domain, dan Rakitan

Jika aplikasi Anda menggunakan rakitan pihak-ketiga yang memerlukan penyimpanan data privat, Anda dapat menggunakan penyimpanan terisolasi untuk menyimpan data privat. Isolasi oleh pengguna, domain, dan rakitan memastikan bahwa hanya kode dalam rakitan tertentu yang dapat mengakses data, dan hanya ketika rakitan digunakan oleh aplikasi yang berjalan saat rakitan membuat penyimpanan, dan hanya ketika pengguna yang penyimpanannya dibuat menjalankan aplikasi. Isolasi oleh pengguna, domain, dan rakitan menjaga perakitan pihak-ketiga agar tidak membocorkan data ke aplikasi lain. Jenis isolasi ini harus menjadi pilihan default jika Anda tahu ingin menggunakan penyimpanan terisolasi, tetapi tidak yakin jenis isolasi mana yang akan digunakan. Memanggil metode GetStore statis IsolatedStorageFile dan meneruskan ke dalam pengguna, domain, dan rakitan IsolatedStorageScope mengembalikan penyimpanan dengan isolasi semacam ini.

Contoh kode berikut ini mengambil penyimpanan yang diisolasi oleh pengguna, domain, dan rakitan. Penyimpanan dapat diakses melalui objek isoFile.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Domain |
        IsolatedStorageScope::Assembly, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Domain |
        IsolatedStorageScope.Assembly, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Domain Or _
        IsolatedStorageScope.Assembly, Nothing, Nothing)

Metode lainnya tersedia sebagai pintasan, seperti yang ditunjukkan di dalam contoh kode berikut. Pintasan ini tidak dapat digunakan untuk membuka toko yang mampu menjelajah; gunakan GetStore dalam kasus seperti itu.

IsolatedStorageFile^ isoFile = IsolatedStorageFile::GetUserStoreForDomain();
IsolatedStorageFile isoFile = IsolatedStorageFile.GetUserStoreForDomain();
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetUserStoreForDomain()

Penyimpanan Terisolasi dan Roaming

Profil pengguna roaming adalah fitur Windows yang memungkinkan pengguna menyiapkan identitas di jaringan dan menggunakan identitas tersebut untuk masuk ke komputer jaringan apa pun, membawa semua pengaturan yang dipersonalisasi. Rakitan yang menggunakan penyimpanan terisolasi dapat menentukan bahwa penyimpanan terisolasi pengguna harus bergerak dengan profil pengguna roaming. Roaming dapat digunakan bersama dengan isolasi oleh pengguna dan rakitan, atau dengan isolasi oleh pengguna, domain, dan rakitan. Jika cakupan roaming tidak digunakan, penyimpanan tidak akan menjelajah meskipun profil pengguna roaming sedang digunakan.

Contoh kode berikut ini mengambil penyimpanan yang diisolasi oleh pengguna, domain, dan rakitan. Penyimpanan dapat diakses melalui objek isoFile.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly |
        IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Assembly |
        IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly Or _
        IsolatedStorageScope.Roaming, Nothing, Nothing)

Cakupan domain dapat ditambahkan untuk membuat penyimpanan roaming yang diisolasi oleh pengguna, domain, dan aplikasi. Contoh kode berikut menunjukkan hal ini.

IsolatedStorageFile^ isoFile =
    IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
        IsolatedStorageScope::Assembly | IsolatedStorageScope::Domain |
        IsolatedStorageScope::Roaming, (Type^)nullptr, (Type^)nullptr);
IsolatedStorageFile isoFile =
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
        IsolatedStorageScope.Assembly | IsolatedStorageScope.Domain |
        IsolatedStorageScope.Roaming, null, null);
Dim isoFile As IsolatedStorageFile = _
    IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
        IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain Or _
        IsolatedStorageScope.Roaming, Nothing, Nothing)

Lihat juga