|
Eddy Vluggen wrote: pushing updates
Well pushing is never a good idea. Polling is the only way, whatever the implementation.
Eddy Vluggen wrote: not done for a complete database
Oh, heck no, only the pertinent information.
|
|
|
|
|
PIEBALDconsult wrote: Well pushing is never a good idea. Polling is the only way, whatever the implementation.
Life isn't that black and white; we built a realtime visualization of a plant, and it worked nicely under that architecture. Then again, that too is very different from making a database update it's clients.
I'd guess that games like World of Warcraft work in a similar way
Bastard Programmer from Hell
|
|
|
|
|
Pushing is sometimes exactly what you want. Only in a web app is it not an option to consider, and that's because it's impossible. In general pushing uses less bandwidth because you only push when there is a change, whereas polling makes lots of 'has anything changed? no' requests.
|
|
|
|
|
I expect that push requires a bunch of "are you still there? yes" messages, so I don't see the difference. Pull also makes it easier for different clients to poll at different intervals. And also allows a button to "get updates now".
|
|
|
|
|
TCP handles keep-alive on a very low level and the bandwidth usage is negligible. (Actually as recently discussed in another thread, it doesn't necessarily send any messages at all.)
Why would you need to poll at different intervals if you're receiving the data you're interested in continuously? The volume of updates is the same either way, unless your infrequently updated client actually misses out on some updates, but it is more continuous and therefore less peak-intensive if it is pushed rather than pulled.
You don't need a button to 'get updates now' if you're always up to date. Having such a button is a sign that you should be doing real live updating, i.e. push, unless it's a web app where that's impossible.
|
|
|
|
|
vjs2445 wrote: display around 20 to 30K records in front end application
That's probably a bad idea. I know I would never want to see that much data at one time. What do the users want?
vjs2445 wrote: show Live Data
In the past I've used a timer (System.Timers.Timer) to poll for new data; I made the interval user-settable.
vjs2445 wrote: Multi-Threaded app
The Timer takes care of much of that.
We would need to know more about kind of data and application this is.
|
|
|
|
|
Following is the req:
Trade Portfolios needs to be reconcile and if good then the end users (Say about 20-30users) will use it.
If not good then the differences need to updated in the database and should reflect the modified data to all users(kind of live data) and again the same above process.
There will be addition of new data in the database and that also needs to be displayed as Live data.
Please provide the your expertise on the above requirements:
Right now my concern is to to give a proposal How we can achieve with What different technologies?
I am recommending the
back end data source is : sybase or sql server
Front end will be either Excel or CSharp multithreaded application.
Middle portion: Should I use WFC (Web Services) or some thing else not sure?
Please provide your feedback.
|
|
|
|
|
I would write an app that allows a user to get the next portfolio to reconcile, and shows only that one. Once the portfolio is marked as reconciled, the next portfolio can be retrieved.
Yes, use SQL Server.
Yes, use C# -- but it needn't be multi-threaded.
Yes, use WCF.
|
|
|
|
|
Well thats good cuzz we are narrowed down to choices.
What would you recommend from
Front End: with 20 to 30K records of data: web based front end or desktop based front end. Which one makes more sense?
Middle End: WCF: Do you know any good book or valuable resources from Beginning to Advance level on this WCF?
|
|
|
|
|
vjs2445 wrote: with 20 to 30K records of data
NO NO NO NO NO!!!
vjs2445 wrote: desktop based front end
That's what I do, but that's just me.
vjs2445 wrote: WCF: Do you know any good book or valuable resources
I have a copy if this[^], but you could probably get something newer. And there are articles here too (I haven't written mine yet).
|
|
|
|
|
|
I personally use web based (using Silverlight) now even though I'd prefer to develop desktop with WPF. This opens up the app to Mac users as well. Also there's no installation/deployment issues.
WCF with Silverlight and/or WPF will give you simplified communication development including duplex communication for "pushing" data to clients. Note WCF has nothing to do with data extraction. Everything you need to know with samples can be found in the docs: Windows Communication Foundation[^]
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
|
It depends (doesn't it always), in this case on user count, criticality of 'live' (i.e. does it have to be right now, or will 30s later? a minute later? etc do?) and volume of data which is changed.
You really, really don't want 20,000 records in the front end at once. That much data is not parsable by a human, and if you throw that at your users they will just press 'Reconcile' without reading it properly.
It sounds like you're backing onto a database already, so stick with that. I'd use a server-side business layer which handled requests and talked to the database, and also managed updates. Whether to do that as a simple web app with AJAX and polling for updates (with the server maintaining some kind of memory of when it last updated a client and what it's looking at) or a standalone server app hosting a TCP server which pushes updates (again, only sending data that is currently active in a client) depends on the questions above, and also whether web/desktop is specified in the requirements.
|
|
|
|
|
Not sure it it the right forum .. anyway forgive me
I was using VS2010 UML Class Diagram
Adding many "operations" to a class, apparently I'm not able to decide the visualization sorting. So if I have a sequence of operations (let's say:
+Operation1()
+Operation2()
+Operation3()
I'm not able to change order, like
+Operation3()
+Operation1()
+Operation2()
I did not find any help on msdn
Thanks for your time
|
|
|
|
|
1) This is not really the right forum.
This is the C# forum.
2) If you are adding methods in a class diagram, you really need not worry about the order (unless there is some specific reason you want to).
The order in which these methods is called is important in the sequence diagrams.
|
|
|
|
|
The reason is that I was doing a .doc with a UML pasted. The sequence of operations have a logic meaning in the .doc. Many software like StarUML allow you to sort +Operation(), I thought VS2010 was able too. No problem.
Thanks a lot
|
|
|
|
|
Greetings Gurus,
The problem:
"The variable name '@Tstamp' has already been declared. Variable names must be unique within a query batch or stored procedure."
Guesstimate cause:
The data in the variable '@Tstamp' is not being released
The code
SqlCommand inst = new SqlCommand("INSERT INTO dbo.DrvInfo(Tstamp)" +
"VALUES (@Tstamp)", DrvInfo);
DriveInfo[] drives = DriveInfo.GetDrives();
foreach (DriveInfo d in drives)
{
Console.WriteLine(d.Name);
Console.WriteLine(d.DriveType);
if (d.IsReady == true)
{
string label = d.VolumeLabel;
if (label.Length == 0)
label = "No Label";
Console.WriteLine(d.VolumeLabel);
Console.WriteLine(d.AvailableFreeSpace / 1024000000);
Console.WriteLine(d.TotalSize / 1024000000);
DrvInfo.Open();
inst.Parameters.Add("@Tstamp", SqlDbType.NVarChar, 50).Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", System.Globalization.CultureInfo.InstalledUICulture);
inst.ExecuteNonQuery();
DrvInfo.Close();
}
else
Console.WriteLine("uh oh");
}
The question:
In iterating through the values of the foreach, how do I dispose of the first set of collected data so that the next set can be written to the table?
Can you help please? Do I need to declare each variable as "Nothing" before restarting the loop?
|
|
|
|
|
You can only ADD the parameter once. So add it before the foreach loop, not inside it (And without the .Value = part)... Then, inside the loop, do something like:
inst.Parameters["@Tstamp"].Value = DateTime.Now.ToString.....
|
|
|
|
|
Hi Ian,
I still trying to figure a lot of this stuff out so thank you, it's working now.
If I may ask, there are quite a lot of parameters to add so is there a more efficient way of writing
inst.Parameters.Add("@Tstamp", SqlDbType.NVarChar, 50);
inst.Parameters.Add("@SysID", SqlDbType.NVarChar, 5);
inst.Parameters.Add("@Drive", SqlDbType.NVarChar, 5); ?
Something along the lines of
inst.Parameters.Add(("@Tstamp", SqlDbType.NVarChar, 50)&("@SysID", SqlDbType.NVarChar, 5)& ("@Drive", SqlDbType.NVarChar, 5);
I know '&' is the wrong operator but I am using it to illustrate an idea.
Thanks again,
|
|
|
|
|
Not that I'm aware of. I mean, you could put together an array of field names, an array of data types, and an array of sizes, but I doubt you want to go through all that.
In my system, I actually wrapped command objects a custom DBCommand class, so instead of adding parameters manually, I had the constructor parse out commands like in a string.Format... So in your case, I would do something like:
INSERT INTO dbo.DrvInfo({{s:Tstamp/50}}, {{s:SysID/5}})
And with a little regular expression parsing, the DBCommand constructor would replace those codes with parameter names, generate the parameter objects, etc.
Can't post the actual code, though... Proprietary... Ya know...
|
|
|
|
|
Thanks Ian,
I was thinking along the same lines but, considering I have 7 entries in the loop and another 5 entries in another loop, the lines of code used wrapping the objects is actually greater than the way I was doing it initially (counting declarations etc.).
I think it will be easier to just keep doing it the way I was.
Thanks for the help anyway.
|
|
|
|
|
Nice. Didn't know you could do that.
|
|
|
|
|
Yeah, what Ian said.
Also...
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss" don't store dates as strings, use DateTime.
|
|
|
|
|
Hi again PIEBALDconsult,
I had to because I could find no other way to get my date to display as 2011-10-14 22:14:00. It kept reading as 14-10-2011 22:14:00.
I need it to do this for the purpose of sorting by date.
|
|
|
|