Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Большинство приложений используют или создают данные. ClickOnce предоставляет различные варианты чтения и записи данных как локально, так и удаленно.
Локальные данные
С помощью ClickOnce можно загружать и хранить данные локально с помощью любого из следующих методов:
Каталог данных ClickOnce
Изолированное хранилище
Другие локальные файлы
Каталог данных ClickOnce
Каждое приложение ClickOnce, установленное на локальном компьютере, содержит каталог данных, хранящийся в папке "Документы и параметры пользователя". Любой файл, включенный в приложение ClickOnce и помеченный как файл data, копируется в этот каталог при установке приложения. Файлы данных могут быть любого типа файлов, наиболее часто используемыми в виде текстовых, XML-файлов и баз данных, таких как файлы Microsoft Access .mdb.
Директория данных предназначена для данных, управляемых приложением, которые приложение явно хранит и поддерживает. Все статические, независимые файлы, не помеченные как "данные" в манифесте приложения, будут находиться в каталоге приложений. В этом каталоге хранятся исполняемые файлы и сборки приложения (.exe).
Замечание
При удалении приложения ClickOnce его каталог данных также удаляется. Никогда не используйте каталог данных для хранения управляемых пользователем данных, таких как документы.
Пометка файлов данных в дистрибутиве ClickOnce
Чтобы поместить существующий файл в каталог данных, необходимо пометить существующий файл как файл данных в файле манифеста приложения ClickOnce. Дополнительные сведения см. в разделе "Практическое руководство. Включение файла данных в приложение ClickOnce".
Чтение и запись в каталог данных
Для чтения из каталога данных требуется разрешение на чтение приложения ClickOnce; Аналогичным образом, для записи в каталог требуется разрешение на запись. Приложение будет автоматически иметь это разрешение, если оно настроено на запуск с полным доверием. Дополнительные сведения о повышении разрешений для приложения с помощью повышения прав разрешений или доверенного развертывания приложений см. в разделе "Безопасные приложения ClickOnce".
Замечание
Если ваша организация не использует развертывание доверенных приложений и отключила повышение уровня разрешений, утверждение разрешений завершится ошибкой.
После получения этих разрешений, приложение может получить доступ к каталогу данных с помощью вызовов методов для классов в пределах System.IO. Путь к каталогу данных в приложении ClickOnce на платформе Windows Forms можно получить с помощью свойства DataDirectory, определенного в свойстве CurrentDeploymentApplicationDeployment. Это самый удобный и рекомендуемый способ доступа к данным. В следующем примере кода показано, как это сделать для текстового файла с именемCSV.txt , который вы включили в развертывание в качестве файла данных.
Замечание
Класс ApplicationDeployment и API в System.Deployment.Application пространстве имен не поддерживаются в .NET Core и .NET 5 и более поздних версиях. В .NET 7 поддерживается новый метод доступа к свойствам развертывания приложения. Дополнительные сведения см. в разделе "Свойства развертывания Access ClickOnce" в .NET. .NET 7 не поддерживает эквивалент методов 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);
}
}
Дополнительные сведения о маркировке файлов в развертывании в качестве файлов данных см. в разделе "Практическое руководство. Включение файла данных в приложение ClickOnce".
Путь к каталогу данных также можно получить с помощью соответствующих переменных класса Application , например LocalUserAppDataPath.
Для управления другими типами файлов может потребоваться дополнительное разрешение. Например, если вы хотите использовать файл базы данных Access (.mdb), приложение должно подтвердить полное доверие, чтобы использовать соответствующие <классы xref:System.Data> .
Каталог данных и версии приложений
Каждая версия приложения имеет собственный каталог данных, изолированный от других версий. Каталог создается ClickOnce независимо от того, есть ли файлы данных в деплойменте, так что у приложения есть место для создания новых файлов данных в процессе выполнения. При установке новой версии приложения ClickOnce копирует все существующие файлы данных из каталога данных предыдущей версии в каталог данных новой версии, независимо от того, были ли они включены в исходное развертывание или созданы приложением.
ClickOnce заменит старую версию файла более новой версией сервера, если файл данных имеет другое хэш-значение в старой версии приложения, как и в новой версии. Кроме того, если более ранняя версия приложения создала новый файл с тем же именем, что и файл, включенный в развертывание новой версии, ClickOnce перезапишет файл старой версии новым файлом. В обоих случаях старые файлы будут включены в подкаталог в именованном .pre
каталоге данных, чтобы приложение по-прежнему могли получать доступ к старым данным в целях миграции.
Если требуется более детальное перемещение данных, можно использовать API развертывания ClickOnce для выполнения пользовательской миграции из старого каталога данных в новый каталог данных. Вы должны будете проверить наличие доступной загрузки, используя IsFirstRun, скачать обновление, используя Update или UpdateAsync, и выполнить любую пользовательскую миграцию данных после завершения обновления.
Изолированное хранилище
Изолированное хранилище предоставляет API для создания и доступа к файлам с помощью простого API. Фактическое расположение сохраненных файлов скрыто как от разработчика, так и от пользователя.
Изолированное хранилище работает во всех версиях .NET Framework. Изолированное хранилище также работает в частично доверенных приложениях без необходимости предоставления дополнительных разрешений. Следует использовать изолированное хранилище, если приложение должно работать в частичном доверии, но должно поддерживать данные, относящиеся к приложению.
Замечание
В ClickOnce для .NET Core и .NET 5 или более поздней версии частичное доверие, для которого требуется безопасность доступа к коду, не поддерживается. В .NET Framework использование безопасности доступа к коду не является передовой практикой и не рекомендуется.
Дополнительные сведения см. в разделе "Изолированное хранилище".
Другие локальные файлы
Если приложение должно работать с данными конечных пользователей, такими как отчеты, изображения, музыка и т. д., приложение будет требовать FileIOPermission чтения и записи данных в локальную файловую систему.
Удаленные данные
В какой-то момент ваше приложение, скорее всего, потребуется получить информацию с удаленного веб-сайта, например данные клиента или сведения о рынке. В этом разделе рассматриваются наиболее распространенные методы получения удаленных данных.
Доступ к файлам с помощью HTTP
Доступ к данным с веб-сервера можно получить с помощью WebClient класса или HttpWebRequest класса в System.Net пространстве имен. Эти данные могут быть статическими файлами или ASP.NET приложениями, возвращающими необработанный текст или XML-данные. Если данные в формате XML, самый быстрый способ извлечения данных осуществляется с помощью XmlDocument класса, метод которого Load принимает URL-адрес в качестве аргумента. Пример см. в разделе "Чтение XML-документа" в DOM.
Необходимо учитывать безопасность, когда приложение обращается к удаленным данным по протоколу HTTP. По умолчанию доступ приложения ClickOnce к сетевым ресурсам может быть ограничен в зависимости от способа развертывания приложения. Эти ограничения применяются, чтобы запретить вредоносным программам получать доступ к привилегированным удаленным данным или использовать компьютер пользователя для атаки на другие компьютеры в сети.
В следующей таблице перечислены стратегии развертывания, которые можно использовать, и их веб-разрешения по умолчанию.
Тип развертывания | Разрешения сети по умолчанию |
---|---|
Веб-установка | Доступ к веб-серверу, с которого было установлено приложение |
Установка файлового обмена | Не удается получить доступ к веб-серверам |
установка CD-ROM | Доступ к любым веб-серверам |
Если приложение ClickOnce не может получить доступ к веб-серверу из-за ограничений безопасности, приложение должно задать WebPermission для этого веб-сайта. Дополнительные сведения о повышении разрешений безопасности для приложения ClickOnce см. в разделе "Безопасные приложения ClickOnce".
Доступ к данным через веб-службу XML
Если вы предоставляете данные в виде веб-службы XML, вы можете получить доступ к данным с помощью прокси-сервера веб-службы XML. Прокси-сервер — это класс .NET Framework, создаваемый с помощью Visual Studio. Операции веб-службы XML, такие как извлечение клиентов, размещение заказов и т. д., предоставляются в качестве методов на прокси-сервере. Это упрощает использование веб-служб, чем необработанные текстовые или XML-файлы.
Если веб-служба XML работает по протоколу HTTP, служба будет привязана такими же ограничениями безопасности, как классы WebClient и HttpWebRequest.
Доступ к базе данных напрямую
Классы в System.Data пространстве имен можно использовать для установления прямых подключений к серверу базы данных, например SQL Server в сети, но необходимо учитывать проблемы безопасности. В отличие от HTTP-запросов, запросы на подключение к базе данных всегда запрещаются по умолчанию при частичном доверии; По умолчанию у вас будет только такое разрешение, если вы устанавливаете приложение ClickOnce из компакт-диска. Это дает приложению полное доверие. Чтобы предоставить доступ к конкретной базе данных SQL Server, приложение должно запросить SqlClientPermission к ней; чтобы предоставить доступ к базе данных, отличной от SQL Server, приложение должно запросить OleDbPermission.
Большую часть времени вам не придется обращаться к базе данных напрямую, но будет обращаться к ней через веб-серверное приложение, написанное в ASP.NET или веб-службе XML. Доступ к базе данных таким образом часто является лучшим способом, если приложение ClickOnce развертывается с веб-сервера. Вы можете получить доступ к серверу в частичном доверии, не повышая разрешения приложения.