WCF interoperability in the real world (eBay)

Service Station, by Aaron Skonnard

Syndication

A few weeks ago I was teaching our WCF course at a client site and I decided to do an example of real-world interoperability by having a WCF client application integrate with the eBay SOAP API.
 
Little did I know at the time how much fun awaited me.
 
After acquiring the necessary eBay sandbox test account, authentication tokens, and official WSDL definition, I was ready to rock 'n roll.
 
You can quickly tell how huge the eBay API is by looking at the size of the WSDL file, which comes in at 2.37 MB (yes, MB!). If you try to open it in Internet Explorer, the XSLT transformation will take forever to finish, if it finishes at all due to the sheer size of the document. But hey, eBay is a real-world retail application with lots of bells and whistles and they've tried to expose the whole beast. However, due to the size, I was a little worried about svcutil.exe's ability to handle it. But to my surprise, it chewed it up and spit out the necessary proxy code and some configuration elements. Now I was ready to write some code.
 
For my first test, I set my expectations low and chose to use the GeteBayOfficialTime operation, which simply requests the official time from the eBay server (which is important in a real-time auction system). I was expecting to be able to instantiate the proxy class and invoke the method, but as it turns out, each eBay SOAP operation requires a distinct URL where the method name and authentication tokens are contained in the URL. Here's an example of how you build the request URL:
 
string endpoint = "https://api.sandbox.ebay.com/wsapi";
string callName = "GetebayOfficialTime";
string siteId = "0";
string appId = "..."; // use your app ID
string devId = "..."; // use your dev ID
string certId = "..."; // use your cert ID
string version = "405";
 
// Build the request URL
string requestURL = endpoint
+ "?callname=" + callName
+ "&siteid=" + siteId
+ "&appid=" + appId
+ "&version=" + version
+ "&routing=default";
 
Now I have enough to instantiate the proxy class supplying requestURL for the address:
 
eBayAPIInterfaceProxy proxy = new eBayAPIInterfaceProxy(
"eBayAPI", requestURL);
 
The "eBayAPI" string is the name of the client endpoint configuration generated by svcutil.exe. It gives you a basicHttpBinding configuration using transport security (HTTPS).
 
It feels weird to general a unique URL for each operation within a service, and it quickly becomes tedious from the developer perspective. While this may be the norm in RESTful applications, in SOAP the URL typically identifies the service and the action identifies the operation, which the proxy can easily handle for you.
 
Now if you look at the signature for GeteBayOfficialTime, you'll also notice that it requires you to supply two objects: a CustomSecurityHeaderType and a GeteBayOfficalTimeRequestType. The eBay security design relies on transport-based security (HTTPS) to secure the entire channel, so it wants you to pass the application credentials within the SOAP body -- they don't use any WS-Security techniques.
 
Here's an example of how you can build both of these objects for use in the method:
 
CustomSecurityHeaderType creds = new CustomSecurityHeaderType();
creds.eBayAuthToken = "..."; // use your token
creds.Credentials = new UserIdPasswordType();
creds.Credentials.AppId = appId;
creds.Credentials.DevId = devId;
creds.Credentials.AuthCert = certId;
 
GeteBayOfficialTimeRequestType request =
new GeteBayOfficialTimeRequestType();
request.Version = version;
 
With this in place, you're ready to invoke the operation as shown here:
 
GeteBayOfficialTimeResponseType response =
proxy.GeteBayOfficialTime(ref creds, request);
Console.WriteLine("The time at eBay headquarters is:");
Console.WriteLine(response.Timestamp);
 
Once I understood how the eBay API worked (which was a bit counterintuitive given my understanding of SOAP), I was able to get the correct code in place and I was sure it would work.
 
But the SOAP Gods weren't going to let me off the hook so easy.
 
When I ran the code, I kept getting a helpful "Internal Server Error" message. Great, now I know something went wrong over in eBay Land but I have no idea what. So I pinged the MS interop expert, Kirill, who suggested that it might be the HTTP Content-Type header tripping things up (he had seen this before in a sample he did). It turns out that eBay fails if the charset value is enclosed in quotes as shown here:
 
Content-Type: text/xml; charset="utf-8"
 
They only accept the no-quotes version:
 
Content-Type: text/xml; charset=utf-8
 
Hmmm… ok, so how did I fix that within my WCF client? The charset value is a property emitted by the message encoder so the easiest way to fix this is to inject a custom text message encoder that doesn't include the quotes. I pulled up the WCF SDK to look for a sample and viola, there's actually a sample text message encoder in there -- and it doesn't include quotes around charset -- so I was able to use it as-is. In order to use the custom message encoder, I had to create a custom binding as shown here:
 
HttpsTransportBindingElement https = new HttpsTransportBindingElement();
https.MappingMode = HttpMappingMode.Soap;
CustomBinding bind = new CustomBinding();
bind.Elements.Add(new CustomTextMessageBindingElement(
   "utf-8", "text/xml", MessageVersion.Soap11WSAddressing10));
bind.Elements.Add(https);
 
It's important to note that setting the MappingMode to HttpMappingMode.Soap is very important because if you don't, the default for the HttpsTransportBindingElement is to use HttpMappingMode.SoapWithWsAddressing. And guess what, WS-Addressing also causes eBay to fail. I had to learn this one the hard way too. Anyway, now I can supply the custom binding when creating the proxy:
 
eBayAPIInterfaceProxy proxy = new eBayAPIInterfaceProxy(
bind, new EndpointAddress(requestURL));
 
With all of this in place, I was finally able to make the call work. Phew.
 
