<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="http://syndication.webwiz.co.uk/rss_namespace/">
 <channel>
  <title>DevForce Community Forum : WebForm-base app performance problems</title>
  <link>http://www.ideablade.com/forum/</link>
  <description>This is an XML content feed of; DevForce Community Forum : DevForce Classic : WebForm-base app performance problems</description>
  <pubDate>Thu, 11 Jun 2026 01:37:24 -700</pubDate>
  <lastBuildDate>Tue, 05 Aug 2008 13:36:07 -700</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 9.69</generator>
  <ttl>360</ttl>
  <WebWizForums:feedURL>www.ideablade.com/forum/RSS_post_feed.asp?TID=899</WebWizForums:feedURL>
  <image>
   <title>DevForce Community Forum</title>
   <url>http://www.ideablade.com/forum/forum_images/IdeaBlade_logo_tm.png</url>
   <link>http://www.ideablade.com/forum/</link>
  </image>
  <item>
   <title>WebForm-base app performance problems : Here are some introductory remarks...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3268#3268</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=23" rel="nofollow">davidklitzke</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 05-Aug-2008 at 1:36pm<br /><br /><P ="Ms&#111;normal"><FONT face=Arial color=navy size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Here are some introductory remarks on ITypedList:</SPAN></FONT></P><FONT face=Arial color=navy size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><DIV><FONT face=Arial color=#0000ff size=2>One cannot add a dynamic property to a type: one can only tell a list that contains instances of that type to report (to whomever asks in the correct manner) that such and such property exists. This is done by writing the list so that it implements the .NET ITypedProperty interface, which mandates that the implementing list include a method called GetItemProperties(). Our lists, and some of the .NET lists, do implement ITypedList; but it is&nbsp;<SPAN ="161590020-07022008">still </SPAN>up to the author of the list class to determine how GetItemProperties() shall decide what it returns.</FONT></DIV><DIV>&nbsp;</DIV><DIV><FONT face=Arial color=#0000ff size=2>When a consumer calls GetItemProperties<SPAN ="161590020-07022008">()</SPAN> on one of our lists (BindableList&lt;T&gt;<SPAN ="161590020-07022008">,</SPAN> or a subclass), the method searches a dictionary (again of our making) to see what properties it should tell the caller are available for binding on the contained type.&nbsp; </FONT></DIV><DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV><DIV><FONT face=Arial color=#0000ff size=2>For example, suppose our ControlBindingManager<SPAN ="161590020-07022008"> designer</SPAN> asks the m<SPAN ="161590020-07022008">Employees</SPAN> entity list<SPAN ="161590020-07022008"> (by calling GetItemProperties() on it)</SPAN>, "What properties are available on the&nbsp;<SPAN ="161590020-07022008">Employee </SPAN>type for binding to?"&nbsp; m<SPAN ="161590020-07022008">Employees</SPAN>&nbsp;<SPAN ="161590020-07022008">replies</SPAN>, "<SPAN ="161590020-07022008">LastName</SPAN>,&nbsp;<SPAN ="161590020-07022008">FirstName</SPAN>,&nbsp;<SPAN ="161590020-07022008">BirthDate</SPAN>, and&nbsp;<SPAN ="161590020-07022008">SalaryControl</SPAN>BackColor".&nbsp; <SPAN ="161590020-07022008">LastName</SPAN>,&nbsp;<SPAN ="161590020-07022008">FirstName</SPAN>,&nbsp;<SPAN ="161590020-07022008">and </SPAN><SPAN ="161590020-07022008">BirthDate </SPAN>are properties that are defined in the&nbsp;<SPAN ="161590020-07022008">Employee </SPAN>class, but&nbsp;<SPAN ="161590020-07022008">SalaryControl</SPAN>BackColor is a property that your code added dynamically (<SPAN ="161590020-07022008">perhaps </SPAN>by calling m<SPAN ="161590020-07022008">Employees</SPAN>.AddPropertyDescriptor())<SPAN ="161590020-07022008">.</SPAN>&nbsp; AddPropertyDescriptor<SPAN ="161590020-07022008">()</SPAN> didn't add&nbsp;<SPAN ="161590020-07022008">the property </SPAN>to the&nbsp;<SPAN ="161590020-07022008">Employee </SPAN>type&nbsp;<SPAN ="161590020-07022008">directly </SPAN>--&nbsp;<SPAN ="161590020-07022008">that </SPAN>can't&nbsp;<SPAN ="161590020-07022008">be done</SPAN> -- instead, it added&nbsp;<SPAN ="161590020-07022008">a PropertyDescriptor representing SalaryControlBackColor </SPAN>to our dictionary of PropertyDescriptors. <SPAN ="161590020-07022008">But a</SPAN>nything reflecting directly against the&nbsp;<SPAN ="161590020-07022008">Employee </SPAN>type for a list of properties will find nothing about a&nbsp;<SPAN ="161590020-07022008">SalaryControl</SPAN>BackColor property.</FONT></DIV><DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV><DIV><FONT face=Arial color=#0000ff size=2>When you code an expression like </FONT></DIV><DIV><FONT face=Arial><FONT color=#0000ff><FONT size=2><SPAN ="161590020-07022008"></SPAN></FONT></FONT></FONT>&nbsp;</DIV><DIV><FONT size=+0><FONT size=+0><FONT face=Arial><FONT color=#0000ff><FONT size=2><SPAN ="161590020-07022008">&nbsp;&nbsp;&nbsp; </SPAN>emp.Manager.LastName<SPAN ="161590020-07022008">,</SPAN></FONT></FONT></FONT></FONT></FONT></DIV><DIV><FONT face=Arial><FONT color=#0000ff><FONT size=2></FONT></FONT></FONT>&nbsp;</DIV><DIV><FONT size=+0><FONT size=+0><FONT face=Arial color=#0000ff size=2>.NET looks (directly) at the type&nbsp;<SPAN ="161590020-07022008">(Employee) </SPAN><SPAN ="161590020-07022008">of which emp is an instance </SPAN>to see if&nbsp;<SPAN ="161590020-07022008">that type </SPAN>contains a Manager property. If it does, then it looks at the Manager type to see if it contains a LastName property; and so on down the chain.&nbsp; If it looks at the&nbsp;<SPAN ="161590020-07022008">Employee</SPAN> type for a "__Manager__LastName" property, it won't find it, because it doesn't exist on the <SPAN ="161590020-07022008">Employee</SPAN> type: it only exists in our dictionary of PropertyDescriptors (where it is indeed associated with the <SPAN ="161590020-07022008">Employee</SPAN> type).&nbsp;&nbsp;<SPAN ="161590020-07022008">But </SPAN>.NET doesn't know anything about that list: it examines the <SPAN ="161590020-07022008">Employee</SPAN> type directly.</FONT></FONT></FONT></DIV><DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV><DIV><FONT face=Arial color=#0000ff size=2>You&nbsp;<SPAN ="161590020-07022008">can find discussion of this in the </SPAN>section&nbsp;<SPAN ="161590020-07022008">"</SPAN>Manipulating the List of PropertyDescriptors for a BindableList(of T)<SPAN ="161590020-07022008">", in Chapter 7 of the Developers Guide</SPAN>.&nbsp; For a little more information, continuing reading the next section, "Global v. Private PropertyDescriptorList</FONT></DIV><DIV><FONT color=#0000ff></FONT>&nbsp;</DIV><DIV><FONT color=#0000ff>Now that you understand ITypedList, look at the following proposal to add Nested Properties to the AspDataSource.&nbsp; This is a proposed feature enhancement:</FONT></DIV><DIV><FONT color=#0000ff></FONT>&nbsp;</DIV><DIV>&nbsp;<a href="http://www.ideablade.com/forum/uploads/23/typede&#115;cripti&#111;nprovider.zip" target="_blank">uploads/23/typedescriptionprovider.zip</A></DIV></SPAN></FONT><span style="font-size:10px"><br /><br />Edited by davidklitzke - 05-Aug-2008 at 1:37pm</span>]]>
   </description>
   <pubDate>Tue, 05 Aug 2008 13:36:07 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3268#3268</guid>
  </item> 
  <item>
   <title>WebForm-base app performance problems : OK, using your IdeaBladeWeb project...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3267#3267</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=326" rel="nofollow">kmg-pm</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 04-Aug-2008 at 9:11am<br /><br />OK, using your IdeaBladeWeb project as an example...<DIV>&nbsp;</DIV><DIV>You have an Orders GridView, ID="mOrdersGridView".&nbsp; Within it, a column called "EmployeeId" exits.&nbsp; You have a relationship setup linked to the Employee table called "SalesRep".&nbsp; So, what would be your suggested mechanism for displaying say...&nbsp; "SalesRep.LastName" instead of "EmployeeId"?</DIV><DIV>&nbsp;</DIV><DIV>From what I can tell, this is not valid in a WebForm GridView (somewhere I read it works for WinForms).&nbsp; Likely related, I saw this post:&nbsp; <a href="http://www.ideablade.com/forum/forum_posts.asp?TID=831&amp;KW=GridView&amp;PID=3043#3043" target="_blank">http://www.ideablade.com/forum/forum_posts.asp?TID=831&amp;KW=GridView&amp;PID=3043#3043</A></DIV><DIV>&nbsp;</DIV><DIV>Currently I would create a property in the Orders class called SalesRepLastName, but this seems to defeat the point of linked objects.</DIV>]]>
   </description>
   <pubDate>Mon, 04 Aug 2008 09:11:43 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3267#3267</guid>
  </item> 
  <item>
   <title>WebForm-base app performance problems : I agree that scalability could...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3264#3264</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=23" rel="nofollow">davidklitzke</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 01-Aug-2008 at 4:03pm<br /><br /><P>I agree that scalability could become an issue later on.&nbsp; When that happens, you might consider selectively pruning the cache.</P><DIV>I don't understand your isue about linked object fields in a grid.&nbsp; Maybe, you could send me more details.</DIV>]]>
   </description>
   <pubDate>Fri, 01 Aug 2008 16:03:11 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3264#3264</guid>
  </item> 
  <item>
   <title>WebForm-base app performance problems : Thanks David.   The EntityAdapterManager...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3263#3263</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=326" rel="nofollow">kmg-pm</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 01-Aug-2008 at 2:02pm<br /><br /><FONT color=#990000>Thanks David.&nbsp; </FONT><DIV>&nbsp;</DIV><DIV><FONT color=#990000>The EntityAdapterManager constructor code cleared things up for me.&nbsp; Implementing the Session state did make quite a difference in performance (of course, now that is makes sense).&nbsp; I am still a little worried about scalability though.</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV><DIV><FONT color=#990000>You suggested a StoredProcRdbQuery to help with the sort.&nbsp; I will play around with that, but did wonder about the best way to access linked object fields from a GridView?&nbsp; Is there something better than custom properties?</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV><DIV><FONT color=#990000>-Kevin</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV><DIV>&nbsp;</DIV>]]>
   </description>
   <pubDate>Fri, 01 Aug 2008 14:02:56 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3263#3263</guid>
  </item> 
  <item>
   <title>WebForm-base app performance problems : Here is the codefor the EntityAdapterManager...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3262#3262</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=23" rel="nofollow">davidklitzke</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 01-Aug-2008 at 1:01pm<br /><br />Here is the codefor the EntityAdapterManager i<EM>n </EM>deaBlade,Asp": <DIV>&nbsp;</DIV><FONT size=2><P></FONT><FONT color=#0000ff size=2>public</FONT><FONT size=2> EntityAdapterManager() {</P><P></FONT><FONT color=#0000ff size=2>if</FONT><FONT size=2> (</FONT><FONT color=#2b91af size=2>HttpContext</FONT><FONT size=2>.Current != </FONT><FONT color=#0000ff size=2>null</FONT><FONT size=2>)</P><P></FONT><FONT color=#0000ff size=2>this</FONT><FONT size=2>.PersistenceManager = System.Web.</FONT><FONT color=#2b91af size=2>HttpContext</FONT><FONT size=2>.Current.Session&#091;</FONT><FONT color=#a31515 size=2>"PersistenceManager"</FONT><FONT size=2>&#093; </FONT><FONT color=#0000ff size=2>as</FONT><FONT size=2> </FONT><FONT color=#2b91af size=2>PersistenceManager</FONT><FONT size=2>;</P><P>}</P><DIV></DIV><P>&nbsp;</P><P>Here is the code for Session_Start in Global_Asax:</P><DIV></DIV><DIV><FONT size=2><P>void Session_Start(object sender, EventArgs e) </P><P>{</P><P>// Code that runs when a new session is started</P><P>Session&#091;"PersistenceManager"&#093; = new PersistenceManager(true);</P><P>}</P></FONT></DIV></FONT><span style="font-size:10px"><br /><br />Edited by davidklitzke - 01-Aug-2008 at 1:02pm</span>]]>
   </description>
   <pubDate>Fri, 01 Aug 2008 13:01:16 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3262#3262</guid>
  </item> 
  <item>
   <title>WebForm-base app performance problems : Another question I have is, if...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3260#3260</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=326" rel="nofollow">kmg-pm</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 01-Aug-2008 at 10:48am<br /><br /><FONT color=#990000>Another question I have is, if I use the standard overrides for my EntityAdapterManager methods, how do I get/set the&nbsp;PersistenceManager that is stored in my Session state?<DIV>&nbsp;</DIV><DIV>Thanks,<DIV></DIV><DIV></DIV>-Kevin</DIV></FONT>]]>
   </description>
   <pubDate>Fri, 01 Aug 2008 10:48:42 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3260#3260</guid>
  </item> 
  <item>
   <title>WebForm-base app performance problems : I am not quite sure how you tested...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3259#3259</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=23" rel="nofollow">davidklitzke</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 01-Aug-2008 at 10:48am<br /><br />I am not quite sure how you tested using the Session State, but I assume that you didn't use a new Persistence Manager on every call to GetEntities.&nbsp; Your current code basically throws away the cache from the last query<DIV>&nbsp;</DIV><DIV>To get a better idea on where you are getting the performance hit, I would take performance measurements of the the time to collect the entities and do the sort.</DIV><DIV>&nbsp;</DIV><DIV>Have you considered using a StoredProcRdbQuery?</DIV><DIV>&nbsp;</DIV>]]>
   </description>
   <pubDate>Fri, 01 Aug 2008 10:48:20 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3259#3259</guid>
  </item> 
  <item>
   <title>WebForm-base app performance problems : David,  I decided to try and...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3257#3257</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=326" rel="nofollow">kmg-pm</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 01-Aug-2008 at 8:09am<br /><br /><FONT color=#990000>David,</FONT><DIV>&nbsp;</DIV><DIV><FONT color=#990000>I decided to try and persist the PM in the SessionState just to see if it helped, and it appeared to have very little impact.&nbsp; In regards to your question about user load, even with one user it is very slow.&nbsp; You asked for a code sampe of one of my adapter managers, so here it is:</FONT></DIV><BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"><DIV><FONT face="Arial, Helvetica, sans-serif" color=#000000 size=2>&nbsp;&nbsp;&nbsp; public class CGAdapterManager : EntityAdapterManager<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public CGAdapterManager()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.EntityType = typeof(CG);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></DIV><DIV><FONT face="Arial, Helvetica, sans-serif" color=#000000 size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override IEnumerable SelectEntities(IOrderedDictionary parameters, DataSourceSelectArguments pSelectArgs)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EntityQuery qry = new EntityQuery(this.EntityType);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qry.AddClause("Deleted", EntityQueryOp.EQ, false);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (parameters&#091;"IsParent"&#093; != null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qry.AddClause("ParentCGID", EntityQueryOp.IsNull);</FONT></DIV><DIV><FONT face="Arial, Helvetica, sans-serif" color=#000000 size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PersistenceManager pm = new PersistenceManager();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EntityList&lt;CG&gt; list = pm.GetEntities&lt;CG&gt;(qry, QueryStrategy.Normal);</FONT></DIV><DIV><FONT face="Arial, Helvetica, sans-serif" color=#000000 size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; list.ApplySort("SortValue", ListSortDirection.Ascending, true);</FONT></DIV><DIV><FONT face="Arial, Helvetica, sans-serif" color=#000000 size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return list.ToArray();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</FONT></DIV></BLOCKQUOTE><DIV><FONT color=#990000>As I mentioned before, many of our objects link to others many levels deep.&nbsp; To expose summary information on those objects, I have created DisplayText&nbsp;properties for displaying in the grid.&nbsp; I suspect it is this reaching in to other levels&nbsp;that is causing the performance hit.&nbsp; Another issue is likely&nbsp;the post-query sort.&nbsp; I would prefer to do this during the query, but it involves a complex sort on fields from different linked objects.</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV><DIV><FONT color=#990000>I think the reason my&nbsp;equivalent non-DevForce queries are so much faster is that they make use of JOINs to collect this summary info, and allows me to sort on it too.&nbsp; All of this in a stored proc.</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV><DIV><FONT color=#990000>Perhaps my methods for accessing these deeper level fields are the issue.&nbsp; Any help with that would be greatly appreciated.</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV><DIV><FONT color=#990000>Thanks,</FONT></DIV><DIV><FONT color=#990000>Kevin</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV>]]>
   </description>
   <pubDate>Fri, 01 Aug 2008 08:09:40 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3257#3257</guid>
  </item> 
  <item>
   <title>WebForm-base app performance problems : Greg,  By design, we use a single...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3254#3254</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=23" rel="nofollow">davidklitzke</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 31-Jul-2008 at 1:15pm<br /><br />Greg,<DIV>&nbsp;</DIV><DIV>By design, we use a single Persistence Manager and store the information in Session State.&nbsp; That means on every Page_Load all of the information about the Persistence Manager (and, in particular the PM cache) will be retrieved from Session State).&nbsp; You are correct that storing the&nbsp;PM Session State could hinder scalability, but without some way of retaining the information about the cache from one Page_Load to the next, the cache is useless.</DIV><DIV>&nbsp;</DIV><DIV><DIV>How are you you accessing the information in the Peristent Manager cache from one Page Load to the next.&nbsp;&nbsp; If you are not using Session State, I suspect that you are not using the cache at all.</DIV><DIV>&nbsp;</DIV><DIV>If you are not using Session State, how are you initiializing the PM from one Page_Load to the next.&nbsp; Creating or reinitializing a Perrsistence Manager is not necessarily a speedy operation.&nbsp; Maybe the slowness is due to PM reinitialization and not the cache.</DIV><DIV>&nbsp;</DIV><DIV>I would like to know if you have a performance problem mostly with many users, or do you see poor performance even with a single user.</DIV></DIV><DIV>&nbsp;</DIV><DIV>The fact that you are getting decent performance with Object Data Source and SQL Data Source&nbsp;is interesting&nbsp; I feel that with the right changes, we should be able to get performance that is at least as good as these two other implmentations.</DIV><DIV>&nbsp;</DIV><DIV>Could I see the constructor for one of your Adapter Managers?</DIV><DIV>&nbsp;</DIV><DIV>Do you have any measurements on what is really slow?&nbsp; For example. is the Page_Load very slow, or is it Select_Entities?</DIV><DIV>&nbsp;</DIV><DIV>David</DIV><DIV>&nbsp;</DIV><DIV>&nbsp;</DIV><DIV>&nbsp;</DIV><DIV>&nbsp;</DIV>]]>
   </description>
   <pubDate>Thu, 31 Jul 2008 13:15:23 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3254#3254</guid>
  </item> 
  <item>
   <title>WebForm-base app performance problems : We have a WebForm based webapplication...</title>
   <link>http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3253#3253</link>
   <description>
    <![CDATA[<strong>Author:</strong> <a href="http://www.ideablade.com/forum/member_profile.asp?PF=326" rel="nofollow">kmg-pm</a><br /><strong>Subject:</strong> 899<br /><strong>Posted:</strong> 31-Jul-2008 at 10:03am<br /><br /><FONT color=#990000>We have a WebForm based web&nbsp;application that was developed from the start using DevForce Enterprise.&nbsp; Our basic strategy was to follow the example used in the DF ASP.NET tutorial,&nbsp;binding to grids using AspDataSource&nbsp;and corresponding custom EntityAdapterManager classes.&nbsp; Each page instantiates its own PersistenceManager (we thought the Session method would hinder scalability).</FONT><DIV>&nbsp;</DIV><DIV><FONT color=#990000>At first, performance was just fine.&nbsp; As we progressed over time, things got <strong><EM>significantly</EM></strong> slower.&nbsp; Our classes have evolved,&nbsp;linking more to other classes, but our dataset sizes have not really grown.&nbsp; Basically performance has degraded so that it is unacceptable.&nbsp; I have looked through these forums for any kind of information to generally improve performance on the web, but have not found anything.</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV><DIV><FONT color=#990000>What kind of things can be done to <strong><EM>optimize performance</EM></strong>?&nbsp; On a side note, performance with the same data using SqlDataSource or non-DF ObjectDataSource is good, but we'd like to try and use DF.</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV><DIV><FONT color=#990000>If anyone could provide help and/or suggestions, it would be greatly appreciated!!</FONT></DIV><DIV><FONT color=#990000></FONT>&nbsp;</DIV><DIV><FONT color=#990000>-Kevin</FONT></DIV>]]>
   </description>
   <pubDate>Thu, 31 Jul 2008 10:03:07 -700</pubDate>
   <guid isPermaLink="true">http://www.ideablade.com/forum/forum_posts.asp?TID=899&amp;PID=3253#3253</guid>
  </item> 
 </channel>
</rss>