Моя программа должна загружать определения объектов (в основном, XML-файлы, возможно, двоичные файлы) по запросу через сеть. Программа будет запрашивать объекты с моего сервера во время выполнения. Единственная вещь, которую программа должна отправить серверу, это строка, которая идентифицирует объект, который ей нужен (например, RedCubeIn3DSpace23). Итак, основной ключ, система ценностей. Мое приложение также должно иметь некоторый базовый механизм аутентификации, чтобы гарантировать, что только законные программы получают доступ к информации моего сервера. Может быть, пришлите номер лицензии и пароль.
Каков наилучший способ реализации этого? У меня 0 веб-знаний, поэтому я не уверен, какие именно технологии мне нужны. Я реализовал сокет-программы в колледже, так что, может быть, это то, что мне нужно? Существуют ли рамки для такого типа вещей? Там могут быть тысячи пользователей / клиентов одновременно; может больше, но я не знаю.
Одним из важнейших требований является необходимость обеспечения безупречной безопасности на стороне сервера. То есть у меня не может быть хакера, который заменяет определения объектов на вредоносные, которые загружают клиенты. Это было бы катастрофично.
Мои первые мысли:
-Установите FTP-сервер, и каждый XML-файл будет назван по значению ключа. Программа входит в систему со своим product_id и фиксированным паролем и просто загружает файлы. Если я использую хороший ftp-сервер, это довольно непроницаемо для хакерских модификаций определений. Недостаток в том, что он не расширяемый и не гибкий.
-RESTful система типов. Я только что узнал об этом при поиске в стеке Я могу создавать категории объектов, используя URL, но как мне выполнять аутентификацию и другие действия. Может быть сложно программировать, но лучше ли это? Есть ли готовая библиотека для этого?
-Sockets с использованием Java / C #. Java / C # защитит меня от атак переполнения, и тогда это всего лишь вопрос создания потока для каждого соединения и настройки простого протокола обмена сообщениями и передачи файлов.
-SOAP. Просто узнал об этом во время поиска. Не знаю много
-EC2. Я думаю, что это (и другие?) Облачные сервисы добавляют слой db по этому.
Это то, что я могу придумать, как вы думаете, учитывая мои требования? Мне просто нужно немного руководства.