Abstract: This chapter discusses how to design consolidatedretail.com (it belongs to the business needs of the consumer (B2C) website, using Microsoft Business Reference Architecture), and summarizes the actual business requirements determined during this application design. This chapter also provides a 3rd floor application model and phase design process of Microsoft Solutions Framework, MSF.
Please note: Although the business needs mentioned here are only limited to the ability to install the reference example, this "Developer Guide" is very useful, through these clues, you can Upgrade to meet the needs of the production environment.
Introduction
When web users are defined for e-commerce sites, general users may answer the e-commerce site is the online store that can be purchased with a credit card. Although this definition is quite correct, it has not fully illustrated the characteristics of various e-commerce sites currently developed for Internet. In the rapidly developed Internet business era, an efficient e-commerce website is not just a web-based store.
Users are getting higher and higher for e-commerce sites. If a site can't meet their requirements, they will discard it. So what are the requirements of the user for e-commerce? The following table lists some of the main issues that affect application design.
Easy to use / navigation performance High anonymous shopping Maintenance User profile security can improve competitive advantages through a variety of device access sites through manageability
Sketchy, in the above problems, some should be resolved by the application designer, and some seem to be resolved by the enterprise decision makers or basic structural experts. However, if you think about these questions carefully, you will understand why these questions are related to the design of the application.
Easy to use / navigate
The website should be easy to use and navigate. After all, companies do not want consumers to encounter difficulties when buying their own products, and consumers are more willing to consume at the site where they can easily find the checkout page.
One way to make the site is easy to use is to ensure that you are familiar with similar methods on common tasks. This means that the goods can be stored in the shopping basket or basket before consumers complete the purchase (or "checkout"). This metaphor is convenient for people who are not familiar with the computer to understand how to work, thereby caring.
Make the site easy navigation than you first imagined. The Web is completely working in a non-linear manner, and the user clicking on the link is often unpredictable. Therefore, you should make sure that the site is always fully consistent interface regardless of the user is currently seeing, and ensures that you can access important web pages (such as homepage, shopping baskets and user account) just click on a link. Information is located, etc.). On the consolidatedretail.com site, the top flag always contains the page where the shopping basket is located, the consumer account is located and the link to the home page, and the search and directory links are always included on the panel on the left.
There is also a way to ensure that users can find the desired content in the site, which is to include a list of product lists or directories in a logical way. If you divide a directory into several categories and many possible subcategories, you can easily find the products they are interested in. In addition, users should provide search capabilities so that they can be searched when they are not very clear about the display position of some product.
If your site is easy to use and navigate, the consumer will be happy to use. Conversely, if it is more difficult to use, the consumer may discard it, and select the site.
High performance
Among the design of the website, there are many factors affecting its performance. Since different people have different requirements, it is also acceptable to person.
Try to minimize response time
Most people think that the site for providing acceptable response time is a good performance site. The response time refers to the amount of time that the user can wait for the time before requesting a certain operation. Ideally, we all want the operation on the site to be executed instantly; Therefore, when designing an e-commerce site, we should minimize factors that have a negative impact on the response time (although they cannot completely exclude them). The key to e-commerce optimization is to reduce the time consumed to perform operations such as checkout, so that consumers will not give up their purchase of goods because of the queue waiting, you will not lose orders.
Try to enhance scalability
Another important aspect of performance is "scalability." This refers to the ability to add a resource to increase the capacity of the resource. From a user point of view, this means that the site can provide an acceptable response time when a large number of users access the site at the same time. Many developers often get the frustrating news: When the user reaches a certain amount (this quantity is the number of actual life requirements), the performance excellent test site can not be dealt with in the development machine.
So how can we maximize the scalability of the site? Two typical methods are "upward expansion" and "outward expansion".
Expand upward
The first method ("upward expansion") is to enhance the processing power of the server by using a better and / or faster CPU, a larger RAM, faster disk, and the like. This method is very effective, especially on the data layer, some large databases on this layer require relatively strong processing capabilities. However, due to the increase in hardware costs with the processing power, the closer the server, the closer to the top, and this method is more inclusive.
Outward extension
"Outward" is solved from another aspect, namely the "cluster" (or server collection, also known as the "Web field") to share processing workload. The Web field costs more costly, and provides more flexible, scalable solutions. When the load on the site increases, you can easily add the server into the web domain.
Microsoft® Windows® 2000 Advanced Server and Windows Network Load Balanter Server, Windows Network Load Balancing, NLB services, display the entire Web field as a logical server with a single IP on the Internet. After receiving the request, the request is distributed to the server according to the load situation, which can communicate with the backbone network or communicate with the database server. Figure 1-1 shows the basic architecture of the web domain.
Figure 1-1: Web field
Manage the status in the web domain
One of the most important issues is one of the most important issues in the web domain. The status is the session data that must be retained between two user requests; for example, during the user's continued browsing site, it is necessary to maintain the original article in the user's shopping basket. This is necessary, even if each user request may be processed by different servers in the Web field.
Many ASP developers use the Session object to store status data. However, this method should usually avoid using this method. To optimize the software architecture of the site to implement in the server domain, the web front end prohibits maintaining user status in memory. If the front-end server maintains user status, the following issues will appear:
The user session will be included in a particular server (session dependen), which will destroy the request to the server to the server's network load balancing policy. In addition, the reliability of the server domain will also be damaged because the user session cannot be transferred to other servers when the original server fails (and lost session status information in its memory). Memory resources are consumed by the front-end server in the details of the storage user session state, thereby reducing memory available to process requests and cache content. If a popular site can attract a large number of users in a short period of time, the memory demand in status maintenance may be very large. For partial resolution of memory requirements, Commerce Server uses a high speed cache. Cache will be made to the configuration file architecture, discounts, and business activities. In addition to avoiding session correlation, avoiding the front end operation with a long-term operation to be associated to design the front end operation as a fast execution. Since IIS is to handle requests with a buffer pool, the buffer pool contains the number of worker threads thus limited, and thus when these threads have been occupied and the average time of the incoming request is taken when the operation is waiting for a long time. It will increase. Anonymous shopping (browse)
Usually, users are reluctant to log in to the site for forced to log in to the site for the sale of sites. Therefore, the site should allow users to browse goods in anonymous manner without authentication, and even allow them to put some of the items into the basket.
Maintain user profile
When the user accesses the site again, they do not want to re-enter the same information entered when the last visit is entered. Once you provide your own shopping and contact information to your site, users want the site to remember this data.
To achieve this, many sites maintain their user "configuration file" information for each registered user. In most cases, users need to register in order to provide minimum amount of profile information such as user names and passwords. The user then assigns a unique identifier that can be used as the master key of its configuration file data.
After the user is registered on the site, its configuration file information can be saved in the database to call when needed later. Typically, users can add some necessary information, specify some details, such as email addresses, phone numbers, delivery addresses, or any other personal information that allows users to add.
Keep the user profile information is quite useful, whose reasons are as follows:
You do not have to re-enter the data when accessing later. Can be used to analyze the activities of users at sites. Can be used as a personalized basis, allowing you to publish a flag advertisement or discounted activity based on a particular user group. It can be used for business analysis, such as tracking the purchase trend based on a particular profile value.
Improve competitive advantage through manageability
Although application designers are not responsible for business decisions (such as pricing, advertising activities, etc.), the design of e-commerce solutions has a huge impact on how companies deal with market trends and competitors. The management activities carried out by the business manager are subject to the management function of e-commerce site. To succeed, e-commerce solutions must be easy to use, and must have a comprehensive management infrastructure.
There are two basic choices for the design management interface for e-commerce sites. You can create your own custom interface, or you can use a "ready" solution such as Microsoft Commerce Server 2000 Business Desk.
If you build your own management interface, you will be able to design the site management functionality in accordance with your own wishes. However, this will increase a large number of software projects that have been largely developed, which is almost equal to or greater than the workload of the software project itself. By default, Commerce Server Business Desk can meet most of the management requirements of e-commerce sites, if you need to add other features by creating custom modules.
The rest of this chapter will illustrate the actual business needs confirmed during the planning phase of the project, as well as the application models and design processes used in the design of the consolidateDretail.com application. Reference application business needs
Before designing applications, you should clarify which tasks must be performed. Analysis Business Demand is one of the most important steps in application development. Confirm that the purpose of business needs is to create a solution that can meet retailers and consumers. In this way, the demand is converted into a business demand document, which can be used as a guide to the development of the entire project.
This section summarizes the actual demand determined for the reference architecture application consolidatedretail.com. Please note: Business requirements used here are intended to be capable of having a relaxing reference example.
Functional Requirements
ConsolidateDretail.com is designed to meet the following functional requirements:
Easy navigation
The site should be easy to navigate. The link should be clear, easy to understand and practical. Users should be able to move freely between pages and screens.
Easy to use
Applications should be easy to use. You should easily purchase the product and access the "Checkout" page.
The site should use an easy-to-understand metaphor, for example: store the optional item in "Shopping Basket" until the shopper is ready to checkout
Each page on the site should appear exact interface. Important pages or common pages should be accessed only by clicking once.
Availability test
The site should make people who are not familiar with the computer easily understand.
Site Access
Users can access the site by the following methods:
Enter the URL from other sites or email links to links to access
Maintain user registration / configuration file
Regardless of any page from the site, the user must be able to register, so that users do not have to re-enter the same information every time you order. Users can browse the site without registration; but must be registered when checkout. In addition, request registration when applying for email news, special notices, etc.
Registration involves:
Profile information: User name, payment address, main delivery address, phone number and email address. Authentication information: User identity (user ID) and password should be kept in the application. Payment information: Users should enter credit card information and save this information. Applications should be able to save multiple credit card numbers. Preferences: Users should be able to specify whether to get email notifications about delivery status (the default value is "yes"), and whether to get notifications for sales prices and specials (the default is "No"). Address Book: The user should be able to store any plurality of additional delivery addresses.
Keep the user profile information is quite useful, whose reasons are as follows:
You do not have to re-enter the data when accessing later. Can be used as a personalized basis, allowing you to publish a flag advertisement or discounted activity based on a particular user group. Can be used for business analysis, for example, tracking the purchase trend based on a particular profile value.
User registration management
After the user logs in and after authentication, the user should be able to modify, add, or delete registration information. In addition to the User ID field, all other fields should be an editable field.
Login / Authentication
After the user returns to the site after registration, he or she should be able to log in from any page from the site.
Browse
Users should be able to browse the directory. On the home page, the directory list should be displayed to the user. After the user selects a directory, it should display the subcategory or actual product.
Anonymously browse
Users should be able to browse the directory in anonymous manner; ie: the user should be able to view the product without having to log in.
Multi-directory
Applications should support multi-directory. Summary of multi-directory products should be transparent to users.
Products and categories
The application should allow the product to be associated with one or more directories.
Product page
Applications should have a product page, including larger pictures of the product project and / or detailed description of the product item. On this page, the product should be added to the shopping basket. On this page, the user should be able to:
Add product items to your shopping basket to browse the next project to browse the last item Back to the previous page
product search
The homepage and all types of pages and subcategory pages should be available. Users should be able to enter multiple words. If a user specifies multiple words, a Boolean query using the "AND" operator will be constructed based on these words. If the user is on the home page, search will default to "search all categories". Searches executed in category and subclass page will default to "search in the 'category' range". The user can select a particular site area or a particular category to search to overwrite these default settings.
If the site uses a multi-directory, you will perform a search for all directories. If the site shows multiple directories (and there is a layered product list), no search is made in this rule. In the category / product hierarchical structure, each directory is the first level. In this case, it is default that only the current directory where the user is currently search. Users can override the default settings, select some other directories or the entire site. This is similar to the behavior specified by the previously described "Multi-Directory".
By default, you will search for keywords and titles.
Product search results
"Search Results" page should display a series of product projects and their corresponding categories (or directory). The project should be packet according to the category or directory. Each search result should be provided to a hypertext link to the corresponding product page.
Add a project to the shopping basket
Regardless of the product page, users should be able to add one or more items to the shopping basket. These items can come from different directories. Each time you add a project, the number of items in the basket will also increase accordingly. The number is displayed next to the basket icon.
Manage shopping basket
Users should be able to manage shopping baskets at any time. Users can specify a project "Active" (actually purchased tag) or "reserved" (identified as a future possible purchase). Users can check the following options when shopping baskets:
Delete a single item. Changing the number of each item. Retain any items for future purchase. Delete all items in the shopping basket. Keep all items in the shopping basket for future purchase. Move the project into the shopping basket reservation (future purchase) area and from the middle. Retrieve the reserved order.
Keep shopping basket or project
Users should be able to retain all items in the selected item or shopping basket for future purchase. Only users who have registered and logged in can retain their items. If the user has not logged in or registered, it will be prompted to do this. After the user completes this, returns to "reserved shopping basket" operation.
Checkout
No matter from any screen, the user should be able to check out. When checkout, all ordered items (shopping basket) will be displayed to the user. At this point, the user should be able to manage the shopping basket. After confirming the items in the shopping basket, the "shipping" screen will appear. Each project will be associated with the main delivery address of the user. Users can replace this address with an address or new address in an address book. If the user adds a new address, he or she can choose to save the new address in the address book.
After the user assigns an address (or accepts the default address) for each project, he or she can go to the "shipping" screen, select the delivery method of each address. The default mode is determined by the site owner. After the user chooses the delivery method, he or she can continue to the "Order List" screen. This screen should be divided according to shipping address. Under each address, item descriptions, project prices, and pricing are listed (if). The price of the project is subjected to a small count, and the shipping cost is listed as a detailed item and submitted a small count, and finally the tax and total amount under this address will be listed.
After the amount under all addresses, the total is listed at the end of the page. Users can:
Accept order modification order cancel order Continue shopping
If the user selects a modification order, he will return to the Manage Shopping Basket page. If the user chooses to cancel the order, the shopping basket will be empty. If the user chooses to continue shopping, he or she should return to the home page.
If the user chooses to accept orders, he will go to the "Payment" page. This information is displayed if the user has stored credit card information in the Registration page. Users can choose to use saved credit cards, or select ignore saved information and provide new credit card information. If the user adds a new credit card message, he or she should choose to add new information to the saved registration information. After users choose or enter credit card information, he or she can:
Cancel order modification order Continue shopping submission order
If the user submits an order, the confirmation page and the order number will be received.
Shipping choice
The following shipments must be supported:
Shipping Hong Kong ground delivery the next day delivery overnight delivery international delivery
Order status notification
Users can choose to receive email notifications about the order status.
Calculation of shipping costs
Calculation of shipping costs Based on the type of carrier (such as UPS) or other rules set by the site owner.
Tax calculation
The calculation of the tax must be based on the rules set by the site owner. These rules should include:
Sales place delivery address cargo type
At the time of checkout, the tax information will be displayed on the Order List.
Order list
The screen displays the address, project description, project price, shipping cost, tax and cost total count (if any).
address book
The registered users are saved in the address book. Although the site owner can set some restrictions, the address book can still store unlimited shipping address information.
Order cancellation
The user must be able to cancel the order at any time before submitting the order. This action will cause all items in the shopping basket to be emptied. But the reserved project will not be affected.
system requirement
Site must meet the needs of the following system:
Globalization
Applications should be able to customize to accommodate different cultural environments. That is: interface color, navigation layout, page structure, and language should be modified.
performance
Users should experience consistent performance at each access to this site. The performance of the site should be as good as other enterprise e-commerce applications being used.
Scalability
Site should expand the extension overhead. If a faster disk and the CPU are added, the response should be faster if it adds a larger RAM. If more servers have been added to the Web field, the response should also be improved. The server in the web domain should be able to properly handle the request.
Usability
The site should be in turn on and run, and there should be no fault. It should be able to capture errors, this feature should not prevent users from accessing the site authorized area. Site should be accessible to users at any time.
Manageability
There should be a management interface on the site, used to modify and manage company reports, directories, orders, shipping costs, tax rates, and user accounts.
safety
Site should protect confidential information, such as credit card numbers. Site should display confidential policies and any related copyright information. User IDs and passwords should prevent unauthorized personnel from accessing sensitive information.
Allow access to a variety of devices
Site must be able to run normally on a variety of client devices. Site should work on a low version of browser and high versions of browsers.
Record business needs in document form
After determining the basic demand, you should capture, transfer, and ratify these needs in the "Content / Range" document, which identifies the application business value, demand and restrictions and the person needed to plan, design, and complete the project. After that, you can start designing.
The next section describes the application design models and design procedures used in the creation process of consolidateDretail.com.
MSF application model
The consolidatedretail.com application is designed to follow the three-layer model defined in the Microsoft Solution Frame (MSF). This model divides the service provided by the application into three abstraction layers so that the application obtained has certain flexibility and scalability. Any layer can be changed and will not have a negative impact on other two layers so that applications will be able to improve applications to meet user needs and technological changes.
These three layers are:
Represents Service: The application's representation service is used to render the data displayed to the user and accept the user's input. Business Services: Sometimes called "Application Services", the application's business service enforces business rules. In a typical e-commerce application, this may include: ensuring that the user must authenticate before the order, retrieve the corresponding content according to the user's configuration file, the check is executed in the correct order in the correct order of. Data Service: Data services in your application include logic required to store, retrieve, and modify data, and data integrity rules for applications must be enforced. In e-commerce applications, this may include processing of directory, user, and order data. Note: For more information on MSF, please visit http://www.microsoft.com/msf (English).
Why use the MSF application model?
In addition to the advantages described above, the MSF three-layer application model has significant advantages in reducing development, deployment, and managing applications. The main advantage of using the MSF three-layer mode in the application architecture is reflected in:
Separation: Since the service is separated from each other, each layer of the application can be developed independently of other two layers. In this way, three different development teams work on the same application project. Distribution: Since the logical layer is independent, they can be deployed on multiple servers in a distributed manner. Reuse: Different client devices can use the services provided by each layer. For example, a business service of an e-commerce site can be used by a set of services to provide an HTML interface to the website; or a mobile phone for supporting WAP can also be represented by another group. Some business services can also be configured as a web service in a variety of industries (LOB) applications or trade partners.
In addition to following the three-layer design model, consolidatedretail.com's designers and developers have followed the MSF design process. This process is described below.
MSF application design process
Regardless of the type of effective application, the first step is to ensure reasonable design. There are many ways for software design, and each has its own advantages and disadvantages. When deciding the design process to be used, ensure that the process provides a clear stage that is divided according to the actual software implementation step; ensuring that the process can be adjusted according to the demand variations of each stage.
The MSF application design model not only defines a service-based architecture not only for distributed applications, but also defines a loop design process. In each round of loops, the software is in the "concept" phase, "logical" phase, " The order of the physical "stage is designed.
Conceptual Phase: In the conceptual phase, it will be seen from the challenge from the perspective of users and / or business. The main goal of the concept stage is to define the concept of challenges and solutions. The "Function Manual" document is the final result of the concept phase. Logical phase: In the logical phase, design goals and challenges will be viewed from the perspective of the project development team. The main goal of the logical phase is to map the concept design to a logical component. The group uses the user program (or user case) identified in the concept phase to build the logical model of each component in an object-oriented software solution. Object-oriented solutions load business functions into the software representation of the actual object, which is defined by the "class" in the object-oriented design. Physical phase: In the physical stage, the goals and challenges will be seen from the perspective of developers. The primary objective of the physical phase is to apply logic design to actual needs and constraints. Since the physical stage is a design problem from the perspective of developers, and the task is to define a physical implementation, the results of the physical design phase are technical specifications documents.
to sum up
This chapter contains general overview of e-commerce needs and summarizes specific needs of consolidateDretail.com applications. This chapter also provides a summary of the MSF application model and design process. The next chapter will discuss "concept", "logical" and "physical" design phases and final results of various phases. Chapter 2: Conceptual Design Stage
Summary: This chapter will explain the conceptual phase of the Microsoft Solutions Frame (MSF) design process. At this stage, the design team will determine the main solution concepts and targets from the perspective of potential users and services. At the end of this phase, the design team will write function description documents, which is the basis for all application design work.
Introduction
In the conceptual design phase, the design team will determine a complete project front view according to the previously determined business and user needs and record it. Based on these needs, the team will prepare "Applications" (derived from "Samples"), then create a function description document to explain the working principle of the application from the user and supplier of e-commerce applications. This function description document is the document submitted at the end of the concept phase.
Application plan and use case
The application is created by detailed analysis of "use case". The use case is only an explanatory text that describes the interaction between the external "operator" (operator can be a user or existing system) and the designed application (or component). In addition to the user, the operator can also be a service, component, and the like.
When creating the usage case, two aspects should be determined: First, the operator's operation, the other is the expected result. The use case is usually discussed in a whiteboard (also known as the collective discussion), which will briefly summarize the use case, and provide a descriptive name. The details of the use case will then be developed and some linear sorting is performed.
The rest of this chapter will introduce a variety of applications developed as consolidateDretail.com applications, and provide an example of operational examples of the contents of various options.
Application plan reference architecture
In the conceptual design phase, the designers of the reference architecture application will determine the following application:
Applications 1: Customers log in to the site
Customers navigate to the login page and enter its username and password. The system will verify the username and password. If the user enters a valid username and password, a page is displayed, and the link it contains users to update their user profile information and view their order history (as described in "Application 6").
If the customer stays empty username field, it is prompted that the user must fill in the username field.
If the customer leaves the password field empty, it is prompted that the user must fill in the password field.
If the username entered by the customer is invalid, the login page will be redisplayed and an error message indicates that the username is invalid.
If the username entered by the customer is valid and the password is invalid, the login page will be redisplayed, and an error message will indicate that the password is invalid.
If the customer means that the password has been forgotten, an option will be provided to enable it to enter the user name and then receive a password in the email message.
Figure 2-1 is an example of an example to illustrate the login function.
Figure 2-1: Login function
Applications 2: Customer Search Products
Customers can search for products by entering the product's title, text, or instructions, the system will display all matching products, including the user's index key input in the search box.
Customers can navigate to the search box, search the product by entering a portion of the product name. The system will display the most matched products with the search criteria.
Figure 2-2 is a use case pattern to display a search executed by the customer.
Figure 2-2: Customer Executive Search
If the product name entered by the customer does not match the product, or the product name entered by the customer is incorrect, the search results will display a message, indicating that there is no product matching with the search criteria.
If the keyword entered by the customer does not match the product instructions, the system will display a message indicating that there is no product to match the search criteria. Applications 3: Customers browse the products you want to buy
In this case, the customer selects the directory you want to browse. Displays the various categories and products in the root of the selected directory. The user can then select the product you want to view the details, or select a category to see the product set and subcategories in the selected category.
Figure 2-3 is a use case pattern for explaining a browsing scheme.
When the customer displays the shopping basket, the shopping basket may be empty, or it may be included in this session or not purchased or deleted in the last visit.
If the shopping basket is empty, the app will display a message to prompt the customer to the shopping basket is empty.
If the shopping basket contains one or more products, the app will display a list, including the product name, price, quantity and total of each product, and total products in the shopping basket.
If the customer chooses to delete some product, the application will delete the product from the shopping basket.
If the customer selects all products in the shopping basket, the app will delete all the products in the shopping basket.
If the customer changes the number of a product, the application will update the shopping basket to reflect the number of this product.
If the customer updates the shopping basket, the app will recalculate the number and total number of products for each product in the shopping basket, and recall the total of all products in the shopping basket.
Figure 2-4 is a use case pattern for explaining shopping basket management scheme:
Figure 2-4: Customer Management Shopping Basket
Applications 5: Customer Checkout
Customers say they are willing to check out and willing to buy products in shopping baskets.
If the customer is currently not logged in, the customer will be required to enter a valid username and password according to "Application Scheme 1". Then, the application will display the list of delivery addresses associated with the current user. Customers can specify one of the addresses or edit the address or add new addresses. Customers can also specify to ship different products in the shopping basket to different addresses.
If the customer specifies a single shipping address, the application will prompt the customer to select a delivery method from the available delivery method list.
If the customer specifies the use of multiple addresses, the application will prompt the customer to select the address and delivery mode for each product in the shopping basket.
If the customer selects an add or edit address, the application redirects the customer to one of the delivery information pages described in Application Scheme 6.
When the customer provides the delivery address and delivery method information, the application will prompt the customer to confirm the payment address and provide credit card type, account holder name, account number, expiration month, and expiration year.
If the customer does not specify a payment address, the application will display a page that allows the customer to specify the payment address according to the Application Scenario 6.
Figure 2-5 is a use case pattern to illustrate the checkout function.
Figure 2-5: Customer checkout
Next, the app will display an order, delivery, and payment information page. Customers can confirm the order or modify the information.
If the customer selects a modification order, it will return to the shopping basket page described in Application Scheme 4.
If the customer confirms the order, the thank you message and the only order number will be displayed.
Finally, the application will send an order to the user to confirm email to confirm the order.
Applications 6: Customers provide accounts and delivery information
If the customer is browsing this site in an anonymous manner, you must enter the username and password according to "Application Scheme 1".
The "My Account" page contains links to multiple pages to facilitate customer changes account information, change delivery address information, change payment address information, change your password, and view order history.
If the customer selects changes its account information, the application will display a page, let the customer edit the user name, email address, phone number, and fax number of its account.
If the customer selects editing address information, the application will display a page, list all the addresses associated with the account. Customers can add new addresses or edit or delete existing addresses. If the customer chooses to add a new address, the application will display a page, prompting the user to provide the name, recipient name, block address information (two lines), city, province, postal coding, and phone number.
If the customer will "listed as", "Recipient Name", "Address Row 1", "City", "province", "Postal Code" fields, the application will prompt the customer to fill in the missing data. If the customer selects the editing address, the application will display the address field, which can be modified. If the customer selects the delete address, the application will delete the address of the account.
If the customer chooses to change its payment address, the application will display a page, prompting the user to provide the name, recipient name, block address information (two lines) of this specific address item, city, province, postal code, and phone number.
If the "Recipient Name", "Address Row 1", "City", "province", "postal code", or "listed as" is left empty, the application will prompt the customer to fill in the missing data.
If the customer selects to view its order history, the application will display a page, which contains details of the customer's previous order.
If the customer selects changes its password, the application will display a page, prompt the customer to enter the old password and the new password, and confirm the new password. When the user submits these data, the application will check if the old password matches the password in the account, and the new password matches the password in the confirmation information. If the password matches all, the system will change the password associated with the customer. If you do not match, the application will display an error message, prompting the customer to re-change the password.
Figure 2-6 is a use case pattern for explaining this scheme:
Figure 2-6: Customers provide accounts and delivery information
to sum up
This chapter describes the process of identifying an application plan for e-commerce applications and developing a conceptual design. Figure 2-7 is a use case pattern to display the defined accumulated application:
Figure 2-7: Accumulation application design
Applications and their base cases should indicate the expected behavior of the application in a variety of business processes. Applications should also illustrate the functionality of the application, and provide the basis for the logical design of components in the application. In addition, because the design process has iteration, if the previously unrecognized interaction is found during the development process, a new use case can be included in the design.
Chapter 3: Logical Design Stage
Microsoft Corporation May 2001
Summary: This chapter describes the logical phase of the Microsoft Solution Frame (MSF) design process. At this stage, the design team should have a high-level decision based on the conceptual design and integration of components. The design team will use the application solution (developed in concept phase) to build the logical model of the application.
At this stage, the design team should have developed a logic design, which is the basis of the actual design phase of the project.
Introduction
The target of the logical phase is to convert the functions defined in the concept phase to an abstract model to determine the collaborative logic components that will be used to support the solution.
The resulting logic design does not involve specific technologies. Instead, the goal of this phase is to analyze and understand functionality before any technical work. For example, when a group is designed an e-commerce solution in a logical phase, it may be considered that the component named Users is a necessary service to track the user group accessing the application. But in the actual design phase, the design team may choose to use Microsoft® Commerce Server 2000. In this case, the MSCSProfileService component in Commerce Server provides the actual implementation of the USERS component.
If the final application design includes custom components (ie, the components that are not available in the ready-to-range solution or product), the corresponding components determined by the logical phase can be directly converted to the actual phase. For example, a UserS object is defined at a logical phase, and the design team decides to make it a custom object, then the UserS object will be repeated in the actual phase. The rest of this chapter will outline the logical design flow used when designing consolidateDretail.com, and then detail the logical components required to meet the requirements required.
Create logic design
The first step in creating a logical application design is to determine the business object (component) that will provide the desired function. In addition to determining the desired object, the design team must also determine the behavior, attributes, and relationships of each object. The design team will use the application in the concept phase to determine these objects and their relationships, behaviors, and properties.
For example, the following is the application 3:
Users choose the directory you want to browse. Displays the various categories and products in the root of the selected directory. The user can then select the product you want to view its details, or select a category to view each product and each subcategory in the selected category.
In this way, the design team will determine all aspects of the support solution by analyzing this scheme, and perform the following tasks:
Determine the business object in this scenario. Determine the behavior of these objects. Determine the properties or features of these objects. Determine the logical relationship between these objects.
These tasks will be described in more detail in the back section of this chapter.
When these tasks of each application are completed and the archive, the design team can end the logical design phase. For a complete design example of consolidateDretail.com, please refer to the "Dixed Logic Design" section.
Unified modeling language
Unified Modeling Language (UML) is a tool for describing system operation. UML is a very useful tool in an intuitive description of the system to make more comprehensive analysis. By using UML, it is convenient to explain the components, interaction, relationships, and more.
UML is usually used to simplify design in the logical phase.
To illustrate the tasks involved in the creation logic design, the following sections will provide a simple UML diagram representation example.
Obser
When analyzing the application, the primary task is to determine the objects thereof. Objects are usually a business entity or process that appears in an application. For example, in the following paragraphs, the object will be identified in a bold:
User selects the Catalog (directory) you want to browse. Displays Categories and Products in the root location of the selected Catalog (directory). Then, USER can select the product to view the details of its details, or select a Category (category) to see the Products in the selected Category (each product) and subcategories.
The above example uses the following objects:
User Catalog Categories Product Products
Figure 3-1 is a UML diagram depicting the object determined in this example:
Figure 3-1: Object
These five objects become the basic objects of this program; however, in some cases, to make the program work, other objects need to be added, even if these objects are not explicitly listed in the scenario. These additional objects can be determined by checking the acts associated with its associated behavior. To determine these objects, you must first determine its behavior.
Determine behavior
When the obvious object group is determined, the next step is to determine its respective behavior, which is also known as "method" or "service".
To determine the object behavior, you must first determine the operations executed in the scenario. For example, in the following paragraphs, the action will be identified in a bold: the user selects the directory you want to browse. Displays the various categories and products in the root of the selected directory. The user can then select the product you want to view its details, or select a category to view each product and subcategory in the selected category.
The first action is the user selection directory. Figure 3-2 is a UML diagram that describes the user object as a SELECT CATALOG behavior:
Figure 3-2 Behavior of the User object
As mentioned earlier, there must be no obvious object from the scheme with its associated behavior. We can thus think that since the user selects the directory, there is inevitable mechanism that allows you to select a directory from the directory list. This way, you can logically assume that the Catalogs object exists, which manages all Catalog objects. Then, this new object should be added to the list of defined objects.
When defining a "Catalogs" object, you can define the first action as a SELECT CATALOG (selecting a directory), which belongs to the "Catalogs" object.
You can continue to analyze each sentence in the scheme until all conscription objects and their associated behavior are determined.
Determine attribute
When the behavior is determined, the next step is to determine the properties of the defined object (also known as "characteristic"). Attributes are elements that need to be tracked. They are placeholders for retention (or "stay") data.
The property derived method is that the behavior in the analysis scheme and extracts elements that need to remain (or track). For example, in the previous section, the application specifies that the user will be able to view the product. When viewed, the elements displayed to the user will become the properties of the product. For example, if a business requires a product specifications and prices, these elements will become the properties of the object.
Figure 3-3 is a UML diagram showing a User object with an NAME attribute:
Figure 3-3: Properties of the User object
Determine relationship
After determining the object and its properties, the next step is to determine "relationship". The relationship is the logical association between objects.
To determine the relationship, you must analyze the interaction between objects. For example, the "categories" object has a relationship with the "category" object, because the "Categories" object manages the collection of "category" objects and contains the "category" object.
Be sure to pay attention to another relationship called Inheritance, which deals with an object being defined by another object. For example, if the designed solution is to sell food and books, it is also necessary to distinguish between the two, then define such a relationship: "Book" and "Food" objects belong to a "product" Object. In this way, they can inherit "Product" objects.
In a business reference architecture solution, no inheritance relationship is not defined in a logical phase. But in some e-commerce solutions, these relationships may be very important.
Completed logic design
At the reference architecture, the logical design phase of consolidatedretail.com, the design team determines the following objects that form an abstract collection of components required for support solutions. (These objects are arranged in alphabetical order instead of being arranged in order.)
AUTHENTICATION
Authentication object handles users' registration and authentication.
Catalog
The Catalog object stores information about a specific directory and manages a collection of products in this directory.
Catalog Manager
The Collection of the Catalog Manager object management directory.
Category
The Category object stays information about specific categories. Category Manager
The Configuration object holds the application configuration information and handles the task associated with the configuration.
Data functions
The Data Functions object performs data-specific functions such as open access to the database.
E-mail
E-mail objects are used to send email messages to users, such as order confirmation messages.
Error Handler
The "ERROR HANDLER" object will be called when an error occurs. It handles user-friendly error conversions and log errors.
ORDER
The ORDER object stays information about a particular order.
PRODUCT
The Product object stays information about a particular product.
Search
Search objects are used to search for directorys and return product search results.
User
User objects are used to reserve information about specific users. In addition, it manages all user orders.
User manager
User Manager object management user collection.
Figure 3-4 demonstrates the relationship between the main object and the use case described in the second chapter
Figure 3-4: Object Relationship
to sum up
This chapter illustrates four-step procedures that determine objects (ie, business components) and their properties, behavioral and interrelationships of e-commerce applications. The end result of this process is to create logic designs that will be used as technical design and standardization.
It should be noted that the generated logic design does not involve specific technologies. These technologies will be determined in the actual design phase, which is the topic discussed in the next chapter.
Chapter 4: Physical Design Stage
Summary: This chapter discusses the physical design phase of the Microsoft Solutions Framework (MSF) related to the business reference architecture application consolidatedretail.com. In the logical design phase, the project development team applies the actual physical design constraint to the logic design created in the logical design phase. The goal of this activity is to identify a set of components and then determine which components already exist and which components must be created. At the end of this stage, the results recorded the results in a clearly defined technical specifications, which will become a blueprint for building applications.
Introduction
The physical design phase is to apply the actual physical design constraint to the transition phase of the logical design. After identifying logical components, the next task is to analyze which components already exist, which components can be reused or modified, and which components must be created.
As mentioned above, the physical design process is considered from the perspective of developers. The result of this phase is a design or blueprint for a complete implementation, while writing a technical specification document, and the development team will use this document to build an application.
Physical stages can be divided into three smaller task stages, as shown below:
Study: At this stage, the development team will determine the physical infrastructure constraint and solution requirements, and process the conflict between the two. In addition, the development team will also determine expected implementation techniques. Analysis / Rationalization: The Development Team will select the implementation technology to use and determine how to meet the defined business needs. Implementation: The development team will select a programming model, specify the component interface and select the development language.
The rest of this chapter will discuss these three tasks in detail, and examples are given in the appropriate place.
research work
The first task involved in the physical stage is to study and collect information about the following topics:
Physical solution demand physical constraints available available
Customer demand is contained in a demand document, further defined in a logical phase; however, the development team may need to study and determine actual constraints and existing technologies.
Determine physical solution requirements
Physical solution demand is dedicated to guiding the need for infrastructure design. In Chapter 1, we define the following system requirements:
Globalized performance / reliability scalability availability can manageable security accessibility
The following sections will be detailed for each topic.
Globalization (international)
Globalization (or international) is a process that needs to pass the core content of the development program. In this process, it is no longer based on a single language or regional design and code design, and the prepared source code is more convenient to create a program. Different language versions. Globalization allows you to transplant your application to different cultural environments. In early programming, this only means supporting multiple languages (for example, supporting Unicode), but now you have to choose what kind of interface, such as determining color, navigation layout, and page structure.
When conducting globalization, there is a need to carefully review some of the well-known geographic and cultural issues involved in the application or web page. The steps to globalize include: studying language and cultural issues, requiring language experts to verify some well-known issues, if possible, companies in specific sales areas representatives to verify some well-known issues.
To support these cultural differences, you can define the following physical needs:
The ability to use nvarchar in the database without using varchar to provide custom interface
performance
Performance is generally measured with "system total throughput" and "response time".
System total throughput
The total throughput of the system uses the "number of transaction per second" to measure, reflecting the ability of the system to perform a particular collection (called transaction) of the service request. For e-commerce applications, transactions may be executed in turn until the end of events:
The user came to the site. Users browse the directory and find the desired product. Users add the product to the shopping cart. User registration. User checkout.
TPS is the maximum number of systems that can handle these transactions per second. As described in business needs, when using the following development configuration, the business reference architecture application is designed to handle 4800 such transactions per hour:
[(4) PIII 500MHz, 1GB RAM, server runs IIS and Commerce Server] [(1) PIII 500MHz, 1GB RAM, server runs SQL Server]
Response time
The response time is the amount of time between the user request and the system response, which is the user's most concerned performance indicator. Response time is usually represented by a percentage and response seconds. For example, "90% of all requests should be within 5 seconds" means that 90% of its requests must get the server within 5 seconds before the user believes that the application is running.
The business reference architecture application requires 95% of all requests within 5 seconds.
Scalability
Scalability refers to the ability to increase site capacity when adding resources. From a user point of view, this means that the site can provide an acceptable response time when a large number of users access the site at the same time.
We have already mentioned in the previous chapters, and there are two ways to increase scalability: "Upward extension" and "outward extension".
Expand upward
"Up" is to enhance the processing power of the server by using a better and / or faster CPU, a larger RAM, faster disk, and the like. This method is very effective, especially on the data layer, some large databases on this layer require relatively strong processing capabilities. However, due to the increase in hardware costs with the processing power, the closer the server, the closer to the top, and this method is more inclusive.
Outward extension
"Outward Extension" refers to a plurality of servers that use a cluster (also known as "web field") to share processing workload. The Web field costs more costly, and provides more flexible, scalable solutions. When the load on the site increases, you can easily add the server into the web domain.
To enable extension extensions, you must avoid using server-specific session memory (such as SESSION objects in ASP) to reserve information. The reason is as follows:
The user session will be included in a particular server (session dependen), which will destroy the request to the server to the server's network load balancing policy. In addition, the reliability of the server domain will also be damaged because the user session cannot be transferred to other servers when the original server fails (and lost session status information in its memory). Memory resources are consumed by the front-end server in the details of the storage user session state, thereby reducing memory available to process requests and cache content. If a popular site can attract a large number of users in a short period of time, the memory demand in status maintenance may be very large. For partial resolution of memory requirements, Commerce Server uses a high speed cache. Cache will be made to the configuration file architecture, discounts, and business activities. Usability
Availability refers to the ability to connect and use resources in a timely manner at any time.
One way to understand high availability is to compare it with "fault". These terms describe two different references for measurement availability. "Fault" is defined as 100% availability within 100% time (where the environment is in place). The design purpose of the fault tolerant system is to "ensure" availability of resources.
High availability resources are almost always operating in operation for clients and are accessible. Therefore, it does not have a single point of failure. Server clusters and network load balancing is two ways to keep system resources available.
Before deploying the site, the following methods should be used to prevent the server from malfunction:
Geographic location data center. Uninterrupted dual power supply. data backup. The server of the cluster is equivalent to the role of a single server. Data replication. Network load balancing, that is, multiple identical server assumers to ensure availability, scalability, and exact user experience.
Manageability
Manageability is the ability to perform site management tasks. For e-commerce applications, it includes the product catalog, special promotions, shipping costs, tax rates, user accounts, and the use of sites, trends provide reporting mechanisms, and more.
If you have a comprehensive management infrastructure, the business manager can configure the site to adopt a corresponding countermeasure based on the market trend and competitors.
safety
If the security of the most basic form is ensured, it ensures that data or devices are protected to prevent unauthorized people from accessing or use them. In an e-commerce application environment, you should protect the following information:
Sensitive user information credit card number unapproved product data
The design of application security mainly includes three aspects: "Authentication", "Authorization" and "Encryption".
Authentication
There are two main methods to be used in user authentication in distributed solutions (eg, e-commerce sites). It is generally described with the "counterfeit / delegate" model and "trustee server" model.
Both models assume that the N layer application is used. In this example, the user is connected to the intermediate layer (specifically the web domain), the web domain sequentially access the rear end layer (specifically the SQL Server database) or services. The difference between these two methods is to use the security account to access backend data.
The "counterfeit / delegate" model is in the "counterfeit / delegate" model, the user provides secure credentials to the intermediate layer application, and then the intermediate layer application uses the user's secure credentials to access the backend database. The intermediate layer application is essentially in the "counterfeit" user, represents the user to retrieve data. Figure 4-1 illustrates the "counterfeit / delegate" model:
Figure 4-1: "Counterfeit / Entrusted" model
The "Trustee" model is verified by the user in the "Trustee" model, and the intermediate layer application is authenticated, usually a combination of check user names and passwords. The intermediate layer application believes that the user's identity is correct, it uses the "own security account" to access the backend database. In addition to the intermediate layer applications, users have no right to access backend data. In this method, there are actually two authentication operations. First, the web application authenticates the user, and the database server authenticates the web application. Figure 4-2 illustrates the "Trustee" model: Figure 4-2: "Trustee server" model
Authorize
Authorization refers to access to a particular user or service to access resources. After the user passes authentication, the user should request a specific function from the application. Permissions or "Authorization" can be assigned to users to perform certain tasks and cannot perform other tasks. In a secure environment, it is very important to limit the access level to authorized users.
Security experts often talk about "minimum authority principle". This is an empirical rule that the user should have sufficient permissions to perform the tasks required to perform, "but should not have more permissions."
encryption
Encryption is another way to ensure safety, encoding data to prevent unauthorized access.
Depending on the position of the encryption, encryption can be performed on many levels. Typically, encryption can be performed on the server, transfer or on the client.
The encryption on the server encryption server refers to the process of encrypting data stored and transmitted in the server infrastructure. After encrypting the data in the server infrastructure, it is ensured that the accessed sensitive data is unused due to the encrypted events. The user's credit card data is an example of dealing with data encryption. When the service layer stores the user's credit card information in the data layer, it is very important to encrypt the data. If a hacker invades the system and obtains access to the table for saving the encrypted credit card information, then the information does not have any use of hackers. If the credit card information is not encrypted, the application is negligible for the application on data security. Transfer encryption transfer encryption is specifically used to process data transmitted between servers and clients. For example, when the user submits an HTML form to the server, the user enters into the form Use Hypertext Transfer Protocol, HTTP to transmit, and then receive by the server. During transmission, the data may be stealing and tampered, which can be solved by encrypting data when transmitting. The data transmitted on the Internet can be encrypted in the following way: Install the security certificate on the web server, configure the Secure Socket Layer, SSL) port, use HTTP encryption form HTTPS as the transport protocol. The server certificate can be purchased from one of the certifications listed in http://www.microsoft.com/security/ (English). You can use Microsoft Certificate Services to publish an independent certificate, which will allow you to test SSL security on a single server. Please use the Web Server Certificate Wizard installation certificate that can be accessed through the site properties in the Internet Services Manager. When building SSL sites, it should be appreciated that the HTTPS: // prefix must be included in the hypolip or redirection of the user who has never encrypted session to the encrypted session. This specifies that the user's browser will communicate with the server using HTTPS. Client encryption client encryption is specifically used to process data residing on the client. For example, if a file is public, it is encrypted, then only the file with the correct decryption key can be used. For general e-commerce applications, client encryption is not as important as transmission and server encryption, but in some cases it may require this encryption method. Accessibility
Accessibility refers to the ability to access the site from a variety of devices or browsers. The Internet is developing forward with incredible speed, and the device accessing the Internet has also become a five-flowers. Therefore, making e-commerce applications can be accessed by a variety of devices and is a very difficult task on these devices.
The key to supporting multiple clients is to separate the representation from the content. Many methods can do this, including the logic written in the ASP page to generate different responses based on the client, or redirect different devices to alternate sites. However, one of the best ways to indicate logic from content is to use XML. If the data can be represented by XML, you can use the XSL style sheet as a specific type of client to render data. By applying different style sheets, you can represent the same content for different clients. Figure 4-3 illustrates this concept.
Figure 4-3: Separating the representation from the content
Determine available prior art
Available techniques refer to the techniques, products or services that can be used in the solution. Using existing technologies to achieve functions in economical, this is not necessarily to build these features. For example, when building a web application, you need an operating system as the foundation of the solution, but there is no need to build an operating system yourself.
Since there is no need to build an operating system every time you build an application, you will also do not need to build all parts of the web solution itself. Many experts believe that the future applications will be built using existing services, which can constitute an application only need to be re-combined. Therefore, it is important to collect information about which technologies can be used in the solution. In the next task involved in the physical design phase, the design team will analyze this information and determine which techniques (if any) can meet the needs of specific applications being discussed.
operating system
Any modern app is built on the operating system. The operating system not only provides an interface with hardware communications, but also provides a public framework for building an application. It is important to select a mobile system that supports object-oriented methods and public frames (applications can run and communicate on this frame).
Windows 2000 Server platform
Microsoft® Windows 2000 Server provides a rich set of content for application developers. Many major e-commerce sites on the Internet are running on Windows 2000, including Buy.com, barnesandnoble.com, Dell.com, and Intel.com.
Internet service
Another core part of a web-based application is an Internet service. WEB-based applications require an Internet service platform that is responsible for basic web services, such as response to client's HTTP requests, HTTPS requests, and other requests. A good Internet service platform should also provide site management capabilities and dynamic content programming models.
Microsoft Internet Information Services
Microsoft® Internet Information Services (IIS) is a web server built in Windows 2000. IIS provides a rich Internet service package, including ASP, DAV, Web Folders, FrontPage Extensions, FTP, multi-site hosts, and other support.
Express service
As mentioned in the "Accessibility" section, it is very important to separate the content and representation, and only this can access the content from multiple clients. This separation is also very important to simplify globalization.
As mentioned earlier, a method of separating the logic from the content is to use XML and XSL simultaneously. In addition to using XML and XSL, you can build complex page logic in the ASP page itself in accordance with an entity such as browscap.ini files, user_agent strings, and the like.
Microsoft XSLISAPI Filter
An alternate technology that can be implemented is a Microsoft® XSLisapi filter. ISAPI represents an Internet service application programming interface, which is the foundation of IIS. The filter is placed above ISAPI and provides the corresponding functionality when the web server receives a client or service request. For example, the ASP engine (ASP.DLL) is an extension running on ISAPI.
The XSLISAPI filter is used to intercept all documents with XML or PASP file name extensions. PASP file name extension is dedicated to applications used with the XSLisapi filter. Documents with this extended file are considered to be a standard ASP file (with certain restrictions) that can generate effective XML (rather than HTML) output. The output content of the PASP script is then converted based on the same rule of the XML file that applies the ISAPI filter to the XML file of the request.
After retrieving XML, the next step in the process is to convert data to certain types of valid tags (the client can display these tags). For browsers, this may be HTML; for mobile phones that support WAP, this may be WML. You can get xslisapi documentation from the following web location: http://msdn.microsoft.com/code/default.asp? Url = / code / sample.asp? Url = / msdn-files / 026/002/187 / msdncompositeDoc.xml (English). Figure 4-4 illustrating the concept of xslisapi filter:
Figure 4-4: XSLISAPI filter function
data service
For the construction of an e-commerce solution, it is also important to have a function of storage, retrieval, and managing data. These services are encapsulated into a database server. It is very important for corporate database servers, high performance, good hairiness, and scalability.
SQL Server 2000
Microsoft® SQL Server 2000 is a SQL database server that provides enterprise-level performance, scalability, and good concurrency. It also provides enrichment of XML, strict security, and powerful analysis tools.
business platform
If you start building an enterprise e-commerce solution from scratch, you will spend a lot of time and human resources resources. If you make full use of e-commerce functions in existing products, you will significantly shorten the development time of the entire program and save a lot of development costs.
Microsoft® Commerce Server 2000 is developed with existing features.
Commerce Server 2000
Commerce Server 2000 is a comprehensive product that encapsulates many features of the e-commerce solution into a package. Commerce Server 2000 provides advanced management capabilities, strong scalability and good performance. For more information, please visit the Microsoft Commerce Server website, which is: http://www.microsoft.com/commerceserver (English).
Analysis / rationalization
After the completion of the physical design phase, the work is followed by analysis and rationalization. Analysis and rationalization refers to the analysis of information collected during the study and makes decisions based on this information.
Use existing technology
When the design team considers the use of the prior art, it must be weighing the factors that may affect the solution. The possible factors are listed below, but it is not necessarily comprehensive:
Ability: Can this technology achieve business functions? Household costs: Whether the technology is cost effective? It is necessary to consider the cost of product, development, upgrade, license, deployment, and operation. Experience: What experiences and professional skills do this technology require developers? Do you have training costs? Is there an unknown fees? Mature and innovation: Is this product mature? Is it received by the market? Does the product have innovative, is it the latest technology? Is it still popular? Deploy: Is this technology difficult to implement? Supportability: Can this technology get support? Architecture: Whether the technology implements an acceptable architecture? Does the architecture meet the needs of enterprises? Scalability: Can this technology expand to meet the development requirements? Interoperability: Can this technology work together with existing systems in the organization? Performance: Can this technology provide the desired performance? Reliability: Can this technology meet the reliability requirements of the application? Availability: Whether the technology can handle application requirements without causing the solution to fail? Manageable: Is this technology easy to manage? Security: Whether the technology meets security needs? Standard compatibility: Whether the technology is compatible with recognized standards? Other factors, such as project schedules and budget constraints, and other internal projects that may involve it, should be considered.
Windows 2000 Server
Windows 2000 Server is an operating system for a business reference architecture because it provides a set of features specializing in corporate application design. These include the following functions:
Server type selection: The Windows 2000 Server platform can run on a variety of servers. In an environment of a business reference architecture solution, it is very important to expand the extension to extension. Depending on the application load requirements, organizations can choose to deploy solutions on two or more servers running Windows 2000 Server or Windows 2000 Advanced Server. To get the best performance and allow the load to be distributed on multiple servers, use the Microsoft 2000 DataCenter Server network and network load balancing (NLB). Scalability: By using Microsoft Windows 2000 Cluster Services and Network Load Balancing, Windows 2000 Advanced Server and DataCenter Server can expand.
By running the two servers, sharing a common storage mechanism, the cluster service ensures continuous services. If one of these servers fails, the other can take over. Due to the construction of redundancy in the system infrastructure, the application can reduce the downtime to zero.
Figure 4-5 illustrates the concept of a cluster.
Figure 4-5: Server in the form of a cluster
Windows 2000 Advanced Server and Datacenter Server can also extend outward through NLB. In this method, multiple servers are displayed as a single unit with a single IP address, and the application load is evenly distributed on these servers. When a server in the NLB settings fails, NLB automatically detects a failed system, transfer its load to other systems, and then restart your computer.
Figure 4-6 illustrates the concept of NLB.
Figure 4-6: Network load balancing
Availability: Windows 2000 Server provides a solution with high availability by using cluster services and NLB services in Windows 2000 ADVANCED Server or Windows 2000 DataCenter Server. Use NLB services and cluster services to eliminate single point failures. Reliability: The Windows 2000 Server platform implements the reliability of "5 9" to ensure that the normal running time is as high as 99.999%, which is equivalent to less than 5 minutes per year. In an enterprise e-commerce environment, the downtime means that the direct income of millions of dollars will bring trouble to customers, incur their complaints. Therefore, reliable operating systems are unsearched parts of the enterprise solution. Performance: Windows 2000 Advanced Server and DataCenter Server implement Symmetric Multiprocessing, SMP support, which enables the server to be valid for the processor of Advanced Server up to 8, and the processor for Datacenter Server is up to 32. In addition, Advanced Server also includes enhanced memory capabilities, allowing the server to have up to 8GB of memory; for Datacenter Server, the server allows the server to reach 64GB. Manageable: Windows 2000 Server provides a wide range of tools that allow you to manage the site and connect to Microsoft Management Console (MMC) to manage server features in a centralized location. Some management features in Windows 2000 include event records, performance monitoring, terminal services, and Windows Management Code (WMI), WMI), WINDOWS Management. Security: Windows 2000 provides a secure environment that strictly controls access to files or services through Active Directory, Security / Authentication Protocol, and communication encryption. Component Services: Windows 2000 COM service provides developers and administrators with application capabilities. This built-in function allows development of distributed transaction applications without having to develop a underlying infrastructure that supports a minimum unit of transaction or asynchronous operation. You can find more information about Windows 2000 Server in the following location: http://www.microsoft.com/windows2000 (English). Microsoft Internet Information Services (IIS)
Microsoft IIS is provided with Microsoft Windows 2000, which provides a rich platform for using Internet Submit content. Since IIS is integrated at the operating system level, it allows development and deployment to directly write solutions in the computational infrastructure.
IIS provides an Internet service for a business reference architecture solution because it provides and has a rich feature set along with the operating system. Two critical IIS features are Active Server Pages (ASP) and Internet Services Application Programming Interface (ISAPI).
XSLisapi
The XSLISAPI filter provides a service for the business reference architecture solution. After using the XSLisAPI filter, the content can be completely separated and the representation is fully separated, allowing the custom content to be sent without modifying the ASP code.
If you don't want to use XML and XSL at the same time, you can use another method: Build complex page logic in the ASP page itself. However, this method has two main disadvantages: First, complex display logic in the code may be difficult to manage; second, running this logic requires huge overhead. XSLisapi intercepts all requests for documents with XML or PASP file extensions. PASP file name extension is dedicated to applications used with the XSLisapi filter. Documents with this extended file are considered to be a standard ASP file (with certain restrictions) that can generate effective XML (rather than HTML) output.
The XSLisapi filter is then transmitted to the client using the XSL Style Table to translate the XML output of the PASP or XML page using the XSL style sheet to send the converted output content to the client.
There is also another benefit using the XSLisapi filter that can be allocated according to different skills groups, making the development process easier to manage. For example, graphics designers can create XSL according to their own interface specification, while ASP developers only need to consider how to pass the correct data to the interface.
SQL Server 2000
SQL Server 2000 provides data services for business reference architecture solutions. It provides a complete enterprise database solution that Commerce Server 2000 will depend on its data service. For many e-commerce solutions, you only need to install SQL Server on Windows 2000 DataCenter Server to provide the desired level of scalability. For sites that store data volume, you can create SQL Server databases on multiple servers and use "Distributed Partition View" to implement data access and updates across physical servers.
Commerce Server 2000
The development team is selected for Commerce Server 2000 because it is built for Windows 2000 platform and provides an e-commerce application with a rich set of content development, deployment, and management tools. About 80% of Commerce Server is defined in a logical phase, and the cost required for development is low. These objects are implemented as a COM object that can be used for ASP pages.
Commerce Server 2000 provides the following features:
Integration with other services and software features: Because Commerce Server 2000 is designed specifically for Windows 2000, its architecture can be integrated with the operating system. Commerce Server takes advantage of the Com feature in Windows 2000 Server, providing a solid foundation for enterprise e-commerce applications. Commerce Server can also be well integrated with Microsoft® BizTalkTM Server to reduce certain process management functions and external communications. Pipeline components: "Pipeline Components" is a set of configurable custom COM objects that are sequentially called to perform specific business processes. In the Commerce Server solution, most custom business classes can be implemented as a pipeline component to manage business processes in a simple way. (Pipeline assemblies are just some of the COM components of iPipeLineComponent). This allows Commerce Server to identify the pipe assembly to components suitable for Commerce Server, and can then be called by the pipeline. In the reference architecture application, the pipeline assembly is used to handle processes such as "customer order processing" and ensure that the tasks required to process orders in order. Management Infrastructure: Designing and Building Management Framework for e-commerce sites not only costs a lot of resources, but its workload is generally greater than the development efforts of the e-commerce application itself. The management infrastructure of Commerce Server is to attract the main factors that ultimately use Commerce Server. Commerce Server BizDesk is available with Commerce Server. BizDesk is DHTML-based applications that run on IE 5.5 or higher, allowing administrators to manage auctions, promotions, catalogs, orders, and users, and provide a rich set of analytical tools. Because BizDesk is completely DHTML, it can also be used to remotely manage the e-commerce solutions built on Commerce Server. This approach places the BizDesk application load on the client and does not affect the performance of the e-commerce site. Meet business needs
After determining the prior art that can be used, the development team must determine how these technologies meet the previously mentioned business needs. In order to meet these needs, the development team must make certain key decisions on tools, processes and methods. These decisions should be viewed in an environment that must meet specific business needs.
Globalization
As mentioned earlier, globalization refers to the ability to transplant the application into different cultural environments. In order to meet this demand, the content and representation of the user must be "global". During globalization, content can be divided into two types:
Static content - the content you can find on the interface and the interface itself. Dynamic content - "Dynamic Build" and display it to the user.
The following section describes the issues involved and key decisions made to two content globalization.
Static content
Static content includes text and interface itself on the interface, and must be localized for the specified cultural or language. The xslisapi filter is a localized: Allow the development team to use different interface designs for different languages, and then deploy applications as different websites or different virtual directories. By using this method, users can choose their own language and then redirect to the appropriate site.
Note: The reference architecture application has not been global; however, the application uses the XSLisapi filter, so it has the ability to achieve globalization.
Dynamic content
Dynamic content consists of content generated by the application "dynamic".
If the application will support different languages, it must support different character sets. The Unicode standard is a character set that contains characters in all languages in the world. Using the Unicode standard ensures that all languages can be represented in dynamic data. To support Unicode standards, all database fields that save character data must use data types such as nvarchar, nchar, and so on. At the same time, the business layer must support the use of Unicode. Therefore, the business reference architecture solution always uses the Unicode standard throughout the application.
performance
To get the best performance, the design team must make multiple key decisions. First, to maximize system total throughput (ie, the overall efficiency and performance of the application), the design team should solve the following key issues:
Seale language selection asynchronous processing
Minimize seal
One way to improve system throughput is to minimize the encapsulation. To do this, the best way is to reduce the remote procedure call of the website to the components in other locations. Many e-commerce sites reside in the area of dedicated Web servers, while business components are located in separate application server clusters. Although this architecture can effectively ensure system security, especially when the application server is separated from the firewall or package filter switch and the web domain; but the architecture will have a negative impact on the response time because each of the components Extractions must be sealed through the network connection.
Business Reference Architecture Application The components are deployed on the same server where the web is located, so it avoids cross-network encapsulation and shorten the response time. (Commerce Server provides most business components used by the reference architecture application, which will be installed on the web server.)
language selection
Language selection also affects performance. For example, although components created for Commerce Server pipes can be written in a scripting language, but for enterprise applications, components should be built using lower-level languages (such as Microsoft® Visual Basic® Development Systems or C ) to get optimal performance. Although the components like ADOs are almost the same in the Visual Basic component and the C components, complex business routines are run faster in C . Therefore, select C as a build language for all components in a business reference architecture application.
Asynchronous treatment
In order to minimize the response time, many processes should be designed as asynchronous operation. For example, when the user checks, it is not necessary to wait for the system to send an email to confirm before he receives the interface response.
Scalability
Solving scalability issues may be a very daunting task. The first method of extending applications is to expand up, mainly for a single server to configure a better performance, thereby increasing speed. For the upward expansion, although the desired design factors are relatively small, this method of satisfying the need is too expensive because hardware prices have rising index with performance.
Another way to solve the scalability problem is to add more servers, which are called "outward extensions". Although the extension extension is more cost-effective, it needs to consider more design factors. As previously discussed, the biggest problem extends to extension is to maintain session information.
In order to successfully expand, the business reference application should meet the following requirements:
Do not use the ASP session object to maintain session status because it introduces server session affinity and requires IIS to maintain session status in memory. With the assistance of the Commerce Server object, the user session status between the two page requests is saved in the database and can be retrieved by the new page request. Although this session maintenance method leads to some additional database overhead for each page request, it can meet the scalability requirements of the site. A single high-end database server (or cluster) can provide status saving services for the entire front-end server field. When the user logs in, a session cookie will be sent to the user, and the status data of the related user account is retrieved as the "Find Field". Each session cookie is not stored on the user's hard drive, so they can also be enabled even on the most secure user browser. If each session cookie is disabled in the user browser, the user will not be able to log in to the site. Manageability
If you select Windows 2000 Server and Microsoft Commerce Server, you will have a powerful management infrastructure. As previously described, Commerce Server provides powerful management interfaces in BizDesk, while Windows 2000 also provides powerful management interfaces through Microsoft Management Console and other components.
safety
In order to meet the security requirements defined for the reference architecture application, the design team has made the following issues:
Authentication
In the two available models of "counterfeit / delegate" and "trustee server", the design team selected the authentication scheme of the "trustee server" model as a business reference architecture application.
Because the "counterfeit" model is counterfeited each user, the solution must be an account for each user of the site. In intranet-based small applications, users are very small, and the restrictions are user-based, so the "counterfeit" model can run well; however, in a large solution, the "counterfeit" model will soon be difficult to control . Therefore, the design team chose a simpler "trustee server" model, which provides better performance and is more convenient to manage.
Authorize
In order to follow the minimum permissions described in the "Research" section of the physical phase, the design team is to choose deployment and design:
IIS virtual root directory permissions: After deployment, the site should be set to have read-only permissions to the virtual root directory. NTFS Permissions: After deployment, the Windows account for anonymous access to the folder containing the web application file only has read-only permissions. Accessible for anonymous customers: Business reference architecture solutions should use cookies to identify users who do not authenticate, and they should redirect them to the Login page when the user wants to check out or access any configuration file management page. Verified customers' permissions: Even users pass authenticated users, they should also be appropriately restricted. For example, system administrators can use Commerce Server BizDesk tools to restrict access to specific configuration files by hiding or only read-only permissions to users.
As for the database itself, there is more authorization issues. The unique direct permissions for the database have the accounts assigned to the intermediate layer application (this example is Commerce Server), and the account permission should be restricted to provide the minimum permissions required to provide data services to the site. Therefore, statement authority (such as DROP TABLE) is not assigned to the account.
encryption
As an example application that should be easy to install and check, the business reference architecture application does not implement encryption. However, in e-commerce system products, when transmitting sensitive data such as passwords or credit card details, encryption sessions should be used.
Although encryption in an e-commerce product environment is necessary, it should be avoided using SSL to connect when transmitting insensitive data. This is because a certain overhead is required when establishing an encrypted session, involving transmitting the public key of the server to the browser, and generating and exchanges the session key used by the encrypted session. Browser independent
The reference architecture application uses the XSLISAPI filter to meet the independence needs of the browser. It provides a first-class mechanism that separates content and representation, which is necessary to reasonably handle different browsers.
achieve
The final step in the physical phase is to apply decisions about constraints, demand and technology to logic design, and actually define physical realization programs. In this stage, the internal structure of the programming model, the component interface, and each component will be determined.
Identification component
Each component of the business reference architecture will discuss in detail in the second part of this "Developer Guide". The encoding method, the components used, and the code segment and the definitions thereof will be described in this section. For more information, please refer to the developer's comment provided by the code itself.
Create specification
At the end of the "implementation" phase, the development team must form a detailed technical specification to form a detailed technical specification. This document will become a blueprint for building an application, and the development team is used to use it when forming an expert group, preparing a list, assignment task, and creation testing and deployment plans.
to sum up
This chapter describes what components will be used to determine which components will be included. Which technologies are used, which can be subdivided into three smaller phases; and summarize the development business reference architecture application consolidatedRetail. The basis. Among the entire project development cycle, the ultimate goal of the physical design phase is to apply the actual physical design constraint to logic design, and write a reasonable technical specification to guide development.
The next part of this guide will focus on the actual code provided in the "Business Reference Architecture: Enterprise to Consumers" applications. As mentioned earlier, this application is developed as a reference example, and some modifications are required when used as the product.
Chapter 5: Implementation Overview
Abstract: "Microsoft Business Reference Architecture: Enterprise provides consumers" offers reusable and customizable components that can be used to speed up the e-commerce solution development process of large and medium-sized enterprises. This chapter outlines the knowledge required to fully understand the code, and simply introduces the components of this application.
The following chapters will deeply explain the specific aspects of the code, and the specific implementation issues encountered during the code development process.
Introduction
As in the first part of the Developer Guide (English), "Microsoft Business Reference Architecture: Enterprise provides consumers" provides reusable and customizable components, which can be used to speed up high and medium-sized enterprises. Program development process. Microsoft Business Reference Architecture: The B2C solution consists of some engineering-processed code components. Developers can use them to build the Microsoft® Windows® 2000 Server operating system and Microsoft® .NET Enterprise Server products (such as Microsoft® Commerce Server) B2C retail website for 2000 and Microsoft® SQL Server 2000).
The second part of this guide is for applications developers and all other people who want to learn to use Microsoft technology to build an e-commerce solution. This section contains the initial overview and component guidelines for this application and its components, and discusses in-depth discussion of implementations encountered during its development process.
Implement function
The consolidatedretail.com site implemented in the reference architecture application includes many of the common features in an e-commerce solution. For a complete description of application business requirements, see the first part of the Developer Guide.
Suggested background knowledge
To understand the details of the code function, the readers of this article should have the following knowledge:
ASP: Developers should learn how to use Microsoft® Visual Basic® Scripting Edition (VBScript) to create Active Server Pages (ASP). This includes understanding the core ASP object and instantiates and uses the component object model (COM) and COM components. A large number of code used by this app is an ASP code. XML: In this application, a large number of Scalable Markup Language (XML) is used as a method of transmitting data between application components. Developers should be familiar with XML, including basic syntax, architecture, and structures. Some of the code uses an XML document object model (DOM) to grammatical analysis of XML content. XSL: To understand how the user interface works, developers need to fully grasp the extensible style sheet language conversion (XSLT). Microsoft Commerce Server 2000 and its objects: Commerce Server is a complex system. Therefore, although this application and document provide some guidance information about how to use the system, developers should also refer to the Commerce Server document to familiarize the functionality and components of Commerce Server. SQL Server: Although this application uses SQL Server, most actual data inventory operation is still hidden behind the scenes, you need to perform through the abstract layer provided by the Commerce Server object. However, to truly understand the access and storage of data, developers should carefully study the tables and stored procedures maintained by Commerce Server in the background. Visual C : In order to get the best performance, this application's custom COM component is written in Microsoft® Visual C ® development system. Although it is necessary to obtain valuable information from the reference architecture and does not need to fully understand the internal working principle of the component, if you want to fully understand its working principle, C skills are required. For information on why these technologies are selected, refer to the first part of the Developer Guide.
Technical overview
The following sections briefly introduce how the reference architecture application uses each core technology.
XML in consolidatedretail.com solution
This solution is implemented by a Commerce Server 2000 site. This site uses SQL Server 2000 for data storage; manage it using Commerce Server Object Library. The site itself uses XML to represent the content of the webpage, and converts the content to Hypertext Markup Language (HTML) for web browsers using the XSL style sheet. Use an Internet Server Application Programming Interface (ISAPI) application filter to handle XML and apply the necessary XSL conversion. Using this method, the solution can be easily extended to other types of clients without having to rewrite the business logic with ASP.
Microsoft has promised to use XML as a standard for transmitting structured content in a distributed computing environment. In this case, the business reference architecture code uses XML throughout the solution. Examples of using XML include:
Generate an XML output from the PASP script, then use the XSLisapi filter to perform XSL conversion: Execution of the Solution Site Front End Function Preprocessing Active Server Pages (PASP) script uses the XSLisapi filter to generate an output of an XML format (rather than HTML format). This further separates the content and its expressions. XML generated by these PASP pages is converted via the XSL style sheet. For more information on how to use the PASP and XSLISAPI filters, see the XSLisapi Filter Documentation, which can be downloaded from the Microsoft website. Note: The custom version of the XSLisAPI filter is used in the reference architecture application code. This version cannot be downloaded from www.microsoft.com; however, the documentation of the public version (XSLisapi.dll, version 2.1) also applies to custom versions. Output XML from Business Components: Many Commerce Server 2000 objects can use ActiveX Data Objects (ADOs) or XML formats to pass record sets (for example, product lists). In a possible case, the ASP script code requests information from the business object to the XML format. Write the front end script flexible and free to use the ASP
On the Microsoft platform, for most web-based applications, the code that drives the web front end is performed by using the ASP file written in VBScript. The main reason for using ASP for web programming is that it provides flexible development. In the field of rapidly developing e-commerce, it is important to quickly change the appearance of the site or the basic front end function.
Interpretation of scripting languages Execution allow programmers and designers to quickly change the function of the site without having to go through the lengthy compilation process: You only need to save the source file, that is, the program has changed. However, it should be noted that in order to achieve optimal performance and scalability, the main business processing tasks are performed by components (provided by Commerce Server).
Business Reference Architecture B2C Solution Codes Add new changes in ASP programming, using the XSLisAPI filter to isolate the generation of content. That is, the pre-processed Active Server Pages (PASP) script does not generate HTML content directly, but generates an XML output, and then converts the XML output to the correct display format by the XSL style sheet. This conversion can be performed on a server or client (if the client has this capability), thereby alleviating the working pressure of the CPU.
Commerce Server component
Commerce Server 2000 provides a very rich tool for site developers, system administrators, and business managers that can be used to develop, deploy, and manage web business applications. Like any powerful large software system, Commerce Server is strong, and the wide range will definitely let you be at a loss unless you are familiar with the system. The reference architecture provides an appropriate definition for yourself: it is a reasonable design, indicating that a full small e-commerce application shows a lot of Commerce Server objects in use. Although there is no function of Commerce Server, the reference architecture B2C code demonstrates how to implement the following features:
Set the boundary, which content and operations can be accessed by anonymous users, which can be accessed by authentication. Do not rely on the method of introducing server session correlation, keeping the user's session status; and reserves the session information when accessed accesses and through the boundaries of validation. Create a product catalog, browse the directory level, and display the details of the product through the directory. If you do not require verification, you can allow customers to collect products you want to buy (using shopping carts). Store and retrieve user configuration information, so that users do not need to re-enter this when accessible. The Commerce Server 2000 object used in the reference architecture application is listed in the chapters of this guide.
Storage procedure in the data layer
This app does not write any custom stored procedures. All stored procedures in the Commerce Data Store on SQL Server are created by Commerce Server for providing data access capabilities for many Commerce objects.
Client script for input check
The user interface of this application uses the client JavaScript code to enter verification. The function of the client script is not very complicated, and there is no major association with the core function of the application to some extent, so this guide does not introduce these scripts.
to sum up
This chapter describes the background knowledge you need to make use of this guide. In addition, components constituting the reference architecture application (consolidateDretail.com application) are summarized. The "Solution Guide" details the code component, provides a code example, and provides links to other information.
Chapter 6: Solution Guide
Summary: This chapter provides a solution to the solution implementation component, including: Advanced graphical representation of the application, how the PASP file and how the XSLISAPI filter works, and a description of each primary component category in the consolidatedretail.com application.
Introduction
Reference Architecture Application contains many custom ASP files and code components. The sections of this chapter will detail the source code for these files. Figure 6-1 visually clearly shows the various components of the solution and its interrelationship. When reading the rest of this guide and viewing the source code, the map can be used as a basic reference.
As you can see from this figure, users use the browser (here INTERNET Explorer 5) to access the application. The ASP file in the website is implemented as a pre-processed ASP (PASP script), and the programmable object provided by Commerce Server 2000 (such as ProductCatalog, AuthManager, UserProfile, and ORDERGROUP) sends data to the Commerce Server site database in SQL Server 2000 and Retrieve data from this site database. Business processes such as order or see the shopping basket content are achieved through the Commerce Server pipeline. Pipe call Custom COM queuing components to process email messaging functions. The output of each web page is represented by XML and then intercepts by the XSLisapi 2.1 filter, and the XSLisApi 2.1 filter applies the corresponding XSL style table to the content and renders the content as HTML.
The next section of this chapter will explain how the PASP file and the XSLisAPI filter work, and a brief example is provided as a reference. This chapter will then introduce how each primary component category is implemented in a consolidatedretail.com application. Our discussion uses logical reasoning ways, first introduces Web services, then introduce the Commerce Server object, followed by discussing pipe components. PASP file and xslisapi filter
Active Server Page (ASP) is often used to generate representations of web solutions. In the consolidateDretail.com site, use their approach. At this site, most ASP files are implemented as pre-processed ASPs (ie, PASP files). The PASP file writes an XML to the response object, which is intercepted and processed by the XSLisapi filter. The script in the PASP file is used to call business logic in the Commerce Server 2000 object; the XSLisapi filter processes the representation.
The XSLISAPI filter performs syntax analysis from the XML output generated from the PASP file and checks the XML-STYLESHEET ...?> Processing instructions. If the processing explains the Server-Config property that references the XML configuration file, the XSLisapi filter reads the configuration file to determine which XSL style table should be applied to the XML output generated from the PASP file.
The XML configuration file contains information about which style table should be applied to a particular client type, as shown in the following code example:
XML Version = "1.0"?>
device>
device>
device>
Server-Styles-Config>
IIS can identify the client program as long as you check the Hypertext Transfer Protocol (HTTP) request header that is sent with the page request. IIS uses the entries of the browscap.ini file in the Winnt / System32 / IneTsrv folder, you can identify many normal browsers. The XSLisapi application provides additional entries for devices for WAP phones in files called BrowsCap-add.ini, and users should copy and append them to the browscap.ini file.
Simple example
The following simple example shows how to use the XSLisAPI filter to present the XML output generated by the PASP file.
Note that this example is intended to help you understand the functionality of the XSLisapi filter. It does not meake any actual pages in the consolidatedretail.com site.
Assume that the user uses Internet Explorer 5 to request a page name myproducts.pasp. The system will explain the scripts in the file, then return to the following XML: XML Version = "1.0"> by the following response object
Xml-stylesheet type = "text / xsl"
Server-config = "productconfig.xml"
HREF = "csproducts.xsl"?>
productList>
Now, the XSLisAPI filter will perform syntax analysis of the XML and read the XML-Stylesheet processing instructions, which contains the following three properties:
TYPE: Refers to the type of style sheet to be applied (here XSL). Server-config: Refers to an XML configuration file that defines a style sheet to be used for a specific client. HREF: When the corresponding style sheet is not listed in the Server-Config file, the client will download and apply the default style sheet.
Then, the XSLisapi filter reads the specified Server-Config file (ProductConfig.xml), which contains the following entry:
device>
Since IIS has identified the client browser based on the request header to Internet Explorer 5.0, the XSLisapi application now applies the Products-IE5.xsl style table to XML retrieved from MyProducts.PASP.
Assume that the Products-IE5.xsl style sheet contains the following XSL code:
XML Version = "1.0"?>
Version = "2.0">
Product Catalog Title>
Td> tr>
TABLE>
Body>
Html>
xsl: template>
xsl: stylesheet>
The style table will be applied to XML data obtained from MyProducts.Pasp to generate the following HTML, which will be sent to the browser:
Product Catalog Title>
Small Machine TD> TR>
Wrench td> tr>
TABLE>
Body>
Html>
Obviously, in a practical e-commerce solution such as consolidateDretail.com, XML generated by the PASP file and XSL style sheet for rendering the XML is much more complicated than that of the simple example. However, the principle is the same.
Website file
Here, some ASPs and PASP pages and corresponding XSL files are introduced, which are often used in the user interface of the consolidatedretail.com retail site. As mentioned earlier, many ASP scripts used by the application are implemented as the PASP script, which submits the XML output to the XSLisapi filter. Some conventional ASP scripts are also used as non-display scripts to accept posts from other pages.
Each PASP page has a related -config.xml file, the XSLisapi filter uses this file to determine the corresponding style sheet to be used for a particular client type. In this implementation, only the -ie5.xsl file is provided to use the HTML form compatible with Microsoft Internet Explorer 5.5. To make the output can be used for other browsers or devices, you can create additional XSL files.
Initialization page and included files
ConsolidatedRetail.com Site Use the following initialization scripts and include files:
Global.asa: Global.asa is a web application initialization script that defines the actions to take when a key event occurs during the survival of the web application. /include/site_const.asp: This file defines a lot of constants, all pages on the site contain this file. /include/common.asp: This file defines some functions that are used to present data in the form of XML tags. All PASP pages on the site use this file to generate XMLs that will be transmitted to the XSLisAPI filter. /include/profile.asp: This file contains all functions that do the following: Verify the user's identity, register or log out of the user, retrieve or update the user's personal profile. /include/basket.asp: This file provides users to create and maintain shopping baskets (ie, accumulate orders during browsing the product). /include/ui_layout-ie5.xsl: The XSL style sheet provides a representation logic for rendering the standard layout form of each page in the site. All page dedicated XSL files contain this style sheet to ensure that the site presents uniform appearance and behavior.
Directory Browse Page
ConsolidatedRetail.com Retail Site Use the following and directory-related pages:
DEFAULT.ASP: This page redirects the user to the home page of the site (INDEX.PASP). Since DEFAULT.ASP is the traditional start page name of the ASP application, it places it here to redirect all requests to Default.asp to the real start page of the application. Index.PASP: Index.PASP is the default start page for the application. This page is displayed when you only enter the site name without attaching the path information. Several other pages are also redirected to this page when the task is completed or an error occurs. Category.PASP: This page enters XML for a specific page, in which user can view the product and subcategories of the given product directory specific category. Product.PASP: This page enters the specific page to generate XML content, in this particular page, you can display details on a single product and all variants in the product directory. SearchResults.PASP: When the user enters a search criteria in the Product Search box, the page receives the input content, then searches for the product that matches the keyword, and returns the list of matched products to the user. User authentication and configuration file management page
ConsolidatedRetail.com Retail Site Use the following user authentication and management scripts:
Registration.pasp: Use this page, users can register at the site. Login.PASP: Using this page, the registered user can log in to the site. ForgotPasswd.PASP: Through this page, users can request a site to send your password to yourself with email. Acct.Pasp: This page displays the account details of the currently logged in user. UserProfile.Pasp: On this page, users can edit their own configuration files. AddressBook.PASP: On this page, the user can view and update the address book, which contains the delivery address and payment address.
Order management page
ConsolidatedRetail.com Retail Site Use the following order management page:
ORDERHISTORY.PASP: This page retrieves and displays the order history of the current user, allowing users to view all the items you purchased at this site. ORDERHISTORYDETAIL.PASP: This page displays details of specific orders in the user's order history. Basket.PASP: This page displays the current user's shopping basket content, specifically, is the product contained in the ORDERGROUP object related to the user's current session. ORDERSUMMARY.PASP: Although the display result of the page is largely different from the display result of the Basket.PASP page, the script of this page and the XML content generated by the script are very similar to the Basket.PASP page. Shipping.PASP: This page will be called when the user clicks the "Checkout" link of the shopping basket page or click the "Checkout" link at the top of any page. The user can specify the shipping address of the order at this page. Shippingmethod.PASP: On this page, users can choose the shipping method of the order. MultiShipping.PASP: On this page, users can specify different delivery addresses for multiple projects in the same order. THANKYOU.PASP: On this page, complete the order processing of the Commerce Server section of this application by running a series of Commerce pipeline processes.
Commerce Server object
Another important feature of this solution is to use the Commerce Server 2000 programmable object for business processing. Any customer program that recognizes COM (such as ASP scripts) can use these objects to retrieve data in the site database or perform tasks that verify the user identity. The use of these objects will be discussed in detail when introducing the functionality provided in Chapter 7. Here, just briefly describe several critical Commerce Server objects used in the consolidatedretail.com application. Utilities and configuration objects
E-commerce sites are a fairly complex application that requires various information and functions. To simplify the development of e-commerce solutions, Commerce Server 2000 provides a lot of objects that can be used to manage site configuration information and the general features available throughout the site.
In fact, many objects used in the Commerce Server solution are Dictionary objects or SimpleList objects. These are common objects that can be used to maintain a collection of names / values. For example, in a consolidateDretail.com application, Dictionary objects are used to store the collection of pipes used in the site. For more information on Dictionary and SIMPLIST objects, please refer to the Commerce Server 2000 documentation.
ConsolidatedRetail.com Applications use the following utilities and configuration objects throughout the site:
AppConfig: This is the Commerce Server application configuration object that provides a way to retrieve site configuration. It includes an Options dictionary object that can be used to store various configuration options for storing the site. In the consolidateDretail.com site, the Options dictionary is used to store the data source connection string and other configuration information. DataFunctions: This is an object that defines the data format, store information about site area settings, currency, and other issues related to data. This object also provides a method of processing data type unique tasks, such as deleting spaces in a string or converts data from one type to another. GenID: This is a utility object for generating a global unique identifier (GUID). These identifiers are useful when they need to provide a unique ID to identify the specified item. AppFramework: This is a utility object for simplifying HTML form processing. MessageManager: This object is used to store multi-language error messages for pipeline components. CacheManager: This object is used to manage the data cache of the site. If you are cache data such as directory, delivery methods, user profiles, and significantly improve system performance. Dictionaryxmltransforms: This object uses a specific XDR architecture to implement the Dictionary objects and the mutual conversion between the XML. For more information on AppConfig, DataFunctions, Genid, AppFramework, MessageManager, CacheManager, and DictionaryxmlTransForms objects, please refer to the Commerce Server 2000 documentation.
Directory object
Retrieve product information from a directory related to the site, this is one of the common tasks that must be completed in the e-commerce site. Microsoft® Commerce Server 2000 supports multiple directorys in a single site. You can organize the directory into a hierarchical structure with nested categories that can define products on any level of the directory (including roots). Alternatively, you can associate any category or product with other categories or products anywhere in the hierarchical structure. For example, you can associate the "Software" category The product with Windows® 2000 Server is associated with the product named "Book" category. This will easily create links to related products or categories to create cross-selling opportunities. Figure 6-2 shows the directory structure supported by Commerce Server 2000. Figure 6-2: Commerce Server 2000 directory structure
With Commerce Server Business Desk, you can create a directory from your head or import directory from an XML or CSV file. For more information on how to use the Business Desk Management Directory, please refer to the Commerce Server 2000 documentation.
Another directory support feature in Commerce Server is that you can create a "directory set". The directory set refers to a collection of one or more directories, assigns these directory to a particular user class based on attributes in the user profile. For example, you can create a directory set, which contains some price-discount directories to provide discounts for users who participate in the faithful customer plan. For users that are not assigned directory sets, the Commerce Server site contains the default directory set provided for anonymous users and the default directory set provided by users through authentication.
Program access to directory data can be provided by the following Commerce Server automation objects:
CatalogManager: This object represents the entire directory management system. CatalogSets: You can access the directory set defined in the site through this object. ProductCatalog: This object represents a specific directory. Category: This object represents the category in the directory. Product: This object represents the product.
The above object provides a method of browsing the entire directory hierarchical structure of the site. Many methods and properties provided by these objects return ADO record sets, which contain directory, category, or product data.
For any directory data, you must initialize the connection to the site data source to access them. Typically, to complete this, you must call the Initialize method of the CatalogManager object, which will transfer the ADO connection string or site name of the site database as a parameter.
For more information on CatalogManager, CatalogSets, ProductCatalog, Category, and Product objects, please refer to the Commerce Server 2000 documentation.
User management object
Commerce Server provides several objects to manage user information and status when the user is interactive with the site. These objects include:
AuthManager: This object is used to handle security-related functions, allowing users to authenticate and log in, providing the way to identify a particular user. PROFILESERVICE: This object is used to connect to the data source, where stores configuration file information related to the registered user of the site. ProfileObject: This object is used to encapsulate configuration file data for a particular user and can be used to set or retrieve the following values: Name, Phone Number, Email Address, or any other user properties that need to be tracked.
For more information on AuthManager, ProfileService, and ProfileObject objects, please refer to the Commerce Server 2000 documentation. Shopping basket object
When the user finds the product you need to purchase, it is allowed to put the product into the shopping cart or the shopping basket is the usual move of the website. In fact, the shopping basket concept is just a metaphor of software objects, which represents the item collection selected by the user during access.
Commerce Server 2000 provides the following objects for shopping basket management.
ORDERGroup: This object represents a shopping basket. ORDERFORM: This object represents a collection of items in the shopping basket. The ORDERFORM object is implemented as a Dictionary object, which contains the overall information of the order, and the SimpleList object contains a project Dictionary object that represents a single project in the shopping basket. Addresses SimpleList objects are used to store the collection of address Dictionary objects, representing delivery addresses and payments related to orders.
For more information on ORDERGROUP and ORDERFORM objects, please refer to the Commerce Server 2000 documentation.
pipeline
Commerce Server 2000 solutions typically use pipes to handle business. The pipe is composed of a series of COM components that will operate the business objects such as ORDERFORM. The components in the pipe and the order of calling these components are specified in the pipeline configuration file (* .pcf). You can treat the pipe as a production line, where each component performs a specific task, then transfer the service object to the next component.
Consolidatedretail.com uses three pipes named pagbasket.pcf, total.pcf, and final.pcf. For the reference to their references in the application-level Mscspipelines dictionary variable, Pagbasket, Pagtotal, and PAGFINAL. The specific process of these pipes will be introduced when the functionality of the site will be discussed later.
Pipeline assembly
The components in the pipe are COM components that implement the iPipeLineComponent interface. This interface provides an Execute method that can transmit a dictionary object to the method. The business process can be implemented in the Execute method of the ORDERFORM, which is transmitted to each component in the pipe.
Commerce Server provides a large number of pipeline components that can be used for e-commerce sites. These objects are used to apply discounts to orders, collect taxes, arrange delivery, and more. In addition, you can create custom pipe components to perform specific tasks. The consolidatedretail.com site contains two custom piping components:
Persistility: This custom pipeline component is used to copy the non-persistent property of the ORDERGROUP object to the persistence property. Typically, the ORDERGROUP object attribute at the beginning of the scribe line is a temporary value, and these values are destroyed at the end of the pipeline processing. Since this application exports the order form to the Commerce Server domain, there is a need to retain some of the ordinary ORDERGROUP values to provide an external processing. PersiStutility will copy some of the underlined properties to the name without undertaking so that these values still exist after the pipeline processing is completed. PIPELINEQUE.QUEEMAIL: This custom pipeline assembly acquires data from the order form, converting these data into XML, then use the Queuedemailer.cmailer component (will be described in the Custom Business Component section) to send email messages to user.
Custom business components
You can create some custom business components to add other custom features to the solution. The consolidatedretail.com site contains a custom business component: QueueDemailer.cmailer. Queuedemailer.cmailer is a custom COM component that sends an email to users. This component needs to be used when ordering confirmation or forgetting password. The component is implemented as a COM queuing component, and its method can be called asynchronously through a message queue. In this way, the user session does not have to wait until the email processing is completed, thereby shortening the response time. to sum up
This chapter briefly introduces the primary code category in the reference architecture application, and provides some actual code snippet as a reference. At this point, you should have a basic concept for the composition of the code.
The next chapter will detail each layer of the consolidatedretail.com application while providing some pseudo code and actual code examples to illustrate the process flow.
Chapter 7: Function of ConsolidatedRetail.com
Summary: This chapter introduces the functionality of the consolidatedretail.com application, and provides a pseudo code and actual code example to detail the processing flow.
Introduction
Now, you have an overall understanding of the components of the solution, you can start checking the specific features provided by the site. This chapter discusses the following aspects of the solution and focus on the internal problems faced when writing code for each ribbon:
Represents service user authentication and user profile maintenance product catalog "Shopping Basket" Management Order Processing
When reading each section of this chapter, you will learn about the implementation of specific features, and how to reuse some or all of your company in your own enterprises (B2C) solutions.
Express service
The representation service in the consolidatedretail.com site is provided by the XSLisapi filter. The main development problem is: How to generate a suitable XML in each PASP script, and how to create the appropriate XSL style sheet to represent the XML as HTML (or other representation format).
XML output from the PASP file in consolidatedretail.com
In the consolidateDretail.com site, each PASP file generates the same XML document. This is to join the include reference to the Common.asp file in each page of the site, and call its Pagestart process.
The PageStart process in the Common.asp file contains the following code:
Sub Pagestart (STRPAGENAMEWITHEXTENSION)
'Remove the PASP file extension
DIM STRPAGENAME
StrPageName = Trim (left (StrPageNamewitHextension, _
INSTRREV (StrPageNameWitHextension, _
".") - 1))
'XML header
Response.write_
" xml-stylesheet type =" "text / xsl" _
"Server-config =" "" "" ""
STRPAGENAME & "-config.xml" "href =" "" & _
STRPAGENAME & "-ie5.xsl"?> "
'The root of the page element.
'Generate end tags in the "pagend" subroutine.
Response.write " "& vbrlf
End Sub
This process creates an XML header for the document to be generated for the PASP file. At the end of each PASP script, the PageEnd process will be called to generate the end tag of and complete the XML document. The following is listed below related code in the Pagend process:
Sub pagend ()
'In order to express it more clear, the code for directory, logout and error message is omitted here.
Call XmlendTag ("Page")
End Sub
The XMlendTAG process is one of the many XML Helper processes in Common.asp. (For more information, refer to the "XML Helper Process" section in this chapter.) It uses the following code to generate an XML end tag:
The XML document generated using the Pagestart and Pagend processes is similar to the following code:
Xml-stylesheet type = "text / xsl"
Server-config = "filename-config.xml"
HREF = "filename-ie5.xsl"?>
page>
XML Helper process
In addition to the XMLendTAG mentioned above, Common.asp also contains multiple utility routines related to XML. Use these procedures to generate some tags that will be used in the XML document generated by the PASP page in the ConsolidatedRetail.com site.
Although in many cases, the desired XML characters (such as "<" and ">", please note that the quotation marks are hardened more efficient, however, in various XML generation, a large number of XML characters constants are all Declaration in Common.asp. This increases the readability of the code while helping to debug. These constants are:
Const mc_strstarttag = "<"
Const mc_strendtag = ">"
Const mc_strforwardslashtag = "/"
Const mc_strunderscore = "_"
Const mc_strblank = "" "
These constants are used in the following XML generation process:
XMLbegtag: This utility is written in an XML start tag (for example ) according to the strtagname parameter. XMlendTag: This utility (described above) is written according to the strtagname parameter (for example, page>). XMLEMPTYTAG: This utility writes an empty XML tag (for example, ) according to the StrtagName parameter. XMLTAG: This utility writes an XML tag that contains values (for example ) based on the StrtagName and the StrtagValue parameter. GetXmlFromrs: This utility creates the XML representation of the record set. GetxmlFromrsrow: This utility creates XML representation of the current line in the recordset. In addition, there are many other processes (collectively known as xxxwithdsplynm) to generate an XML tag containing the DisplayName property, for example:
joe f_name>
The marked display name is retrieved from the CatalogDefinitionProperties application-level dictionary variable based on the tagname.
To fully understand the features provided by the XML Helper process, check the source code in Common.asp.
XSL style sheet in consolidatedretail.com site
As mentioned earlier, each page has a associated "file name" -config.xml file, which lists the XSL style sheet to be applied to each client browser or device type. In this implementation, you only support Microsoft® Internet Explorer 5.5, although you can create an alternative style sheet and add to the site to solve this problem.
The XSL file for each PASP page is named "Page Name" -ie5.xsl (where "page name" is a non-version specific name of the PASP page), which contains the page data dedicated XSL code. However, in order to keep the site uniform appearance, you need to define the public user interface (UI) element of all pages in a separate XSL file (named UI_Layout-IE5.xsl). This file is stored in the incrude directory. Each page dedicated XSL file uses the XSL Include instruction to merge the representation logic in ui_layout-ie5.xs to the present page, as shown in the following code segment:
Templates used in Ui_Layout-IE5.xsl
The UI_Layout-IE5.xsl file contains several templates. The Page Template will be applied to the element in the XML document generated by each PASP page. This template references the stylesheet.css cascade style sheet and creates an HTML table containing five lines, and the overall page will be based on the HTML table. The system calls other templates in the UI_Layout-IE5.xsl file to populate these rows.
The first line of the table contains calls to the PageHeader template (defined in the following scripts). This template presents page headline, including images that link to "Shopping Basket", "Profile", and "Home".
The second line is used to create a spacing from the third line, while the third line contains the call to the main template. This template contains the logic required to present the left menu panel (including search form) on the left side of the page. Main template calls the GetCatalogsForuser template, Exceptions template, and Advertising or ProfileMenu template (depending on whether there is an Advertising or ProfileMenu XML element). The fourth line of the table is similar to the second line, used to create the spacing from the fifth line; the fifth line calls the PageFooter template. This template presents the bottom panel of the page, including a copyright statement.
The PAGE template in Ui_Layout-IE5.xsl is shown in the following code. You can view PageHeader, Main, PageFooter, and other templates for rendering sites in UI_Layout-IE5.xsl.
Render index.pasp
You can check the INDEX.PASP page to see the combination relationship between all pages in the site. The index.pasp page is the default page of the site (ie, home page). INDEX.PASP contains code that performs the following tasks:
Use the value index.pasp to define a constant called MC_STRPAGENAME. Call the Pagestart procedure in Common.asp to create the appropriate start tag. Create an empty tag using the XMLEMPTYTAG process. Call the Pagend process Create page> End Tag.
The following code performs the above tasks:
<%
Const mc_strpagename = "index.pasp"
Sub main ()
Call PageStart (MC_STRPAGENAME)
XMLEMPTYTAG (MC_STRADVERTISINGMENU)
Call Pagend ()
End Sub
Call main ()
%>
This code generates the following XML documentation:
Xml-stylesheet type = "text / xsl"
Server-config = "index-config.xml"
HREF = "index-ie5.xsl"?>
Browse Directory: SelectionTitle>
book catalogname>
catalog>
Hardware CatalogName>
catalog>
getcatalogsforuser>
exceptions>
page>
These XML code will be passed to the XSLISAPI filter that determines the corresponding style sheet in Index-Config.xml. The XSLISAPI filter checks the HTTP request header information to determine the type and version of the browser. Then, the browser information is compared to the corresponding style sheet in INDEX-Config.xml. If a matching entry is not found, apply the default style sheet (INDEX-IE5.xsl). INDEX-Config.xml is similar to the following code:
XML Version = "1.0"?>
device>
device>
device>
device>
device>
Server-Styles-Config>
When receiving the request from the Internet Explorer 5.0 browser, use the index-ie5.xsl style sheet as an HTML. (Other entries in the index-config.xml file are just as an example; the consolidatedretail.com site does not provide the corresponding style sheet.)
INDEX-IE5.xsl is similar to the following code:
This style table contains the UI_Layout-IE5.xsl style sheet described above. Ui_Layout-IE5.xsl style sheet is used to present the public UI element of the page. In this example, the XML document contains the tag. Therefore, UI_Layout-IE5.xsl also uses the Advertising template to render the right panel of the page. The resulting index page is similar to Figure 7-1.
Figure 7-1: Code
The consolidatedretail.com site is rendered in the PASP page in accordance with the method described above. Use this method (XML content in the PASP file, define a representation in the XSL style sheet), you can easily change the style sheet for displaying the page without affecting the business logic in the PASP file. Therefore, this solution is very flexible and is easy to reuse.
User authentication and maintenance of user profiles
Microsoft® Commerce Server 2000 supports scalable configuration file systems that store large number of user data. The user data (or user profile) can include the consignee address and contact information. Customers can use these profiles to store personal data, including consignee addresses and contact information so they do not have to re-enter such information every time you have access to the site. Companies can use the profile information for commercial analysis and carry out targeted advertising activities. To create and maintain a configuration file, the user must log in to the site and register on the site. This will create a unique user ID that identifies the user and retrieves the corresponding profile information from the database. The user's ID is stored in the cookie on the client browser. If the user is not logged in, the cookie will contain the user ID associated with an anonymous user, at which point the configuration file information is not available. When the user logs in, the corresponding user ID will be retrieved and the cookie is written, so that the configuration file information can be used during the later session.
Note that this site requires the browser to allow cookies. If the user uses the browser configured to allow each session cookie (ie, cookie not stored on the user's hard disk), the user will be able to log in to the site, but also use the site, but cannot use the product Put it in the shopping basket. If you don't allow cookies at all, the user will not access this site.
User registration
Users can register to this site using the registration.pasp page. This page contains a form that is sent back to itself when using the Registration-IE5.xsl style sheet. The registration.pasp page contains the code that performs the following tasks:
Check the data in the form to determine the MODE and Processction parameters. The MODE parameter is used to specify the user to redirect the user after the registration is complete (the default value is acct.pasp). The ProcessAction parameter is used to determine whether the registration form is displayed to allow the user to register, or turn the form back back to proceed. Transfer the registration data to the PutuserObject to create a new configuration file. PutuserObject is defined in the Profile.asp header file. Redirect the user to the acct.pasp page (or other pages specified by the MODE parameter). Registration.PASP Page Use the MSCSAppFramework application-level variable to retrieve the Mode and ProcessAction values from the query string, as shown in the following code segment: strpagemode = _
Mode is usually empty, which means that the user has successfully registered and should be redirected to the account management page (Acct.PASP). In some cases, Mode contains the name of other pages, and the user should be redirected to the page. For example, if an anonymous user adds the product to the shopping basket before registration, you may want to redirect the user to the "Checkout" page after the user is registered. The ProcessAction parameter is used to determine that the user is from another page in the site to enter the registration page, or from the registration page itself. If it is the former case, a registration form will be rendered; if it is the latter case, the content of the registration form will be used to register the user. If the ProcessAction parameter is EditUserObject, you can use the data in the form on the form to register the user. The script then retrieves the form data and passes the data to the PUTUSEROBJECT function, which is defined in the profile.asp header file. The header contains various processes for managing user profiles, and each page in the site will use these procedures. The PUTUSEROBJECT function is used to add or update the user profile and return a Boolean value indicating success or failure. If the user is successfully created, the user is allowed to log in and redirect it to another page. If it fails (for example, due to the specified username already exists), the registration.pasp page is res. and the error message indicates that the problem is. The code calls the GetUserID function in Common.asp to retrieve user ID. This function is used to update existing users, which will be discussed in detail later. The next line of the next line for registering new users will check if there is a user with the specified user name: set objmsprofile = _application ("mscsprofileservice"). Getprofile (strusername, _ _
_ MC_STRUSEROBJECT, BLNRETURNCODE)
IF not (objmscsprofile is nothing) THEN
Call addexception (m_varrexceptions, 1, _
"The user name already exists.", MC_STRPAGENAME)
Set objmscsprofile = Nothing
If this username has not been used, the code will generate a GUID (unique user ID) and add the user while calling the CreateProfile method of the ProfileService object. The value from the registration form will assign the configuration file: struserid = generateGUID ()
Most of the code in the remainder of this page is used to update existing user objects. Finally, update the configuration file object, the function returns true: objmscsprofile.Updateset objmsprofile = Nothing
PutuserObject = TRUE
After the function is running, the new user registers the site database. After the user is registered, registration.pasp redirects the browser to acct.PASP (if the Mode parameter is null) or other pages specified by the MODE parameter: if BlnRegistered Then
The registered user must log in and via authentication to access its configuration file information. As mentioned above, the code in the registration.PASP will automatically log in to the newly registered user. However, when the user logs in again, the username and password must be provided to verify.
Note: In this application example, login details are passed using the HTTP protocol to pure text format. However, in the actual site, you should use the Secure Hypertext Transfer Protocol (HTTPS) to encrypt security credentials.
Users can log in with Login.PASP page. Like Registration.PASP, this page sends data to itself and uses Profile.asp to process data. Login.PASP page contains code that performs the following tasks:
Check the data in the form to determine the MODE and Processction parameters. The Mode parameter is used to specify the page to redirect the user after the login is complete (the default value is acct.pasp). The ProcessAction parameter is used to specify whether to display the user credential form to allow the user to log in, or turn the form back to proceed. Retrieve user credentials from the form. Pass the credential to the login function in Profile.asp. Redirect the user to the acct.pasp page (or other pages specified by the MODE parameter). The most important code in Login.Pasp is called to the login function in profile.asp: blnloginsuccessful = login (strusername, strpassword)
The login function is used to verify the user's username and password, and send the authentication order to the client browser in the form of cookie. The first task of this function is to create and initialize the AuthManager object using the following code: set objmscsauthmgr = _
Server.createObject (MC_STRAUTHMANAGER)
Call Objmscsauthmgr.initialize_
(Application ("mscsdictconfig"). S_sitename)
The code then removes the user's existing authentication list from the previous login: if objmscsauthmgr.isauthenticated then
Call objmscsauthmgr.setauthticket_
("", blncookiesupport, _
Application ("mscsdictconfig") ._
I_Formlogintimeout
END IF
Check to make sure the user name provided is not empty, the code will use the application-level MSCSProfileService object with the specified name of the user to load the configuration file:. Set objMSCSProfileObject = Application ( "MSCSProfileService") GetProfile (strUserName, mc_strUserObject, blnReturnCode) if as The registered user finds a matching profile, check the password and user ID, and compare the password provided by the password and the user: strprofilepassword = _
IF cstr (strprofilepassword) = cstr (strpassword) THEN
...
You can add the product to the shopping basket while browsing in anonymous manner, which is one of the design features of the consolidatedretail.com site. If the user added the product to the shopping basket before logging in, the user has issued an anonymous configuration file. The AuthManager object now retrieves this document so that you can transfer anonymous users' shopping basket content to a shopping basket for users who have passed authenticated: strprofileuserid = _
During the subsequent session, the user provides authentication cookies for each request, so that the code can retrieve the user's configuration file information.
Retrieve and update configuration file information
This site allows users to view and edit their configuration file information on multiple pages. Since all pages use similar code to update the fields in the user profile, this chapter only discusses the userprofile.pasp page in detail. You can also view code in EditadDressbook.PASP and ChangePasswd.Pasp, which performs similar features.
UserProfile.PASP page contains a form that users can view and change the name, last name, email address, and phone number in this form. Its design idea is similar to the Registration.PASP page described above. UserProfile.PASP page contains the code that performs the following tasks:
Check the value of the ProcessingAction query string. If the value is EdituserObject, the page has sent the form content to itself, and the configuration file must be updated. Retrieve the form value from the query string. Pass the form value to the PutuserObject function in Profile.asp. Convert the configuration file value to an XML format. As mentioned above, the PUTUSEROBJECT function is used to register new users when receiving the username. If the user name is not received, the function assumes that the user has existed and attempts to update the data in the existing configuration file. To access the configuration file, PutuserObject uses the GetUserID function in Common.asp to retrieve the ID of the current user from the authentication order, as shown below: function getUserid ()
DIM Objmscsauthmgr 'Authentication Manager
DIM STRUSER_ID 'from the Authentication Manager
'Retrieved user ID
'Institute of Authmanager objects and initialize.
Set objmscsauthmgr = _
Server.createObject (MC_STRAUTHMANAGER)
Call Objmscsauthmgr.initialize_
(Application ("mscsdictconfig"). S_sitename)
Struser_id = NULL
'If the user has verified by authentication and the authentication is not
' time out
IF objmscsauthmgr.isauthenticated then
'Get the unique login ID used in authentication.
Struser_id = _
Objmscsauthmgr.getuserid (MC_BYTAUTHTICKETTYPE)
'Otherwise, if the user browsses anonymously
Else
'Get the configuration file user ID (ie Guid).
'If the getUserid method returns an empty string
'Convert this string to NULL
Struser_id = _
Objmscsauthmgr._
GetUserId (MC_BYTPROFILETICKETTYPE)
IF not isnull (struser_id) THEN
If Len (Trim (Struser_ID)) = 0 THEN
Struser_id = NULL
END IF
END IF
END IF
'Return to new GUID or currently verified by authentication
' username
GetUserid = struser_id
Set objmscsauthmgr = Nothing
END FUNCTION
In order to retrieve user profiles, PROFILE.ASP's PUTUSEROBJECT function code uses the PROFILEBYKEY method of the ProfileService object: set objmscsprofile = Application ("mscsprofileservice"). Getprofilebykey (_
MC_STRUSER_ID, STRUSERID, MC_STRUSEROBJECT, BLNRETURNCODE) Finally, the code updates the user's configuration file field: objmsprofile.fields (mc_strgeneralinfo) .value (_ _
After updating the configuration file, the code in the userprofile.pasp calls the GetUserObjectXML process, which will use the entire user profile as an XML render (actually display the fields referenced in UserProfile-IE5.xsl, but can do not change the code, Style sheets are modified to display other profile information). The GetUserObjectXML process uses the GetProfileByKey method of the ProfileService object to retrieve the user's configuration file. Then, use the XML Helper routine in include / Common.asp to present data. The getUserObjectXML routine is similar to the following code: SUB getUserObjectXML ()
DIM Objmscsprofile
DIM STRUSERID
DIM Field
Dim Group
DIM BLNRETURNCODE
Const c_strofile = "UserObject"
struserid = getUserid
IF not isnull (struserid) THEN
'Use the specified architecture to initialize the configuration file service and connect to the configuration file storage area
IF Not Application ("MscsprofileService") is nothing then
'Use the configuration file service to retrieve the user's configuration file object and assign the object
'Return value for functions
Set objmscsprofile = Application ("mscsprofileservice") _.getprofilebykey (mc_struser_id, getuserid, _
Mc_struserObject, blnreturncode)
IF not objmsprofile is nothing then
Call Xmlbegtag (c_strprofile)
For Each Group in Objmscsprofile.fields
Call Xmlbegtag (Group.name)
For Each Field in Group.Value
Call Xmltag (Field.Name, Field.Value)
NEXT
Call XmlendTag (Group.name)
NEXT
Call XmlendTag (c_strprofile)
END IF
Set objmscsprofile = Nothing
END IF
END IF
End Sub
This process will generate the following XML output:
Xml-stylesheet type = "text / xsl"
Server-config = "UserProfile-config.xml"
HREF = "UserProfile-IE5.xsl"?>
1 Account_Status>
accountinfo>
>
advertising>
businessdesk>
{8A7D56E9-DABA-499A-96B8-1F8DD93D032B}
user_id>
Kim logon_name>
Password
user_security_password>
kim@somecompany.com email_address>
1 user_type>
last_name>
first_name>
tel_number>
fax_number>
fax_extension>
generalinfo>
2/8/2001 11:57:13 PM date_last_changed>
2/8/2001 11:57:13 PM date_created>
profilesystem>
userObject>
Browse Directory: SelectionTitle>
Book CatalogName>
catalog>
Hardware CatalogName>
catalog>
getcatalogsforuser>
exceptions>
page>
The consolidatedretail.com site provides a valid configuration file feature and demonstrates the basic method of creating, retrieving, and updating user profile information. With Commerce Server Management Desk, you can extend this feature to create custom profile properties, and you can use profile information to provide site personalized services for each user. For more information on using the Commerce Server 2000 configuration file function, please refer to the Commerce Server 2000 documentation.
product list
A simple way to browse the product catalog for users is one of the most important design goals when designing e-commerce sites. The consolidatedretail.com site implements this goal through the following three ways:
The directory is always listed in the user interface. Users can browse through the hierarchical category structure. Users can search for a specific string in the directory.
The current user-related directory set is always column in the left pane of the user interface. This is implemented by adding a code that determines and displays the code that can be used and displayed in the Pagend process of Common.asp:
This process creates and initializes the CatalogSet object, then calls its GetCatalogSforuser method to pass the ProfileService object referenced by the MSCSProfileService application level variable, the current user (possibly an anonymous user) ID and the default directory collection name to use (if not assigned to the user Directory Set): set objcatalogsets = _
Server.createObject (MC_STRCATALOGSETS)
Call ObjcatalogSets.initialize_
(Application ("mscsdictconfig"). _
s_catalogconnectionstring, _
Application ("mscsdictconfig") ._
S_TransactionsConnectionstring)
Set rscatalogs = ObjcatalogSets.getcatalogsforuser (_
This will return an ADO recorder object, you can use standard recordset programming technology (such as check file end (EOF) tag and use the MoveNext method) to browse this object: Do While Not Rscatalogs.eOfCall Xmlbegtag (c_strcatalog)
Call getxmlfromrswithdsplynm (RSCatalogs)
Call XmlendTag (C_STRCATALOG)
Rscatalogs.Movenext
Loop
When using the UI_Layout-IE5.xsl style sheet to present the XML generated by this code, the resulting web page displays the name of each directory in the directory set as a link to category.PASP. The generated XML segment is similar to the following:
Book CatalogName>
catalog>
Hardware CatalogName>
catalog>
Directory browsing function
The directory in the consolidatedretail.com solution is implemented in a hierarchical structure. Both "books" and "hardware" include several categories. The Book of Books also contains a subclass. The product can be stored on any layer of the directory.
The page used to browse directory data in the consolidatedretail.com is category.pasp. You can use this page in two modes: root mode or category mode. In the root mode, the page retrieves the product and category from the root specified directory. In the category mode, this page retrieves the product, subcategory, and parent categories from the specified category.
This page contains the code that performs the following tasks:
Use the MSCSAppFramework object to retrieve the TXTCATALOG and TXTCATEGORY values transmitted in the request string. If the txtcatalog value is not found, then the page redirects the user to Index.PASP. Call the XML header of the pagestart generation page. Retrieve the specified directCatalog object from the MSCSCATALOGMANAGER application variable and write the directory name into the XML element. Rendering the directory property as an XML. Thus, an attribute such as a directory name can be presented in the user interface. Determine if the catenation name is delivered in the request string. If you do not specify a class name, the page retrieves categories and products from the root of the directory and converts it to an XML format. If a category is provided, the page retrieves the data from the category provided and converts the data to an XML format. Call the Pagend process to close the XML document.
This page uses the following code to create element before using the Commerce Server Directory Object to retrieve directory information.
Call XMLTAG (c_strsearchscope, strcatalogname)
UI_LAYOUT-IE5.xsl Style Table Use this element to pass the current directory name to the search function, then qualify the search. (This chapter will discuss the search function later.)
Actual directory data is retrieved using the hierarchical structure of the Commerce Server automation object. The top layer of the hierarchical structure is a CatalogManager object that is used to access all program access to the directory system. The CatalogManager object contains some ProductCatalog objects that represent the directory in the site. In category.pasp, the GetCatalog method for the MSCSCatalogManager application-level variable is used to retrieve the specified directory, as shown in the following code segment:
Set objmscsprdcat = Application ("MscScatalogManager). _Getcatalog (STRCATALOGNAME)
With the GetCatalogAttributes method, you can retrieve the properties of the ProductCatalog object as the ADO recordset. Code in category.PASP Use this method to pass each row in the record set to the getXmlFromrswithDSPlyNM routine in Common.asp, which converts the row to XML format:
SET RSPROPERTIES = _
Objmscsprdcat.getCatalogATTRIBUTES
If not (rsproperties.eof and rsproperties.bof) THEN
Call Xmlbegtag (c_strgetcatalogattribute)
Do While Not Rsproperties.eof
'Get the XML version of the record collection
Call getxmlfromrswithdsplynm (rsproperties)
rsproperties.movenext
Loop
Call XmlendTag (c_strgetcatalogattributes)
END IF
This will generate an XML code segment in the following format:
Book CatalogName>
8 local>
12/8/1999 startdate>
12/8/2006 enddate>
ISBN variantid>
Title ProductID>
USD currency>
lbs weightmeasure>
1 CatalogID>
False CustomCatalog>
2/8/2001 11:56:22 PM freetextindexcreated>
2/8/2001 11:53:37 PM productTableUpdated>
getcatalogattributes>
You can also use the recordset object to represent the category in the directory root. The rootcategories method is used to retrieve these categories from category.PASP, as shown in the following code segment (note that the Fields collection property is used to retrieve the specified data field from the record set):
Set rscategories = objmscsprdcat.rootcategories
'In order to express it, some code is omitted here.
This will generate an XML code segment as follows:
Book CatalogName>
Business Software CategoryName>
rootcategory>
Book CatalogName>
Development Tool categoryName>
rootcategory>
Book CatalogName>
Featured Products categoryName>
rootcategory>
...
Similar to it, for products in the root, you can use the rootproducts method to retrieve the record sets containing these products:
Set rsproducts = objmscsprdcat.rootproducts
The XML generated for each product in the RSProducts record is similar to the following code:
If the code needs to drill to a deeper directory and retrieve some of the contents of the category, you can use the Category object. Category.PASP page Use the Category object to access the contents of the specified category. This object instantiates using the getCategory method of the ProductCatalog object, as shown in the following code segment:
Set objmscscategory = _
Objmscsprdcat.getcategory (strcategoryName)
You can use the Products property to retrieve the products in the category as a recordset:
SET RSPRODUCTS = ObjmscScategory.Products
The Category object also provides the ChildCategories property to retrieve the subclass of records, providing the ParentCategories property to return the parent category recordset.
Whether they are in a hierarchical structure, you can use Commerce Server Business Desk to create the relationship between categories and products in your catalog. The Category object provides the RelatedCategories and the RelatedProducts property to retrieve the record set containing the corresponding content. You can see examples of how to use these objects in Category.Pasp.
View Product
Category-IE5.xsl style sheet for rendering directory data generates HTML, which is requested by the user when the user clicks the "Get Detail" link of a particular product. This page will display specific data for the selected product.
The beginning of the code in Product.Pasp is similar to category.pasp. This code retrieves the directory, product ID, and optional product variables in the request string. If there is no directory or product ID parameter, redirect the user to INDEX.PASP. Then, the code calls PageStart starts to generate XML for this page.
The code becomes interesting when retrieving the Commerce Server product object from the directory object using the getProduct method:
Set objmscsprd = objmscsprdcat.getProduct (STRPRoductID)
You can use the getProductProperties method to retrieve some properties of the product in the record set object, such as product name and price:
Set rsproduct = objmscsprd.getProductProperties
Products in the Commerce Server directory support variants (such as different colors or different products). You can use the Variants attribute to retrieve a variable list of a particular product as a recordset. In addition, you can also use the RelatedProducts and the RelatedCategories property to retrieve any related products or categories. Use these properties to create a link to get a cross-selling opportunity. All of these properties are used to generate XML data for the product in Product.PASP page, which lists a XML code. Then use the Product-IE5.xsl style sheet to present these data.
Search directory
In addition to providing users who are used to browse directory, a high-efficiency site should also provide search. In the consolidateDretail.com site, users can enter search criteria, search for specific products in the directory.
Search features in Commerce Server 2000 can be searched in the current directory, or search in a directory based on the current user. Search feature is implemented in SearchResults.Pasp, searchResults.PASP contains code that performs the following tasks:
Retrieve the search phrase, directory, the number of rows, directories to return from the query string, and give the default value as needed and the number of start position parameters to be given, and generate an exception in the case where the search phrase is not provided. If the directory is not specified, retrieve the directory set based on the current user profile. Search for specified search phrases in the specified directory or user directory set. Rendering the search results as XML.
The actual code of the search directory uses the FretextSearch method for the application-level MSCSCatalogManager object to retrieve the search results in the record set. This method accepts the following parameters:
Search for a list of directory lists to search (separated by comma) The attribute list (comma-separated) should be selected as a result of the result list indicates the number of record numbers to be returned by the Boolean value in ascending order. Output parameters, indicate the number of total rows that are actually returned
If the user does not specify a directory, the current user's default directory set will be retrieved as the recordset, and each directory name is connected to a comma-separated string:
Set objcatalogsets = server.createObject (MC_STRCATALOGSETS)
The remaining code on this page is just converting the rows in the records returned by FreeEtextSearch to an XML format, so that the XSLisapi application can present search results for display. The XML generated for the search results has the following format:
"Shopping Basket" management
Like most B2C sites, consolidateDretail.com solution uses a shopping cart or a shopping basket concept to select the product to be purchased together. Whether it is logged in or anonymous user, consolidatedretail.com allows them to add products to the shopping basket; but anonymous users must log in before checkout.
Add products to your shopping basket
When the user clicks on the Product.PASP page, the product and quantity information will be sent to the _addItem.asp page. This page contains the code that performs the following tasks before the user is redirected to the Basket.PASP page that is displayed in the shopping basket:
Retrieve the categories, products, variables, and directory values recorded in the query string. Check the number value passed in the query string (if the number is not passed, add 1 instance of the item). Carry the user's shopping basket into an OrderGroup object. If the product has been listed in the shopping basket, add the specified number to an existing entry; otherwise create a new entry for this product. Redirect the user to BASKET.PASP.
_ADDITEM.ASP Page Use the loadbasket function in the Basket.asp header file to retrieve the OrderGroup object containing the current user shopping basket. The LoadBasket function is similar to the following code:
End Function Please note that the ORDERGROUP object is created and initialized by passing the transaction connection string defined in the MSCSDictConfig application variable and the current user's user ID. (User ID is taken from the getGuaranteedUserid function in the profile.asp header. For the logged in user, the user ID will be returned to the authentication, and the configuration file user ID is returned for anonymous users.)
Then, the LoadBasket method of the ORDERGROUP object is called to retrieve the shopping basket content associated with the current user.
After loading the shopping basket, the code in _additem.asp searchs in the basket in the shopping basket, check whether the requested product is listed. If the product has been in the shopping basket, add the specified quantity on the order, as shown below:
Blnskumatch = false
'If the detail project exists
IF Objmscsordergroup.value ("Total_LineItems"> 0 THEN
'Cycle search for each detailed item, look up match
For Each Colitem in ObjmscsOrdergroup.Value_
("ORDERFORMS"). Value ("default"). Items
If isnull (strvariantid) THEN
IF (Trim (CSTR (Colitem.Product_ID) = _
Trim (CSTR (STRPRoductID)))))
ISNULL (Colitem.Product_variant_id) THEN
BLnskumatch = TRUE
EXIT for
END IF
Else
IF (Trim (CSTR (Colitem.Product_ID) = _
Trim (CSTR (STRPRoductID)))))
TRIM (CSTR (Colitem. _
Product_variant_id)) = _
TRIM (CSTR (Strvariantid)))
BLnskumatch = TRUE
EXIT for
END IF
END IF
NEXT
IF blnskumatch
'If the project has been in the basket, add the number of new items to
'The number of existing projects
Colitem.quantity = colitem.quantity intProductQty
'Save new shopping basket
Call objmscsordergroup.saveasbasket ()
...
If the product is not listed in the shopping basket, the code calls the AddITEMTOBASKET partial function to add it to the shopping basket. The AddITEMTOBASKET function creates a dictionary object to represent the project and add the item to the shopping basket using the AddItem method of the ORDERGROUP object. Then, use the SaveAsBasket method to save the shopping basket. The code of the AddItemTobasket function is similar to the following code:
Note: Adding a project is achieved by creating a Dictionary object representing the item and then passes the item to the AddIst method method of OrderGroup (indicating the shopping basket).
After updating the shopping basket, the code in _addItem.asp redirects the user to Basket.PASP.
View shopping basket
Users can use the Basket.PASP page to view and edit the content of the shopping basket. Basket.PASP contains code that performs the following tasks:
Check the integrity of the shopping basket. Retrieve user ID (retrieved from the authentication order or anonymous configuration file). If the user's shopping basket is non-empty, use the Pagbasket pipe to retrieve the shopping basket information to display. Write the total count of detailed items into the XML tag. Use the Commerce Server DictionaryXmlTransForms object to convert the shopping basket content to XML and write its response.
This page uses the following code to load the user's shopping basket and check if the shopping basket contains products:
Set objmscsordergroup = loadingbasket (struserid)
'Check if the shopping basket contains projects
IF not isbasketeempty (objmscsordergroup) THEN
blnbasketisempty = false
END IF
ISBASKETEMPTY function in include / Basket.asp checks if the project is included in ORDERGROUP. If the shopping basket contains the product, transfer the shopping basket to the Pagbasket pipe to prepare for display:
Set objmscspipelines = Application ("mscspipes")
Interrorlevel = _
Runmtspipeline (Objmscspipelines.pagbasket, _
Objmscspipelines.logfolder & struserid & _
".log", _
Objmscsordergroup)
Pagbasket pipeline
The pipe is used to configure a series of components that will operate a business object in a fixed order. The operation of the pipeline is divided into several "phases". In this example, the components contained in the Pagbasket pipe operate on the ORDERGROUP object, which represents the user's shopping basket. You can use the Commerce Server pipeline editor to view the configuration of the Pagbasket pipeline, just open the Pagbasket.pcf file in the "Pipe" folder on the site. Pagbasket pipes are shown in Figure 7-2. Figure 7-2: Pagbasket pipeline
When a shopping basket is displayed each time, the Pagbasket pipe collects all the data required to display the shopping basket and makes the necessary calculations. In addition to running the pipe before displaying the shopping basket, it is also necessary to run it in the final stage of the checkout process to make the necessary calculations to create the final order totaled.
Product information
The pipe starts from the "product information" phase. This stage is used to manage product information, involving two components:
QueryCatalogInfo: QueryCatalogInfo component retrieves product information from each item in the order. It will retrieve information to each project dictionary in the order form. RequiredProdInfo: RequiredProdInfo Components Check all items of the items collection in ORDERFORM, and delete all items set to 1.
Order initialization stage
Then enter the Order Initialization phase, initialize the corresponding value in the ORDERGROUP. This phase only involves a component: RequiredOrderinitcy. First, Requiredorderinitcy ensures that the ORDER_ID button is worthless. If there is no value, RequiredOrderinitCy will generate a unique order ID and assign it to this button. Then, in order to ensure the order integrity, the component will assign the null value to each Total key to initialize it. Finally, for each item in the items collection, RequiredOrderinitcy is copied to the value in the Quantity to the _n_unadjusted key, initialize the number of un discounted items, and initialize the _oadjust_adjustedprice (the total cost of the project) into zero.
Order check phase
The order checks for the "Order Check" phase check is valid and all entries needed for subsequent processing. This phase only involves a component: RequiredOrderCheck. The RequiredOrderCheck component ensures that the ORDERFORM project list is not empty.
Project pricing phase
The Project Pricing phase is set to each item in the order form _iadjust_regularprice. This phase involves the following two components:
DefaultItempricecy: For each item in the order form (that is, each item in the items collection), DefaultItempricecy will assign the _iadjust_regularprice key to the value stored in the _cy_product_list_price. Some components included in each phase of the "Project Pricing" phase in the pipeline depend on the set _iadjust_regularprice key. If this button is not assigned, the components will fail. The RequiredItempricecy: RequiredItemPricecy component checks for each item in the project list_Cy_iadjust_regularprice. Before running the RequiredItemprice component, you should use the DEFAULTITEMPRICECY component to initialize the project list to include the latest pricing information for the project. If _cy_iadjust_regularprice does not contain a value, an error will occur.
The project price adjustment phase "Project Paraage" phase is set for each item in the order form _iadjust_currentprice. This phase only involves a component: RequiredItemadjustPricecy. The RequiredItemAdjustPriceCY Current price of each item (_CY_IADJUST_CURRENTPRICE) in the list of verified items exists. If this value does not exist, the component creates it and initializes it to a regular price (_CY_IADJUST_REGULARPRICE). In addition, the component checks the current price (cy_iadjust_currentprice) to check the price (cy_placed_price) to see if the current price has changed after the product is placed in the shopping basket. If the place is placed, the component creates it and set it to the current price (CY_IADJUST_CURRENTPRICE). If the price exists but does not mean the current price, RequiredItemAdjustPricecy retrieves the warning message text that invalid place the price from the MessageManager and writes the message to the _basket_errors collection in the order form.
Order price adjustment phase
The "Order Panel" phase is set to each item in the order form _oadjust_adjustedprice to take into account the factors of the price discount. This phase only involves the following components: RequiredRadjustPRicecy: For each project, RequiredRadjustPricecy first calculates the amount of discounts that do not discounted. The method is to multiply the current price of the project (_CY_IADJUST_CURRENTPRICE) with the number of items (N_UNADJUSTED), and then add the product to the total cost of the project (_Cy_oadjust_adjustedPrice). Then, calculate the item discount (cy_oadjust_discount). The method is to use the current price of the project (_CY_IADJUST_CURRENTPRICE) to multiply the total cost of the project with a total quantity, then subtract the previously calculated non-discount project fees, which calculates the item discount.
Order small schedule
The "Order Try" phase is set on the order form _oadjust_subtotal. This phase involves the following three components:
DEFAULTORDERSUBTOURCY: Adds the total cost of each item in the SIMPLIST project in ORDERFORM, calculates the small count (_Cy_oadjust_subtotal). Persistility: Persistility is a custom component for copying the values in ORDERFORM. It is mainly used to persist value. Otherwise, the name of the name will not be held lastu. The source code of the PersistUtility component is provided with Visual C to provide with the business reference architecture. Requiredordersubtotalcy: Requiredordersubtotalcy Check the _oadjust_subtotal key in the order of ORDERFORM, make sure the value assigned to the key is not NULL.
Convert shopping basket content to XML
After running the pipeline, the code in Basket.Pasp checks the ORDERGROUP object again to ensure that the object is still included (because some items may have been removed in the pipe). If the shopping basket contains items, use the Commerce Server DictionaryXmlTransForms object to convert content to XML and write it to the response object. The XML generated by the DictionaryXmlTransForms object is similar to the following code: Then use the Basket-IE5.xsl style sheet to present the shopping basket as HTML.
Order processing
When the user decides to check out, the following steps must be performed:
Specify the consignee address for the order (or choose to send different items to different addresses). Select the delivery method. Provide payment information for orders. Confirm order details. Complete the ordering process.
The consolidateDretail.com site uses the Commerce Server object and the pipeline component to process these processes.
Specify the consignee address
Users typically use shipping.pasp to specify the consignee address. This page contains a form that lists all consignee addresses in the user profile, along with options for creating new addresses or editing existing addresses. Users only need to specify the address to be sent to the project. Then, the page returns the table to itself, updates the OrderGroup object indicating the content of the shopping basket with the specified address.
When the user specifies the consignee address, the code in Shipping.PASP uses the GetUserID function in the Common.asp header file to retrieve the ID of the current user. Then, Shipping.PASP calls the loadbasket routine in the Basket.asp header file to populate the ORDERGROUP object, as shown below:
struserid = getUserid
Set objmscsordergrp = loadingbasket (struserid)
Next, the code is retrieved from the query string to update each item in the shopping basket with the specified address ID:
For Each StrorderFormName In objmscsordergrp.value.orderForms
Set objmscsorderform = objmscsordergrp.value.orderForms_
Finally, set the consignee address of the entire ORDERGROUP; for the previously set address, if it is not used, it is deleted; then save the shopping basket. Redirect the user to ShippingMethod.PASP to specify the delivery method for the order:
However, if the user is first accessing the shipping.pasp page, you must retrieve the possible address list from the user profile to display the list in the form. The code in Shipping.PASP uses ADO queries to retrieve in the address table of the site database, as shown below:
If an address is not listed in the user's configuration file, use the MODE parameter to redirect the user to the EditadDressBook.PASP page. This parameter returns the user to this page after adding the address: if xi faddress.eof the 'does not enter any address for the user ID
If the user profile contains one or more addresses, add the address information to the shopping basket (the last address specified is the default consignee address) and rendered it as an XML:
Call Xmlbegtag (MC_STRADDRESSES)
Do While Not Rsaddress.eof
straddressID = Rsaddress.fields ("Address_ID"). Value
STRDESCRIPTION = RSADDRESS.FIELDS ("Description"). Value
StraddressName = rsaddress.fields ("Address_name"). Value
straddressLine1 = Rsaddress.fields ("Address_Line1"). Value
StraddressLine2 = Rsaddress.fields ("Address_Line2"). Value
Strcity = rsaddress.fields ("city"). Value
Strregioncode = rsaddress.fields ("region_code"). Value
StrregionName = rsaddress.fields ("region_name"). Value
Strpostalcode = rsaddress.fields ("postal_code"). Value
After the user specifies the consignee address for the order, the delivery method must be selected. Commerce Server 2000 supports a variety of delivery methods, each method has different price ranges, depending on the weight, number of projects or total order. (For more information on defining delivery methods, please refer to the Commerce Server 2000 documentation.)
Use ShippingMethod.PASP pages, users can select one from the numerous shipments defined in the site database. This page contains a form that lists various shipments as an option. After the user selects an option, send the selected selection back to this page and processes. Retrieve the delivery method from the application level ShippingMethodsXML variable to display. The available shipping method list is retrieved from the application-level ShipPingMethodsXML variable, which initializes the variable using the getshippingMethodsXML function in Global.asa, as shown below:
The ShippingMethod.PASP page contains a list of available shipments, as shown in the following XML format:
{00000000-0000-0000-0000-003688009465}
shipping_method_id>
Express shipping_method_name>
shipping_method>
{00000000-0000-0000-0000-001140002642}
shipping_method_id>
Stand shipping_method_name>
shipping_method>
When the user selects the delivery method, the ID and name of the method must be stored in ORDERGROUP. Since only ID passed from the form, you must retrieve the name from the database using the Commerce Server ShipPingMethodManager object. This object provides a GetInStalledMethodList method, using this method to retrieve the method of matching specified criteria as a recordset. The code based on the supplied ID retrieval related method name is similar to the following:
After searching for the delivery method name, you will use the delivery method data to update the items in the shopping cart and redirect the user to payment.pasp to specify payment information:
For Each StrorderFormName In objmscsordergrp.value.orderForms
Set objmscsorderform = objmscsordergrp.value. _ORDERFORMS (StrORDERFORMNAME)
Specify multiple consignee addresses and delivery methods
Users can specify different consignee addresters and shipments for each project in the shopping cart. The code that supports this feature is located in the multishipping.pasp page. This page contains a set of TxtShippingMethodID and TXTADDRESSID input fields (each project in the shopping basket has an input field).
When the user requests the delivery method and address of each project, send the form back to multishipping.pasp while updating the OrderGroup representing the shopping basket. The following code is used to update the shipping method and address data of each item:
'Fill each item with shipping method ID
For Each StrorderFormName In objmscsordergrp.value.orderForms
As part of the checkout process, the user must specify payment details for the order. Payment.PASP Pages handle this in order processing order.
Note: In this application example, the payment details are transmitted in the form of plain text using HTTP. In the actual site, HTTPS should be used to encrypt payment data.
The Payment.PASP page contains a form that allows users to specify credit cards and payment address details from the configuration file. If the payment address is not defined in the configuration file, redirect the user to the EditadDressBook.PASP page that can add this address. Payment.PASP page reads the payment details in this form and then writes the information to the OrderGroup object representing the user's shopping basket.
struserid = getUserid
Set objmscsordergrp = loadingbasket (struserid)
For Each StrorderFormName In objmscsordergrp.value.orderForms
After filling out the payment information, the user will be redirected to the OrdersumMary.PASP page.
Confirm order details
Before entering the last step of the order processing, the user also has the opportunity to confirm or change order details. Order details are displayed on the ordersummary.pasp page.
The code uses two pipes to retrieve order details in order to display this information. First, the Pagbasket pipe has retrieves the content of the shopping basket. The PAGTOTAL pipelines then calculates shipping costs and small centers. For instructions on Pagbasket pipeline, refer to the "View Shopping Basket" section in this chapter. Pagtotal Pipeline will be introduced in the next section. Pagtotal pipeline
Pagtotal pipes are shown in Figure 7-3. Open TOTAL.PCF using the Commerce Server pipeline editor.
Figure 7-3: Pagtotal pipeline
Demolition stage of goods
The "goods split" stage is ready for the delivery dictionary. This phase involves two components:
Commerce.Splitter: Detachment Assembly Generates Shipment (Shipments), this dictionary is in ORDERFORM. This dictionary contains the goods to be sent separately, which are created according to the shipping_address_id and shipping_method_id values in the order. Commerce.shippingMethodrouter: ShippingMethodRouter Components Read ShipPingManagerCache using the CacheManager object to map the shipping method to a specific delivery component. This component browsses the list of shipping methods, if there is a cargo sent by the specified method, which will collect the dictionary of these goods, pass the goods to the shipping component, and then run the relevant shipping component. The total shipping costs of each delivery component are calculated. After processing all the goods sent, the total shipping cost will be calculated.
Shipping phase
The shipping discount is applied to orders during the "shipping" phase. This phase only involves a component: ShippingDiscountadjust. This component checks _shipping_discount_type and adjusts the total assembly fee for the order. If the discount is blank, the component does not perform any operation. If the discount type is 1 or 2, the component is applied to the assembly. If the discount is neither a blank is not a discount type 1 or 2, the component returns an error. Use the ORDERDISCOUNT object to determine the _shipping_discount_type value.
Conductor stage
The "Office" phase sets in the order form _handling_total. This phase involves the following two components:
DEFAULTHANDLINGCY: This component assigns zero to the General Office of the Order Dictionary. It is a placeholder component, which will be replaced by another office component when used. RequiredHandlingcy: RequiredHandlingcy Component Check ORDER._HANDLING_TOTAL button exists.
Tax stage
The "tax" phase sets the _tax_total and _tax_included value on the order form. This phase involves the following two components:
SampleRegionalTax: This component sets the tax field (_CY_TAX_TAX_TAX_INCLUDED) based on tax information in RegionalTaxCache to a suitable tax value. RequiredTaxcy: RequiredTaxcy Component Check the order form exists _cy_tax_total and _cy_tax_included keys. If a key does not exist, RequiredTaxcy retrieves the error message text from the MessageManager using the PUR_BADTAX constant and stores the message in the order of the orderform _purchase_errors.
Order total
The "Order Total" phase sets the _total_total value on the order form. This phase involves the following three components:
DEFAULTTOALCY: Whether all four totals are set on this component check order. If these four values exist, add them and assign the summary to the final total of the order dictionary. If some values are missing, the component will stop running and return an error. Persistility: Persistility is a custom component for copying the values in ORDERFORM. It is mainly used to persist value. Otherwise, the ORDERFORM value at the beginning of the following line (_) is not persisted. The source code of the PersistUtility component is provided with Visual C to provide with the business reference architecture. RequiredTotalcy: RequiredTotalcy Components Browse the _verify_with dictionary, make sure each key exists in the order form and has the same value. Correction phase
The last stage is a "correction" phase, which only involves a component: Truncate Description. In Commerce Server 2000, the fields that have more than 255 characters in length will be attributed to the text type; and this component is written in VBScript, providing a method of solving this problem.
Get the user's email address
After running the pipeline, the code in OrdersumMary.Pasp retrieves ProfileObject for the current user, and extracts the email address to the order confirmation message. Then add the address to the default ORDERFORM of OrderGroup, save the OrderGroup:
'Get the default Orderform
Set objmscsorderform = objmscsordergroup.value ("ORDERFORMS"). _
Value ("Default")
'Setup email addresses for order confirmation messages.
Finally, use the Commerce Server DictionaryXmlTransForms object to convert the contentGroup content to XML and write it to the Response object, as shown in the following code:
This will generate OrderGroups represented by the following XML format: Complete order processing
After the user confirms the order details, the order processing is complete. The code for the last step of order processing is implemented in the touryou.pasp page.
Run the previously described Pagbasket and Pagtotal pipes, start running Thankyou.Pasp. Then, run the PAGFinal pipe to complete the order processing.
PAGFinal pipeline
Use the Commerce Server pipeline editor to open Final.PCF, you can view the PAGFinal pipe. The PAGFinal pipe is shown in Figure 7-4.
Figure 7-4: PAGFinal pipeline
The only stage in the ordering process is named Ordertransfer. This phase only involves a component: Queueemail Class. This is a custom pipeline assembly for sending an order confirmation message in the form of an email to the user_e-mail_address field in the default ORDERFORM.
Send an order to confirm email
QueueEmail Class is a pipe component (COM object) for implementing the iPipeLineComponent interface. Queueemail Class Components Get information from ORDERFORM, convert the information to XML, and then use custom Queuedemailer.cmailer queuing components to send information as email messages. Since the queuing component is called to send an email message, this process is performed asynchronous, which prevents the delay in the email process to adversely affect the response time of the user checkout.
The custom property page for the Queueemail Class component is used to configure the component in the pipe editor. This will allow you to set the corresponding message queue, tag, and proGID to instantiate the queuing component, which will actually be used to send emails, as shown in Figure 7-5.
Figure 7-5: QueueEmail Class Custom Properties Page
QueueDemailer.cmailer
The process of actually sends an email is processed by the Queuedemailer.cmailer queuing component. This component is mounted in a COM application labeled queued. In addition, since the _cmailer interface is also marked as queuing, the method of this interface is allowed to call through the message queue. The _cmailer interface only contains a method (Sendmail), which is defined using the following method signs:
HRESULT Sendmail
[in] BSTR STRXMLORDERFORM,
[in] Variant_Bool BLNUSEHTMLMAIL);
Note that both parameters in the above code are marked as [IN], because the queuing component does not support the [OUT] or [RETVAL] parameter. The STRXMLORDERFORM parameter is used to pass the XML representation of the order form to the component. The BLNUSEHTMLMAIL parameter value is a Boolean value to determine whether to send an email message in an HTML format or in a pure text format.
You can also configure the QueueDemailer.cmailer component to support object build. This means that the component can implement the IObjectConstruct interface, which contains a method called construct. When the object is instantiated, COM will call this method. The constructor string is passed to the construct method, which contains configuration information that the object can use. The constructor string transmitted to Queuedemailer.cmailer uses the following XML format:
Use the Component Services Microsoft Management Console (MMC) snap-in (as shown in Figure 7-6) to configure this constructor.
Figure 7-6: Component Services MMC Management Unit
Queuedemailer.cmAiler object uses MSXML3 and CDOSYS objects. The loading of XML and XSL is done with XMLDOMDocument using the MSXML3 object. The actual transmission of the email message is done by the iMessage object (CDO collaboration data object), which is used to use the CDOSYS object. Collaboration Data Objects (CDO) CDOSYS.DLL for Windows 2000 implements version 2.0 version of the CDO API specification, which is a COM component, which is dedicated to simplifying the programming of the creation or manipulating Internet messages.
to sum up
Now you should have learned the basic features and development strategies behind the consolidatedretail.com application. The code annotation in the article provides more detailed information.
Chapter 8 Debugging and Testing
Summary: This chapter briefly introduces debugging and testing processes, including general information about debuging the consolidateDretail.com application, debugging the description of the PASP script output, and the steps of the test process. Some specific examples adopted in this chapter come from the actual test activity that is actually implemented when the application consolidatedretail.com. You can refer to this document when writing a test plan for a custom software based on this reference architecture. Introduction and develop other applications, developers 'tasks are to ensure that companies' e-commerce applications for consumers (B2C):
Correct business functionality and scalability reach requirement to ensure that the application is achieved, you must debug and perform performance tests. The first part of this chapter describes the steps to debug the consolidatedretail.com site and how to view and debug the XML output of the PASP script. Then introduce the type and level, function test process, performance test, and general guidance on assessment test results. Debugging the consolidateDretail.com Site debug site brings many challenges to developers. This is more prominent if you contain server-side logics such as ASP scripts. When you create a web-based application on your computer running Microsoft® Windows®, the preferred development environment is a Microsoft® Visual Studio® development system, which includes website development kits Microsoft® Visual InterDev®. Add Microsoft® FrontPage® Server Extensions to the website, and create a new Visual InterDev project based on this site, you can use the above environment to debug the B2C reference architecture application. For more information on using Visual InterDev, refer to the Visual InterDev documentation in the Microsoft® MSDN® Developer Library. To debug the XML output of the PASP script debug consolidateDretail.com, another challenge to face is how to view the XML output generated by the PASP script. The response data from these pages is intercepted by the XSLisapi filter and then display it using the specified style sheet. However, sometimes you need to check the XML generated by the script without applying the style sheet. To view XML output, the easiest way is to make * .asp copies for each * .pasp file in the site, then access these * .asp files with Microsoft Internet Explorer. Since the * .pasp file is not taken by the XSLisapi application, the XML response data will return to the browser and can be viewed by the source code of the result page. For many scripts, just specify the URL of the file to access, and for other scripts, you must pass parameters to be accessed in the query string attached to the URL. The following table describes how to view the XML results of each PASP file in the site. Note: Appendix A provides an XML output of the PASP page in the consolidatedretail.com site.
Acct.pasp: Save the page as Acct.asp, and then navigate to the consolidatedretail.com site and log in (otherwise it is redirected when you try to view acct.asp). This allows Internet Explorer to access Acct.asp by specifying the parametric URL (format http: // server name: 81 / acct.asp). To view XML, click Source File on the View menu. Addressbook.PASP: Save the page as AddressBook.asp, and then navigate to the consolidatedretail.com site and log in (otherwise it will be redirected when you try to view AddressBook.asp). This allows you to use Internet Explorer to access AddressBook.asp by specifying a parametric URL (format HTTP: // server name: 81 / addressbook.asp). To view XML, click Source File on the View menu. To get more meaningful results, first add at least one address to your address book first. Basket.PASP: Save the page as Basket.asp. You can then use Internet Explorer to access Basket.asp by specifying the parametric URL (HTTP: // Server Name: 81 / Basket.asp). To view XML, click Source File on the View menu. To get more meaningful results, please use this site to add some projects to your shopping basket. Category.PASP: Save the page as category.asp. Then you can use Internet Explorer to access Category.asp by specifying the URL with two parameters. (These two parameters are TXTCATALOG and TXTCATEGORY, the former is the directory name you want to browse, the latter is optional, specifying the specific class name in the directory.) For example, you can view the XML representation of the books directory by specifying the following URL : Http: // Server Name: 81 / category.asp? Txtcatalog = books To view the Games category in the books directory, you can use the following URL: http: //localhost/category.asp? Txtcatalog = books & txtcategory = Games Return the appropriate page Once, click the Source File on the View menu to view the XML code. ChangePasswd.PASP: Save the page as ChangePasswd.asp, and then navigate to the consolidatedretail.com site and log in (otherwise it will be redirected when you try to view ChangePasswd.asp). You can then use Internet Explorer to access ChangePasswd.asp by specifying the parametric URL (format HTTP: // server name: 81 / changepasswd.asp). To view XML, click Source File on the View menu. EditadDressbook.pasp: Save the page as EditadDressbook.asp, and then navigate to the consolidatedretail.com site and log in (otherwise you will see any address information). View the URL used in this page can include the following parameters:
TXTADDRESSTYPE - address type, such as payment addresses or delivery addresses. If no value is provided, the delivery address is used. TXTADDRESSID - The Global Unique Identifier (GUID) of the address. If you specify a value, return the corresponding address. For example, to see the XML generated when the user adds a new shipping address, use Internet Explorer navigation to the following URL: http: // server name: 81 / editaddressbook.asp To view the XML generated when the user adds a new payment address, please use Internet Explorer navigation to the following URL: http: // server name: 81 / editaddressbook.asp? TxtaddresStype = Billing To view the XML generated when the user edits a specific address, use Internet Explorer navigation to the following URL: http: // server name: 81 / editaddressbook.asp? Txtaddressid = address GUID After retrieving this page, click Source File on the View menu to view the XML code. ForgotPasswd.PASP: Save the page as ForgotPasswd.asp, then navigate to the consolidatedretail.com site and log in (otherwise it is redirected when you try to view forgotPasswd.asp). You can then use Internet Explorer to access ForgotPasswd.asp by specifying the parametric URL (format http: // server name: 81 / forgotpasswd.asp). To view XML, click Source File on the View menu. Index.Pasp: Save the page as index.asp. Then you can use Internet Explorer to access index.asp by specifying the parametric URL (format http: // server name: 81 / index.asp). To view XML, click Source File on the View menu. Login.PASP: Save the page as Login.asp. Turn off any session currently using the consolidatedretail.com site (otherwise it will be redirected to acct.pasp when you try to access login.asp). Then you can use Internet Explorer to access Login.asp by specifying a parametric URL (format http: // server name: 81 / login.asp). To view XML, click Source File on the View menu. MultiShipping.PASP: Save the page as multishipping.asp, and then navigate to the consolidatedretail.com site and log in (otherwise it is redirected to login.pasp when you try to access multishipping.asp). Please add at least one project to your shopping basket (otherwise it will be redirected to Basket.PASP when you try to access MultiShipping.asp). Then you can use Internet Explorer to access multishipping.asp by specifying the parametric URL (HTTP: // server name: 81 / multishipping.asp). To view XML, click Source File on the View menu. ORDERHISTORY.PASP: Save the page as ORDERHISTORY.ASP.
Then you can use Internet Explorer to access OrderHistory.asp by specifying a parametric URL (format HTTP: // server name: 81 / orderhistory.asp). To view XML, click Source File on the View menu. You can view this page without logging in, but in order to get more meaningful data, you should log in to the site before viewing this page and submit at least one order. ORDERHISTORYDETAIL.PASP: Save the page as ORDERHISTORYDETAIL.ASP, then navigate to the consolidateDretail.com site and log in (otherwise an error will occur when you try to access ORDERHISTORYDETAIL.ASP). Submit at least one order, then you can use Internet Explorer to view the URL of OrderHistoryDetail.asp by specifying a parameter (ie orders, it should be the GUID that identifies existing orders) (otherwise an error). Access the URL used by this page should be similar to the following example: http: // server name: 81 / OrderHistoryDetail.asp? Order = {0FA626B0-852E-4707-93D5-A00619C6A35B} After completing the page, click "View" "Source File" on the menu to view the XML code. ORDERSUMMARY.PASP: Save the page as OrderSummary.asp, and then navigate to the consolidatedretail.com site and log in (otherwise an error will occur when you try to access OrdersumMary.asp). Submit an order and confirm the delivery address, shipping method, and payment information. Then navigate to the http: // server name: 81 / OrdersumMary.asp. Click the Source File on the View menu to view the XML code. Payment.PASP: Save the page as payment.asp, and then navigate to the consolidateDretail.com site and log in (otherwise an error will occur when you try to access Payment.asp). Add a project to the shopping basket (otherwise it will be redirected to BASKET.PASP when you try to view payment.asp). Then navigate to the http: // server name: 81 / payment.asp to view payment.asp. Click the Source File on the View menu to view the XML code. Product.Pasp: Save the page as Product.asp. Then you can use Internet Explorer to access the product.asp page by specifying the URL with two parameters. These two parameters are TXTCATALOG and TXTPRODUCTID, respectively, the former is the directory you want to browse, the latter is the product of the product you want to view. There is also an optional TXTVARIANTID, which is the variable ID of the product. For example, you can view the XML representation of books named code by specifying the following URL: http: // server name: 81 / product.asp? Txtcatalog = books & txtproductId = code Click "Source File" on the "View" menu To view the XML code. Registration.pasp: Save the page as Registration.asp. Then you can use Internet Explorer to access the registration.asp by specifying a parametric URL (format HTTP: // server name: 81 / registration.asp).
To view XML, click Source File on the View menu. SearchResults.PASP: Save the page as SearchResults.asp. Then you can use Internet Explorer to access SearchResults.asp by specifying the URL with four parameters. These four parameters are: txtsearchphrase, you want to search the phrase; txtcatalog, you want to search for directory names; Option TXTSEARCHROWSTORTURN, you want to return to the result number on the user interface [ui]; option TXTSEARCHSTARTPOS, you want to start searching The starting line. For example, you can search for words in the books directory by specifying the following URL: http: // server name: 81 / searchResults.asp? Txtsearchphrase = age & txtcatalog = books shipping.PASP: Save the page as shipping.asp, then navigate To the consolidatedretail.com site and log in (otherwise it will be redirected to login.pasp when you try Shipping.asp). Submit at least one order (otherwise it will be redirected to BASKET.PASP), then you can use Internet Explorer to view Shipping.asp: http: // server name by specifying the following URL: 81 / shipping.asp Complete Retrieving this page You can view the XML code by clicking "Source File" on the View menu. ShippingMethod.PASP: Save the page as ShippingMethod.asp, and then navigate to the consolidatedretail.com site and log in (otherwise it is redirected to login.pasp when you try to access ShippingMethod.asp. Submit at least one order (otherwise it will be redirected to Basket.PASP), then you can use Internet Explorer to view ShipPingMethod.asp: http: // server name by specifying the following URL: 81 / shipplayMethod.asp Complete Retrieving this page , Click "Source File" on the "View" menu to view the XML code. THANKYOU.PASP: Save the page as THANKYOU.ASP, and then navigate to the consolidateDretail.com site and log in. Submit at least one order, follow the ordering program until ORDERSUMMARY.PASP is displayed. Then you can use Internet Explorer to view the THANKYOU.ASP: http: // server name by specifying the following URL: 81 / thankou.asp Complete Retrieving this page, click "Source File" on the View menu to view XML Code. UserProfile.Pasp: Save the page as UserProfile.asp, and navigate to the consolidatedretail.com site and log in. You can use Internet Explorer to view userprofile.asp: http: http: http: http :// server name: 81 / userprofile.asp Retrieve this page, click "Source File" on the View menu to view XML code . Develop test strategies to test side focus, because there are many possible test areas, each of which has different test types.
Since there is always resource restrictions (including time, person or capital restrictions), it is very important in the test area and test types and levels to be completed in terms of importance, and this is the focus of the initial test plan. Possible test areas The following is a possible area where you need a note: User Interface (UI) Test: These test checksumers and consistency. The inspection content includes screen display effects (font, size, color, and overall appearance), and data confirmation of all fields in all forms of the application. These two tests should be based on the software specification document. Business Logic Test: Functional Specification Document defines business logic that is expected to implement in actual operations. Therefore, you must use a set of test cases to check business logic. For the implementation of the reference architecture, this test process can be done from the UI or from the Commerce Server BizDesk utility (a management module). The test process should include testing of different types of users and different sites into paths. Back end test: Under ideal conditions, backend tests should be performed in the database. Since the reference architecture uses Microsoft Commerce Server 2000 integrated with Microsoft® SQL ServerTM 2000 table, the test team can use the Commerce Server object to interact with these tables. The test team can write a placeholder program to test the Commerce Server object in an isolated manner, and then compare the results generated by the XML output of the code. You can also compare in the UI layer. Possible Test Type Test Panel may perform the following types of tests:
Function Test ensures that the functionality provided by the system is consistent with the functional specification document. Regression Test Confirmation When a series of the same operations are repeated, the application responds the same. Security Test Guarantees that only users with appropriate permissions can use the functions specified in the system. Different security settings are established for each user in the test environment. Performance Test Make sure the application responds within the time range that the user can accept. The intensity test confirmation application can respond appropriately to multiple users and simultaneous activities. The number of users must agree in advance, and the hardware environment in which the system testing must meet the actual operating conditions. Automatic testing can be used for regression and functional testing. This test is useful if the system is stable and not frequently changed. Platform Test Confirmation Applications can run correctly in the operating system and browser combinations specified in the main test plan. The Internet Service Provider (ISP) Quick Test Confirmation Application can respond to requests issued by the ISP connection. End-to-end interface test checks all input, output, and system. This test ensures that the external system specified in the application and the functional specification document correctly interacts. Application Repeat Instance Test determines whether it will cause blocking or other issues when the client runs multiple copies of the same program. Input and boundary tests ensure that the system only accepts the correct input. This test ensures that the number of characters entered does not exceed the maximum number of characters specified in the field, as well as working properly under boundaries (such as valid range, null value, maximum, minimum, and Tab key switching order on the screen. Wait). Windows / Internet GUI Standard Test Verify Applications have standard views. Localization Test Guaranteed Applications Operate in a different locale. Euro Compatibility Test Guarantee Correctly display the euro. If the application is to receive currency values from the European Economic and Money League (EMU). Conversion test detection requires conversion, all data that can be run normally. These conversions may come from changes needed for old system or new architecture. Installation / Upgrade Test Detects the installation / upgrade program to ensure that the product can be installed on an existing version. The test team can decide to test only the full version or test the upgrade installation version at the same time. Easy to use to ensure that the application is easy to use, there is no too much keys, and it is easy to understand. The best way to perform this test is to find some advanced, intermediate, and primary users, then listen to their views on the application availability. Free testing the system with unstructured scenes to ensure that it can respond correctly. To achieve this, you must ask others to perform a certain function without knowing the steps. Environmental safety tests ensure that the app can be installed and run in the actual operational environment. When performing this test, the security settings of SQL Server and Internet Information Services (IIS) must be the same as the settings of the actual operation. The network test determines the impact of different network conditions on the application. For example, by this test, you can find problems that may occur when using a low-speed network connection. Disaster Recovery (Backup / Restore) Test ensures that there is a catastrophic event, and users can restore the application and their data stores in accordance with certain steps. This test should be responsible by the operational support department. Based on the application-based failover function test ensures that there is a fault condition of an existing document record, the application's failover function works. User acceptance tests are typically performed by users with skills and backgrounds similar to target users. The goal is to determine the application to meet the user requirements and expectations (that is, testing for user-oriented requirements). Note that the test team does not actually perform the test, but may be supervised or designed. Memory overflow and memory leak test ensure that applications can run under memory capacity specified by technical documents. This test also detects the related memory leak problem by multiplexing and closing the application multiple times. Older version of the operating system porting test ensures that the application can run after installing the updated version of the operating system. Help Test ensure that the content provided by online help is related to the current problem and provide a solution. When verifying online help, the test team does not check the correctness of the business rules. In each of the above test areas, the test team must determine the test level required to complete. As follows:
High - very important, you need to thoroughly test this area. Middle - Execute Standard Test Low - If the time allows the next part, the next part focuses on functional testing. Function Test In the process of developing an e-commerce solution, you should carefully test each internal version to ensure that the application has the functionality described in the functional specification document. This involves ensuring that the application operates in a desired manner when the various user scenes determined in the application design. Test methods In most large and medium-sized projects, a test team will perform functional testing. Application generation and testing alternately, eventually obtaining the release version of the software. Figure 8-1 shows a typical application development and test cycle. For more information on each phase in the test cycle, see the corresponding section in this chapter. Please click here to view the full picture. Figure 8-1: Typical test cycle phase 1 - Writing test objectives and primary plan document testing processes, which is clearly tested in documentation, and how to implement these goals. It is very important to determine all relevant factors of the test and form a document, including test hypothesis, timetable, test priority, test level, responsibilities, expected results, and determination factors, risks, and avoidance. After completing the plan, you will get the main test plan document, which is a dynamic document throughout the test lifecycle. The source document required at this stage is the advanced version of the functional specification document and the code published schedule. Please refer to "Developing Test Policy" in front of this chapter, the test team should consider when preparing the primary test plan. Phase 2 - Write a detailed test plan detailed test plan to describe a variety of different use scenarios and entry paths for all users or accounts. These tests use scenarios based on the use scenario determined during application design. The detailed test plan also determines the priority of each scene to be tested. The source document required for this phase is a functional specification document and advanced application and architecture design. Phase 3 - Audit Detailed Test Plan Development Group must review the detailed test plan to ensure that it meets the test requirements of the application. After the test plan is approved, you can start testing. Phase 4 - Defining Test cases should generate detailed test cases according to approved detailed test programs, define the operations to be performed on the application, input data, and expected results, and the predetermined format that should be employed when the recording results are used. At this stage, the priority of the test case should be determined in accordance with the importance of the function to be tested. (Sometimes each scene in the detailed test plan is expanded into one or more cases in the detailed test case document.) In addition, you may need to make a test case execution sequential document, saving time. Phase 5 - Test Application In the actual test phase, you should test all application paths in the end-to-end way to ensure that they meet the functional specifications. The test team uses the defect tracking tool to report all the defects found during the test process. In addition, the test team may have to isolate these defects. The documentation required at this stage is a detailed test case. Phase 6 - Determine whether the generation / test cycle is completed after a round of testing is ready to publish an application is unlikely. Whether to repeat another round of generation and test depends on many factors, including the severity, budget restrictions and time periods of existing errors. Your project plan should allow several time-generated / tests to be repeated before publishing. Phase 7 - Hold the Identification Conference Test Team, the Project Management Team and the Development Team will discuss the status of defects in the appraisal meeting, and which developer is specified to solve it. Phase 8 - Eliminating the Error Development Panel must work together to eliminate all the errors determined at the appraisal meeting. After completing, return each error to the corresponding person in charge (submitted the error test engineer) to verify, if the verification is passed, this error is ended. After the error is eliminated, return each error to the corresponding person (verify the error test engineer), if the error has been fixed, otherwise further action is taken. Phase 9 - Writing Test Report Test Report The status information of the specific items listed in the test plan, and the defect description information classified by severity. This report is very important for issuing decision meetings (will discuss in the following section).
Stage 10 - After the release of the decision meeting test, the program management team held a release of a decision-making meeting to determine if the application can be released. In addition to the project management team, the test team and the development team should participate in this meeting. The files to be used in this meeting are primarily published standards (determined in the main test planning phase) and test reports. Performance Tests Before deploying an e-commerce solution in an operation environment, the application must be thoroughly tested to ensure that it meets performance and scalability requirements. Overall, the application should be tested in response time and throughput, verify that the expected number of users can provide acceptable performance levels. The response time response time is an indicator of the application performance from the perspective of a single user. It measures the time required to make a response from the user to the application. Acceptable response time is different from site, even related to web pages. For example, the user is expected to wait for the time when performing authentication, and may be longer than the time when the product is displayed. Although the guidelines of "The more you" seem to be the preferred design pattern, you should clearly make concessions to provide sufficient security and scalability in some cases. In e-commerce applications, two main factors affecting the response time are network delay and application processing time. Network delays can be shortened in various ways. E.g:
Deploy the application using a reasonable infrastructure architecture. For example, using a flourishing switch than the hub and select high-performance network hardware. Shorten the physical distance between the application layer. Reduce the function call between the components on the network. Cache data to avoid unnecessary database access calls. The application processing time is the calculation time required for the application to perform a particular task. You can reduce processing time by improving code writing and make sure the application uses the appropriate combination of parsing scripts and compiling code. Also, if possible, use asynchronous programming models to greatly optimize the response time. The response time is usually increased as the application load increases. In addition, some program errors (such as those that lead to memory leaks) can only be detected under large load conditions. Therefore, the expected load must be reasonably simulated when the response time test is performed. The throughput throughput is a more comprehensive evaluation of the application performance. It measures the ability of the application to handle the load brought by multiple parallel users. The throughput is usually measured at the number of pages per second or the number of requests per second. It is an indicator of the application scalable when accessing an application a large number of users. Raise the throughput strategy includes: extends outward (using multiple servers configured in the load balance cluster to share the user load), use the random value as the assignment key to allocate data on multiple database servers, using buffer technology (such as database connection) Buffer and COM Object Buffering) Reduce resource robbers, and expand up (increasing the hardware resources of the server to handle more loads). To accurately test throughput on the e-commerce site, you must summarize the type of activity that users will perform. In particular, you must determine the expected "purchase / browse" ratio (the percentage of users who expect online shopping users with only the percentage of users only). This ratio may vary widely with different types of sites (for example, in the B2C retail site, there may be only about 20% of users will have purchase behavior, and most users will do in the Internet bank solution. Some kind of transaction). To a large extent, this information can only be accurately determined after the site is put into operation, but you can use the most accurate estimate obtained according to the indicator of the site. When you simulate your user load for testing, you should reflect as many expected usage patterns to more accurately grasp the operation of the application in actual operations. Test should be performed based on the real situation. The infrastructure architecture of the test should be as close as possible to the operating environment you want to deploy the application. For example, you should use multiple web servers configured for a certain IP-based load balancing mechanism. You can't believe that only the performance indicators obtained from one computer! Keep in mind that security measures such as firewalls and encryption settings affect performance, and test environments should contain these measures. Performance Test Tools and Utilities There are many tools for collecting performance statistics. These tools include: monitoring tools (such as Microsoft Windows 2000 System Monitor and NetMon, SQL Server Profiler), system log files (such as IIS generated files), dedicated test tools (such as Microsoft Web Application Stress [WAS] tools, and others Some third-party intensity test tools are provided. Each tool has its own advantages and disadvantages, so it is necessary to accurately grasp the performance of the application and cannot rely on one tool. Instead, a variety of tool test applications should be used. The Web Application Stress (WAS) tool can be used to simulate a large number of parallel user loads to add applications. To apply it, you can record a range of HTTP requests for the site, and then let the WAS tool issued a request in the specified parallel user. The tool collects response time and throughput statistics, which can be used to evaluate the performance of the application.
WAS tools can be downloaded from http://webtool.rte.microsoft.com/default.htm (English) Free download, you can also get more information about using this tool to test web applications. When using similar WAS-like intensity testing tools, you should create several scripts (not a script) to simulate different user scenes. This way, when you need to determine the specific performance bottleneck, you can run a script; you can run multiple scripts at the same time when you simulate the actual load on your application. Most intensity test tools allow you to add each script to the system on relative intensity ratios, which makes you more accurately reflecting the use scenarios expected in operation. Performance Test Method B2C site users want this site to always run well. The performance, scalability, and overall reliability of the application are elements of web application design. Performance analysis methods include the following different steps:
Preparing Analysis Creating an intensity script Perform test analysis results Record and submission results The above will be discussed in the following sections. The first step of preparing analysis and analysis involves collecting information. This information should provide a copy application environment and understanding the details necessary for application usage, and you should inform you that all existing performance issues. Sources of this information include market forecasting, operating IIS logs, performance logs, and application functional specifications. Of course, many of this information can only be obtained on sites that have been put into operation. For new sites, you can use market forecasts and similar sites. The information you collected is critical to successfully performing performance analysis. It helps determine the requirements for the test environment and apply it from the analog environment to the analysis of the results of the analysis test. Before starting analysis, you should determine which content should be delivered. Performance analysis should be regarded as contract requirements between test teams and application owners. Normally, when performing performance analysis, the application owner may not know what they have to get from the analysis. Creating a Performance Analysis Deliveration list You can answer this question for them. Creating a copy of the operating environment To get the most accurate test results, the test equipment should simulate the current or expected operational environment, including hardware and software configuration. If a load balancing solution (such as Microsoft Network Load Balancing or Microsoft Windows NT® Load Balancing Service [NLB / WLBS]) is deployed, the test environment should reflect this. Test facilities should also be reflected in the server role and the number of servers allocated. For example, if you use a cluster with three IIS servers in your operation, use the matching configuration in the intensity test lab. The CPU, RAM, and disk configuration of each IIS server should also meet the actual operational conditions. The BIOS version of Service Pack, drives, and hardware must also match. Matching hardware and software allows you to get more accurate test data so that there is no need to perform an inference. Due to budget or other restrictions, you may not be able to create a test environment that is exactly the same as the operating environment. In this case, please pay attention to the difference when performing data analysis. To test the consolidateDretail.com site, deploy the application in a facility used to test as shown in Figure 8-2. Please click here to view the full picture. Figure 8-2: Test facility workstation is used to simulate the Internet client (one of them runs Windows 2000 Professional, and the other two run Windows 98), through a three-level switch to access the site. The IIS server on the Web layer transmits data through a secondary switch with the database server. All Commerce Server objects and pipes are deployed on the IIS server (i.e., there is no physical layer of a separate application server), and all site data (except direct mail database) stores SQL Server database servers after the secondary switch. on. Direct mail databases are deployed on the IIS server. The design purpose of the above facilities is to simulate the deployment environment of the application. When the application owner is involved, the application owner has conducted some investigations. Discussing performance issues with application owners can save your time. They can help you observe the performance of its applications more deeply. In particular, application developers may have specific considerations and knowledge that administrators cannot provide. If their studies have discovered bottlenecks, then your mission is just to verify these problems, and provide more detailed information for developers. It is necessary to understand the technology behind the application to continue to understand the technique behind the application. The deeper the application, the more permeate the performance / intensity analysis. For example, if you know that an application uses XML, you should master the performance debugging method of the XML.
For consolidatedail.com applications, the test team must be very familiar with the deployment and use of Commerce Server 2000 and XML and XSLisapi filters. Defining the transaction / user scene To successfully complete performance / intensity analysis, you must know the daily situation of the end user using the application. You will find a task often do much more than other tasks. Your performance / strength script should reflect this mode of use. Be sure to communicate with the market and product support staff when confirming the usage mode. Usually they have more contacted users and have a more profound understanding of these statistics. IIS log files are also good resources to help master access frequencies for application components or web pages. The log is very useful, not only to define user scenes in the script, but also to compare the actual page browsing distribution in the verification intensity test distribution and operations. For the consolidatedretail.com site, the expected usage mode is 80% browsing, and 20% is purchased. In addition, in the user who executed the purchase of purchases, it is expected that half of them is registered back users, and the other half is a new user who needs to register first before payment. Define the target must define the goal of the clear analysis, and include these goals in the test plan so that everyone has reached a consensus. This reduces the risk of being forced to re-run the test script. Re-run the script will waste time and resources, and have an adverse effect on the analysis, because the test team tend to be driven by lack of time. Creating an intensity script collects the required information and preparing the test environment, the next step in performance / intensity analysis is to create an intensity script that can accurately simulate the expected site traffic. This can be done using historical data or market and business analysts obtained from the current version of the site. To generate a highly reliable strength script, consider the factors discussed in the following sections: Creating multiple scripts to handle multiple scenarios, should avoid using a single script to contain all scenarios. Using a single huge script will cause difficult to isolate specific scenarios that make the entire script run. For example, to simulate a normal e-commerce site, you may need a user to browse the directory and product scene, and a user adds the product to the shopping basket and pays the scene, and a user searching for the product. If the test team creates three separate scripts, the strength test can be performed separately, determine the bottleneck of each user scene, or simulate the mixed flow at the same time. Avoid recording and playing static websites have already become the past. Today's most sites (especially those for e-commerce destination) have full dynamic content. It is for this reason that you cannot simply simulate the site by logging and playing basic GET and POST commands. You may need to customize whether the site automatically generates some items, such as shopper ID, shopping basket ID, order id, and guid. Many test tools have functions that capture dynamically variable variables of each thread (virtual user), but you need to verify the results of the script to ensure that the variables are generated correctly. Many test tools also have the ability to import data from .CSV or .txt files. This feature allows you to export products and directory lists from the SQL database, and then use this file to increase the dynamics of the script (thus avoiding the same product repeatedly using the script). The WAS tool can create a series of variables for your script, for example, username, password, product, and category can be generated by variables. The operation of the verification intensity tool is before performing a wide range of tests, you should first verify that the strength tool uses the site accurately as a real user. To do this, you must understand the contents of each ASP page accessed and executed on the IIS server and SQL Server. At the time of tracking the ASP page, the IIS server log file and the SQL Profiler / Trace file are excellent resources available. A more accurate approach is to use the browser to browse the entire site and record all SQL commands and the stored procedures called for each page.
Also, pay attention to all web content displayed in the intensity script (such as GIF, XML, ASP, and HTML files) will appear in the IIS log. You can then play the script for a user and only this scene, and verify that the SQL trace file and the IIS log have recorded the corresponding server-side activity. Perform performance / intensity test In this step, you should prepare the server environment for running the application and analog client load scripts in advance. The third step in performance / intensity analysis is to run scripts and perform intensity tests. The following subsections outline some of the points of performance / intensity testing. Quick Test Site Quick Tests Determine the number of clients and threads that are discovered by the application system bottleneck. Microsoft recommends running a small amount of threads using multiple clients instead of using a single client to run multiple threads. The rapid test here refers to the operation between several short intensity tests to find the optimization ratio between the client and the virtual user thread. Optimization is that this ratio is on the server, not on the intensity client, causing performance degradation or bottleneck. Start collecting performance data When you get the correct ratio between clients and threads, start all servers system monitors, open each counter, and start testing. For tests that last 30 minutes, you can intervals in 15 seconds or 30 seconds. For longer tests, the size of the log file is minimized at intervals of 60 seconds to 300 seconds. Reset the IIS log to clear the IIS log before starting test Make the data analysis process easier. You can turn off the IIS Administrator Service (Iisadmin) by using the Iisreset command or the Net Stop iisadmin / y command. Then, delete the IIS log file in C: / WinNT / System32 / Log, restart the W3SVC service using the Net Start W3SVC command. Clear the Windows event system, secure, and application logs Clear Windows event log allows you to determine any exception error messages generated by the site during intensity testing. Configuring and launch SQL Profiler on SQL Server, start SQL Profiler / Trace and only add T-SQL and LOCKS events. This will display all SQL commands and stored procedures, read, write, and command cycles and any deadlocks. Note that the size of the SQL trace file will increase rapidly with the test. Therefore, only 30 minutes of tests can be collected at a time. For longer tests, Microsoft recommends running SQL Profiler at 30 minutes at the beginning, middle and ends of the test. If there are other SQL Server, you can set the tracking to record the information to the database (not the file). Creating a controlled environment If possible, try to perform intensity tests when there is no other activity on the IIS cluster or SQL Server. With a controlled environment, you can ensure that there is no abnormal error message from your intensity client, page browsing, network communication, or load. The analysis results entered the analysis phase after running testing and generating test data. First, you should verify that the intensity test has been simulated successfully and then performs a complete data analysis. This process will be briefly described in the following sections. Stop simulation and pause data acquisition stop running intensity scripts, system monitors, and SQL Profiler / Trace on all clients and servers in the test environment. Make sure the system monitor, SQL TRACE / PROFILER, IIS logs, and Windows event logs are saved in separate directory so you can archive and organize test data. Check the Windows event log to browse the Windows event log and make sure there is no exception message generated by your intensity script. An error as an intensity test result is acceptable.
Analyze Performance Monitor Data System Monitor data helps determine indicators such as system CPU usage, memory usage, disk queue, and W3SVC counters. To analyze SQL trace files When analyzing SQL trace files, search for SQL commands and stored procedures with longer periods (more seconds), and a large number of SQL reads or write operations. If you are not familiar with the performance debugging of SQL Server, transfer your tracking results to SQL designers for more in-depth analysis. Debug SQL Server may need to add some indexes and change the code during the stored procedure, and may even involve changing the architecture of the database design. Verify Access Page IIS logs can help identify all pages accessed during intensity testing. In addition, Commerce Server 2000 statistics and IIS log files can be imported into the data warehouse and can be checked using the report module of Commerce Server Business Desk. This can further reveal the situation of the site activity during the test period. The throughput throughput of the measuring site is calculated based on the user scene that has been successfully completed. For example, successfully created a shopping basket, handling orders, and performing a search are considered successfully successfully completed on an e-commerce site. Not only developers, most other people can understand these indicators. To define throughput, a simplest and most accurate way is to use the table in the database and then calculate the change amount before and after the test. Then use the IIS log to consolidate these data and calculate the actual page views. SQL tables and throughput analysis As mentioned above, the tables in the SQL database can also be used to calculate the number of successful transactions. For example, if there is a shopping basket, calculate the number of lines before and after the strength test. The difference between the two is the number of shopping baskets created during intensity test. The results of the query and the start and end time record of the test are helpful to determine the transaction / time throughput ratio. The key issue to answer the throughput in this verification process is that the number of transactions indicated by the IIS log indicates whether the number of new transactions indicated by the database entry is consistent, if not, what is. Another potential source for verifying throughput is an intensity tool report, although these reports will overestimate the actual situation than server-side data. Therefore, if there is a difference, you may have to use the server-side data. Verify throughput through two or more information, you can make your results more credible. Appendix A: ConsolidatedRetail.com XML Outcoming Site: This appendix contains the XML output of the reference application, consolidatedretail.com and the consolidatedretail.com PASP file. The PASP file and its corresponding XML output are arranged in alphabetical order. ACCT.PASP The following XML is an example of generating an output when the user has accessed acct.PASP. xml-stylesheet type = "text / xsl" server-config = "acct-config.xml" href = "acct-ie5.xsl"?>
Browse Directory: SelectionTitle>
Book CatalogName>
catalog>
Hardware CatalogName>
catalog>
getcatalogsforuser>
exceptions>
page>
AddressBook.PASP The following XML is an example of generating an output when the user has access to AddressBook.PASP. Xml-stylesheet type = "text / xsl"
Server-config = "addressbook-config.xml"
HREF = "addressbook-ie5.xsl"? XML-Stylesheet Type = "text / xsl"
Basket.Pasp: Basket.PASP The following XML is an example of the verified user to access Basket.PASP, and generated when there is item in its shopping basket. Xml-stylesheet type = "text / xsl"
Server-config = "ORDERSUMMARY-Config.xml"
HREF = "Ordersummary-IE5.xsl"? XML-Stylesheet Type = "text / xsl"
Server-config = "Basket-config.xml"
HREF = "Basket-IE5.xsl"?>
1 TOTALLINEITEMS>
Saved_cy_oadjust_subtotal = "74.95">
Product_category = "" description = "is about to launch"
EDITADDRESSBOOK.PASP The following XML is an example of the output of editaddressbook.pasp when not specified in the address parameter: XML-Stylesheet Type = "text / xsl"
Server-config = "editaddressbook-config.xml"
HREF = "EditadDressbook-IE5.xsl"?>
addrestype>
Alabama region_name>
alaska region_name>
arizona region_name>
arkansas region_name>
California region_name>
coloro region_name>
connectics region_name>
Delaware region_name>
district of colorbia region_name>
Florida region_name>
georgia region_name>
hawaii region_name>
iDaho region_name>
illinois region_name>
indiana region_name> iowa region_name>
kansas region_name>
kentucky region_name>
Louisiana region_name>
maine region_name>
maryland region_name>
massachingusetts region_name>
michigan region_name>
minnesota region_name>
mississippi region_name>
Missouri region_name>
Montana region_name>
Nebraska region_name>
nevada region_name>
new hampshire region_name>
new jersey region_name>
new mexico region_name>
New York region_name>
north carolina region_name>
North Dakota region_name>
OHIO region_name>
oklahoma region_name>
Oregon region_name>
Pennsylvania region_name>
rhode island region_name>
South carolina region_name>
SOUTH DAKOTA region_name>
Tennessee region_name>
texas region_name>
UTAH region_name>
Vermont region_name>
Virginia region_name>
Washington region_name>
West Virginia region_name>
wisconsin region_name> Wyoming region_name>
code_table>
Browse Directory: SelectionTitle>
Book CatalogName>
catalog>
Hardware CatalogName>
catalog>
getcatalogsforuser>
exceptions>
page>
The following XML is an example of the output of EditadDressBook.PASP when specifying the address parameters: XML-Stylesheet Type = "text / xsl"
a href = http://mspress.microsoft.com/produ/books/2352.htm target = _A
Http://mspress.microsoft.com/prod/books/2352.htm / a
productURL>
1999
publication_year>
Microsoft Press Publisher>
All levels
reading_level>
code title>
book>
getProduct>
Book CatalogName>
Business Reference categoryName>
parentcategory>
Book CatalogName>
Education Reference categoryName>
parentcategory>
Book CatalogName>
Programming Language categoryName>
parentcategory>
Browse Category: SelectionTitle>
parentcategories>
Browse Directory: SelectionTitle>
Book CatalogName>
catalog>
Hardware CatalogName> Catalog>
getcatalogsforuser>
exceptions>
page>
Registration.PASP The following XML is an example of the output. PASP. Xml-stylesheet type = "text / xsl"
Server-config = "ORDERHISTORYDETAIL-Config.xml"
HREF = "ORDERHISTORYDETAIL-IE5.XSL"? XML-Stylesheet Type = "Text / XSL"
Server-config = "registration-config.xml"
HREF = "registration-ie5.xsl"?>
Browse Directory: SelectionTitle>
Book CatalogName>
catalog>
Hardware CatalogName>
catalog>
getcatalogsforuser>
exceptions>
page>
SearchResults.PASP The following XML is an example of the output generated when searching in the Books directory, SearchResults.PASP generates an example. Xml-stylesheet type = "text / xsl"
Server-config = "ORDERHISTORYDETAIL-Config.xml"
HREF = "ORDERHISTORYDETAIL-IE5.XSL"? XML-Stylesheet Type = "Text / XSL"
Server-config = "SearchResults-config.xml"
HREF = "SearchResults-IE5.xsl"?>
Book SearchScope>
Age searchstring>
4 searchcount>
15 searchrowstoreTurn>
1 searchstartpos>
Book CatalogName>
SDKBook definitionname> 19.99 Original Price>
19.99 cy_list_price>
4 i_classtype>
Microsoft Age of Empires II: The Age of Kings: Inside Moves
productID>
With this guide, you can master all winning strategies, skills, and tricks, enter the new version of Microsoft Age of Empires!
Microsoft Age of Empires II: AGE of Kings:
Inside Moves tells you how to stay in an invincible place in the game.
description>
Boxshots /Press/2388.gif image_filename>
120 image_width>
120 iMage_height>
Microsoft Age of Empires II: The Age of Kings: Inside Moves
name>
book>
Book CatalogName>
SDKBook definitionname>
16.99 Original PricE>
16.99 cy_list_price>
4 i_classtype>
Microsoft Age of Empires: Inside Moves ProductID>
Microsoft Age of Empires: Inside Moves provides strategic tips, strategies, and tactics to assist you with the original tribe.
And bring them into great civilization.
description>
Boxshots / Press / 1049.gif image_filename>
120 image_width>
120 iMage_height>
Microsoft Age of Empires: Inside Moves
name>
book>
Book CatalogName>
SDKBook definitionname>
29.99 OriginalPrice> 29.99 cy_list_price>
4 i_classtype>
Grown-Ups Guide To Computing ProductID>
In Grown-Ups Guide To Computing, you will find people from all walks of life (regardless of age) how to use computers
To enrich their lives,
You can also! This book is the best choice if you also use many middle-aged and elderly people.
description>
Boxshots / Press / 3221.gif image_filename>
120 image_width>
120 iMage_height>
grown-ups guide to computing Name>
book>
Book CatalogName>
SDKBook definitionname>
16.99 Original PricE>
16.99 cy_list_price>
4 i_classtype>
Microsoft Age of Empires: Inside Moves, Revision and Expansion
productID>
Microsoft Age of Empires: Inside Moves, revisions and expansion, tell you when playing "Imperial Times"
How to deploy a winning strategy and some insider skills and prompts. Microsoft Age of Empires: Inside
The first version of Moves (Microsoft Press, 1997) has been fully updated, which contains the "Empire Times" and the new expansion content "Rise of Rome".
description>
Boxshots / Press / 2470.gif image_filename>
120 image_width>
120 iMage_height>
Microsoft Age of Empires: INSIDE MOVES, Revised and Expanded Edition
name>
book>
Find products with search criteria 'agn'
selectionTITE> searchResults>
Browse Directory: SelectionTitle>
Book CatalogName>
catalog>
Hardware CatalogName>
catalog>
getcatalogsforuser>
exceptions>
page>
Shipping.pasp The following XML is the output example of shipping.PASP. Xml-stylesheet type = "text / xsl"
Server-config = "ORDERHISTORYDETAIL-Config.xml"
HREF = "ORDERHISTORYDETAIL-IE5.XSL"? XML-Stylesheet Type = "Text / XSL"