A few observations:
  • eBay has a wacky design for a SOAP API. It feels like they designed it primarily for non-SOAP use and then did a retro-fit. The addressing and security mechanisms are a few manifestations of this.
  • Interoperability in the real-world is hard no matter how you shake it. And in order to work through issues you have to understand your SOAP stack (in this case WCF) before you can extend/tweak it (e.g., introducing the custom message encoder into the WCF proxy is not a trivial matter). You also have to understand what's happening on the wire (e.g., the charset & WS-Addressing issues). The Law of Leaky Abstractions rings true, loud and clear, when looking at this type of example.
  • WCF is extremely flexible. It provides all of the necessary programming model options and extensibility points that we needed to work through these issues - a great tribute to its design.
 
I'm afraid that interop snags like these will be more the norm than the exception over the next several years as the dust continues to settle around the various SOAP and WS-* profiles. However, if you're using a good stack, and understand how things work, you can get around them.
 

Posted Apr 18 2006, 12:41 PM by Aaron Skonnard
Filed under: ,

Comments

Mike Parsons wrote re: WCF interoperability in the real world (eBay)
on 04-18-2006 11:11 AM
Hey Aaron ... good observations. Here are a few of mine ...

1.) Shouldn't this complexity/difficulty trigger the question ... "Where have we gone wrong with all this SOAP/Web Services/WCF, etc stuff"? We have taken a problem that should be trivial to solve (get some data from eBay) and turned it into something that requires a technology as complicated as WCF (insert Axis or whatever SOAP framework here) to address.
2.) Why is it we (application developers) accept this complexity as a cost of doing business? Are we not enabling this complexity?
3.) Why is it we tout complexity as flexibility (to quote you ... "WCF is extremely flexible")?
4.) If a consumer were forced to jump thru these hoops to get something to work (i.e. an appliance, etc), they would simply return it to the vendor.

I am not singling out WCF here as the eBay API is just as culpable. Unless we,as an industry, don't address these complexities, I fear that the problems of interoperability will only get worse.
Aaron Skonnard wrote re: WCF interoperability in the real world (eBay)
on 04-18-2006 11:29 AM
Real-world integration/interoperability has always been one of the most costly, troublesome, and complex areas of IT. It's probably the #1 problem for most large enterprises, in terms of cost and just getting things to work.

So to answer your questions, putting the technology aside, the problem we're trying to solve is incredibly complex in and of itself. I realize that some scenarios are much simpler than others, but the more code you have (especially legacy) the harder it gets.

This leads to complicated solutions (some are more compicated than others). We also have the whole SOAP vs. REST/POX debate that causes vendors (like eBay) to scratch their heads and hedge bets on what's going to work best for them. But it doesn't always work best for everyone else (like us in this case).

In general, if your problem space is simple, most of today's SOAP stacks and their corresponding solutions are pretty simple. But once you start doing things that maybe weren't meant to happen (like eBay + SOAP), you start to see some ugly side effects.

However, I do agree that simpler is always better. But when start looking at building an asynchronous pub/sub architecture that uses a combination of queues, reliable messaging, transactions, and message-based security, you might find WCF to be simple after all. ;-)
Mike Parsons wrote re: WCF interoperability in the real world (eBay)
on 04-18-2006 12:19 PM
I would assert that the reason why "Real-world integration/interoperability" is costly, troublesome and complex is because we have made them complex via our usage/implementation of technologies.

I think that in most cases, the problem space is simple, we just add complexity because solving simple problems is not nearly as much "fun" for software engineers :-)

If we spent as much time innovating around solving "simple" problems (which I would assert is 80+% of the case) as we do on solving the "complex" problems, then I believe the intented consumers of our technology would be so much better off.
Aaron Skonnard wrote re: WCF interoperability in the real world (eBay)
on 04-18-2006 1:23 PM
Your point is surely true to some degree but from what I've experienced, the main reason integration/interop is so complex is because most systems/applications were not designed with integration/interop as a design goal/requirement. It's an afterthought.

It's the "services" trend that has promoted thinking about integration/interop earlier in the design process. And it's the fact that there are so many different flavors of technology and applications out there (some of which are too complex for their own good -- your point) that complicates matters further and makes the general requirement difficult to achieve.
Blat wrote re: WCF interoperability in the real world (eBay)
on 04-18-2006 4:45 PM
Doesn't sound that bad really. Try making a DCOM call to Ebay from linux by contrast. SOAP is much easier. Is it seamless? Hell no but it's close.
Christopher Steen wrote Link Listing - April 18, 2006
on 04-18-2006 9:32 PM
"Atlas" Toolkit - Using an Image in a
CollapsiblePanelExtender [Via: Robert
McLaws ]
A few thoughts...
brad wrote re: WCF interoperability in the real world (eBay)
on 04-19-2006 5:43 AM
We use the eBay SOAP API in a production environment via standard asmx clients and it works fine (other than the gigantic WSDL and bizarre complex type problems). Maybe you should revert back to the old soap stack :-). I have some serious concerns as to how the WCF client is going to interop when we try to start using it against all the ugly API's we hit, including: eBay, Amazon Merchants@, Yahoo, Google Adwords API, etc etc. As you said though, the ability to tweak and customize is key. In some cases we just post raw soap as XML and forget about trying to do proxies.
Mike Parsons wrote re: WCF interoperability in the real world (eBay)
on 04-19-2006 10:04 AM
I've been doing some more thinking on this and have a radically simply idea ...

Since most application are approximately 80% data reads, then why don't we just provide the data in a format that the consumer can use immediately without this whole SOAP Proxy business. Converting data to multiple formats is pretty simple with XSL and most vendors certainly have the horsepower to do some simple transformations.

So my recommendation is that we have a simple URL format along the lines of ...

http://someserver/endpoint/getdata.aspx?param1=value1&paramN=valueN&format=dataformat

For example,

