Project Phase 3

In this phase you will once again be working with your stores from phase two. (Try not to break your phase two project while working on phase three because I will probably still be grading them.) Big online stores like your store and Amazon.com have large selections, but they still can't reach every customer especially those who want niche products. In order to diversify, online stores form partnerships where a store like Amazon can 'sell' products for their partners and vice versa. You may 'buy' a book at Amazon.com which really came from who-knows-what.com. Amazon, of course, gets a cut of the money. Likewise, you may buy a book at flyfishing.co.au which really comes from Amazon.

To operate with each others, such stores often use XML web services. You are, in phase two, going to implement web service APIs for your stores so that you can buy and sell products from the other stores in the class. You will technically only have to be able to buy and sell with the demo store, but you need to be able to display products from all stores that successfully complete the product publishing part of the web service. In theory, if all stores can interoperate with the demo store, they should operate with each other too.

Through this phase of the project you will learn:

Notes: (Things your TA has learned from phases 1 and 2)

Rules and Restrictions

Tips

By tips I mean advice. If you give me the other type of tips, it will not effect your grade. =)

Part A

Due: Friday December 3rd 2005 @ 11:59PM

Working Example
No need for starter code this time =).

Tasks for Phase 3A are:

You will be expected to turn in:

Part B

Due: Friday December 9th 2005 @ 11:59PM

Working Example
No need for starter code this time =).

Tasks for Phase 3B are:

You will be expected to turn in:

Details

If you ended phase 2 with inconsistent data or a not-so-functioning checkout, you might want to fix that first. This phase will share a lot of code with the parts of checkout that deal with breaking an order down into packages (your favorite piece right? mine too!) and order confirmation (that’s your other favorite piece right?).

You will be, for this phase, both consuming and producing a web service with the same signature. There are four WebMethods for this service. Please see the .NET quickstart tutorials for information on producing and consuming web services. Also, when you add a "web reference" in Visual Studio, it adds some classes to your project (expand the web reference in the object browser). I suggest checking out these files and figuring out what they do and perhaps consider how they are generated (hint: WSDL)

Let's talk about invoices.

One big question is "what about invoices for orders that deal with multiple stores?". So, the customer isn't supposed to need to know that he or she is ordering from multiple stores, so the invoice at the store the custom purchased the goods from should reflect all items purchased at all stores and all packages sent regarding the order. (That is, packages shipped from another store will end up in both stores shipping databases.) You will not need to worry about updating package status for this project, but a real store would. There should also be invoices generated at the other stores involved. A question arises, what customer should be attached to invoices for orders that a partner store placed over a web service? It is appropriate to have a user in the database that is associated with each partner store. When partner store A places an order over the webservice, the resulting invoice is generated for partner A's user account.

Dealing with errors.

When importing errors from another store (or when buying or selling products with another store) you might come across XML that is incorectly formatted. It is up to you to contact the owners of this store and explain why their output is broken. (Be professional, these are business associates, not classmates.) Any stores that are not publishing properly at the part A deadline you will not have to import for part B.