Udostępnij za pośrednictwem


Typy izolacji

Dostęp do izolowanego magazynu jest zawsze ograniczony do użytkownika, który go utworzył. Aby zaimplementować ten typ izolacji, środowisko uruchomieniowe języka wspólnego używa tego samego pojęcia tożsamości użytkownika rozpoznawanej przez system operacyjny, czyli tożsamości skojarzonej z procesem, w którym kod jest uruchamiany podczas otwierania magazynu. Ta tożsamość jest uwierzytelnianą tożsamością użytkownika, ale personifikacja może spowodować dynamiczne zmianę tożsamości bieżącego użytkownika.

Dostęp do izolowanego magazynu jest również ograniczony zgodnie z tożsamością skojarzona z domeną i zestawem aplikacji lub tylko z zestawem. Środowisko uruchomieniowe uzyskuje te tożsamości w następujący sposób:

  • Tożsamość domeny reprezentuje dowód aplikacji, która w przypadku aplikacji internetowej może być pełnym adresem URL. W przypadku kodu hostowanego w powłoce tożsamość domeny może być oparta na ścieżce katalogu aplikacji. Jeśli na przykład plik wykonywalny zostanie uruchomiony ze ścieżki C:\Office\MyApp.exe, tożsamość domeny to C:\Office\MyApp.exe.

  • Tożsamość zestawu jest dowodem na zestaw. Może to pochodzić z kryptograficznego podpisu cyfrowego, który może być silną nazwą zestawu, wydawcą oprogramowania zestawu lub tożsamością adresu URL. Jeśli zestaw ma zarówno silną nazwę, jak i tożsamość wydawcy oprogramowania, zostanie użyta tożsamość wydawcy oprogramowania. Jeśli zestaw pochodzi z Internetu i jest niepodpisany, używana jest tożsamość adresu URL. Aby uzyskać więcej informacji na temat zestawów i silnych nazw, zobacz Programowanie przy użyciu zestawów.

  • Magazyny mobilne są przenoszone z użytkownikiem, który ma profil użytkownika mobilnego. Pliki są zapisywane w katalogu sieciowym i są pobierane na dowolny komputer, do którego loguje się użytkownik. Aby uzyskać więcej informacji na temat profilów użytkowników mobilnych, zobacz IsolatedStorageScope.Roaming.

Łącząc pojęcia dotyczące tożsamości użytkownika, domeny i zestawu, izolowany magazyn może izolować dane na następujące sposoby, z których każdy ma własne scenariusze użycia:

Jedną z tych izolacji można połączyć z profilem użytkownika mobilnego. Aby uzyskać więcej informacji, zobacz sekcję Izolowany magazyn i roaming.

Na poniższej ilustracji pokazano, jak magazyny są izolowane w różnych zakresach:

Diagram that shows isolation by user and assembly.

Z wyjątkiem magazynów mobilnych izolowany magazyn jest zawsze niejawnie izolowany przez komputer, ponieważ korzysta z obiektów magazynu lokalnych dla danego komputera.

Ważne

Izolowany magazyn nie jest dostępny dla aplikacji ze Sklepu Windows 8.x. Zamiast tego użyj klas danych aplikacji w Windows.Storage przestrzeniach nazw zawartych w interfejsie API środowisko wykonawcze systemu Windows do przechowywania lokalnych danych i plików. Aby uzyskać więcej informacji, zobacz Dane aplikacji w Centrum deweloperów systemu Windows.

Izolacja według użytkownika i zestawu

Gdy zestaw korzystający z magazynu danych musi być dostępny z dowolnej domeny aplikacji, izolacja według użytkownika i zestawu jest odpowiednia. Zazwyczaj w takiej sytuacji izolowany magazyn jest używany do przechowywania danych stosowanych w wielu aplikacjach i nie jest powiązany z żadną konkretną aplikacją, taką jak nazwa użytkownika lub informacje o licencji. Aby uzyskać dostęp do magazynu izolowanego przez użytkownika i zestaw, kod musi być zaufany, aby przesyłać informacje między aplikacjami. Zazwyczaj izolacja przez użytkownika i zestaw jest dozwolona w intranecie, ale nie w Internecie. Wywołanie metody statycznej IsolatedStorageFile.GetStore i przekazanie użytkownika i zestawu IsolatedStorageScope zwraca magazyn z tego rodzaju izolacją.

Poniższy przykład kodu pobiera magazyn, który jest izolowany przez użytkownika i zestaw. Dostęp do magazynu można uzyskać za pośrednictwem isoFile obiektu .

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)

Aby zapoznać się z przykładem, który używa parametrów dowodów, zobacz GetStore(IsolatedStorageScope, Evidence, Type, Evidence, Type).

Metoda GetUserStoreForAssembly jest dostępna jako skrót, jak pokazano w poniższym przykładzie kodu. Tego skrótu nie można używać do otwierania sklepów, które są w stanie roamingu; w GetStore takich przypadkach.

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

Izolacja według użytkownika, domeny i zestawu

Jeśli aplikacja używa zestawu innej firmy, który wymaga prywatnego magazynu danych, możesz użyć izolowanego magazynu do przechowywania danych prywatnych. Izolacja według użytkownika, domeny i zestawu gwarantuje, że tylko kod w danym zestawie może uzyskać dostęp do danych i tylko wtedy, gdy zestaw jest używany przez aplikację, która była uruchomiona podczas tworzenia zestawu, i tylko wtedy, gdy użytkownik, dla którego magazyn został utworzony, uruchamia aplikację. Izolacja według użytkownika, domeny i zestawu zapewnia, że zestaw innej firmy nie wycieka danych do innych aplikacji. Ten typ izolacji powinien być domyślnym wyborem, jeśli wiesz, że chcesz używać izolowanego magazynu, ale nie masz pewności, jakiego typu izolacji użyć. Wywołanie metody statycznej GetStoreIsolatedStorageFile metody i przekazanie użytkownika, domeny i zestawu IsolatedStorageScope zwraca magazyn z tego rodzaju izolacji.

Poniższy przykład kodu pobiera magazyn izolowany przez użytkownika, domenę i zestaw. Dostęp do magazynu można uzyskać za pośrednictwem isoFile obiektu .

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)

Inna metoda jest dostępna jako skrót, jak pokazano w poniższym przykładzie kodu. Tego skrótu nie można używać do otwierania sklepów, które są w stanie roamingu; w GetStore takich przypadkach.

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

Izolowany magazyn i roaming

Profile użytkowników mobilnych to funkcja systemu Windows, która umożliwia użytkownikowi skonfigurowanie tożsamości w sieci i użycie tej tożsamości do logowania się na dowolnym komputerze sieciowym, przenosząc wszystkie spersonalizowane ustawienia. Zestaw korzystający z izolowanego magazynu może określić, że izolowany magazyn użytkownika powinien zostać przeniesiony z profilem użytkownika mobilnego. Roaming może być używany w połączeniu z izolacją przez użytkownika i zestaw lub izolację według użytkownika, domeny i zestawu. Jeśli zakres roamingu nie jest używany, sklepy nie będą wędrować nawet wtedy, gdy jest używany profil użytkownika mobilnego.

Poniższy przykład kodu pobiera magazyn mobilny izolowany przez użytkownika i zestaw. Dostęp do magazynu można uzyskać za pośrednictwem isoFile obiektu .

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)

Zakres domeny można dodać w celu utworzenia magazynu mobilnego izolowanego przez użytkownika, domenę i aplikację. W poniższym przykładzie kodu pokazano to.

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)

Zobacz też