Выгрузка файлов. File.ashx
⇐ ПредыдущаяСтр 13 из 13 Для выгрузки файлов предназначен специальный обработчик запросов File.ashx, расположеный в директории вместе с остальными web-сервисами и возвращающий содержимое в ответ на обычный HTTP-GET запрос. В качестве идентификатора можно передать один из двух взаимоисключающих атрибутов: § Модельный ключ, возвращаемый всеми командами добавления файлов, в аргументе id (например, File.ashx?id=301245) § Универсальный идентификатор объекта в аргументе guid (соответствует значению атрибута UID, например, File.ashx?guid=275399C0-94A7-4894-B943-4D9C3F7DFF59 Перед формированием запроса необходимо открыть сессию обычными методами и включить в запрос на сервер cookies полученные при авторизации. Пример: void DownloadFile(string url, HttpCookieContainer cookies, long fileID, string targetFileName) { string fileUrl = url + "?id=" + fileID; var client = new CookieWebClient(cookies); client.DownloadFile(fileUrl, targetFileName); }
public class CookieWebClient: WebClient { private CookieContainer _cookies; public CookieWebClient(CookieContainer cookies) { _cookies = cookies; }
protected override WebRequest GetWebRequest(Uri address) { HttpWebRequest req = (HttpWebRequest) base.GetWebRequest(address); req.CookieContainer = _cookies; return req; } } Загрузка файлов большого объема Для загрузки больших файлов предназначены новые методы в сервисе Utils.asmx: StartUpload, Upload, CompleteNewFile и CompleteNewVersion. С их помощью можно добавить новый файл к документу и новую версию к существующему файлу. Загрузка файлов выполняется частями: сначала получается идентификатор загрузки, затем загружаются куски файла и в конце выполняется завершающий метод отправляющий полный файл на сервер контента. Не рекомендуется отправлять куски файла размером превышающие 1Мб. При ошибке отправки отдельного куска, отправку этого участка можно повторить – новые данные будут помещены в тоже самое место, которое передано в запросе.
Для проверки корректности передачи данных рекомендуется в завершающие методы передавать хеш-код исходного файла вычисленный на стороне клиента по одному из алгоритмов: SHA1 или MD5. При ошибке проверки передачу можно повторить полностью. Пример загрузки новой версии: long UploadVersion(Utils server, string sourceFileName, Stream stream, HashAlgorithm hashAlgorithm, byte[] hash, long length) { byte[] m1 = new byte[1024 * 1024];
long off = 0; int count = stream.Read(m1, 0, m1.Length);
string uploadID = server.StartUpload(Extract(m1, count)); off += count;
while (true) { count = stream.Read(m1, 0, m1.Length); if (count == 0) break;
server.Upload(uploadID, Extract(m1, count), off); off += count; }
return server.CompleteNewVersion(uploadID, sourceFileID, length, hashAlgorithm, hash); }
Пример вычисления хеш-кода файла: using (var stream = Open(fileName)) { using (var ha = new SHA1Managed()) { return ha.ComputeHash(stream); } } Патч данных Патч данных применяется в случае, когда после обновления версии сервера контента, изменился формат возвращаемых данных или их состав. Патч представляет собой XML файл с именем DataPatch.xml, который должен лежать в той же директории, что и web.config. Содержимое файла организовано в виде набора действий для диапазона версий, установленных клиентскими приложениями. Диапазоны версий проверяются в порядке расположения в файле: используется первый подходящий. Команды тоже выполняются в последовательности расположения в файле. Команды привязаны к сущности репозитория, к которой они относятся: web-вервисы после получения набора данных (DataSet) в зависимости от метода определяют, какие таблицы к какой сущности относятся, и выполняют для каждой таблицы свой набор команд. Данные в XML файле должны удовлетворять схеме http://schemas.landocs.ru/ContentServer/Last/DataPatch.xsd. Корневой элемент – PATCH из пространства имен http://schemas.landocs.ru/ContentServer/WebServices/DataPatch/2016-12.
Описание элементов и их атрибутов
Поддерживаемые имена типов (регистр не важен):
§ byte[] § decimal § long § GUID § string § int § int64 § DateTime § double
Общедоступные ссылки Последние описания сервисов можно загрузить с сайта http://schemas.landocs.ru/ContentServer/Last.
Пример строки вызова рабочей копии web-сервисов http://<адрес сервера>/<путь к web-сервисам>/BMService.asmx?wsdl
Приложение 1. Типовая нагрузка для систем автоматизации ДОУ Показатели типовой нагрузки для систем автоматизации административного документооборота (ДОУ) получены в результате анализа статистических данных из различных источников. Состав сценариев приведен в таблице. Сценарии типовой нагрузки были использованы при проведении нагрузочных испытаний Системы и определении на их основе требований к оборудованию.
При отличии сценариев использования Системы от типовых, требования к аппаратному обеспечению могут отличаться от рекомендуемых. Разработчики приложений, использующих web-сервисы Системы, должны самостоятельно оценивать нагрузку, создаваемую этими приложениями на Систему, и предоставлять требования к аппаратному обеспечению. Таблица 1– Сценарии типовой нагрузки систем автоматизации административного документооборота
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|