473,385 Members | 1,908 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

SOA Design - Polling or Push

I'm sitting on the fence on this one, and wanted to get some other people's
input. If you're a big B2B person, I would love to hear your feedback...

I've got a SOA system. It's based on a combination of WCF Services and
ASP.Net Pages. The consumers of this service are companies all over North
America.

Essentially, we've got some long running operations that a vendor can kick
off. These opertaions can take anwhere from 5 minutes to 2 weeks (with the
average being "a few days").

On the WCF side of things, I've got everything designed out. I've got clean
Request/Response Messages, Faults, Contracts, and everything all completed
and ready to go. All the common best practices for Versioning, Interface
Design, and Security have been (I think!) followed.

Load on this system is low. A few hundred, maybe a few thousand requests per
day.

I'm on the fence though with Status Checks. As it sits, I've two options:

*** Option 1 ***
Require vendors to poll our services on a regular basis checking for status.
The poll interval would probably be between 5 minutes and 60 minutes.
Polling would be done via a call on the WCF service.

Pros:
- No exteneral dependencies for us. This means we have to only worry about
our own infrastructure.
- No requirements for vendors to setup and manage servers that we contact
with a push of some sort.

Cons:
- It's polling, and everything I know says polling is bad. I'm using to
building super scalable systems in terms of transaction volume, and this
system is nothing like that, so polling may be alright.

*** Option 2 ***
Require vendor to send us a URL that we touch upon completion of the
process. This could also be a WCF call, but I think most vendors are more
able to setup the URL than a Secure Service. Our vendors are, for the most
part, not highly technical companies.

Pros:
- No polling. Vendors know exactly when a request has completed.

Cons:
- Vendor needs to setup and manage a highly available service.
- Vendor needs to build a "Unique URL" or some similar system, that we can
post into.
- Signifigant flow issues if their service is down, and we need to do
retries.
- We are now dependant upon their system, and there could be SLA
implications.

I'm leaning towards the Polling option, but hopefully someone here has some
experience in this area...

--
Chris Mullins
Oct 12 '07 #1
3 4094
Hi, Chris

Just some ideas to consider:

1. Support both methods, this gives the clients more options.
2. Maybe you can provide some kind of canned response service that they can
configure and setup with just a little work or with your help, you could
even provide the entire system ready to go [shipped to them].

Good luck

Eric Schneider
"Chris Mullins [MVP - C#]" <cm******@yahoo.comwrote in message
news:ea**************@TK2MSFTNGP05.phx.gbl...
I'm sitting on the fence on this one, and wanted to get some other
people's input. If you're a big B2B person, I would love to hear your
feedback...

I've got a SOA system. It's based on a combination of WCF Services and
ASP.Net Pages. The consumers of this service are companies all over North
America.

Essentially, we've got some long running operations that a vendor can kick
off. These opertaions can take anwhere from 5 minutes to 2 weeks (with the
average being "a few days").

On the WCF side of things, I've got everything designed out. I've got
clean Request/Response Messages, Faults, Contracts, and everything all
completed and ready to go. All the common best practices for Versioning,
Interface Design, and Security have been (I think!) followed.

Load on this system is low. A few hundred, maybe a few thousand requests
per day.

I'm on the fence though with Status Checks. As it sits, I've two options:

*** Option 1 ***
Require vendors to poll our services on a regular basis checking for
status. The poll interval would probably be between 5 minutes and 60
minutes. Polling would be done via a call on the WCF service.

Pros:
- No exteneral dependencies for us. This means we have to only worry about
our own infrastructure.
- No requirements for vendors to setup and manage servers that we contact
with a push of some sort.

Cons:
- It's polling, and everything I know says polling is bad. I'm using to
building super scalable systems in terms of transaction volume, and this
system is nothing like that, so polling may be alright.

*** Option 2 ***
Require vendor to send us a URL that we touch upon completion of the
process. This could also be a WCF call, but I think most vendors are more
able to setup the URL than a Secure Service. Our vendors are, for the most
part, not highly technical companies.

Pros:
- No polling. Vendors know exactly when a request has completed.

Cons:
- Vendor needs to setup and manage a highly available service.
- Vendor needs to build a "Unique URL" or some similar system, that we can
post into.
- Signifigant flow issues if their service is down, and we need to do
retries.
- We are now dependant upon their system, and there could be SLA
implications.

I'm leaning towards the Polling option, but hopefully someone here has
some experience in this area...

--
Chris Mullins

Oct 13 '07 #2
I would certainly privide option 1. It would be useful to both customers and
your organization. Perhaps something like what UPS provides for tracking a
shipment.

Some customers may use the service infrequently, and an email notification
might be a good idea for them (a variant of option 2).

"Chris Mullins [MVP - C#]" wrote:
I'm sitting on the fence on this one, and wanted to get some other people's
input. If you're a big B2B person, I would love to hear your feedback...

