Разработка приложения, которое хранит и обрабатывает файлы - PullRequest
1 голос
/ 17 июня 2010

Мне поручено написать приложение, которое действует как центральная точка хранения файлов (обычно форматов документов), как это предусмотрено другими приложениями.Он также должен принимать команды типа «файл 395 нуждается в копии в формате X», после чего некоторая работа выгружается в стороннее приложение.У меня возникают проблемы при разработке стратегии для этого.

Я бы хотел сделать дизайн как можно более простым, поэтому я бы хотел избегать больших дополнительных фреймворков или методов, таких как потоки, до тех пор, покаэто имеет смысл.

Ожидается, что клиенты будут веб-приложениями (например, одно из них - приложение django, которое получает файлы от наших клиентов; другие еще не реализованы).Платформой, на которой он будет работать, скорее всего, будет Python в Linux, если у меня нет веских аргументов в пользу использования чего-то другого.

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

Другая идея состоит в сопряжении FTPс базой данных, используемой в качестве средства связи (клиент загружает файл и обновляет базу данных с помощью команды в виде строки в таблице), но мне не нравится эта идея, потому что добавление команд (известное изменение) выглядит так, как будто потребуется добавление кодаа также изменение схем базы данных.Это также испортит интерфейс, который придется использовать моим клиентам.

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

Мне нужны методы и / или технологии, применимые к моей проблеме.На самом простом уровне мне нужна возможность принимать файлы и сообщения вместе с ними.

Ответы [ 3 ]

3 голосов
/ 17 июня 2010

Что вам нужно для исследования - это BPEL Правила . Вот список движков с открытым исходным кодом, написанных на Java . Есть альтернативы и на других языках, даже Python . Это определенно не то, чем вы хотите заняться, изобретая себя заново. Эта проблемная область очень быстро усложняется, любое «простое» решение будет наивным в отношении масштабируемости и производительности и будет просто выброшено раньше, чем позже.

0 голосов
/ 17 июня 2010

Ваши проблемы, кажется, кричат ​​о веб-приложении RESTful.Что касается того, какой фреймворк позволит вам реализовать его лучше всего, некоторые люди любят Django даже за это (может быть, с django-rest-interface ), другие предпочитают для этого более легкие фреймворки - см. Некоторые обсуждения на этот ТАК вопрос .Другая возможная структура, не упомянутая здесь, это RIP - в настоящее время, к сожалению, она не поддерживается (действительно, ее ссылка на репозиторий SVN свисает), но, возможно, стоит загрузить источники от pypi, с нетерпением, возможно, адаптируя его.

0 голосов
/ 17 июня 2010

Вы должны быть в состоянии реализовать это довольно RESTful способом с помощью операций HTTP PUT и GET. Это было бы очень полезно по нескольким причинам:

  • Возможность ссылки на хранилище напрямую с внутренних сайтов
  • Простое тестирование
  • Доступно множество библиотек, которые помогут вам реализовать это
  • Не нужно беспокоиться о том, какую платформу использует клиентское приложение

Я бы предложил реализовать его так, чтобы получить файл в определенном формате так же просто, как перейти к:

http://www.myserver.com/filestore/documents/docname&format=xxx

Конечно, на сервере я использовал бы базу данных документов, форматов файлов и кэшированных версий уже преобразованных файлов. Я бы вызвал сторонних переводчиков по требованию, то есть, когда приходит запрос на документ в определенном формате, а документ еще не находится в кэше.

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