Имеет ли смысл эта архитектура Scala Perl / Python - PullRequest
0 голосов
/ 04 февраля 2011

В другом вопросе я задал «лучший» язык для определенной цели.Понимание этой цели было слишком большим, чтобы начать, я упростил свою идею :) Но были действительно полезные языковые подсказки.Поэтому я выбрал Scala для настольного приложения и рассмотрел между Perl и Python на веб-сервере.

Я хочу запрограммировать что-то вроде асинхронного чата (немного похожего на электронную почту).Итак, вы запускаете свою программу, выбираете свое имя и добавляете друга с его уникальным идентификатором.Затем вы можете написать ему простое сообщение, и когда ваши друзья запустят его компьютер, запустят «chat.exe», он получит почту (требуется интернет) и сможет ответить.Никаких специальных функций, смайликов или форматирования текста, просто для изучения.

Моя концепция такова: использовать Scala для "chat.exe" (или это просто "chat.jar"?), Который общается черезSOCKET с платформой Perl / Python, которая обрабатывает запросы.Таким образом, вы набираете «Привет!» И нажимаете «Отправить».Это сообщение передается через SOCKET в скрипт Perl / Python, который читает запрос и помещает это сообщение в базу данных MySQL.С другой стороны, chat.exe вашего друга проверяет наличие новых сообщений, и, если оно есть, скрипт Perl / Python передает сообщение.Также через SOCKET.

Как вы думаете, это работает?Подходит ли SOCKET и подходит ли он?Или, может быть, отдых?Но я думаю, что для REST-запросов вы должны использовать URI (http://example.com/newmessage/user2/user3/Hi_how_are_you). Это выглядит очень небезопасно.

С нетерпением ждем ваших комментариев!

Хорошего дня,

Курт

Ответы [ 3 ]

1 голос
/ 04 февраля 2011

Если вы спросите меня, я думаю, что Scala больше всего подходит для серверной части. Scala работает на JVM, а у Java действительно большая экосистема на стороне сервера. У вас есть большой выбор серверов приложений на любой вкус (tomcat, jetty, glassfish и т. Д.).

Чат - это классический вариант использования для актеров. Я думаю, Akka может вдохновить вас в этой области.

Вы можете использовать замечательные веб-фреймворки Scala, такие как Lift. Вы даже можете сделать веб-чат. Вот пример приложения чата, которое использует комету (push server):

http://demo.liftweb.net/chat

О REST: если вы чувствуете, что это не безопасно, то

  1. Использовать HTTPS для связи с сервером
  2. В вашем примере вы намереваетесь отправить сообщение на сервер (по крайней мере, так я это понял), поэтому, скорее всего, вы захотите использовать PUT-запросы, и в этом случае текст сообщения будет находиться в POST тело запроса.
1 голос
/ 04 февраля 2011

Используйте Scala для "chat.exe" (или это просто "chat.jar"?)

Шаг 1. Выясните это.Напишите некоторые вещи и посмотрите, что вы можете собрать.

, который взаимодействует через SOCKET с Perl / Python Framework, который обрабатывает запросы.

Не имеет смысла.Все интернет-общение осуществляется с помощью сокетов.Оставьте это предложение, и вы не потеряете никакого смысла.

Это сообщение передается через SOCKET в скрипт Perl / Python, который читает запрос и помещает это сообщение в базу данных MySQL.

Немного полезной информации.Сокеты, однако, само собой разумеется.

С другой стороны, chat.exe вашего друга проверяет наличие новых сообщений, и если оно есть, скрипт Perl / Python передает сообщение.Также через SOCKET.

Справа.Сокеты, опять же, ничего не значат.

На верху сокетов находятся десятки протоколов.FTP, Telnet, HTTP, SMTP и т. Д. И т. Д.

Шаг 2 - определить, какой протокол вы хотите использовать.REST, кстати, является частным использованием HTTP.Вы должны действительно, очень внимательно посмотреть на HTTP и REST, прежде чем отклонить их.

Это выглядит очень небезопасно

Не понятно, почему вы это говорите.Я могу только догадываться, что вы не знаете о функциях безопасности HTTP.


Ленивый программист может сделать это.

  1. Установить Python, Django, MySQL-Python и Piston.

  2. Определите модель Django, настройте параметры по умолчанию, чтобы модель представлялась как безопасный набор служб RESTful.

Этосвоего рода это для сообщения на стороне сервера GET, POST, PUT и DELETE - все они предоставляются уровнями Django, Piston и Django ORM.Аутентификация может быть любым из множества механизмов.Я большой поклонник HTTP Digest аутентификации.

0 голосов
/ 04 февраля 2011

Для реализации чего-то подобного вам нужно будет пройти через систему MQ, например, возможно, ActiveMQ, вместо использования простых сокетов.

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