Přístup k místním a vzdáleným datům v aplikacích ClickOnce

Většina aplikací spotřebovává nebo vytváří data. ClickOnce nabízí různé možnosti čtení a zápisu dat místně i vzdáleně.

Místní data

Pomocí Technologie ClickOnce můžete načítat a ukládat data místně pomocí některé z následujících metod:

  • Adresář dat ClickOnce

  • Izolované úložiště

  • Jiné místní soubory

Adresář dat ClickOnce

Každá aplikace ClickOnce nainstalovaná na místním počítači má datový adresář, který je uložený ve složce Dokumenty a Nastavení uživatele. Jakýkoli soubor zahrnutý v aplikaci ClickOnce a označený jako "datový" soubor se zkopíruje do tohoto adresáře při instalaci aplikace. Datové soubory můžou být libovolného typu, nejčastěji používané textové, XML a databázové soubory, jako jsou soubory Microsoft Access .mdb.

Adresář dat je určený pro data spravovaná aplikací, což jsou data, která aplikace explicitně ukládá a udržuje. Všechny statické, nedependency soubory, které nejsou označené jako "data" v manifestu aplikace, se budou nacházet v adresáři aplikace. Tento adresář je místo, kde se nacházejí spustitelné soubory a sestavení aplikace (.exe).

Poznámka:

Když se aplikace ClickOnce odinstaluje, odebere se také její adresář dat. Nikdy nepoužívejte datový adresář k ukládání dat spravovaných koncovým uživatelem, jako jsou dokumenty.

Označení datových souborů v distribuci ClickOnce

Pokud chcete vložit existující soubor do datového adresáře, musíte existující soubor označit jako datový soubor v souboru manifestu aplikace ClickOnce. Další informace naleznete v tématu Postupy: Zahrnutí datového souboru do aplikace ClickOnce.

Čtení z datového adresáře a zápis do adresáře dat

Čtení z datového adresáře vyžaduje, aby vaše aplikace ClickOnce požádala o oprávnění ke čtení; Podobně zápis do adresáře vyžaduje oprávnění k zápisu. Pokud je aplikace nakonfigurovaná tak, aby běžela s úplným vztahem důvěryhodnosti, bude mít vaše aplikace toto oprávnění automaticky. Další informace o zvýšení oprávnění pro vaši aplikaci pomocí zvýšení oprávnění nebo nasazení důvěryhodné aplikace naleznete v tématu Zabezpečené aplikace ClickOnce.

Poznámka:

Pokud vaše organizace nepoužívá důvěryhodné nasazení aplikací a vypnula zvýšení oprávnění, uplatnění oprávnění selže.

Jakmile má vaše aplikace tato oprávnění, může přistupovat k datovému adresáři pomocí volání metod tříd v rámci .System.IO Cestu k adresáři dat můžete získat v aplikaci model Windows Forms ClickOnce pomocí DataDirectory vlastnosti definované vlastnosti CurrentDeploymentApplicationDeployment. Jedná se o nejpohodlnější a doporučený způsob přístupu k datům. Následující příklad kódu ukazuje, jak to udělat pro textový soubor s názvem CSV.txt , který jste zahrnuli do nasazení jako datový soubor.

Poznámka:

Třída ApplicationDeployment a rozhraní API v System.Deployment.Application oboru názvů nejsou podporovány v .NET Core a .NET 5 a novějších verzích. V .NET 7 se podporuje nová metoda přístupu k vlastnostem nasazení aplikace. Další informace naleznete v tématu Access ClickOnce vlastnosti nasazení v .NET. .NET 7 nepodporuje ekvivalent metod ApplicationDeployment.

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);
    }
}

Další informace o označení souborů v nasazení jako datových souborů naleznete v tématu Postupy: Zahrnutí datového souboru do aplikace ClickOnce.

Cestu k adresáři dat můžete získat také pomocí relevantních proměnných ve Application třídě, například LocalUserAppDataPath.

Manipulace s jinými typy souborů může vyžadovat další oprávnění. Pokud například chcete použít soubor accessové databáze (.mdb), musí vaše aplikace uplatnit úplný vztah důvěryhodnosti, aby mohla používat příslušné <třídy xref:System.Data> .

Datový adresář a verze aplikací

Každá verze aplikace má svůj vlastní adresář dat, který je izolovaný od ostatních verzí. ClickOnce vytvoří tento adresář bez ohledu na to, jestli jsou do nasazení zahrnuty nějaké datové soubory, aby aplikace v době běhu vytvořila nové datové soubory. Když je nainstalována nová verze aplikace, ClickOnce zkopíruje všechny existující datové soubory z adresáře dat předchozí verze do adresáře dat nové verze – ať už byly součástí původního nasazení nebo byly vytvořeny aplikací.

ClickOnce nahradí starší verzi souboru novější verzí serveru, pokud má datový soubor jinou hodnotu hash ve staré verzi aplikace jako v nové verzi. Pokud starší verze aplikace vytvořila nový soubor, který má stejný název jako soubor zahrnutý v nasazení nové verze, ClickOnce přepíše soubor staré verze novým souborem. V obou případech budou staré soubory zahrnuty do podadresáře uvnitř datového adresáře s názvem .pre, aby aplikace stále získala přístup ke starým datům pro účely migrace.

