What is the best practice for push database change notification
-
suppose think you are in same situation where you need to push data change in db to many windows client but you do not know how many client may run your apps in future. so tell me how do you write your application.....what kind of logic you would use for better performance and faster notification push to client. looking for your guidance. thanks
tbhattacharjee
As Pete has suggested look at SignalR its a great library, have a look at this article Streaming live results to a web site using MSMQ/Duplex WCF/SignalR/jQuery[^] by Sacha Barber and Richard E King. might be overkill for your needs but it shows you what you could potentially achieve.
Every day, thousands of innocent plants are killed by vegetarians. Help end the violence EAT BACON
-
Tridip Bhattacharjee wrote:
what technology people use in share trading application
You'd have to be more specific than "share trading application". Doing buying/selling/orders in a database is not HFT.
Tridip Bhattacharjee wrote:
because each share price frequently goes up and down
Yes, but if you blow each fact (out of, say 10.000 shares?) to all 1000 users, your network would likely be down, without an up in sight.
Tridip Bhattacharjee wrote:
o discuss if you were in that kind of situation.
They'd get a webpage where they can hit F5 until the requirements dictate they need something else.
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^]
You also make a reference to Hell; how dare you? Please change your signature to "Legitimate-Born Programmer from Heaven" ASAP, so that we, innocent developpers, are not freaked out anymore.
There are two kinds of people in the world: those who can extrapolate from incomplete data.
-
thanks for your time. here i am giving answer for your question point wise. 1) Is this a Windows client or browser-based client-server app? yes Windows client. 2)Do all the clients have to same bandwidth? not necessarily and not known. 3) What sort of client "devices" are we talking about? a win client will run on normal pc at client side 4)What is the client going to do with a given "notification"? then moment notification comes at client side then client will insert or update that data in its gridview. 5) Even if an SqlDependency instance "threw an exception", why do you think this is a problem? (Just create a mechanism to restart it) - Why do you think that "100 SqlDependency instances" is a limitation? Or put another way, yes i can handle exception and start. i did it this way. here i am going to put a small code just to show how i am handling the exception but not sure that am i on right path? here is the code
void OnDataChange(object sender, SqlNotificationEventArgs e)
{
((SqlDependency)sender).OnChange -= OnDataChange;if (e.Source == SqlNotificationSource.Timeout) { var template = new MailTemplate() .WithBody("HI,<br><br>Part Indexer Service Exception Timeout occur " + DateTime.Now.ToLongDateString()) .WithSubject("Part Indexer Service Exception Timeout occur") .WithSender("bba-india@bba-reman.com") .WithRecepient("tridip@bba-reman.com") .Send(); RegisterNotification(); return; } else if (e.Source != SqlNotificationSource.Data) { var template = new MailTemplate() .WithBody("HI,<br><br>Part Indexer Service Exception SqlNotificationSource.Data " + DateTime.Now.ToLongDateString()) .WithSubject("Part Indexer Service Exception SqlNotificationSource.Data") .WithSender("bba-india@bba-reman.com") .WithRecepient("tridip@bba-reman.com") .Send(); Environment.Exit(1); } StartIndex(); RegisterNotification(); }
i guess some where i read that sql dependency support upto 100 instance. so if more client need to run my win apps then
Quote:
please answer my all question point wise.
My points were intended to get you thinking. Anyway … 1) If they are Windows clients, then you have more architectural possibilities: e.g. async callbacks; message queues; etc. 2) If they are all “Windows clients”, we can assume (hopefully) that bandwidth is not an issue. 3) OK; no “watches” then. 4) I see … “real-time” gridviews … with a person sitting there watching it change? With updates “as fast as possible”. Sounds like a bogus requirement. 5) I’m not writing your code for you … Do the prototype. You said yourself that it was only possible to run 100 instances of the SQLDependency … Why do “you” think this is a problem? You can have “one” running on the server; which then communicates with “all” clients … Why do you think you need more than one? 6) “As fast as possible” is a non-answer; how will you know if it is ever “fast enough”? 7) Instead of “broadcasting” to all clients at any given time, one or more clients can be notified on a rotating basis; spreading out the load. Do the prototype.