http://www.eBay.com?getData.aspx?key=mykey&method=GeteBayOfficialTime&format=ADOXML

where format could be

ADOXML
ADO.NetDataSet
PLAINXML
XMLWITHSCHEMA
JSON
TABDELIMITED

and so on ...


Then I could walk up to any client technology and so something as simple as

VBA Client
***********
Dim oRS as New Adodb.RecordSet
oRS.open "http://www.eBay.com?getData.aspx?key=mykey&method=GeteBayOfficialTime&format=ADOXML"

Ditto for .Net Client or Java or whatever.

The Data would be immediately consumable in the Consumer's technology of choice.

We could even start a community effort to create standard XSL transforms for "de facto standard" data formats.

I have to believe that making it this simple would encourage far more interest in Web Services and hence more exciting applications/integrations



Aaron Skonnard wrote re: WCF interoperability in the real world (eBay)
on 04-19-2006 10:43 AM
You should check out the REST models out there -- they are basically what you want.

A few observations:
1) This completely ties your solution to HTTP.
2) You have to rely on HTTP extensions for any additional protocols you want to implement (security, reliable messaging, transactions).
3) You can't supply 'structured' data in the query string (you're stuck w/name=value).

Nevertheless, there are plenty of solutions out there that work the way you describe because they don't care about these limitations. It's not far off from RSS, which is extremely prevalent.
Mike wrote re: WCF interoperability in the real world (eBay)
on 04-19-2006 12:01 PM
Just curious... why the use of the "ref" keyword passing the credentials to the getOfficialTime method?



Mike Parsons wrote re: WCF interoperability in the real world (eBay)
on 04-19-2006 12:18 PM
I see RSS/ATOM going down the same road as SOAP in that nobody implements it the same way and you have to write a crap load of code on the consumer side (i.e. proxies) to "effectively" consume it.

The nice thing about getting the data in a "de facto" standard format is that I can eliminate all this proxy business and just use technologies that already exist on the client (be it .Net, Java, VBA, JavaScript, Ruby or whatever) and which application developers are already familiar with. Also, applications themselves can readily consume these endpoints without any coding (i.e. Excel->Data->Import External Data->New Web Query)


I agree with your comments that this solution ties you to the somewhat "limited" HTTP but I figure that's the way the world is going anyway ... no? Seems like we have been able to piggyback on HTTP to do some interesting stuff (i.e. VOIP, eCommerce, etc). Sometimes being "constrained" by a technology results in the most innovative solutions ... I mean look at all the cool and useful (i.e. GMAIL) apps being developed around the AJAX set of technologies.

I am not suggesting that we can eliminate the use of technologies like WCF, SOAP but I wonder if we cannot solve many of the problems addressed by these technologies in a much more simplistic and useful fashion.

It's just that the consumption of these technologies (i.e the learning curve, the deployment requirements, etc) is prohibitive to actually getting any "real work" done and providing benefit to the user.

BTW Aaron .. thanks for keeping this thread going :-)
Mike Parsons wrote re: WCF interoperability in the real world (eBay)
on 04-20-2006 12:53 PM
I think this confirms my last point about RSS/ATOM ...

http://code.google.com/apis/gdata/protocol.html
Kirk Allen Evans' Blog wrote Web Service Geek? Go Read Pluralsight's blogs
on 04-20-2006 6:11 PM
I like to write in my blog, but I hardly read other blogs anymore.  In fact, I don't have an aggregator...
Jason Haley wrote Interesting Finds
on 04-21-2006 3:58 AM
Kevin Amerson wrote re: WCF interoperability in the real world (eBay)
on 04-21-2006 12:34 PM
I like to say that the complexity is there because its human nature. The laws governing physics for instance are pretty simple, mainly because we don't control them, we can't argue over them ;).

Give software another 50 years and we'll probably have some standardization, many of the arguments going on will fade away or be solved.
mattonsoftware.com wrote .NET Resources
on 05-06-2006 2:35 AM
The following links to .NET resources have been collated over time with the assistance of colleagues. ...
PB wrote re: WCF interoperability in the real world (eBay)
on 07-24-2006 3:10 PM
Have you tried interop with wsHttpBidning.I mean I have a WCF host(Cosnole application) and when I have the binding as basicHttpBinding then I am able to generate the wsdl without any problem , but as soon as I changed the binding to wsHttpBinding then i get the following error..

**********error description ***************

Warning: This web reference does not conform to WS-I Basic Profile v1.1.
SOAP 1.1 binding was not found: WS-I's Basic Profile 1.1 consists of implementat
ion guidelines that recommend how a set of core Web services specifications shou
ld be used together to develop interoperable Web services. For the 1.1 Profile,
those specifications are SOAP 1.1, WSDL 1.1, UDDI 2.0, XML 1.0 and XML Schema.

********************************************
NathanA's Web Services Blog wrote WCF and eBay
on 10-12-2006 11:25 AM
eBay provides a very rich, though very complicated, SOAP API . It is possible to use WCF with eBay, but
Who Says Flash Is Not SEO Friendly? | Earn Money At Home wrote Who Says Flash Is Not SEO Friendly? | Earn Money At Home
on 03-15-2010 2:24 AM

Pingback from  Who Says Flash Is Not SEO Friendly? | Earn Money At Home

600sel Full 1992 Mercedes Lexus Ls 400, Updated Mercedes Benz 600sel wrote 600sel Full 1992 Mercedes Lexus Ls 400, Updated Mercedes Benz 600sel
on 05-20-2010 12:31 PM

Pingback from  600sel Full 1992 Mercedes Lexus Ls 400, Updated Mercedes Benz 600sel

