2011-02-03 13 views
0

別の質問では、特定の目的のために「最高の」言語を求めました。この目標を実現することはあまりにも多すぎたので、私の考えは単純化しました:)しかし、本当に便利な言語ヒントがありました。だから私はデスクトップアプリケーションのためのScalaを決め、Webサーバ上のPerlとPythonの間で検討しました。このScala Perl/Pythonアーキテクチャは意味があります

私は非同期チャット(電子メールのようなもの)のようなものをプログラムしたいと思っています。だからあなたはあなたのプログラムをあなたの名前を選んで始め、彼の一意のidを持つ友人を追加します。その後、簡単なメッセージを書くことができ、友人が自分のPCを起動すると、彼はメールを受信して​​(インターネットが必要です) "chat.exe"を起動し、答えることができます。特別な機能、スマイリーやテキストの書式はなく、学習目的には簡単です。

私の考えは:リクエストを処理するPerl/PythonフレームワークとSOCKETを介して通信する "chat.exe"(または単にchat.jar)にScalaを使用します。 "Hello there"と入力して送信をクリックします。このメッセージはSOCKETを介してPerl/Pythonスクリプトに転送され、このスクリプトはこのメッセージをMySQLデータベースに格納します。反対側では、あなたの友人のchat.exeは新しいメッセージをチェックし、もしあれば、Perl/Pythonスクリプトはメッセージを転送します。 SOCKET経由でも。

これはうまくいくと思いますか? SOCKETは適切で、適合していますか?またはおそらくREST?しかし、REST-RequestsではURI(http://example.com/newmessage/user2/user3/Hi_how_are_you)を使用する必要があります。これは非常に安全ではないようです。

コメントをお待ちしています!

は、あなたの代わりにプレーンなソケットを使用して、おそらくActiveMQのようなMQシステムを通過する必要があるだろうというようなものを実装するには

クルト

+0

RESTリクエストの内容にURIを使用する必要はありません。たとえば、POST {{"sender": "user2"、 "recipient": "user3"、 "message": "こんにちはあなたは "}' http://example.com/newmessageへ –

+0

私はあなたがあなたの言語の選択肢をめちゃくちゃにした場合、あなたはもっと成功するかもしれないと思う:サーバーのためのスカラとデスクトップアプリケーションのためのPython。つまり、あなたはScala(あるいはまともな言語)を両方で簡単に使うことができます。しかし、率直に言って、あなたの質問はむしろ漠然としており、権威ある答えを与えるのは難しいです。 – pr1001

+1

なぜ3つの言語と低レベルの通信チャネルを使用するのですか? – Raphael

答えて

1

私に聞いたら、スカラがサーバー側に最適だと思います。 ScalaはJVM上で動作し、Javaはサーバー側で非常に大きなエコシステムを持っています。すべての味(tomcat、jetty、glassfishな​​ど)には、さまざまな種類のアプリケーションサーバーがあります。

チャットは、俳優のための古典的な使用例です。私はAkkaがこの分野であなたに影響を与えることができると思います。

Liftのような素晴らしいScala Webフレームワークを使用できます。あなたはウェブベースのチャットをすることさえできます。 RESTについて

http://demo.liftweb.net/chat

::ここで彗星(サーバープッシュ)を使用するチャットアプリケーションの一例は、あなたがそれを固定していないと感じた場合は、

  1. 使用HTTPSサーバー
  2. との通信に
  3. あなたの例では、あなたの意図は(少なくとも私がそれをどのように理解したのか)サーバーにメッセージを入れることです。したがって、おそらくPUTリクエストを使用したいのですが、この場合メッセージのテキストはPOSTリクエスト体。
+0

私はScalaをサーバー上で使用することも考えました。残念ながら、私のWebホスティングプランはPerl/Python/PHP(多くのP!)しかサポートしていませんが、私はアップグレードする必要があります。あるいは良い選択肢を知っていますか?だからアクターと私はクライアント/サーバー間で通信することができますか?私はデスクトッププログラムを望んでいるだけで、ウェブページは「唯一」ではないからです。ありがとう! – Kurt

+1

@Kurt:はい、リモートアクターを使用することができます:http://doc.akka.io/remote-actors-scala。ホスティングについて...あなたはhttp://code.google.com/appengine/を無料で使用することができます(ただし、処理能力がさらに必要な場合は支払いが必要です)。また、AWSを見ることもできます:http://aws.amazon.com/ec2/ – tenshi

0

、良い一日を。

+0

ありがとう、あなたはこれらのMQ(メッセージブローカーと同じ)システムの紹介がありますか? Kurt – Kurt

1

使用 "chat.exe" のためのScala(または単に "chat.jar" 可能ですか?)

アウトステップ1.図。実際にいくつかのものを書いて、あなたが作ることができるものを見てください。

SOCKETを介して要求を処理するPerl/Pythonフレームワークと通信します。

重要ではありません。すべてのインターネット通信はソケットで行われます。この文を残しておけば、意味を失うことはありません。

このメッセージは、SOCKET経由でPerl/Pythonスクリプトに転送され、このメッセージをMySQLデータベースに読み込みます。

少し便利な情報です。ソケットは、しかし、言うまでもなく。

相手のchat.exeは新しいメッセージをチェックし、新しいメッセージがある場合はPerl/Pythonスクリプトがメッセージを転送します。 SOCKET経由でも。

右。ソケットは、あまり意味がありません。

ソケットの上には数多くのプロトコルがあります。 FTP、Telnet、HTTP、SMTPなど。

ステップ2では、使用するプロトコルを特定します。ところで、RESTはHTTPの特別な使い方です。実際には、HTTPとRESTを閉じる前に、HTTPとRESTを非常に詳しく見てください。

あなたがこれを言っている理由は明らかではない

非常に安全でないに見えます。私はあなたがHTTPセキュリティ機能について知らないと推測することができます。


怠惰なプログラマがこれを行うかもしれません。

  1. は、Python、Djangoのは、MySQL-Pythonとピストンをインストールします。

  2. Djangoモデルを定義するには、モデルがセキュアなRESTfulサービスセットとして公開されるようにデフォルトを設定します。サーバー側のメッセージのためのそれの一種GETだ

、POST、PUTとDELETEは、すべてのジャンゴ、ピストンとDjangoのORM層によって提供されています。認証は、さまざまなメカニズムのいずれかになります。私はHTTPダイジェスト認証の大ファンです。

関連する問題