PageFlowState & Scalability

Topics: Web Client Software Factory
Jan 23, 2007 at 6:06 PM
I have an ASP.NET module that provides a wizard to the user and each page of the wizard is heavy (i.e. has one or more grids, lists, etc...). I was thinking of using the WCSF for page flow management, however i'm afraid that this will affect my solution scalability since the state is saved in the session so i will abuse memory, cpu, etc...

Is there a way where i can save the state somewhere else?
Jan 25, 2007 at 2:53 AM
This is a great question and I have the same concerns. I would like to use a database or maybe even cookies. Does the p&p team have a response?
Jan 25, 2007 at 9:21 AM
Is your concern storing the data entered throughout the Wizard in session? In your Controller class you can do what you like - so to address your concerns you could only pass any Page Flows the data they need to make flow decisions, and save the rest of your data to a database.

This avoids using StateValue<T> if that is what you want to avoid?

The WF workflow engine is responsible for handling all the data stored in Page Flow - and I would like to think that (unless abused obviously) this is pretty scaleable.

Perhaps some figures from the p&p team would help - I know they have done some testing of the factory's output and are thinking of how best to publish the results.

Jan 25, 2007 at 12:34 PM

I must be missing something here(If i am i would be very happy if someone would corrected me:))
From what i can see from the pageflow application block session is not used to store state.
Yes you use a session like syntax is:
to store things in the pageflow, but this data is persisted using the default external data exchange service of the Workflow foundation. This means your data is persisted to the database.(If needed you can implement your own version of this service).

Jan 25, 2007 at 1:29 PM
Absolutely - agreed.

I'm not certain what the concerns here are - as there is nothing that forces you to use session at all...
Jan 28, 2007 at 9:35 AM
I agree with all of this, I still have an issue though.

Although page data is saved using WF (i.e. in the database), this will degrade the performance. It's like configuring the session to use the database for web farms (although session affinity can be used here to save session in memory). I'm worrying about performance here.

Can i use other ways such as viewstate although this might maximize the page size and so the page load time, but its one of the options.