Promotion Avalanche, 04 Chevrolet Avalanche Parts wrote Promotion Avalanche, 04 Chevrolet Avalanche Parts
on 05-20-2010 12:49 PM

Pingback from  Promotion Avalanche, 04 Chevrolet Avalanche Parts

Listen W300, Saturn Lw300 Used Anti Lock Brakes Bucket Seats wrote Listen W300, Saturn Lw300 Used Anti Lock Brakes Bucket Seats
on 05-20-2010 1:55 PM

Pingback from  Listen W300, Saturn Lw300 Used Anti Lock Brakes Bucket Seats

Kia Spectra5 Description Replacement Radiator, Spectra5 Discount Dll wrote Kia Spectra5 Description Replacement Radiator, Spectra5 Discount Dll
on 05-20-2010 3:04 PM

Pingback from  Kia Spectra5 Description Replacement Radiator, Spectra5 Discount Dll

Ford Fusion Accessories Mercury Milan Sedan, Rapidshare Milano wrote Ford Fusion Accessories Mercury Milan Sedan, Rapidshare Milano
on 05-20-2010 6:14 PM

Pingback from  Ford Fusion Accessories Mercury Milan Sedan, Rapidshare Milano

Rent Cadillac Escalade Esv Luxury Suv Rentals, Coast Cadillac Collision wrote Rent Cadillac Escalade Esv Luxury Suv Rentals, Coast Cadillac Collision
on 05-20-2010 7:14 PM

Pingback from  Rent Cadillac Escalade Esv Luxury Suv Rentals, Coast Cadillac Collision

Super Street 1968 Mustang Fastback, Fastback Microsoft Backup And Restore wrote Super Street 1968 Mustang Fastback, Fastback Microsoft Backup And Restore
on 05-20-2010 10:38 PM

Pingback from  Super Street 1968 Mustang Fastback, Fastback Microsoft Backup And Restore

Estate For Sale By Owner, Clayton Ny Real Estate wrote Estate For Sale By Owner, Clayton Ny Real Estate
on 05-21-2010 1:39 AM

Pingback from  Estate For Sale By Owner, Clayton Ny Real Estate

Spectra Premium Debert, Edmunds Kia Spectra5 wrote Spectra Premium Debert, Edmunds Kia Spectra5
on 05-21-2010 3:53 AM

Pingback from  Spectra Premium Debert, Edmunds Kia Spectra5

325xi Review Motorola V325i, Parts 2001 325i Window Regulator Bmw 325xi wrote 325xi Review Motorola V325i, Parts 2001 325i Window Regulator Bmw 325xi
on 05-21-2010 5:04 AM

Pingback from  325xi Review Motorola V325i, Parts 2001 325i Window Regulator Bmw 325xi

1970 Pontiac Lemans, 1977 Cutlass Station Wagon Pontiac Lemans wrote 1970 Pontiac Lemans, 1977 Cutlass Station Wagon Pontiac Lemans
on 05-21-2010 5:41 AM

Pingback from  1970 Pontiac Lemans, 1977 Cutlass Station Wagon Pontiac Lemans

2003 Pontiac Aztek Engine, Aztek Aftermarket Front wrote 2003 Pontiac Aztek Engine, Aztek Aftermarket Front
on 05-21-2010 12:46 PM

Pingback from  2003 Pontiac Aztek Engine, Aztek Aftermarket Front

Sebring Model Seat Covers, Headlight Pt Cruiser Chrysler Sebring wrote Sebring Model Seat Covers, Headlight Pt Cruiser Chrysler Sebring
on 05-21-2010 5:20 PM

Pingback from  Sebring Model Seat Covers, Headlight Pt Cruiser Chrysler Sebring

Buy Clk55 Fit, Chevy Tracker Exhaust Parts Fit wrote Buy Clk55 Fit, Chevy Tracker Exhaust Parts Fit
on 05-21-2010 5:40 PM

Pingback from  Buy Clk55 Fit, Chevy Tracker Exhaust Parts Fit

Motor Buick Reatta, Part Skyhawk Wholesale Buick Reatta wrote Motor Buick Reatta, Part Skyhawk Wholesale Buick Reatta
on 05-21-2010 6:07 PM

Pingback from  Motor Buick Reatta, Part Skyhawk Wholesale Buick Reatta

Pontiac Grandville Kelly Blue Book, Grandville Parts Rear Bumper wrote Pontiac Grandville Kelly Blue Book, Grandville Parts Rear Bumper
on 05-21-2010 6:10 PM

Pingback from  Pontiac Grandville Kelly Blue Book, Grandville Parts Rear Bumper

Dell Inspiron E1505 Laptop Battery Life, Discount Direct Chevrolet V1500 Suburban wrote Dell Inspiron E1505 Laptop Battery Life, Discount Direct Chevrolet V1500 Suburban
on 05-21-2010 6:37 PM

Pingback from  Dell Inspiron E1505 Laptop Battery Life, Discount Direct Chevrolet V1500 Suburban

2003 Mercury Mystique, 1995 Mercury Mystique Problems Grand Marquis wrote 2003 Mercury Mystique, 1995 Mercury Mystique Problems Grand Marquis
on 05-21-2010 7:13 PM

Pingback from  2003 Mercury Mystique, 1995 Mercury Mystique Problems Grand Marquis

Consumer Chevrolet Metro User, 1996 Geo Metro Ignition wrote Consumer Chevrolet Metro User, 1996 Geo Metro Ignition
on 05-21-2010 8:07 PM

Pingback from  Consumer Chevrolet Metro User, 1996 Geo Metro Ignition

Mercedes Benz C220 Part 409 Stainless Steel, 1996 Mercedes C220 Parts wrote Mercedes Benz C220 Part 409 Stainless Steel, 1996 Mercedes C220 Parts
on 05-21-2010 9:12 PM

