Uzyskiwanie dostępu do danych lokalnych i zdalnych w aplikacjach ClickOnce

Dotyczy:yesnoVisual Studio Code Visual Studio Visual Studio dla komputerów Mac no

Większość aplikacji korzysta z danych lub generuje je. ClickOnce oferuje różne opcje odczytu i zapisywania danych, zarówno lokalnie, jak i zdalnie.

Dane lokalne

Za pomocą ClickOnce można ładować i przechowywać dane lokalnie przy użyciu dowolnej z następujących metod:

  • katalog danych ClickOnce

  • Izolowany magazyn

  • Inne pliki lokalne

katalog danych ClickOnce

Każda aplikacja ClickOnce zainstalowana na komputerze lokalnym ma katalog danych przechowywany w folderze Dokumenty i Ustawienia użytkownika. Wszystkie pliki zawarte w aplikacji ClickOnce i oznaczone jako "dane" są kopiowane do tego katalogu po zainstalowaniu aplikacji. Pliki danych mogą być dowolnego typu, najczęściej używane pliki tekstowe, XML i bazy danych, takie jak pliki mdb programu Microsoft Access.

Katalog danych jest przeznaczony dla danych zarządzanych przez aplikację, czyli danych, które aplikacja jawnie przechowuje i utrzymuje. Wszystkie statyczne pliki niezależności, które nie są oznaczone jako "dane" w manifeście aplikacji, będą zamiast tego znajdować się w katalogu aplikacji. W tym katalogu znajdują się pliki wykonywalne aplikacji (.exe) i zestawy.

Uwaga

Po odinstalowaniu aplikacji ClickOnce jej katalog danych jest również usuwany. Nigdy nie używaj katalogu danych do przechowywania danych zarządzanych przez użytkownika końcowego, takich jak dokumenty.

Oznaczanie plików danych w dystrybucji ClickOnce

Aby umieścić istniejący plik w katalogu danych, musisz oznaczyć istniejący plik jako plik danych w pliku manifestu aplikacji ClickOnce aplikacji. Aby uzyskać więcej informacji, zobacz How to: Include a data file in a ClickOnce application (Instrukcje: dołączanie pliku danych do aplikacji ClickOnce).

Odczytywanie i zapisywanie w katalogu danych

Odczyt z katalogu danych wymaga, aby aplikacja ClickOnce zażądała uprawnienia do odczytu. Podobnie zapis w katalogu wymaga uprawnień do zapisu. Aplikacja będzie automatycznie mieć to uprawnienie, jeśli jest skonfigurowane do uruchamiania z pełną relacją zaufania. Aby uzyskać więcej informacji o podniesieniu uprawnień dla aplikacji przy użyciu podniesienia uprawnień lub wdrożenia zaufanej aplikacji, zobacz Zabezpieczanie aplikacji ClickOnce.

Uwaga

Jeśli Twoja organizacja nie korzysta z wdrożenia zaufanej aplikacji i wyłączyła podniesienie uprawnień, potwierdzenie uprawnień zakończy się niepowodzeniem.

Gdy aplikacja ma te uprawnienia, może uzyskać dostęp do katalogu danych przy użyciu wywołań metody dla klas w ramach klasy System.IO. Ścieżkę katalogu danych można uzyskać w aplikacji Windows Forms ClickOnce przy użyciu DataDirectory właściwości zdefiniowanej ApplicationDeploymentwe CurrentDeployment właściwości . Jest to najwygodniejszy i zalecany sposób uzyskiwania dostępu do danych. W poniższym przykładzie kodu pokazano, jak to zrobić dla pliku tekstowego o nazwie CSV.txt uwzględnionego we wdrożeniu jako pliku danych.

