In response to this and the other related thread I just want to post something that one of our architects, Sean Neville, wrote.  You’ll get to see the outcome of the work that Sean alludes to when we start showing off Flex Enterprise Services in a few months (this is not a timetable on beta or release).

 

--

There are numerous patterns for dealing with network reliability and message durability issues across pushed channels, which we are implementing and which countless others have implemented before us. These are well-documented and used in critical enterprise apps daily, particularly in sectors like financial services.

 

However, there are cases where it is inappropriate, such as the operational issues of certain deployments reliant on Internet deployment and web browser clients. In this case polling approaches are appropriate.

 

In still other cases, one view of a set of services may be reasonably accessed via server push, while another view may need to avoid server push, or at least gracefully switch to a polling technique when push proves inadequate. This use of the same service(s) across different network channels by different users should not require API or service design changes on the part of the developers.

 

The ideal message bus enables both approaches without requiring changes in API or service design, and without requiring the network quality of service issues to affect message choreography. The well-designed message bus cleanly decouples the administrator’s network channel mechanisms from the app developer’s service logic. Both push and polling approaches have value, though it is quite possible that only one approach or the other will have value in any one specific scenario or use case – and it is also quite possible that the specific scenario may change during the lifetime of an enterprise application and its services, outliving the attention of its original developers and administrators, so that a previously horrid approach becomes more desirable or even required.

 

The logical thing to do is to support both in as clean and extensible fashion as possible. This also alleviates the need to participate in push/pull/poll religious debates except for sport.

--

 

See, he’s a smart guy.  We hope you guys get to benefit from his and other people’s efforts pretty soon J

 

Matt

 


From: flexcoders@yahoogroups.com [mailto:flexcoders@yahoogroups.com] On Behalf Of Dave Wolf
Sent: Tuesday, October 11, 2005 5:58 PM
To: flexcoders@yahoogroups.com
Subject: [flexcoders] HttpService Push (Re: HTTPService timeout)

 

There are some things to keep in mind in terms of performance.
Realize that for every client event registration you effectively tie
up a HTTP connection on the server.  This means you effectively tie up
a thread on the server.  You will want to make sure you server has
enough HTTP threads and descriptors so it can still service normal
HTTP connects.  You might also want to see where TCP_KEEPALIVE is set
to prevent the possibility of half dead sockets from dropped clients
getting in the way.

You might also want to implement a timeout in the servlet.  Just drop
idle sockets every N interval.  Since the clients should be inside
loops, they will just reconnect if they are still alive.

As I said, there are some seriously big financial and other
applications that run mission critical systems using just such a design.

Dave Wolf
Cynergy Systems, Inc.
Macromedia Flex Alliance Partner
http://www.cynergysystems.com

Email:  [EMAIL PROTECTED]
Office: 866-CYNERGY x85



--- In flexcoders@yahoogroups.com, "Eric Raymond"
<[EMAIL PROTECTED]> wrote:
>
> Very clever.
>
> I'm curious if you'd care to share any experiences or gotcha's with
> this approach?
>
> In practice, can you rely upon the HtppService returning or generating
> an error? Or do you need some sort of setInterval function which
> occasionally resets things.
>
> Are there any timeouts accross the entire stack that one would need to
> be aware of.
>
> Are there any issues with the servlet thread poor that arise in
practice?
>
>
>
>
>
>
>
> --- In flexcoders@yahoogroups.com, "Dave Wolf" <[EMAIL PROTECTED]> wrote:
> >
> > No not quite.  That would be polling.  I am *not* suggesting polling.
> >  What I am suggesting is using a "Blocking Registration" pattern to
> > handle this. 
> >
> > Basically you get Flex to make an HTTP request to say a servlet in
> > your webserver.  That http call will "hang".  Since the player makes
> > an http request on its own thread, this hang has no impact on the
UI. 
> >
> > Now when the event occurs the servlet releases the hung connection,
> > which returns data and the result handler on the client fires and
> > delivers the event to the UI.  Viola.  Effectively server-push but
> > without the major issues of server-push or true client-pull.
> >
> > This design has been tested in basically some of the biggest financial
> > services applications in the world.
>







--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com




YAHOO! GROUPS LINKS




Reply via email to