Abstract:
A method of replacing a delegate component associated with a delegate modular software component (“associate delegate component”) at software execution time, the method comprising obtaining a delegate modular software component identifier; selecting one of a plurality of candidate modular software components having a higher priority level than other of the plurality of candidate modular software components, wherein the one of the plurality of candidate modular software components has the same identifier as the delegate modular software component identifier; and replacing the associate delegate component with the one of the plurality of candidate modular software components during the execution of software including the delegate modular software component.

Description:
BACKGROUND 
     Web provisioning software has been developed to build Web sites for the Internet and intranets. Web provisioning generally includes selecting a site template that defines the structure and the content of a Web site. Based on the content of the site template, Web provisioning software populates the initial page, the directories, and the site structures of the Web site. Web provisioning software enables a user to create multiple Web sites from a single, predefined site template. As a result, predefined site templates enable a user to quickly create Web sites without spending a substantial amount of time deciding how the sites should look or function. 
     In some platforms suitable for Web provisioning, such as Microsoft Windows SharePoint Services®, a Web site can only use provisioning information from the site template that initially provisioned the Web site. While the site template serves as a foundation, the site template limits the functionalities that can be added to the provisioned Web site. The Web site is constrained to the set of functionalities included in the site template. The Web site cannot be modified to support functionalities different from the functionalities provided by the site template. Given that business requirements for a Web site may change from time to time, a Web site may be required to evolve during its lifetime. Part of the evolution may require that the Web site functionalities change. Many types of Web page functionalities are provided by control components (“controls”). Controls are active Web page components that respond to user input requesting the performance of specific tasks, such as the selection of an option, text entry, or search. Controls are modular in nature with well-defined interfaces and may be used in many different Web pages that require the same functionality. The behavior and appearance of Web page controls may be specified using properties. Setting the properties of a control to a predefined value causes the control to appear or behave in certain predefined manners. For example, a property of a control may specify the size of the control. Another property of the control may specify certain default behavior of the control, such as showing a default selection of an item in a list presented by the control to a user. Customizing a Web page to fit a particular need often requires using custom control components. 
     Web site provisioning software makes it easy to create new Web sites to match end-user needs. However, the large number of Web sites created using such software can create new manageability and extensibility problems. For example, third party Web applications may need to globally replace certain sections or components of a Web page with the third party&#39;s own custom section or component. For instance, a third party provider of a search application may want to replace a standard search application component with a more advanced search application component that features more capabilities and better user interface elements. Typically, replacing a standard search application requires that the advanced search application provider modify each instance of a page that contains the standard search application. Because of the large number of Web pages included in many Web sites, this process can be time-consuming and is often error-prone. 
     SUMMARY 
     This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. 
     Disclosed is the replacement of a delegate component associated with a delegate modular software component, i.e., an associate delegate component, at software execution time. In one exemplary form, the replacement comprises: obtaining a delegate modular software component identifier; selecting one of a plurality of candidate modular software components having a higher priority level than other of the plurality of candidate modular software components, wherein the one of the plurality of candidate modular software components has the same identifier as the delegate modular software component identifier; and replacing the associate delegate component with the one of the plurality of candidate modular software components during the execution of software including the delegate modular software component. 
     In another exemplary form, the replacement comprises: obtaining a delegate modular software component identifier; selecting one of a plurality of candidate modular software components having a higher priority level than other of the plurality of candidate modular software components and a scope, wherein the one of the plurality of candidate modular software components has the same identifier as the delegate modular software component identifier; and replacing the associate delegate component with the one of the plurality of candidate modular software components during the execution of software including the delegate modular software component, the software including the delegate modular software component having a scope of execution within a hierarchical computing system, the scope of execution being associated with the scope of the one of a plurality of candidate modular software components. 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
       The foregoing aspects and many of the attendant advantages of this invention will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein: 
         FIG. 1  is a pictorial diagram of an exemplary architecture of Web servers; 
         FIG. 2  is a pictorial diagram of an exemplary Web page control for a simple search; 
         FIG. 3  is a pictorial diagram of an exemplary Web page control for an advanced search; 
         FIG. 4  is a pictorial diagram of an exemplary Web page replacing an associate delegate control from a feature registry; 
         FIG. 5  is a functional flow diagram of a method of selecting a candidate control to replace the associate delegate control; 
         FIG. 6  is a pictorial diagram of an exemplary feature registry entry with default properties; and 
         FIG. 7  is a pictorial diagram of an exemplary Web page including a delegate control and default properties embedded within the Web page. 
     
    
    
     DETAILED DESCRIPTION 
     A system and method for customizing control components on a Web page are described. While the system and the method are suited for customizing control components in a Web page, the system and method may also find use in other software environments where modular software components are used. Thus, it is to be understood that the present invention should not be construed as limited in application to the exemplary embodiments described herein, and such exemplary embodiments should not be construed as limiting. 
     Web pages are often part of a hierarchy of Web sites.  FIG. 1  is a pictorial diagram of an exemplary hierarchy of Web sites. Several Web pages, which have related content and are interconnected by hyperlinks, are grouped in a site  108 . Each site  108  may contain multiple levels of other sites  108 . Several sites  108  having the same owner and sharing administrative settings are illustrated as grouped into a site collection  110 . Several site collections  110  served by a virtual server  112  are also illustrated as grouped together. Virtual servers are also known as Web Applications. Virtual servers  112  have independent access to hardware resources, such as input and peripherals devices. Virtual servers  112  also have separate domain names and IP (Internet Protocol) addresses. Several virtual servers  112  are hosted and can run on one hardware computer, such as a Web server. Several grouped together Web servers form a server farm  114 . A server farm  114  is a centralized group of network servers, maintained by one organization, that provides network load balancing, scalability, and fault tolerance. Individual servers are connected together in a server farm  114  such that the server farm  114  appears to an end-user as a single computer or Web server. Typically, the Web portions below the dotted line  102 , i.e., the sites  108  and collections of sites  110 , are managed by customers  104 , and the Web portions above the dotted line  102 , i.e., the virtual servers and the Web farm, are managed by service providers  106 . As a result, no single entity has control of the Web site hierarchy  100 . 
     A Web site hierarchy, such as the one illustrated in  FIG. 1  and described above, defines different scopes of operation where customization of controls is effected. For example, a custom control defined at the site collection level can also be used in sites  108  included in the site collection  110 . In one exemplary embodiment, the system and method described herein include provisioning a Web page with delegate controls that act as placeholders on the Web page. Each of the delegate controls has a unique identifier. Each delegate control has an associate delegate control that performs the functions required to be performed by the type of control represented by the delegate control in the Web page. In one embodiment, the associate delegate control is a child object of the delegate control and is created by object inheritance. In another embodiment, the associate delegate control may be linked to the delegate control by pointers. In yet another embodiment, the associate delegate control may be associated with the delegate control through the use of an associative table. When a Web page containing a delegate control is requested by a user and loaded, the delegate control looks at a feature registry that contains a list of candidate controls suitable for replacing the associate delegate control. In one embodiment, the delegate control may not be initially linked with a default associate delegate control to be replaced later with a candidate control selected from the feature registry. Instead, the delegate control is initially linked with the candidate control, bypassing the step of linking the default associate control for later replacement. 
       FIG. 2  is a pictorial diagram of an exemplary Web page control  200  for a simple search. A text search box  202  is used to enter a subject matter for which the user wants to find more information. A search button  204  is used by the user to start searching for the subject matter entered in search box  202 . The search control  200  is an example of a simple, standard search control that may be included in a Web page as an associate delegate control suitable for replacement by a candidate search control. In one exemplary embodiment, a feature registration system, comprising a feature registry, is used to provide candidate controls suitable for replacing an associate delegate control. The candidate controls may be provided by third party vendors and registered in the feature registration system. In one exemplary embodiment, a candidate control entry in the feature registry includes a name of the Web page control. For example, the name of the control may be a URL (universal resource locator) to the file containing the software for the control, or a descriptive title, such as “SmallSearch.” The control entry in the feature registry further includes an identifier, a sequence number, and several properties of the control that may be set to default values. The identifier uniquely identifies the control, and the sequence number determines a priority for the control. For example, the candidate control with the lowest sequence number has the highest priority and replaces the associate delegate control. Properties included with each control feature registry entry define the default behavior of the control and may be set to various default values. For example, a color property defines the default color of the control and a size property defines the default size of the control when it is displayed in the Web page. 
       FIG. 3  is a pictorial diagram of an exemplary Web page control  300  for an advanced search. Search term entry boxes  302  and  304  are used to enter multiple search terms to be found according to a logical relationship between the terms, such as a logical AND or a logical OR relationship. So, instead of searching for a simple term as is done in search control  200  ( FIG. 2 ), the search is conducted for multiple terms related in a particular logical way. A button  306  can be used to add more terms to the search. Check boxes  310  and  312  are used to further specify and limit the search using “Exact Word Only” and “Case-Sensitive” search, respectively. As discussed above with respect to  FIG. 2 , each candidate control entry in the feature registry has an associated sequence number that defines the priority of the candidate control. For example, the simple search associate delegate control  200  may have a sequence number of  100  and the advanced search candidate control  300  may have a sequence number of  50 . When the Web page containing the simple search associate delegate control  200  is loaded and rendered, the candidate control with the lowest sequence number, that is, the highest priority, replaces the associate delegate control. The delegate control accesses the feature registry to find an appropriate candidate control to use as a replacement for the associate delegate control  200 . In this example, the advanced search candidate control  300  replaces the associate delegate control  200  and is automatically displayed in the Web page. In one exemplary embodiment, if a previously used candidate control is removed from the feature registry, the Web page automatically reverts to the next highest priority candidate control or to the default associate delegate control originally included in the Web page. Using such feature registration system, a third party can replace default associate delegate controls in a Web page by entering new candidate controls in the feature registry with higher priority levels. 
       FIG. 4  is a pictorial diagram of an exemplary Web page replacing an associate delegate control from a feature registry. In the illustrated exemplary embodiment, a feature registry  402  contains multiple entries  404 - 408  associated with candidate controls. As discussed above, each feature registry entry  404 - 408  includes a name  410   a ,  410   b ,  410   c , an identifier  412   a ,  412   b ,  412   c , a sequence number  414   a ,  414   b,    414   c , and a scope  416   a ,  416   b ,  416   c . Each entry  404 - 408  may also have optional properties for the control (not shown in this figure; see  FIG. 6 ). A Web page  420  including a delegate control  422  accesses the feature registry  402  to find a suitable candidate control entry  406  with the same identifier as the delegate control  422 . For example, the delegate control  422  has an identifier “SmallSearch.” The delegate control  422  searches the feature registry  402  to find a candidate control with the identifier “SmallSearch” that has the lowest sequence number, indicating the highest priority. In this example, the candidate control with identifier “SmallSearch” and lowest sequence number is the candidate control associated with feature registry entry  406 , titled Advance Search Registration. Therefore, the candidate control associated with feature registry entry  406  is substituted for the delegate control associated with the delegate control  422 , i.e., the associate delegate control, when the Web page  420  is loaded and rendered. In another embodiment, feature registry entries include scope information, which indicates the scope in which the corresponding feature registry entry may be used. For example, in a hierarchical Web site environment  100  ( FIG. 1 ), advanced search control  300  ( FIG. 3 ) may be in scope for some of the sites  108  included in one site collection  110 , while simple search  200  ( FIG. 2 ) may be in scope for other sites  108  included in another site collection  110 . Alternatively, in Web environment  100  a candidate control may be registered with Web farm  106  scope and apply to every site  108  within the environment  100 . 
       FIG. 5  is a functional flow diagram of a method  500  of selecting a candidate control to replace the delegate control. The method  500  proceeds to block  510  where the feature registry  402  is accessed. In one exemplary embodiment, the feature registry  402  resides in memory. In another exemplary embodiment, the feature registry  402  resides in a database. In yet another exemplary embodiment, the feature registry  402  comprises a file in a file system. In still another exemplary embodiment, the feature registry  402  comprises a remote file or database accessed over a network. 
     The method  500  proceeds to block  520 , where the scope  416  of search and coverage for a candidate control is determined. For example, the feature registry  402  may be searched for a candidate control with a scope covering a site collection only. Searching a limited scope enhances system performance by limiting the number of candidate controls that are evaluated for replacement of the delegate control associated with delegate control  422 , i.e., the associate delegate control. Additionally, as discussed above, scope of candidate controls  408  enables customization of individual sites and site collections by replacing only the associate delegate controls in the Web pages and Web sites that are within the desired scope. 
     The method  500  next proceeds to block  530 , where the identifier  412  for the delegate control  422  to be replaced is obtained. For example, if the identifier of the delegate control  422  is “SmallSearch,” the method  500  records the identifier  412  for further processing. In block  540 , the candidate controls  408  with the same identifier  412  as the delegate control  422  that are within the desired scope are obtained from the feature registry  402 . In block  550 , the candidate controls  408  identified in block  540  are sorted according to priority. In one exemplary embodiment, the priority of the candidate controls  408  is determined by the sequence number  414  in the candidate controls  408 . For example, a lower sequence number  414  indicates a higher priority of the candidate control  408  with which the sequence number  414  is associated. In block  560 , the delegate control associated with delegate control  422 , i.e., the associate delegate control, is replaced with the candidate control  408  with the highest priority. The method  500  terminates in block  570 . 
     The method  500  provides a mechanism that allows software developers and third party vendors to replace “out of the box” Web page controls with preferred Web page controls. Additionally, as discussed above, if a third party removes a Web page control developed by the third party from the feature registry  402 , the candidate control  408  with the highest priority will automatically appear in the Web Page  420  in place of the removed third party control. Upon removal of the third party candidate control  408 , if the associate delegate control has higher priority than any existing candidate control  408 , the associate delegate control will re-appear in the Web page  420 . In other words, removing a candidate control automatically returns the Web page to an appropriate working state. 
     While the embodiments and examples discussed above describe controls that render visible objects on a Web page, those skilled in the art will appreciate that the delegate control can be used to dynamically replace or switch non-rendering (i.e. controls that do not render a visible object on a Web page) controls in a Web page. For example, a data source control that services other controls in the Web page by providing data from a data base or other source of data, may be replaced by another data source control with more advanced or different features. 
       FIG. 6  is a pictorial diagram of an exemplary feature registry entry  600  with default properties  606  shown below dividing line  602 . A candidate control  420  can have properties  608 - 610  that are  5  embedded in the feature registry entry  604 . For example, a software developer or a third party can register a candidate control for search, such as the candidate control  300  ( FIG. 3 ), in the feature registry  402  and include a parameter  608  to indicate that an Exact Words Only option checkbox  310  can be selected (i.e., checked) when the candidate control  300  is loaded into the Web page  420 . 
       FIG. 7  is a pictorial diagram of an exemplary Web page including a delegate control  704  and default properties  706  shown below dividing line  702  embedded within a Web page  700 . Similar to  FIG. 6 , a candidate control  420  can have properties  708 - 710  that are embedded in the Web page  420 . For example, a software developer or a third party can include a property  710  of a candidate control  406  to indicate a background color when the candidate control  406  is loaded into the Web page  420 . When a candidate control  406  is loaded into the Web page  420 , the candidate control  406  reads the property  710  from the Web page  420  and sets the background color accordingly. The specification of candidate control properties  708 - 710  at the Web page level allows a candidate control  406  to comply with Web page level requirements. 
     While the presently preferred embodiment of the invention has been illustrated and described, it will be appreciated by those skilled in the art that various changes can be made therein without departing from the spirit and scope of the invention. For example, while the systems and methods described above are directed towards Web page controls, the system and method may also find use in other software environments where modular software components are used. Thus, the invention should not be construed as limited to the exemplary embodiments described above.