Pingback from  Mercedes Benz C220 Part 409 Stainless Steel, 1996 Mercedes C220 Parts

Comet Part Fire Lord Ozai Avatar The Last Airbender Season 3, Comet Ajax Php Http Compression wrote Comet Part Fire Lord Ozai Avatar The Last Airbender Season 3, Comet Ajax Php Http Compression
on 05-21-2010 9:59 PM

Pingback from  Comet Part Fire Lord Ozai Avatar The Last Airbender Season 3, Comet Ajax Php Http Compression

740il Retail Parts, 745li Front Bumper 740il wrote 740il Retail Parts, 745li Front Bumper 740il
on 05-21-2010 11:22 PM

Pingback from  740il Retail Parts, 745li Front Bumper 740il

Rd350 Two Stroke Drag Race, Dodge D350 Taillight Wiring Harness wrote Rd350 Two Stroke Drag Race, Dodge D350 Taillight Wiring Harness
on 05-22-2010 12:10 AM

Pingback from  Rd350 Two Stroke Drag Race, Dodge D350 Taillight Wiring Harness

K2500 Suburban Headlight 6.5 L Car Air Conditioner Compressor, Discount Chevrolet K2500 Oem wrote K2500 Suburban Headlight 6.5 L Car Air Conditioner Compressor, Discount Chevrolet K2500 Oem
on 05-22-2010 2:02 AM

Pingback from  K2500 Suburban Headlight 6.5 L Car Air Conditioner Compressor, Discount Chevrolet K2500 Oem

Previa 2007 For Sale 2009 Toyota, Previa Lowest Prices wrote Previa 2007 For Sale 2009 Toyota, Previa Lowest Prices
on 05-22-2010 2:27 AM

Pingback from  Previa 2007 For Sale 2009 Toyota, Previa Lowest Prices

Clk63 Discount E55 Amg, C230 Discount 2000 Mercedes Benz E55 Amg wrote Clk63 Discount E55 Amg, C230 Discount 2000 Mercedes Benz E55 Amg
on 05-22-2010 3:58 AM

Pingback from  Clk63 Discount E55 Amg, C230 Discount 2000 Mercedes Benz E55 Amg

Bem Bem Maria Torrent, Gt Pt Torrent Sonata Arctica wrote Bem Bem Maria Torrent, Gt Pt Torrent Sonata Arctica
on 05-22-2010 4:37 AM

Pingback from  Bem Bem Maria Torrent, Gt Pt Torrent Sonata Arctica

Focus Radiator Cap, Focus Spare Bulb Kit wrote Focus Radiator Cap, Focus Spare Bulb Kit
on 05-22-2010 7:37 AM

Pingback from  Focus Radiator Cap, Focus Spare Bulb Kit

Msn Insight, Insight Turbo Zoom wrote Msn Insight, Insight Turbo Zoom
on 05-22-2010 8:13 AM

Pingback from  Msn Insight, Insight Turbo Zoom

Wholesale 318is Car, Car Dealer 318is wrote Wholesale 318is Car, Car Dealer 318is
on 05-22-2010 9:38 AM

Pingback from  Wholesale 318is Car, Car Dealer 318is

Lx470 2nd Hand 2007 Lexus Car Classifieds, Lx470 Aftermarket Order Auto Parts wrote Lx470 2nd Hand 2007 Lexus Car Classifieds, Lx470 Aftermarket Order Auto Parts
on 05-22-2010 10:35 AM

Pingback from  Lx470 2nd Hand 2007 Lexus Car Classifieds, Lx470 Aftermarket Order Auto Parts

Protege5 Alternative Free, Protege5 Body Kit Mazda Protege Catalytic Converter wrote Protege5 Alternative Free, Protege5 Body Kit Mazda Protege Catalytic Converter
on 05-22-2010 10:55 AM

Pingback from  Protege5 Alternative Free, Protege5 Body Kit Mazda Protege Catalytic Converter

Mercedes Benz C55 Amg Performance, C55 Cooling System Buy Mercedes Clk55 Amg wrote Mercedes Benz C55 Amg Performance, C55 Cooling System Buy Mercedes Clk55 Amg
on 05-22-2010 11:35 AM

Pingback from  Mercedes Benz C55 Amg Performance, C55 Cooling System Buy Mercedes Clk55 Amg

E 450 F250 Diesel, 2005 Ford Sale F250 Super Duty wrote E 450 F250 Diesel, 2005 Ford Sale F250 Super Duty
on 05-22-2010 12:04 PM

Pingback from  E 450 F250 Diesel, 2005 Ford Sale F250 Super Duty

Ford E 450 Super Duty Bulb Installation Headlight Assembly, F 150 Heritage Discount Explorer Sport Trac Super Duty Ford Excursion wrote Ford E 450 Super Duty Bulb Installation Headlight Assembly, F 150 Heritage Discount Explorer Sport Trac Super Duty Ford Excursion
on 05-22-2010 2:02 PM

Pingback from  Ford E 450 Super Duty Bulb Installation Headlight Assembly, F 150 Heritage Discount Explorer Sport Trac Super Duty Ford Excursion

Used Mercedes Benz 500e E55 Amg, 500e Parts Our Auto Spark Plug Wires wrote Used Mercedes Benz 500e E55 Amg, 500e Parts Our Auto Spark Plug Wires
on 05-22-2010 6:47 PM

Pingback from  Used Mercedes Benz 500e E55 Amg, 500e Parts Our Auto Spark Plug Wires

Black Chrysler Crossfire Convertible, Part Srt 6 2005 Chrysler Crossfire wrote Black Chrysler Crossfire Convertible, Part Srt 6 2005 Chrysler Crossfire
on 05-22-2010 8:48 PM

