这个Scala Perl / Python架构是否有意义

时间:2011-02-03 21:25:22

标签: python perl sockets scala client-server

在另一个问题中,我为某种目的要求“最好的”语言。实现这个目标有点太多了,我简化了我的想法:)但是有非常有用的语言提示。所以我决定在桌面应用程序上使用Scala,并考虑在Web服务器上使用Perl和Python。

我想编写类似异步聊天的东西(有点像电子邮件)。所以你开始你的程序选择你的名字,并添加一个他的唯一ID的朋友。然后你可以给他写一个简单的消息,当你的朋友启动他的电脑时,启动他收到邮件的“chat.exe”(需要互联网)并且能够回答。没有特殊功能,笑脸或文字格式,只是为了学习目的。

我的概念是:使用Scala作为“chat.exe”(或者只是“chat.jar”可能吗?),它通过SOCKET与处理请求的Perl / Python框架进行通信。 所以你输入“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)。这看起来非常不安全。

期待您的评论!

度过愉快的一天,

库尔特

3 个答案:

答案 0 :(得分:1)

如果你问我,我认为Scala最适合服务器端。 Scala在JVM上运行,Java在服务器端有一个非常大的生态系统。你有各种各样的应用程序服务器(tomcat,jetty,glassfish等)。

聊天是演员的经典用例。我认为Akka可以激励你在这个领域。

您可以使用精彩的Scala Web框架,例如Lift。您甚至可以进行基于网络的聊天。以下是使用comet(服务器推送)的聊天应用程序示例:

http://demo.liftweb.net/chat

关于REST:如果您觉得它不安全,那么

  1. 使用HTTPS与服务器通信
  2. 在你的例子中,你的意图是将消息放到服务器上(至少这是我理解它的方式),所以很可能你想要使用PUT请求,在这种情况下,消息文本将在POST中请求正文。

答案 1 :(得分:1)

  

将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服务集。

  3. 对于服务器端消息,GET,POST,PUT和DELETE都是由Django,Piston和Django ORM层提供的。身份验证可以是各种机制中的任何一种。我是HTTP摘要身份验证的忠实粉丝。

答案 2 :(得分:0)

要实现类似的东西,你需要通过一个MQ系统,比如ActiveMQ,而不是使用普通的套接字。