Hello,
I need some advice on the the architecture of a Web Services
applciation.
I need to build a distributed application that handles the processing
of a large amount of real time data. The web service will allow clients
to register for notifications of certain types of data. The service
must analyze the incoming data and send events to the clients when
certain types of data are found. The source of the data could be from
any platform/os (.net, java, linux, win32, etc) and pushes the data to
the server for processing.
I read the great article on Web Service Messaging w/ WSE2.0
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwse/html/wsem
essaging.asp?_r=1)
and it looks almost like what I want to do. However, I have a few
questions:
- In the example in the article, the single Web Service runs as an HTTP
service in IIS. It accepts the subscriptions requests AND sends out the
event notifications. It gets its data and sends out notifications using
a Timer. First of all, is this typical for a HTTP Web Service to use a
Timer (or even a thread) to acquire the data like this? This doesn't
seem realistic.
- My application will most likely require a different approach as it
needs to process the data in near-real time. Having the Web Service
accept the data, look up all the subscriptions, trigger the events, and
send the notifications for every piece of data that arrives seems like
it would be way too taxing on the server. Instead, I am leaning towards
having two separate web services. One simply accepts the subscriptions
requests. The other accepts the data from the data sources and places
the data on a Message Queue. A separate process will then pull the data
off the queue, analyze it, and send our necessary events.
- Being somewhat new to the Web Sevices Enhancements, is this the best
approach? The two HTTP Web Services allow interoperability with other
platforms. The Message Queue and isolated process takes some of the
burden off the web server. Could this be overkill? Should I just use a
threadpool from the Web Service to process the incoming data from a
local ArrayList? (coming from a J2EE background I cringe somewhat at
that thought!).
Any suggestions or advice is greatly appreciated.
Jeff
Erik J. - 23 Mar 2005 19:41 GMT
I think the msdn article is an example of just one way to publish events to a
number of endpoints. With the scenario you desribe, putting events into a
queue for subsequent broadcast to subscribers makes sense. It also lets you
queue things up if the network (or a subset of the subscribers) is down and
you want to retry the broadcast.
- Erik
> Hello,
> I need some advice on the the architecture of a Web Services
[quoted text clipped - 41 lines]
>
> Jeff
yofnik@comcast.net - 23 Mar 2005 20:52 GMT
Erik,
Thanks for you reponse. One of the things I want to determine is -
since I am moving a significant amount of functionality outside of the
IIS Web Service (into a standalone process), does it make sense to
still use IIS Web Services at all? OR on the other hand, is it even
necessary that I move the functinoality to a stand alone process.
Jeff