Extreme virtualization

2 posts, 0 answers
  1. Gunnar
    Gunnar avatar
    28 posts
    Member since:
    Aug 2009

    Posted 29 Mar 2011 Link to this post

    OK, I admit, this is rather extreme, but I'm still curious if it's possible.

    I have the GridVew running with virtualization through VirtualQueryableCollectionView and I have a tailored DomainService that help in putting the correct queries. This works like a charm except for a slight delay after the first query, but that's not the issue for this post.

    Assume the following:
    • I have a rather large Active Directory ( some 15.000+ accounts)
    • I have a rather large SQL database with additional information on the AD accounts.
    • I want to query the database for all records for users that are members of a specific group in AD (one potential group is "Domain users"...)
    • I want to present the result as quickly and smoothly as possible and provide a virtual paging mechanism.

    Today I have a DomainService that do the job, but waaay to slow. To gather a list of account names from AD takes about 5-10 seconds (Domain Users), but the resulting SQL query include a 300KB+ string of account names and SQL require 200+ seconds to complete the query.

    So, the scenario I'm looking for is to have some kind of virtual paging on the server as well as on the client, like:
    • The client request the first 50 rows (LoadSize=50)
    • The DomainService gather the account list from AD (and cache it...)
    • The account list is sorted
    • The DomainService initiate a SQL query with a subset of the accounts that will fulfill the request for 50 rows and return the result to the client. (...and I can't use .Take(50) since this will fire the complete 200+ second query)
    • When the client request additional rows, the DomainService request additional data if necessary and return it to the client.
    • ...and so on...
    • AND - the Entity Framework context must be valid and if the client call SubmitChanges() it must still work...

    If this is at all possible, I must probably restrict filtering and sorting on the client and use a strict sorting.

    So, is this possible?

    And a related question: How can I extend the timeout from the silverlight client to the DomainService? I have been able to adjust the timeout on the server (for the SQL query) so it survives the 200+ second wait for the answer, but I still haven't been able to extend the 1 minute timeout on the client.

    The closest I have come (that at least is accepted by the compiler) is the following:

    ((WebDomainClient<PKICertificateDomainContext.IPKICertificateDomainServiceContract>)context.DomainClient).ChannelFactory.Endpoint.Binding.SendTimeout = new TimeSpan(0, 30, 0);
    ((WebDomainClient<PKICertificateDomainContext.IPKICertificateDomainServiceContract>)context.DomainClient).ChannelFactory.Endpoint.Binding.ReceiveTimeout = new TimeSpan(0, 30, 0);

    But it has no effect whatsoever...
  2. Rossen Hristov
    Rossen Hristov avatar
    2478 posts

    Posted 04 Apr 2011 Link to this post

    Hi Gunnar,

    Both of your questions seem related to WCF RIA Services. If this complex scenario that you are trying to achieve was possible, I am sure that you will get feedback on the WCF RIA Services forums. 

    In case you have a specific questions or problems regarding a Telerik component, please don't hesitate to contact us again.

    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  3. DevCraft R3 2016 release webinar banner
Back to Top