Last post Dec 11, 2014 01:40 PM by johnkwaters
Dec 04, 2014 10:11 AM|johnkwaters|LINK
1. It seems that when using SQLServer as a backplane, when the a signalr operation is invoked through the middle tier, the MSDTC get's involved. Is there a way to get SignalR to ignore any ambient transaction?
2. The tran log gets huge real fast, does it need to, this is transient data? Does Signal clean up? How exactly does it use transactions?
Dec 11, 2014 02:55 AM|gtscdsi|LINK
If you are concerned about the performance, you can take a look at this link:
The SQL Server-based backplane uses tables to restore message queues circulating through the system and, optionally, the internal messaging broker for the optimized management of publications and subscriptions. SignalR manages the tables. As long as your
application is deployed, it is recommended not to delete rows, modify the table, and so forth. Generally the tran log won't be a problem.
For the detailed usage of the transactions from SignalR perspective, you can take a look at the relative implementation here:
Dec 11, 2014 01:40 PM|johnkwaters|LINK
Thanks for the detailed info.
As far as not getting MSDTC involved, that happens as soon as there are two different connections being used within a transaction, even if they are identical connection strings. I had the same problem with the SqlMembership provider, as soon as I had my
own transaction, and invoked something that used SqlMembership, I would get a distributed transaction. I solved that by modifying the SqlMembership provider source code to use the same connection object in this case.
Would it be possible for SignalRs implementation to provide a hook for this, i.e a NeedsConnection callback where I could provide an IDbConnection to use?