Работя по проект с множество наематели, в който всеки наемател има свои клиенти. В момента внедрявам неща в реално време, в които всеки път, когато някой клиент се регистрира или съществуващ клиент редактира информацията в своя профил, искам да уведомя наемателя за този клиент в реално време (използвайки signalR).
За откриване на промени в клиентската таблица използвам SqlDependency и SqlTrigger. Trigger ще направи записа в таблицата за уведомяване (която основно съдържа някои идентификатори (като TenantId, CustomerId), които се засягат и някаква друга информация) и в събитие, задействано от Sqldependency, аз извиквам метода, който допълнително ще извиква клиентския метод, използвайки signalR контекст.
Сега проблемът ми е, че не мога да осъществя достъп до нишката HttpContext.Current в събитието Sqldependency, тя е нула, защото не се случва заявка за нейното изпълнение. Проверете това изображение:
Моля, поправете ме, ако греша. Искам да получа достъп до този HttpContext.Current, защото искам да получа достъп до текущия клиент, за да уведомя. И моето изпълнение на TenantProvider получава клиента от Url хоста.
Така че първият ми въпрос е, има ли някакъв начин за достъп до контекста, в който се изпълнява кодът на функцията за събитие??
Ако не, тогава имам друг вариант с някои съмнения. Опцията е, че запазвам таблицата Промени в известията, която съдържа информация за TenantId, CustomerId и т.н. Мога да получа достъп до известието с най-новото времево клеймо и от този запис мога да получа tenantId за известяване.
Сега съмнението, ако 2 или повече клиенти се регистрират едновременно и преди достъп до най-новия запис за известие с времеви печат, задейства въвеждането на друго известие, отколкото в този случай сме пропуснали някои известия.
Така че вторият ми въпрос е дали прекалявам с това или това наистина е проблем. Ако това наистина е проблем, моля, уведомете ме за решението??
CustomerId
доTenantId
през една от вашите таблици? - person zimdanen   schedule 17.04.2014