我创建了一个具有Web服务器和ssh服务器的应用程序。目前,SSH服务器是在Play中运行的Singleton。所以它是一个在后台运行SSH服务器的播放应用程序。
我希望ssh服务器不会100%依赖Web部件。它们也可以在不同的服务器上运行,以便更容易扩展。
由于我正在使用Play(这是基于Akka),我认为Actors是一个不错的解决方案。但是应该如何实施呢?
Web和非Web部分都需要一些相同的类,例如:它们都需要具有可以在2个应用程序之间发送的User
类。这些必须通过Actors发送。但网络和非网络部分是不同的东西。
是否可以将2个项目构建为具有不同入口点的1个项目?这样我仍然可以使用相同的类,并且当他们发送时,他们将正确序列化,因为它们完全相同。或者有不同/更好的方式吗?
我在Play文档https://www.playframework.com/documentation/2.6.x/SBTSubProjects中找到了此页面。但它是"首先播放",我希望这两个应用程序都可以单独运行。
答案 0 :(得分:2)
您可以查看多项目构建的sbt documentation
在build.sbt
文件中,您可以创建以下部分:
lazy val shared = (project in file("shared"))
lazy val ssh = (project in file("ssh"))
.dependsOn(shared)
lazy val http = (project in file("http"))
.enablePlugins(PlayScala)
.dependsOn(shared)
这样您将拥有共享代码和分离的部分。您还可以添加一个将ssh和http部分聚合到一个项目中的其他项目。
对于两部分之间的通信,您可以将akka与远程演员一起使用