我们有一个访问servicestack REST服务的Icneium Hybrid Mobile应用程序。可以在Node.js而不是IIS上托管servicestack吗?任何例子都受到高度赞赏。
答案 0 :(得分:5)
您将无法直接在node.js中托管ServiceStack,但是有许多节点代理模块可以透明地将请求代理到ServiceStack Self Hosted application,从而无需IIS。
您现在有两个选择:
如果您的意图只是放弃IIS而您并不特别需要node.js,那么自托管应用程序就很棒,因为没有其他依赖层。请求可以直接发送到ServiceStack。
但是,如果您希望与node.js进行一些集成,那么正如我所说的透明代理可以将请求转发到ServiceStack服务,但您仍然需要在节点后面运行自托管ServiceStack服务代理。
让这个工作。您需要配置ServiceStack才能使用自托管。这样做的方法是在控制台应用程序中创建一个AppHostHttpListenerBase
AppHost,如链接(上图)所示。
拥有自托管应用程序后,您将配置ServiceStack将侦听的主机名和端口。如果您导航到该URL,您应该会看到ServiceStack服务。
如果您选择不使用节点(选项1),则可以直接访问ServiceStack应用程序。如果您确实希望与节点一起使用,因为您的应用程序的某些其他部分已经使用了节点(选项2),请按照以下步骤设置代理。
节点有many proxy modules可用。我选择了流行的node-http-proxy
, by nodejitsu。
设置看起来很简单。端口80 标准http端口上的请求将转发到localhost:9000
上的ServiceStack应用程序。假设它正在运行。
var http = require('http'),
httpProxy = require('http-proxy');
httpProxy.createProxyServer({target:'http://localhost:9000'}).listen(80);
如果您需要更多控制权。查看所有options in the documentation。