Pingback from  Black Chrysler Crossfire Convertible, Part Srt 6 2005 Chrysler Crossfire

Radiator Auto Parts 2004 Saturn Ion 2, Discount Aftermarket Prices Relay 2 Saturn L300 wrote Radiator Auto Parts 2004 Saturn Ion 2, Discount Aftermarket Prices Relay 2 Saturn L300
on 05-22-2010 8:57 PM

Pingback from  Radiator Auto Parts 2004 Saturn Ion 2, Discount Aftermarket Prices Relay 2 Saturn L300

Discount Great Ballpark In Arlington Texas Rangers, Mercedes Benz Parts Warehouse Oxygen Sensor Spark Plug Wires wrote Discount Great Ballpark In Arlington Texas Rangers, Mercedes Benz Parts Warehouse Oxygen Sensor Spark Plug Wires
on 05-22-2010 9:10 PM

Pingback from  Discount Great Ballpark In Arlington Texas Rangers, Mercedes Benz Parts Warehouse Oxygen Sensor Spark Plug Wires

Mystique Hotel Wine Cave, Mercury Mystique Driver Side Mirror - 243.tvshowzone.com wrote Mystique Hotel Wine Cave, Mercury Mystique Driver Side Mirror - 243.tvshowzone.com
on 05-22-2010 10:55 PM

Pingback from  Mystique Hotel Wine Cave, Mercury Mystique Driver Side Mirror - 243.tvshowzone.com

1 Part Saturn Relay Chevrolet Uplander Recalls, Sax Heater Relay - 52.cmanager.org wrote 1 Part Saturn Relay Chevrolet Uplander Recalls, Sax Heater Relay - 52.cmanager.org
on 05-23-2010 1:02 AM

Pingback from  1 Part Saturn Relay Chevrolet Uplander Recalls, Sax Heater Relay - 52.cmanager.org

Cadillac Minivans, 1951 Cadillac Convertible - 425.tgrconversions.com wrote Cadillac Minivans, 1951 Cadillac Convertible - 425.tgrconversions.com
on 05-23-2010 5:51 AM

Pingback from  Cadillac Minivans, 1951 Cadillac Convertible - 425.tgrconversions.com

Trailblazer Lamp, Does 2002 Trailblazer Fan Clutch Work - 119.unlockiphone30.net wrote Trailblazer Lamp, Does 2002 Trailblazer Fan Clutch Work - 119.unlockiphone30.net
on 05-23-2010 7:25 AM

Pingback from  Trailblazer Lamp, Does 2002 Trailblazer Fan Clutch Work - 119.unlockiphone30.net

Volkswagen Jetta Brake Rotors Compare, Volkswagen German - 50.defutbolazo.com wrote Volkswagen Jetta Brake Rotors Compare, Volkswagen German - 50.defutbolazo.com
on 05-23-2010 7:34 AM

Pingback from  Volkswagen Jetta Brake Rotors Compare, Volkswagen German - 50.defutbolazo.com

Taillight Dodge Rd250, 1991 D250 Body Parts Dodge Salvage Yards - 472.binggreen.com wrote Taillight Dodge Rd250, 1991 D250 Body Parts Dodge Salvage Yards - 472.binggreen.com
on 05-23-2010 12:06 PM

Pingback from  Taillight Dodge Rd250, 1991 D250 Body Parts Dodge Salvage Yards - 472.binggreen.com

Aspire Replacement Laptop Batteries, Acer Aspire 3000 Manual - 343.dlmreza.net wrote Aspire Replacement Laptop Batteries, Acer Aspire 3000 Manual - 343.dlmreza.net
on 05-24-2010 4:16 AM

Pingback from  Aspire Replacement Laptop Batteries, Acer Aspire 3000 Manual - 343.dlmreza.net

Torrent E550, Laura Angel Clips Part Bittorrent - 470.rkwrh.com wrote Torrent E550, Laura Angel Clips Part Bittorrent - 470.rkwrh.com
on 05-24-2010 5:18 AM

Pingback from  Torrent E550, Laura Angel Clips Part Bittorrent - 470.rkwrh.com

1966 Dodge Charger Clubs, Sale Cylinder Head Gmc C35 C3500 Pickup Horsepower And Torque - 81.jeepsunlimted.com wrote 1966 Dodge Charger Clubs, Sale Cylinder Head Gmc C35 C3500 Pickup Horsepower And Torque - 81.jeepsunlimted.com
on 05-24-2010 5:30 AM

Pingback from  1966 Dodge Charger Clubs, Sale Cylinder Head Gmc C35 C3500 Pickup Horsepower And Torque - 81.jeepsunlimted.com

2004 Honda S2000 Radiator Cold Air Intake Transmission Oil Cooler, Used Accord Del Sol Honda S2000 - 102.jordanbrandallamerican.com wrote 2004 Honda S2000 Radiator Cold Air Intake Transmission Oil Cooler, Used Accord Del Sol Honda S2000 - 102.jordanbrandallamerican.com
on 05-24-2010 5:35 AM

Pingback from  2004 Honda S2000 Radiator Cold Air Intake Transmission Oil Cooler, Used Accord Del Sol Honda S2000 - 102.jordanbrandallamerican.com

Coupe Sale 1997 Honda Accord Se Classified Listings, 1992 Accord Headlights - 132.an74.com wrote Coupe Sale 1997 Honda Accord Se Classified Listings, 1992 Accord Headlights - 132.an74.com
on 05-24-2010 6:08 AM

Pingback from  Coupe Sale 1997 Honda Accord Se Classified Listings, 1992 Accord Headlights - 132.an74.com

