我正在开发Clojure应用程序,客户端需要向服务器发送一些命令。这些将发生在相当大的数量,所以我希望它是合理的效率,无论是在处理和过线串行化的大小。
在Clojure中,最好的方法是什么?
目前我在想:
然而,这似乎有点令人费解,我相信其他人已经想出了更聪明的方法。任何想法/建议都非常感谢!
发布于 2010-06-26 16:28:35
如果参数不是太大而且源是可信的,为什么不将s-表达式发回和填充,
(eval (read-string "(println \"Hello World\")"))Clojure是LISP方言代码,是数据。
编辑:
为了安全起见,在读取字符串之后,可以根据一组有效的命令检查该命令,
(contains? #{'println}
(first (read-string "(println \"Hello World\")")))或者您可以使用为此而设计的库,例如
http://github.com/Licenser/clj-sandbox
发布于 2010-06-26 15:57:38
谷歌的协议缓冲器呢?有一个库用于处理Clojure中的它们:克洛布。我记得Freenode #clojure上有人正在对一个严肃的任务(处理大量的Twitter数据)进行Haskell与OCaml的比较;s/他一直在对库进行大量的赞扬。
更新:这里是我所想到的#clojure对话中的相关话语。
发布于 2010-06-26 15:28:34
我的答案并不是Clojure特有的,但我倾向于更喜欢字符串而不是http -它是合理的标准和合理的效率。
几乎每种语言都有用于JSON的库,除非数据量很大,否则我会使用它(以及简单的标准命令格式)。
我的经验是,您越不需要修改专门的格式、套接字和协议,就越有可能在海滩上度过周末:)。
我会在http上保留任何比JSON更复杂的内容,直到基准测试显示需要其他东西。
https://stackoverflow.com/questions/3124262
复制相似问题