Can I incorporate both SignalR and a RESTful API?
Take a look at the video from this blog post. It explains exactly how you can use WebAPI with SignalR.
Essentially, Web API + SignalR integration consists in this class:
public abstract class ApiControllerWithHub<THub> : ApiController where THub : IHub{ Lazy<IHubContext> hub = new Lazy<IHubContext>( () => GlobalHost.ConnectionManager.GetHubContext<THub>() ); protected IHubContext Hub { get { return hub.Value; } }}
That's all. :)
SignalR is actually already incorporated into WebAPI source vNext (4.1).
If you use not the RTM build, but instead grab a build off Codeplex, you'd see there is a new project there called System.Web.Http.SignalR
which you can utilize. It was added a couple of days ago with this commit - http://aspnetwebstack.codeplex.com/SourceControl/changeset/7605afebb159
Sample usage (as mentioned in the commit):
public class ToDoListController : HubController<ToDoListHub>{ private static List<string> _items = new List<string>(); public IEnumerable<string> Get() { return _items; } public void Post([FromBody]string item) { _items.Add(item); // Call add on SignalR clients listening to the ToDoListHub Clients.add(item); }}
If you do not want to switch to vNext for now, you could always just use that code for reference.
This implementation is very similar (a bit more polished, includes tests etc.) to what Brad Wilson showed at NDC Oslo - http://vimeo.com/43603472
Here is a video showing an integration of the two technologieshttp://channel9.msdn.com/Events/TechDays/Belgium-2013/25and here there is a NuGet package for the integrationhttps://www.nuget.org/packages/Microsoft.AspNet.WebApi.SignalR/