Ann Arbor Pb250 Click Here, Plymouth Pb250 Part Replacement Discount - 398.luna-atra.net wrote Ann Arbor Pb250 Click Here, Plymouth Pb250 Part Replacement Discount - 398.luna-atra.net
on 05-24-2010 6:46 AM

Pingback from  Ann Arbor Pb250 Click Here, Plymouth Pb250 Part Replacement Discount - 398.luna-atra.net

244 Ram, 244 Fuel Injector Auto Zone - 159.tvshowzone.com wrote 244 Ram, 244 Fuel Injector Auto Zone - 159.tvshowzone.com
on 05-24-2010 10:59 AM

Pingback from  244 Ram, 244 Fuel Injector Auto Zone - 159.tvshowzone.com

350sdl Exhaust Manifold, 350sdl Blub Econoline - 229.eumreborn.com wrote 350sdl Exhaust Manifold, 350sdl Blub Econoline - 229.eumreborn.com
on 05-24-2010 11:11 AM

Pingback from  350sdl Exhaust Manifold, 350sdl Blub Econoline - 229.eumreborn.com

280ce Radiator Troll, 280ce Factory Call - 25.binggreen.com wrote 280ce Radiator Troll, 280ce Factory Call - 25.binggreen.com
on 05-24-2010 1:11 PM

Pingback from  280ce Radiator Troll, 280ce Factory Call - 25.binggreen.com

Wrangler Pt Cruiser Grand, Used Jeep Wrangler San Francisco - 66.zapstreaming.com wrote Wrangler Pt Cruiser Grand, Used Jeep Wrangler San Francisco - 66.zapstreaming.com
on 05-24-2010 2:29 PM

Pingback from  Wrangler Pt Cruiser Grand, Used Jeep Wrangler San Francisco - 66.zapstreaming.com

Alternative Dodge D100 Pickup, W200 Pickup Bumper Grand Caravan Dodge Ram 3500 - 75.tvshowzone.com wrote Alternative Dodge D100 Pickup, W200 Pickup Bumper Grand Caravan Dodge Ram 3500 - 75.tvshowzone.com
on 05-24-2010 4:46 PM

Pingback from  Alternative Dodge D100 Pickup, W200 Pickup Bumper Grand Caravan Dodge Ram 3500 - 75.tvshowzone.com

Manual Caliber, Cimarron Used Cowboy Action Shooting 1873 Winchester Pistol Caliber - 241.eumreborn.com wrote Manual Caliber, Cimarron Used Cowboy Action Shooting 1873 Winchester Pistol Caliber - 241.eumreborn.com
on 05-24-2010 11:27 PM

Pingback from  Manual Caliber, Cimarron Used Cowboy Action Shooting 1873 Winchester Pistol Caliber - 241.eumreborn.com

2002 Chevrolet Silverado Pricing, Chevrolet Silverado 3500 Hd 2nd Hand Variable Valve Timing - 343.jordanbrandallamerican.com wrote 2002 Chevrolet Silverado Pricing, Chevrolet Silverado 3500 Hd 2nd Hand Variable Valve Timing - 343.jordanbrandallamerican.com
on 05-25-2010 1:25 AM

Pingback from  2002 Chevrolet Silverado Pricing, Chevrolet Silverado 3500 Hd 2nd Hand Variable Valve Timing - 343.jordanbrandallamerican.com

2001 S55 Amg Sale 2005 Mercedes Benz Luxury Cars, Lexus S55 Amg 2009 - 200.jordanbrandallamerican.com wrote 2001 S55 Amg Sale 2005 Mercedes Benz Luxury Cars, Lexus S55 Amg 2009 - 200.jordanbrandallamerican.com
on 05-25-2010 1:58 AM

Pingback from  2001 S55 Amg Sale 2005 Mercedes Benz Luxury Cars, Lexus S55 Amg 2009 - 200.jordanbrandallamerican.com

2006 Corvette Performance, Corvette Body Work - 147.binggreen.com wrote 2006 Corvette Performance, Corvette Body Work - 147.binggreen.com
on 05-25-2010 1:59 AM

Pingback from  2006 Corvette Performance, Corvette Body Work - 147.binggreen.com

He265a, 265 Discount Volvo V70 Oem - 101.mfbattle.com wrote He265a, 265 Discount Volvo V70 Oem - 101.mfbattle.com
on 05-25-2010 12:17 PM

Pingback from  He265a, 265 Discount Volvo V70 Oem - 101.mfbattle.com

Mariner Full Virginia, Cargo Cover 2006 Mercury Mariner - 138.akemet.com wrote Mariner Full Virginia, Cargo Cover 2006 Mercury Mariner - 138.akemet.com
on 05-25-2010 1:14 PM

Pingback from  Mariner Full Virginia, Cargo Cover 2006 Mercury Mariner - 138.akemet.com

Bobcat Skid Steer Dealers, Cat Bobcat Felis Rufus - 45.mfbattle.com wrote Bobcat Skid Steer Dealers, Cat Bobcat Felis Rufus - 45.mfbattle.com
on 05-25-2010 2:25 PM

Pingback from  Bobcat Skid Steer Dealers, Cat Bobcat Felis Rufus - 45.mfbattle.com

Sheepskin Seat Cover Toyota Tacoma, Buy Iphone Tacoma - 171.mfbattle.com wrote Sheepskin Seat Cover Toyota Tacoma, Buy Iphone Tacoma - 171.mfbattle.com
on 05-25-2010 4:00 PM

Pingback from  Sheepskin Seat Cover Toyota Tacoma, Buy Iphone Tacoma - 171.mfbattle.com

1995 - 1983 @ Cheap Plymouth Gran Fury Dodge Diplomat, Diplomat Coolant - 139.codebluehacks.org wrote 1995 - 1983 @ Cheap Plymouth Gran Fury Dodge Diplomat, Diplomat Coolant - 139.codebluehacks.org
on 05-27-2010 3:30 AM