if (ApplicationDeployment.IsNetworkDeployed)
{
    try
    {
        using (StreamReader sr = new StreamReader(ApplicationDeployment.CurrentDeployment.DataDirectory + @"\CSV.txt"))
        {
            MessageBox.Show(sr.ReadToEnd());
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Could not read file. Error message: " + ex.Message);
    }
}

Aby uzyskać więcej informacji na temat oznaczania plików we wdrożeniu jako plików danych, zobacz Instrukcje: dołączanie pliku danych do aplikacji ClickOnce.

Ścieżkę katalogu danych można również uzyskać przy użyciu odpowiednich zmiennych w Application klasie, takich jak LocalUserAppDataPath.

Manipulowanie innymi typami plików może wymagać dodatkowych uprawnień. Jeśli na przykład chcesz użyć pliku bazy danych programu Access (mdb), aplikacja musi potwierdzić pełne zaufanie, aby używać odpowiednich <klas xref:System.Data> .

Wersje katalogu danych i aplikacji

Każda wersja aplikacji ma własny katalog danych, który jest odizolowany od innych wersji. ClickOnce tworzy ten katalog niezależnie od tego, czy jakiekolwiek pliki danych są uwzględnione we wdrożeniu, tak aby aplikacja mogła tworzyć nowe pliki danych w czasie wykonywania. Po zainstalowaniu nowej wersji aplikacji ClickOnce skopiuje wszystkie istniejące pliki danych z katalogu danych poprzedniej wersji do katalogu danych nowej wersji — niezależnie od tego, czy zostały uwzględnione w oryginalnym wdrożeniu, czy utworzone przez aplikację.

ClickOnce zastąpi starszą wersję pliku nowszą wersją serwera, jeśli plik danych ma inną wartość skrótu w starej wersji aplikacji, jak w nowej wersji. Ponadto jeśli wcześniejsza wersja aplikacji utworzyła nowy plik o takiej samej nazwie jak plik uwzględniony we wdrożeniu nowej wersji, ClickOnce zastąpi plik starej wersji nowym plikiem. W obu przypadkach stare pliki zostaną uwzględnione w podkatalogu w katalogu danych o nazwie .pre, aby aplikacja mogła nadal uzyskiwać dostęp do starych danych do celów migracji.

Jeśli potrzebujesz bardziej szczegółowej migracji danych, możesz użyć interfejsu API wdrażania ClickOnce do przeprowadzenia migracji niestandardowej ze starego katalogu danych do nowego katalogu danych. Konieczne będzie przetestowanie dostępnego pobierania przy użyciu polecenia IsFirstRun, pobranie aktualizacji przy użyciu polecenia Update lub UpdateAsynci wykonanie dowolnej niestandardowej migracji danych samodzielnie po zakończeniu aktualizacji.

Wydzielona pamięć masowa

Izolowane Storage udostępnia interfejs API do tworzenia i uzyskiwania dostępu do plików przy użyciu prostego interfejsu API. Rzeczywista lokalizacja przechowywanych plików jest ukryta zarówno dla dewelopera, jak i użytkownika.

Izolowane Storage działają we wszystkich wersjach .NET Framework. Izolowane Storage działają również w częściowo zaufanych aplikacjach bez konieczności przyznawania dodatkowych uprawnień. Należy użyć Storage izolowanej, jeśli aplikacja musi działać w częściowej relacji zaufania, ale musi obsługiwać dane specyficzne dla aplikacji.

Aby uzyskać więcej informacji, zobacz izolowane Storage.

Inne pliki lokalne

Jeśli aplikacja musi pracować z danymi użytkownika końcowego, takimi jak raporty, obrazy, muzyka itd., aplikacja będzie musiała FileIOPermission odczytywać i zapisywać dane w lokalnym systemie plików.

Dane zdalne

W pewnym momencie aplikacja prawdopodobnie będzie musiała pobrać informacje ze zdalnej witryny sieci Web, takiej jak dane klienta lub informacje o rynku. W tej sekcji omówiono najbardziej typowe techniki pobierania danych zdalnych.

Uzyskiwanie dostępu do plików za pomocą protokołu HTTP

Dostęp do danych z serwera sieci Web można uzyskać przy użyciu WebClient klasy lub HttpWebRequest w System.Net przestrzeni nazw. Dane mogą być plikami statycznych lub aplikacjami ASP.NET, które zwracają nieprzetworzone dane tekstowe lub XML. Jeśli dane są w formacie XML, najszybszym sposobem na pobranie danych jest użycie XmlDocument klasy , której Load metoda przyjmuje adres URL jako argument. Aby zapoznać się z przykładem, zobacz Odczytywanie dokumentu XML do modelu DOM.

Należy wziąć pod uwagę zabezpieczenia, gdy aplikacja uzyskuje dostęp do danych zdalnych za pośrednictwem protokołu HTTP. Domyślnie dostęp aplikacji ClickOnce do zasobów sieciowych może być ograniczony w zależności od sposobu wdrożenia aplikacji. Te ograniczenia są stosowane, aby uniemożliwić złośliwym programom uzyskanie dostępu do uprzywilejowanych danych zdalnych lub używanie komputera użytkownika do ataku na inne komputery w sieci.

W poniższej tabeli wymieniono strategie wdrażania, których można użyć, oraz ich domyślne uprawnienia sieci Web.

Typ wdrożenia Domyślne uprawnienia sieciowe
Instalacja internetowa Może uzyskiwać dostęp tylko do serwera sieci Web, z którego zainstalowano aplikację
Instalacja udziału plików Nie można uzyskać dostępu do żadnych serwerów sieci Web
Instalacja dysku CD-ROM Może uzyskiwać dostęp do dowolnych serwerów sieci Web

Jeśli aplikacja ClickOnce nie może uzyskać dostępu do serwera sieci Web z powodu ograniczeń zabezpieczeń, aplikacja musi potwierdzić WebPermission tę witrynę sieci Web. Aby uzyskać więcej informacji na temat zwiększania uprawnień zabezpieczeń dla aplikacji ClickOnce, zobacz Zabezpieczanie aplikacji ClickOnce.

Uzyskiwanie dostępu do danych za pośrednictwem usługi sieci Web XML

Jeśli uwidaczniasz dane jako usługę sieci Web XML, możesz uzyskać dostęp do danych przy użyciu serwera proxy usługi sieci Web XML. Serwer proxy to klasa .NET Framework tworzona przy użyciu dowolnego Visual Studio. Operacje usługi sieci Web XML , takie jak pobieranie klientów, składanie zamówień itd., są widoczne jako metody na serwerze proxy. Dzięki temu usługi sieci Web są znacznie łatwiejsze w użyciu niż pliki nieprzetworzonego tekstu lub XML.

Jeśli usługa sieci Web XML działa za pośrednictwem protokołu HTTP, usługa będzie powiązana z tymi samymi ograniczeniami zabezpieczeń co WebClient klasy i HttpWebRequest .

Bezpośredni dostęp do bazy danych

Klasy w System.Data przestrzeni nazw umożliwiają nawiązywanie bezpośrednich połączeń z serwerem bazy danych, takich jak SQL Server w sieci, ale należy uwzględnić problemy z zabezpieczeniami. W przeciwieństwie do żądań HTTP żądania połączenia z bazą danych są zawsze domyślnie zabronione w ramach częściowego zaufania; Takie uprawnienia będą domyślnie dostępne tylko w przypadku zainstalowania aplikacji ClickOnce z dysku CD-ROM. Daje to aplikacji pełne zaufanie. Aby umożliwić dostęp do określonej bazy danych SQL Server, aplikacja musi zażądać do niej dostępuSqlClientPermission; aby umożliwić dostęp do bazy danych innej niż SQL Server, musi zażądać żądania OleDbPermission.

W większości przypadków nie będzie trzeba uzyskiwać bezpośredniego dostępu do bazy danych, ale będzie uzyskiwać do niej dostęp za pośrednictwem aplikacji serwera sieci Web napisanej w ASP.NET lub usłudze sieci Web XML. Uzyskiwanie dostępu do bazy danych w ten sposób jest często najlepszą metodą, jeśli aplikacja ClickOnce jest wdrażana z serwera sieci Web. Dostęp do serwera można uzyskać w częściowej relacji zaufania bez uzyskiwania uprawnień aplikacji.

Zobacz też