I've got a SOA system. It's based on a combination of WCF Services and
ASP.Net Pages. The consumers of this service are companies all over North
America.

Essentially, we've got some long running operations that a vendor can kick
off. These opertaions can take anwhere from 5 minutes to 2 weeks (with the
average being "a few days").

On the WCF side of things, I've got everything designed out. I've got clean
Request/Response Messages, Faults, Contracts, and everything all completed
and ready to go. All the common best practices for Versioning, Interface
Design, and Security have been (I think!) followed.

Load on this system is low. A few hundred, maybe a few thousand requests per
day.

I'm on the fence though with Status Checks. As it sits, I've two options:

*** Option 1 ***
Require vendors to poll our services on a regular basis checking for status.
The poll interval would probably be between 5 minutes and 60 minutes.
Polling would be done via a call on the WCF service.

Pros:
- No exteneral dependencies for us. This means we have to only worry about
our own infrastructure.
- No requirements for vendors to setup and manage servers that we contact
with a push of some sort.

Cons:
- It's polling, and everything I know says polling is bad. I'm using to
building super scalable systems in terms of transaction volume, and this
system is nothing like that, so polling may be alright.

*** Option 2 ***
Require vendor to send us a URL that we touch upon completion of the
process. This could also be a WCF call, but I think most vendors are more
able to setup the URL than a Secure Service. Our vendors are, for the most
part, not highly technical companies.

Pros:
- No polling. Vendors know exactly when a request has completed.

Cons:
- Vendor needs to setup and manage a highly available service.
- Vendor needs to build a "Unique URL" or some similar system, that we can
post into.
- Signifigant flow issues if their service is down, and we need to do
retries.
- We are now dependant upon their system, and there could be SLA
implications.

I'm leaning towards the Polling option, but hopefully someone here has some
experience in this area...

--
Chris Mullins
Oct 13 '07 #3
On Fri, 12 Oct 2007 14:17:52 -0700, "Chris Mullins [MVP - C#]"
<cm******@yahoo.comwrote:
>I'm sitting on the fence on this one, and wanted to get some other people's
input. If you're a big B2B person, I would love to hear your feedback...
-snip-
I'm doing something similar passing selections from a browser-based
catalog to various desktop applications. This sort of IPC is very
difficult to automate unless the client uses an embedded browser. My
client could have chosen a better tool.
>
I'm on the fence though with Status Checks. As it sits, I've two options:

*** Option 1 ***
Require vendors to poll our services on a regular basis checking for status.
The poll interval would probably be between 5 minutes and 60 minutes.
Polling would be done via a call on the WCF service.
- snip -
>
*** Option 2 ***
Require vendor to send us a URL that we touch upon completion of the
process. This could also be a WCF call, but I think most vendors are more
able to setup the URL than a Secure Service. Our vendors are, for the most
part, not highly technical companies.
- snip -
>
I'm leaning towards the Polling option, but hopefully someone here has some
experience in this area...
I am leery of polling because of previous experiences with ill-behaved
client applications. I assume 'touch' means notifying the client the
process is complete. Then the client makes a request to a service for
the results. If that is the case, touch the client.

regards
A.G.
Oct 13 '07 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

22
by: lechequier | last post by:
Let's say I define a list of pairs as follows: >>l = Can anyone explain why this does not work? >>h = {}.update(l) and instead I have to go: >>h = {} >>h.update(l) to initialize a...
4
by: Erik Wikström | last post by:
In school (no I will not ask you to do my schoolwork for me) we talked about policy-based design and got an assignment where we got the a code- fragment from a stack-implementation. The idea with...
6
by: Chad Z. Hower aka Kudzu | last post by:
I want to do this. I want my programmers to do all the code. All of it - run at server and run at client. I then want a graphic artist to make the look and the layout of the pages. The...
3
by: petermichaux | last post by:
Hi, I am trying to put together the last major pieces of my project's puzzle. This is more website/client-side architecture than JavaScript syntax but I hope this is a good place to ask. I'm a...
1
by: kelvin.jones | last post by:
Hi guys, I have read several discussions on this group (and others) that talk about polling a server using ajax transactions and if it is possible to push to the client. The general consensus seems...
3
by: tshad | last post by:
I have a program that is reading one of my mailboxes. It is polling the mailboxes ever 5 minutes to see if there is a message or not. Is this how Outlook does it (using Exchange as the...
2
by: koren99 | last post by:
Hi, i'm a student and got an assignment, and was wandering what is the best way to design it, or simply put - what would a skilled programmer do? here goes: (it's a bit long, so sorry in...
2
by: mak | last post by:
Hi, I am in the process of designing a simple Windows client application, that polls an asp.net web page using HTTP GET on an IIS 6.0 web server for a small piece of information (about 30...
12
by: bullockbefriending bard | last post by:
I am a complete ignoramus and newbie when it comes to designing and coding networked clients (or servers for that matter). I have a copy of Goerzen (Foundations of Python Network Programming) and...
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.