У нас есть собственное проприетарное приложение для обработки данных, которое работает на одном из наших серверов, и мы хотим представить его в виде веб-службы, чтобы наши клиенты могли отправлять задания удаленно. По сути, система принимает набор параметров конфигурации и один или несколько файлов данных (количество файлов зависит от конкретного шаблона конфигурации, но обычная конфигурация - 2 файла). Затем приложение берет входные файлы, обрабатывает их и выводит один файл данных результата (все файлы имеют текстовый разделитель / CSV или табуляцию).
Теперь мы хотим представить этот процесс как сервис. Исходя из нашей текущей настройки и существующих платформ, мы довольно уверены, что хотим использовать WCF 4.0 в качестве платформы и, скорее всего, REST для формата сервиса, хотя в какой-то момент может потребоваться реализация SOAP.
Хотя я много читаю по SOA, WCF и REST, меня интересуют другие мысли о том, как смоделировать этот сервис. В частности, отношение работы «один ко многим» с необходимыми файлами для ввода. Кажется, довольно просто смоделировать «работу» в REST с помощью стандартных команд CRUD. Однако предопределенный параметр «тип задания» определяет количество файлов, которые должны быть включены. Тип задания «A» может вызывать два входных файла, в то время как «B» требует 3, прежде чем задание может быть запущено.
Учитывая это, как лучше всего смоделировать работу? Нужно ли включать несколько файлов при первоначальном создании задания? Создаю ли я задание, а затем использую метод «addFile», с помощью которого я могу загрузить необходимое количество файлов?
Затем задания должны будут выполняться асинхронно, поскольку они могут занимать время. После завершения лучше всего просто иметь поле состояния в объекте задания и требовать, чтобы клиент регулярно запрашивал в системе информацию о статусе задания, или, возможно, клиент предоставил URL-адрес для «ping» после завершения задания?
Мы находимся только на этапах планирования обслуживания, поэтому мы будем благодарны за любые идеи.