Pingback from  1995 - 1983 @ Cheap Plymouth Gran Fury Dodge Diplomat, Diplomat Coolant - 139.codebluehacks.org

1987 - 1994 @ Order 260z Brake Master Cylinder, 240 260z Out - 169.rkwrh.com wrote 1987 - 1994 @ Order 260z Brake Master Cylinder, 240 260z Out - 169.rkwrh.com
on 05-27-2010 6:10 AM

Pingback from  1987 - 1994 @ Order 260z Brake Master Cylinder, 240 260z Out - 169.rkwrh.com

1990 - 2009 @ X38 P3500 Bus Radiator Fan, G45 P3500 Vancouver Headlight - 66.zapstreaming.com wrote 1990 - 2009 @ X38 P3500 Bus Radiator Fan, G45 P3500 Vancouver Headlight - 66.zapstreaming.com
on 05-27-2010 6:55 AM

Pingback from  1990 - 2009 @ X38 P3500 Bus Radiator Fan, G45 P3500 Vancouver Headlight - 66.zapstreaming.com

1995 - 1983 @ Used Ford Freestyle Sel, Freestyle Explorer Sport Trac Ford Crown Victoria Parts - 247.tijuanareader.com wrote 1995 - 1983 @ Used Ford Freestyle Sel, Freestyle Explorer Sport Trac Ford Crown Victoria Parts - 247.tijuanareader.com
on 05-27-2010 9:08 AM

Pingback from  1995 - 1983 @ Used Ford Freestyle Sel, Freestyle Explorer Sport Trac Ford Crown Victoria Parts - 247.tijuanareader.com

1981 - 2001 @ E4300 Used Cars For Sale Windows Vista Business, Video Mercedes Benz E430 - 289.computeronlinebingo.com wrote 1981 - 2001 @ E4300 Used Cars For Sale Windows Vista Business, Video Mercedes Benz E430 - 289.computeronlinebingo.com
on 05-30-2010 6:37 PM

Pingback from  1981 - 2001 @ E4300 Used Cars For Sale Windows Vista Business, Video Mercedes Benz E430 - 289.computeronlinebingo.com

1999 - 1998 @ Suzuki Grand Vitara Aftermarket Roof Rack, 92 Grand Am Sale - 200.zapstreaming.com wrote 1999 - 1998 @ Suzuki Grand Vitara Aftermarket Roof Rack, 92 Grand Am Sale - 200.zapstreaming.com
on 05-31-2010 12:00 AM

Pingback from  1999 - 1998 @ Suzuki Grand Vitara Aftermarket Roof Rack, 92 Grand Am Sale - 200.zapstreaming.com

1997 - 1990 @ Heavy Duty Shocks Springs, E 450 Econoline Super Duty Bulb Explorer Sport Trac - 169.mfbattle.com wrote 1997 - 1990 @ Heavy Duty Shocks Springs, E 450 Econoline Super Duty Bulb Explorer Sport Trac - 169.mfbattle.com
on 05-31-2010 1:10 AM

Pingback from  1997 - 1990 @ Heavy Duty Shocks Springs, E 450 Econoline Super Duty Bulb Explorer Sport Trac - 169.mfbattle.com

1980 - 1991 @ F 150 Econoline Radiator Galaxie 500, Second Hand V1500 Suburban Chevrolet Astro - 9.myipgirl.com wrote 1980 - 1991 @ F 150 Econoline Radiator Galaxie 500, Second Hand V1500 Suburban Chevrolet Astro - 9.myipgirl.com
on 05-31-2010 1:32 AM

Pingback from  1980 - 1991 @ F 150 Econoline Radiator Galaxie 500, Second Hand V1500 Suburban Chevrolet Astro - 9.myipgirl.com

2009 - 2008 @ W170 Part Dsc W150 Super Steadyshot, Aftermarket Auto Body Dodge W150 - 272.luna-atra.net wrote 2009 - 2008 @ W170 Part Dsc W150 Super Steadyshot, Aftermarket Auto Body Dodge W150 - 272.luna-atra.net
on 05-31-2010 1:43 AM

Pingback from  2009 - 2008 @ W170 Part Dsc W150 Super Steadyshot, Aftermarket Auto Body Dodge W150 - 272.luna-atra.net

1994 - 1993 @ Order Saturn L300 1 Shock Absorber, Order Uranus L300 3 - 326.tgrconversions.com wrote 1994 - 1993 @ Order Saturn L300 1 Shock Absorber, Order Uranus L300 3 - 326.tgrconversions.com
on 05-31-2010 2:38 PM

Pingback from  1994 - 1993 @ Order Saturn L300 1 Shock Absorber, Order Uranus L300 3 - 326.tgrconversions.com

1994 - 1987 @ Scrambler Bulb Blazer Polaris Sportsman 400, Scrambler Adoption Minute - 56.tgrconversions.com wrote 1994 - 1987 @ Scrambler Bulb Blazer Polaris Sportsman 400, Scrambler Adoption Minute - 56.tgrconversions.com
on 05-31-2010 3:01 PM

Pingback from  1994 - 1987 @ Scrambler Bulb Blazer Polaris Sportsman 400, Scrambler Adoption Minute - 56.tgrconversions.com

Reminichole wrote re: WCF interoperability in the real world (eBay)
on 06-09-2010 4:02 AM

I have read a lot about this on other articles written by other people, but I must admit that you is the best.I liked your post. Keep posting interesting matters here.

<a href="http://listeasy.net">ebay ticket selling</a>

Add a Comment

(required)  
(optional)
(required)  
Remember Me?