Web 在服务堆栈RESTAPI服务中使用信号器
是否可以在服务堆栈项目中使用信号器?我们目前正在为RESTWebAPI使用服务堆栈。我们对它的体系结构、灵活性等总体上感到满意。现在我们正在探索使用事件驱动或推送技术(vs轮询状态)与呼叫客户进行通信的方法。我应该注意到,我们目前使用AppHostHttpListenerBase(vs在IIS中托管)在windows服务中托管API 是否有可能配置一条专用的路由,以某种方式传递到信号中心,这样这两条路由就可以共存?e、 g.Web 在服务堆栈RESTAPI服务中使用信号器,web,webserver,signalr,servicestack,Web,Webserver,Signalr,servicestack,是否可以在服务堆栈项目中使用信号器?我们目前正在为RESTWebAPI使用服务堆栈。我们对它的体系结构、灵活性等总体上感到满意。现在我们正在探索使用事件驱动或推送技术(vs轮询状态)与呼叫客户进行通信的方法。我应该注意到,我们目前使用AppHostHttpListenerBase(vs在IIS中托管)在windows服务中托管API 是否有可能配置一条专用的路由,以某种方式传递到信号中心,这样这两条路由就可以共存?e、 g.http://localhost:8000/api/live/jobs/
http://localhost:8000/api/live/jobs/jobid
将命中信号机代码,但http://localhost:8000/api/jobs/jobid
将路由到当前基于DTO的服务堆栈代码
PS-我们希望继续以自主机模式托管,因为我们喜欢移植到Mono并在Linux上运行的灵活性(而不是绑定到IIS)。Signal提供了一个使用OWIN构建的选项
我注意到,如果您无法在适当的位置添加信号器,服务堆栈将被删除
然后,您可以使用类似的工具轻松托管应用程序的两个部分,而无需将自己绑定到任何一个服务器实现
以下是自主机启动代码,以供参考:
using System;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Hosting;
using Owin;
namespace SignalR.Hosting.Self.Samples
{
class Program
{
static void Main(string[] args)
{
string url = "http://localhost:8080";
using (WebApplication.Start<Startup>(url))
{
Console.WriteLine("Server running on {0}", url);
Console.ReadLine();
}
}
}
class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapHubs();
}
}
public class MyHub : Hub
{
public void Send(string message)
{
Clients.All.addMessage(message);
}
}
}
使用系统;
使用Microsoft.AspNet.signal;
使用Microsoft.Owin.Hosting;
使用Owin;
命名空间SignalR.Hosting.Self.Samples
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串url=”http://localhost:8080";
使用(WebApplication.Start(url))
{
WriteLine(“在{0}上运行的服务器”,url);
Console.ReadLine();
}
}
}
类启动
{
公共无效配置(IAppBuilder应用程序)
{
app.MapHubs();
}
}
公共类MyHub:Hub
{
公共无效发送(字符串消息)
{
Clients.All.addMessage(message);
}
}
}
这篇博客文章介绍了如何将信号器与ServiceStack后端一起使用:
总之,您必须将ServiceStack请求行为更改为Buffered
public HelloAppHost()
: base("Hello Web Services", typeof(HelloService).Assembly)
{
PreRequestFilters.Add((req,res) => req.UseBufferedStream = true);
}
然后您可以向服务方法添加[IncomingHub]、[OutgoingHub]属性,如Get()和Post()等
至于ServiceStack中的OWIN支持,请不要屏息以待。显示了主要维护人员的观点,即此时没有足够的理由添加支持 我刚刚遇到了这个问题——你有没有找到解决办法?