[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: Re: [wsia] RE: [wsrp-interfaces] [wsrp][interfaces]Statemanagement/paramet ers
I think Carsten is bringing up very good points here.
Regards.
Alejandro
Carsten Leue wrote:
> My comments are embedded in <cl> tags.
>
>
> Best regards
> Carsten Leue
>
> -------
> Dr. Carsten Leue
> Dept.8288, IBM Laboratory B�blingen , Germany
> Tel.: +49-7031-16-4603, Fax: +49-7031-16-4401
>
>
>
> |---------+----------------------------->
> | | Michael Freedman |
> | | <Michael.Freedman@|
> | | oracle.com> |
> | | |
> | | 07/23/2002 11:55 |
> | | PM |
> |---------+----------------------------->
>
>--------------------------------------------------------------------------------------------------------------------------------------------------|
> |
|
> | To:
|
> | cc: interfaces
<wsrp-interfaces@lists.oasis-open.org>, wsrp-wsia
<wsia@lists.oasis-open.org> |
> | Subject: Re: [wsia] RE: [wsrp-interfaces]
[wsrp][interfaces] Statemanagement/paramet ers
|
> |
|
> |
|
>
>--------------------------------------------------------------------------------------------------------------------------------------------------|
>
>
>
> Q: How are we going to distinguish between the two? [action params and
> navigational params]
> A: One way to distinguish between the two is via namespacing most likely
> prefixing one parameter type (the action params?)
>
> Q: Will developers be confused?
> A: Maybe. Depends on whether we can articulate the differences between
> these two types of parameters and whether container implementations
make it
> easy to do the right thing by providing a [good] utility
> method for constructing URLs in the markup. The thing is if we go
to the
> alternative -- only allow action parameters in an encoded Action URL and
> then let perform action return the navigational parameters
> [generally a subset of the action parameters] it will also be
confusing for
> our developers as we should only allow "blocking" actions to return such
> markupParams as otherwise we force the consumer to block
> all rendering anyway (so it can get these markup parameters and rewrite
> into all generated URLs on the page).
>
> <cl> Maybe I am confused here. If we do not allow an action in the
general
> case to return the new navigational state (the result of the action),
what
> would the action be good for? In your scenation when the action link
> contains both the new markup parameters and action parameters, would
that
> mean that when the portlet writes an action link it would have to
> precalculate the possible outcome of all actions it encodes and put this
> new state as markup parameters in the link?
> The only other way I see what actions could do is updating session or
> backend state that would not be reflected in the markup parameters?
> Am I missing something?
> I would say that the option to precalculate all state and encode the
result
> in the actions is not feasible for perfomance resons.
> </cl>
>
> Q: Does this model require rewriting all existing portlet to support it
> (since the container cannot do this for the portlet)? Yes and no. I
> believe WSRP will already require all existing portlet to be
> rewritten because of the URL writing rules whether or not we say
there are
> two types of parameters or one.
>
> <cl> I agree </cl>
>
> Q: How do we support this model when we already know that this will not
> work with some browsers/devices (because the URLs will tend to be long,
> especially if we don't support stateless stateful portlets...)?
> A: Though the model allows navigational parameters/action parameters be
> entirely maintained in the links that go all the way back to the client
> this isn't required. A consumer is free to maintain this
> information in memory as part of a URL rewriting mechanism. I would
expect
> that some portals will choose to run with minimal state [the
parameters are
> sent back to the client] whereever possible -- i.e. on
> the desktop, and support the URL rewrite/parameter caching technique for
> wireless/small sized device situations. Such portals would be oen that
> believed most of their requests were desktop requests -- hence
> seek an optimal/scalable solution in this environment.
>
> <cl> Definitely. I would assume that only very few portals will
encode the
> navigational state of all portlet on a page in the URL that gets back to
> the client. The URL will soon become much too large, so every portal
will
> need to implement state management for its portlets.
> What worries me a bit is that we make a lot of design compromizes to
fulfil
> a possibility that will not be the normal use case. What does the group
> think?
> </cl>
>
> -Mike-
>
> "Tamari, Yossi" wrote:
>
>
>>Hi Mike,
>>
>>Regarding "action parameters and navigational parameters coexist in a
>
> link and can be distinguished by the portal":
>
>>How are we going to distinguish between the two? This could very easily
>
> become confusing for developers.
>
>>Does this model require rewriting all existing portlet to support it
>
> (since the container cannot do this for the portlet)? If this is the
case I
> would say this is a huge drawback.
>
>>How do we support this model when we already know that this will not
work
>
> with some browsers/devices (because the URLs will tend to be long,
> especially if we don't support stateless stateful portlets...)?
>
>> Yossi.
>>
>>-----Original Message-----
>>From: Michael Freedman [mailto:Michael.Freedman@oracle.com]
>>Sent: Friday, July 19, 2002 6:42 PM
>>To: interfaces; wsrp-wsia
>>Subject: [wsrp-interfaces] [wsrp][interfaces] State
>>management/parameters
>>
>>Folks,
>> At the F2F I took on the task to clarify the proposed support for
>>"stateless" entities. In the meantime a discussion has ensued regarding
>>whether sessionId can be collapsed into the markupParams. This message
>>provides an overall analysis of the general question of state management
>>and its relationship to the protocol. Based on this a particular
>>usage/semantic pattern is proposed. Its intent is to clarify both of
>>the above issues. Please let me know what you think.
>>
>>Through various discussions/analysis 4 types of state can be defined.
>>The first three are well understood web application states/styles. The
>>last is a new one that comes into existence because of the way our
>>protocol works:
>>1) Navigational (URL) state -- this is state represented as parameters
>>in the query strings of links that establish the "navigational context"
>>of a page. I.e. this is the state that allows a link to encode the
>>state of a page so it may be bookmarked, refreshed, navigated to via
>>next/back. An example of this is the amazon.com link that references
>>the page that describes a specific book. The parameters for this
>>reference are part of the link making it bookmarkable/navigatable etc.
>>2) Session state -- this is user application state that doesn't vary as
>>you navigate. An example is your shopping cart in amazon.com. The
>>items in your shopping cart don't change as you use the next/prev
>>buttons or redisplay. Unlike navigational (URL) state, session state is
>>not represented/maintained by the client, rather it is maintained by the
>>server. The client merely has a reference to this state. This
>>reference is typically in a cookie but can also be a URL parameter
>>itself.
>>3) Action (transient) state -- this is state passed on requests that is
>>meant to be processed (submitted) and then tossed -- though the
>>processing usual results in changes to either session or navigational
>>state. The example for this is form submission.
>>4) Request (transient) state -- this is intermediate state meant to be
>>created during action processing and used in the next render call of the
>>portlet. I.e. in our protocol a single user action results in two calls
>>to the portlet performAction and getMarkup. These two calls occur
>>across 2 (connectionless) SOAP calls. How does a portlet create
>>transient state in an action that is can access in the following render
>>while not needing to clean it up because it is recollected after the
>>"request" completes? I.e. in the servlet model during a single request
>>logic can attach transient request state for later logic via request
>>Attributes. How does this work between an action/render pair in our
>>protocol? Answer: invent/support request state.
>>
>>How should our protocol present the above styles/usages?
>>1) Navigational (URL) state is represented by query string parameters
>>added to links generated by the portlet in its response to getMarkup (or
>>redirects from performAction). Such parameters are presented by the
>>Portal on subsequent use to both a portlet's performAction [if an action
>>url] and getMarkup calls as request parameters (in the RequestContext).
>>They are always resubmitted on redisplay.
>>2) Action state is represented distinctly from navigational state by URL
>>parameters added to action links generated by the portlet in its
>>response to getMarkup. I.e. action parameters and navigational
>>parameters coexist in a link and can be distinguished by the portal.
>>Action parameters are only presented by the Portal on subsequent use to
>>a portlet's performAction. They are not presented to getMarkup. They
>>are passed to performAction as interactionParams.
>>3) Session state is maintained by the portlet as needed and reacquired
>>on request by reference (i.e. a sessionID is passed to all portlet APIs
>>including performAction and getMarkup so it reattach to its in memory
>>state) [See below for note on why I suggest we don't support having the
>>Portal maintain this state on behalf of the portlet and resupply on each
>>request].
>>4) Request state is an opaque value returned by a performAction call to
>>the Portal and based to [only] the next getMarkup of that entity. This
>>state is represented by the markupParams returned by performAction and
>>passed to the next getMarkup. getMarkup wouldn't return markupParams --
>>its navigational parameters/state would be encoded in its response
>>links.
>>
>>Note: In the F2F we discussed supporting "stateless" portlets. At the
>>time we attempted to model not only "stateless" portlets as those that
>>limit themselves to be represented merely by navigational state (URL
>>parameters) but also session state. I.e. one form of markupParams was
>>to allow a portlet to package its session state and return it to the
>>Portal for later submission rather then keep this information in memory
>>and merely return a reference (sessionID). I recommend we do not add
>>this functionality to version 1 of the specification [though we could
>>discuss dropping altogether from further consideration]. There are
>>three reasons for this recommendation:
>> a) this "function" is not currently readily modelled in the web
>>world. Returning session state to the client prevents effective
>>bookmarking/navigation.
>> b) adding this function complicates the API -- as sessionID covers
>>the session state case why worry now about supporting a new/extra model?
>>
>> c) having the portal maintain the session state vs a session
>>reference has negative performance/scalability implications. When a
>>portal is running in a load balanced environment state managed on behalf
>>of the portlet/entity must be maintained in a manner so all nodes see a
>>common/consistent view of this state. In such a world writes (the time
>>when state returned by the portlet has changed and needs to be rewritten
>>to the shared state manager) are generally expensive. Session
>>references rarely change (are good). Session state changes frequently
>>(often on every request) and is therefore bad.
>>
>> -Mike-
>>
>>----------------------------------------------------------------
>>To subscribe or unsubscribe from this elist use the subscription
>>manager: <http://lists.oasis-open.org/ob/adm.pl>
>>
>>----------------------------------------------------------------
>>To subscribe or unsubscribe from this elist use the subscription
>>manager: <http://lists.oasis-open.org/ob/adm.pl>
>
>
>
> ----------------------------------------------------------------
> To subscribe or unsubscribe from this elist use the subscription
> manager: <http://lists.oasis-open.org/ob/adm.pl>
>
>
>
>
> ----------------------------------------------------------------
> To subscribe or unsubscribe from this elist use the subscription
> manager: <http://lists.oasis-open.org/ob/adm.pl>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC