C# - Improving Speed When Loading A List From A Web Service?
Aug 2, 2010
This is a continuation on this question:The problem is simple. I need to call methods from a REST web service which controls several tables. One table is a snapshot table which contains records with huge XML files. Each XML file is basically a backup from another database. This backup XML is then sent to customers who use the data as read-only information in another product. Basically, the data in the XML are lists of companies, products, business rules and whatever more. And no, those customers work offline most of the time, so they cannot get the data live.Walking through the list of snapshots is tricky: XMLData.Snapshots.Skip(N).Take(1).First(); but it works very nice. It's the answer of the previous Q.But there are three other lists of data that I need to walk through. These are called Changes, Errors and Messages. They contain (1) changes to the data, (2) errors that occurred during modifying the data and (3) generic messages. All of these records are linked to a snapshot record. Thus a single snapshot can contain multiple changes, errors and messages.
I still cannot access the server code but since there's a REST service wrapped around an entity framework exposing most of the functionality, I can still use that service. (And that service is only accessible internally, on the Intranet. This is basically what I have to work with. And while the lists of changes, errors and messages are relatively small, the snapshots are still huge.
The problem is that I now want to generate a client-side report of the changes, errors and messages, but without grouping them by snapshot! They need to be grouped by date. But each record also needs to show the title of the snapshot, which causes me some incredible headaches...When walking through e.g. the Changes with the regular foreach instruction I can load the Snapshot data by using XMLData.LoadProperty(Change, "Snapshots"); but since the snapshot record itself is generally about 300 MB, this just slows the whole thing down to a crawl. (There are tens of thousands of these records in total!) So I need a faster solution, without having to modify the server code.
Yeah, okay. Modifying the server would be the proper way but that's not possible. It's in production and this list isn't important enough to require an upgrade of the server. Basically, I'm not allowed to modify any server-code for now. (But they still want this list.)The application I'm working on is something that just needs to run once per week or per month. But with the current amount of records, I estimate it would take more than two days to finish. The data itself will be updated a few times every office day and snapshots are created every week or so on the server. Errors can always be generated when users start browsing the site which maintains the data but in general, there will be about 50 changes and 4 errors per week, plus a few messages when the server goes down and up again or when snapshots are generated.
I'm using Webservice which will return the data from the database through datatable and I'll convert the datatable into byte array. In front end, I'll reconvert the bytearray to datatable and used ajaxloader to display it in the form.. It is dynamic loading. So, for each click, it is taking 10 seconds to retreive the data regardless of the size of the data. So, I used static datatable and I've loaded all data in that datatable in page load event. But, no reaction. It is taking only same time. Even, there is no data to retreive, the ajax loader is going on loading for 10 seconds. Problem is with Ajax or my webservice??
My Code for listboxclick event
protected void listboxcity_SelectedIndexChanged(object sender, EventArgs e) { string sqlvalue = string.Empty; //Thread.Sleep(200); for (int i = 0; i < listboxcity.Items.Count; i++)
I want to implement the following page by Asp.net version 4.0 and ajax but I want to have loading by order like loading item 1 and 2 and so on. I have container or web part but mostly container like simple asp.net panel. how I can implement it ? I used updatepanel and update progress but it doesn't work that I have expected before.
I am facing problem with images loading time. In my form I have image server control placed in repeater control. The repeater control every time binds atleast 300 images. When we want to see all the images at a time the page is taking lot of time(atleast 3 to 4 mins) to display. But I need the page should be loaded fast.
The image url is from physical location.And the information related to image is coming from database.
I am using .net framework 3.5 and C#.net as language in asp.net web application.
So I've got my jquery autocomplete 'working,' but its a little fidgety since I call the webservice method each time a keydown() fires so I get lots of methods hanging and sometimes to get the "auto" to work I have to type it out and backspace a bit because i'm assuming it got its return value a little slow. I've limited the query results to 8 to mininmize time. Is there anything i can do to make this a little snappier? This thing seems near useless if I don't get it a little more responsive.
I have Sql Table for Products that have ~8000 records. In my web form I want use dropdown list to edit code with dropdown list. This drop down list populate very slow. How to increase speed to populate dropdown list with large amount data.
I have built a WCF Service that is being consumed by a Silverlight app. At first I created one method that was very simple:
public String SfTest() { return "SF Test"; }
No poblem. My silverlight app references my service and displays "SF Test" in a textbox. Now I add a method to my wcf service like this:
public List<String> GetTest() { List<String> list = new List<string>(); String a = "a"; list.Add(a); String b = "b"; list.Add(b); return list; }
I update the reference to the service in my Silverlight app and the using statement in my xaml cs page throws an error like the service doesn't even exist although it is there. I am assuming the problem has to do with datatypes or serialization or something like that but it is driving me up the wall. Why can't I consume a simple generic list in my Silverlight app through the WCF service.
I have a pretty big web site (asp.net web) and I have used JavaScript intensively (jquery,custom javascipt, etc) and also The theme and CSS. Right now I have a huge amount of js and css files in my system and I am thinking about minifying and smashing the js and css to improve the performance. So, please advice me the suitable tools and technologies to be used and please suggest me the best practices to be applied in these scenario.
Please can any body provide me suggestions for standards that you feel are necessary or are areas where effciency/maintenance would improve through standardization.Like GUI,Controller,Repository.Any ideas reagrding ViewModels can be specified under the Controller section? if we place any good results?
In my webpage, the page uses lots of images and css. The time taken to load the initial home page is huge.What are the ways,which can be done in IIS 6.0 to improve the performance?I checked few results in google, which talked about File expiration policy and enabling http compression in IIS 6.0. In the Enable content expiration, what value should be ideally used?In the Custom Http header, what should be added to improve the performance.
I am working on a small project that requires gridview paging for upto 100k records. what are the ways i can improve the performance. I tried to page using sql server with Temp table but it still is a bit on the slower side.
We are using MSChart on an ASP.net 3.5 web application and noticing significant slowness from enabling tooltips. the performance of drawing a chart is increased by 1,000-2,000ms.The chart output is PNG, and contains in total 108 data points.
I have developed a gridview which has 7,000 records with some filtering. However, theuser is compaining that it is too slow. It seems to me that if the records were stored in memory it would be much faster. This is caching, I think. Is that the case? Can you updaterecords this way? Can you cache with an Access database or do you have to use SQL Server? Can you think of any other ways to improve
I'm doing a timesheet program. In this timesheet program, I have a default button. If a person doing a same task everyday, they can just fill out the task description & click on default button, it will add that task for 5 days.my question is that my button click has to hit database 7 times. Is there anyway that I can improve this?
I tried to search around, but could not find anything for this question which must be wrong, because I would guess there were a lot of topics about it.
Anyway, I would like to load lists on my site in a similar style to Facebook and Twitter, where initially x records are loaded into the list, and then after the page has loaded the list expands downwards with more rows of content, or add a "more" button in the end. I am using ASP.NET with C#.
public List<Customer> GetCustomers() { PR1Entities dc = new PR1Entities(); var q = (from x in dc.Customers select x).ToList(); return q; } (customer is a entity object)
Then I generate the proxy when I add the service.. and in the reference.cd it say
public wcf1.ServiceReference1.Customer[] GetCustomers() { return base.Channel.GetCustomers(); }
I have an object that contains a list of Email addresses and EmailIDs.
Code: public class DataObjects { public class UserEmails { private string _Email; public string Email
[Code] ....
And I populate it like this:
Code: protected void GetEmails() { DataAccess da = new DataAccess(); //this is a separate Data Access class with loads of methods to access the database List<DataObjects.UserEmails> myUserEmailsList = new List<DataObjects.UserEmails>(); //create a list of UserEmails objects myUserEmailsList = da.getUserEmails(1); //this passes in a UserID to the data access function that returns me a list of emails for this user myPassedList(myUserEmailsList); //I pass the list to another function just to prove the data is there and can be retrieved. }
The last line in GetEmails passes the list to myPassedList
Code: protected void myPassedList(IList EmailsList) { foreach (DataObjects.UserEmails myUserEmails in EmailsList) //loop through the list to prove it is populated etc. { int EmailID = myUserEmails.EmailID; string Email = myUserEmails.Email; } }
Everything above works fine. Here's the question. When I am at the point where I have populated the List of UserEmails - I need to pass it to a web service for someone else to access the data.
I pass my list to a function and I can loop through it by writing:
foreach (DataObjects.UserEmails myUserEmails in EmailsList)
which is fine, for me, because my application knows what DataObjects.UserEmails means ... the people receiving the list won't. They are just getting a list.
Can they loop through the list I pass them without knowing the structure of the object in the list and just extract the data?
I'm using a web service and I want to return a list to my client. I am nearly newby at web services and I can't return a List<String> object to my client. But when i call the method it says "Unable to cast object of type 'System.Collections.Generic.List`1[System.String]' to type 'System.String[]'" What should I do?