Pokud potřebujete jemně odstupňovanou migraci dat, můžete pomocí rozhraní API pro nasazení ClickOnce provést vlastní migraci ze starého adresáře dat do nového adresáře dat. Po dokončení aktualizace budete muset otestovat dostupnost stahování pomocí IsFirstRun, stáhnout aktualizaci pomocí Update nebo UpdateAsynca provést vlastní práci s migrací dat.

Izolované úložiště

Izolované úložiště poskytuje rozhraní API pro vytváření a přístup k souborům pomocí jednoduchého rozhraní API. Skutečné umístění uložených souborů je skryté od vývojáře i uživatele.

Izolované úložiště funguje ve všech verzích rozhraní .NET Framework. Izolované úložiště funguje také v částečně důvěryhodných aplikacích bez nutnosti udělení dalších oprávnění. Izolované úložiště byste měli použít, pokud vaše aplikace musí běžet v částečném vztahu důvěryhodnosti, ale musí udržovat data specifická pro aplikaci.

Další informace najdete v tématu Izolované úložiště.

Další místní soubory

Pokud vaše aplikace musí pracovat s daty koncových uživatelů, jako jsou sestavy, obrázky, hudba atd., bude aplikace muset FileIOPermission číst a zapisovat data do místního systému souborů.

Vzdálená data

V určitém okamžiku bude vaše aplikace pravděpodobně muset načíst informace ze vzdáleného webu, jako jsou zákaznická data nebo informace o trhu. Tato část popisuje nejběžnější techniky načítání vzdálených dat.

Přístup k souborům pomocí protokolu HTTP

K datům z webového serveru můžete přistupovat buď pomocí WebClientHttpWebRequest třídy v System.Net oboru názvů. Data můžou být buď statické soubory, nebo ASP.NET aplikace, které vracejí nezpracovaný text nebo data XML. Pokud jsou vaše data ve formátu XML, nejrychlejší způsob, jak načíst data, je pomocí XmlDocument třídy, jejíž Load metoda přebírá adresu URL jako argument. Příklad najdete v tématu Čtení dokumentu XML do dom.

Pokud vaše aplikace přistupuje ke vzdáleným datům přes PROTOKOL HTTP, musíte zvážit zabezpečení. Ve výchozím nastavení může být přístup aplikace ClickOnce k síťovým prostředkům omezen v závislosti na tom, jak byla vaše aplikace nasazena. Tato omezení se použijí, pokud chcete zabránit škodlivým programům v získání přístupu k privilegovaným vzdáleným datům nebo použití počítače uživatele k útoku na jiné počítače v síti.

Následující tabulka uvádí strategie nasazení, které můžete použít, a jejich výchozí oprávnění k webu.

Typ nasazení Výchozí síťová oprávnění
Instalace webu Může přistupovat pouze k webovému serveru, ze kterého byla aplikace nainstalována.
Instalace sdílené složky Nelze získat přístup k žádným webovým serverům
Instalace CD-ROM Přístup k jakýmkoli webovým serverům

Pokud aplikace ClickOnce nemá přístup k webovému serveru z důvodu omezení zabezpečení, musí aplikace pro tento web uplatnit WebPermission . Další informace o zvýšení oprávnění zabezpečení pro aplikaci ClickOnce naleznete v tématu Zabezpečené aplikace ClickOnce aplikace.

Přístup k datům prostřednictvím webové služby XML

Pokud data zveřejníte jako webovou službu XML, můžete k datům přistupovat pomocí proxy webové služby XML. Proxy je třída rozhraní .NET Framework, kterou vytvoříte pomocí sady Visual Studio. Operace webové služby XML , například načítání zákazníků, zadávání objednávek atd., jsou vystaveny jako metody na proxy serveru. Díky tomu je používání webových služeb mnohem jednodušší než nezpracovaný text nebo soubory XML.

Pokud vaše webová služba XML funguje přes PROTOKOL HTTP, bude služba vázána stejnými omezeními zabezpečení jako třídy WebClient a HttpWebRequest třídy.

Přímý přístup k databázi

Třídy v rámci System.Data oboru názvů můžete použít k navázání přímých připojení k databázovému serveru, jako je SQL Server ve vaší síti, ale musíte zohlednit problémy se zabezpečením. Na rozdíl od požadavků HTTP jsou požadavky na připojení k databázi ve výchozím nastavení ve výchozím nastavení zakázané v částečném vztahu důvěryhodnosti; Toto oprávnění budete mít ve výchozím nastavení pouze v případě, že nainstalujete aplikaci ClickOnce z disku CD-ROM. Aplikace tak bude plně důvěřovat. Pokud chcete povolit přístup ke konkrétní databázi SQL Serveru, musí na ni aplikace požádat SqlClientPermission , aby mohla povolit přístup k jiné databázi než SQL Server, musí požádat OleDbPermission.

Ve většině případů nebudete muset přistupovat k databázi přímo, ale budete k ní přistupovat prostřednictvím webové aplikace serveru napsané v ASP.NET nebo webové službě XML. Přístup k databázi tímto způsobem je často nejlepší metodou, pokud je vaše aplikace ClickOnce nasazená z webového serveru. K serveru můžete přistupovat v částečném vztahu důvěryhodnosti bez zvýšení oprávnění aplikace.