wcf запрос к клиенту - PullRequest
       1

wcf запрос к клиенту

0 голосов
/ 20 апреля 2011

Я ищу несколько предложений, чтобы проверить, возможно ли это.Я пишу сервис wcf, который позволяет клиенту загружать файлы.Я хочу добавить слой проверки в мой веб-сервис без необходимости загрузки файла клиентом.Таким образом, клиент отправляет запрос в службу wcf с файлом, но перед загрузкой я хочу проверить имя файла, а затем, возможно, сделать запрос клиенту на отправку файла.У меня может быть 2 интерфейса на моем веб-сервисе: validatefile() и uploadfile() и результат от validationfile(), но в идеале я хотел бы сделать это через один интерфейс.

Есть предложения?

РЕДАКТИРОВАТЬ: проверка выполняется для проверки размера файла и имени файла.поскольку размер файла может быть 600 МБ, в идеале мне нужно выполнить проверку перед загрузкой файла, но внутри службы.

Ответы [ 2 ]

2 голосов
/ 20 апреля 2011

Вам не нужны отдельные интерфейсы, если вы не хотите. Было бы вполне приемлемо иметь оба метода Validate и Upload в одном интерфейсе.

Кроме того, если вы хотите заставить потребителя сначала вызвать validate, то вы можете вернуть «ключ» Guid из метода Validate, а затем заставить получателя передать этот ключ в метод загрузки. Нет ключа загрузки, нет загрузки. Даже при таком подходе вы захотите пройти повторную проверку при загрузке.

Итак, ваш метод проверки может выглядеть примерно так:

public string Validate(string fileName)
{
    string uploadKey = null;
    bool isValid = false;

    //Business logic

    if (isValid)
    {
        uploadKey = Guid.NewGuid().ToString();
        //store uploadKey
    }

    return uploadKey;
}
0 голосов
/ 21 апреля 2011

Это целое не имеет смысла.Вы можете проверить имя файла и размер файла в первом запросе, а клиент может отправить еще один после этого.Это потребует от вас создания хэша из имени файла и размера и сохранения хэша на сервере.В следующем запросе вам нужно будет проверить хэш = вычислить хеш еще раз, что приводит к решению: зачем проверять эти значения в отдельном запросе, если вам нужно сделать это снова в основном запросе?Если вы этого не сделаете, весь ваш дизайн будет хрупким и бесполезным.

Мой подход будет следующим:

Используйте только метод загрузки.Поместите имя файла и размер файла в качестве заголовка SOAP и используйте потоковую передачу (вы, вероятно, будете использовать ее в любом случае).Потоковая передача позволяет вам читать заголовки SOAP перед началом обработки (и загрузки) потока, чтобы вы могли проверить их и выдать исключение клиенту без загрузки файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...