An e-commerce module is a big challenge for any site developer, and there are a lot of features we couldn't implement in this chapter that you may find useful, especially for larger sites. In fact, you can find many commercial modules for managing electronic stores among third-party vendors, and sometimes it can be cheaper to buy one than to develop one yourself: You need to consider the features that you want, and weigh the cost of commercial solutions against the cost of doing it yourself. The module in this chapter may be entirely adequate for small sites, or for a small store of a larger site, but you might also want to add some advanced features such as the capability to list a product under multiple categories, handle tax calculations on the store itself instead of leaving it to PayPal, support products with variations (color, size, etc.) that could also affect their price, support customer-level discounts (so that loyal customers get a better discount percentage, for example), support bundle offers and discounts based on the quantity of ordered products and the total price reached, integrating the shipment tracking offered by some shipping companies such as FedEx and UPS, and much more.
Nevertheless, in this chapter we've implemented a fully working e-commerce store with most of the basic features, including complete catalog and order management, a persistent shopping cart, integrated online payment via credit card, product rating, and more. All this required a fairly short amount of time to design and implement, and this was due in no small part to the powerful new features in ASP.NET 2.0 such as profiles (which enable us to implement persistent shopping carts in minutes instead of several hours or days) and UI controls such as the GridView, DetailsView, Wizard, and MultiView controls.
In the next chapter you'll discover another great feature of ASP.NET 2.0: Web Parts, which enable end users to personalize their pages by dynamically adding, removing, and moving around content boxes, and enable editors and administrators to change the home page's content and its disposition without actually changing the code of the page and uploading it every time.