HYXT Blog

we produce valuable software for K12.
clock March 25, 2009 17:27 by author ethan
Subscribing to Content with Web Slices New for Windows Internet Explorer 8

Today, many Web sites provide content updates through Really Simple Syndication (RSS) news feeds. This requires a Web site to duplicate some content as a special XML file, called a feed, that a news reader application can download and check for updates. In contrast, a Web Slice enables users to subscribe to content directly within a Web page; a separate feed file is not required. Users monitor content changes and view the updated portion of the Web page directly from the Favorites bar (the improved Links toolbar) of Internet Explorer.

This article is organized into the following sections:

Key Points

  • A Web Slice uses simple HTML markup to represent a clipping of a Web page. When a user subscribes to a Web Slice, a portion of the Web page is added to the Favorites bar.
  • The Web Slice or the user can specify how frequently Internet Explorer will check for updates from the Web server. The smallest update interval is 15 minutes.
  • To detect a Web Slice on a Web page, Internet Explorer scans for elements that are of class hslice, have an id property, and contain at least one child element with an entry-title class name.
  • All elements marked as entry-content are combined and shown in the Web Slice preview window when the Web Slice button is clicked. To access the full Web page, click the Open button Cc196992.webslice_open(en-us,VS.85).gif in the preview window.
  • The Web page's author can control how Web Slices are discovered and the order of their appearance on the Feed Discovery button. Cc196992.webslice_discovery_button(en-us,VS.85).gif

What is a Web Slice?

The Web Slice is based on the hAtom Microformat World Wide Web link, with a few additional properties. The Web Slice itself uses simple, semantic HTML markup to represent a portion of Web page that can be subscribed to. Annotations can be applied directly to content within the HTML page; additional files can be used for optimization, but are optional.

A Web Slice has four major features:

Discovery

Note  For Internet Explorer to detect a Web Slice, the Web page must be served from a Web server.

Typically, users discover a Web Slice by moving the mouse pointer over it; this is called in-document discovery.

Web Slice shortcut button screenshot.

Figure 1: A shortcut button appears when the mouse pointer is moved over a Web Slice.

Each Web Slice that Internet Explorer detects is added as an entry to the Feed Discovery button Cc196992.webslice_discovery_button(en-us,VS.85).gif, located on the Command bar. Although a Web page can include up to 100 Web Slices, only 20 entries can appear at one time on the Feed Discovery button. You can customize which Web Slice appears at the top of the list by Setting the Default Web Slice.

Feed Discovery button screenshot.

Figure 2: The Feed Discovery button also detects Web Slices.

In-document discovery only applies to Web Slices in the topmost document. Discovery and subscription of Web Slices is disabled for documents within a frameset; however, publishers may provide their own interface for subscribing. For more information, see Customizing the User Experience.

If a user subscribes to a Web Slice, Internet Explorer adds it to the Favorites bar.

Update

To be notified of updates, a user must first add a Web Slice to the Favorites bar. Upon subscription, the Feed Download Engine will periodically update the Web Slice using information from from the Web site. If Internet Explorer detects a change, it will notify the user by making the text of the Web Slice button bold.

By default, Internet Explorer uses the suggested update interval specified by the Web Slice publisher in the ttl property element, if such element exists; otherwise, updates follow the default feed interval, normally every 24 hours. Users can either adjust the update frequency inside the Web Slice Properties dialog box, or update the cached Web Slice at any time by clicking the Refresh button Cc196992.webslice_refresh(en-us,VS.85).gif in the preview window.

Preview

To view a Web Slice, click its button on the Favorites bar. The preview window, also called the flyout, displays the locally cached content of the Web Slice, or an Alternative Display Source, if one has been defined by the publisher.

Note  When testing Web Slices on an intranet, you might need to disable Compatibility View to ensure that the Web Slice is rendered as it will appear on the Web. To do this, open the Page menu, click Compatibility View Settings, and clear the Display Intranet Sites in Compatibility View option button.

Navigation

To quickly access the full Web page, click the Open button Cc196992.webslice_open(en-us,VS.85).gif in the preview window. By default, Internet Explorer returns to where a particular Web Slice was discovered; the publisher can modify this behavior through the bookmark property.

The remainder of this article provides more details about these four features.

Discovering Web Slices

To detect a Web Slice on a Web page, Internet Explorer scans for elements that have certain class names and attributes.

The following properties are required:

hslice property

The hslice element describes a section of a Web page to which the browser can subscribe. The hslice element contains all of the required and optional properties of a Web Slice.

<div class="hslice" id="score"> 

In contrast to traditional style classes, Web Slice class names do not require a CSS rule in the style sheet. Using a space-delimited list, you can combine Web Slice class names with those of other classes.

<div class="hslice forecast" id="weather"> 

id property

In a manner similar to how a named anchor is used, the id attribute is used to identify the Web Slice in a URL. The id attribute must be present on the same element that uses the hslice class.

The id must be unique: if two or more Web Slices on a Web page have the same id value, Internet Explorer will only recognize the first one. If the id value changes, Internet Explorer will no longer be able to identify the Web Slice.

entry-title property

At least one child of hslice must use the entry-title class name. The value of this property maps to the Web Slice button text and the advertised name on the Feed Discovery button. Cc196992.webslice_discovery_button(en-us,VS.85).gif

<div class="hslice" id="main">    <h2 class="entry-title">Seattle Weather</h2>    ...</div> 

It is possible to combine multiple text spans to create a dynamic title that is updated with the Web Slice. The entry-title class can be applied to more than one element; Internet Explorer will concatenate the values in the order in which they appear in HTML.

In the following example, Internet Explorer displays "Seattle Weather 62°" when the Web Slice is updated.

<div class="hslice" id="main">    <h2 class="entry-title">Seattle Weather</h2>    <p>It is currently <span class="entry-title">62&deg;</span>.</p></div>  

Web Slice titles are limited to 128 characters.

Controlling Updates and Notification

To check for updates, Internet Explorer compares the Web Slice against the cached version. The Windows RSS Platform updates feeds and Web Slices on a regular basis: by default, every 24 hours. However, if the Web Slice includes a ttl property, the Feed Download Engine will use the specified value to adjust its update schedule. The frequency can also be adjusted in the Web Slice Properties dialog box.

The following Web Slice elements are used to control the duration and frequency of update checks:

ttl property

The time to live (TTL) value is the number of minutes during which a Web Slice is considered to be up to date. Unless the user has changed the update interval, the Feed Download Engine will consider this value to be the suggested update frequency. For more information, see Understanding the Feed Download Engine and FSS_SUGGESTED.

<p>Updates occur every <span class="ttl">60</span> minutes.</p>

Alternatively, an abbr object with a title attribute can be used to define the TTL. Using this method, the inner text of the object can be applied towards creating a user-friendly representation of time, as shown in the following example:

<p>Updates occur every <abbr class="ttl" title="60">hour</abbr>.</p> 

The minimum interval used by Internet Explorer to check for updates is 15 minutes.

endtime property

Expiration time for a Web Slice. The date and time is specified in the title attribute, leaving the inner text of the element for a user-friendly representation of time, if needed.

<abbr class="endtime" title="2008-07-25T17:30:00-07:00">(friendly date format)</abbr> 

Time values can be expressed using the ISO 8601 international standard for Date and Time on the Internet: Timestamps (RFC3339) World Wide Web link. The date-and-time string follows the common format: YYYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm].

  • YYYY - 4-digit year
  • MM - month, 01 through 12
  • DD - day, 01 through 31
  • "T" - date and time separator
  • hh - hour, 00 through 23
  • mm - minute, 00 through 59
  • ss - second, 00 through 59 (optional)
  • One of the following:
    • "Z" - UTC/GMT ("zero")
    • ("+"|"-")hh:mm - hour and minute of time zone offset

Note that the time zone offset is the actual time difference from UTC and does not automatically account for daylight saving time. For example, the time zone offset for Seattle is "-08:00" in the winter (Pacific Standard Time) and "-07:00" in the summer (Pacific Daylight Time). For best results, convert local time values to UTC.

You can also use the RFC822 date format (with 4-digit years) to include information about daylight saving time. The following encodes the same time as the preceding ISO 8601 example.

<abbr class="endtime" title="25 Jul 2008 17:30:00 PST">(friendly date format)</abbr>  

Alternative Update Source

When a user subscribes to a basic Web Slice, Internet Explorer returns to the Web page to check for updates.

Basic Web Slice graphic.

Figure 3: Basic Web Slice handles both discovery and update.

Returning to the original Web page to update a single Web Slice might be inefficient, especially if the Web page is large. For better control of network use, a Web Slice can declare an alternative source for updates.

a rel=feedurl

Any Web Slice link that specifies a rel attribute of feedurl is treated as an alternative update source. When an alternative source is present, Internet Explorer will subscribe to the alternative source and no longer use the original Web page content to update the Web Slice.

Alternative update source graphic.

Figure 4: Specifying an alternative source for Web Slice updates.

In the figure above, the two Web pages represent the same Web Slice. The user discovers and subscribes to the Web Slice on the original Web page, Basic.html. However, the source of the Web Slice indicates that an alternative update source should be used, as shown in the following example:

<div class="hslice" id="auction">    <span class="entry-title">Auction Item</span>    <a rel="feedurl" href="update.html#auction-update" style="display:none;"></a></div> 

Although an empty link is not visible to users, it creates an extra tab stop and will be read by screen readers. To provide a good user experience, it is best to suppress the display of alternative links, so that users do not accidentally navigate to these Web pages.

Update.html is a simplified Web page that represents just the basic Web Slice. Internet Explorer uses this Web page to get updates and notify users.

<div class="hslice" id="auction-update">    <h2 class="entry-title">Auction Item</h2>    <p class="entry-content">Current bid is $66</p></div> 

The alternative update source might also point to a short RSS or an Atom feed that has only one item. Note that an optional expiration time can be specified using the mon namespace and mon:endtime element, as shown in the following example:

<?xml version="1.0"?><rss version="2.0"    xmlns:mon="http://www.microsoft.com/schemas/rss/monitoring/2007">    <channel>        <title>Auction Item</title>        <link>http://www.example.com</link>        <ttl>15</ttl>        <mon:endtime>2008-12-06T01:00:00Z</mon:endtime>        <item>            <title>Nintendo DS System = $66.00</title>            <link>http://www.example.com/auction.aspx#slice</link>            <description> ... </description>        </item>    </channel></rss> 

Previewing in the Favorites Bar

The following property is optional but highly recommended.

entry-content property

This property defines that part of a Web Slice which Internet Explorer brings to the Favorites bar. When the Web Slice button is clicked, the entire entry-content element is displayed in the Web Slice preview window. The default width and height of the preview window are determined by the size of the container designated as entry-content. Like the entry-title property, a Web Slice can include more than one entry-content, and all elements are combined to create a single preview.

For security reasons, the Web Slice preview does not allow script or Microsoft ActiveX controls; consequently, HTML forms and buttons are not supported. Instead, to perform related actions, you can provide links that include URL parameters. (Navigation occurs within the currently selected tab.) If additional functionality is required, use an Alternative Display Source.

Applying Styles

The following style sources are used to create the Web Slice preview:

  • The inline styles of the entry-content property and its children
  • Style rules defined in the head of the original Web page
  • Imported and linked style sheets

Styles from parent elements are not inherited by the Web Slice preview. In the following example, the Web Slice preview does not display blue text, because the style is applied to the hslice instead of the entry-content element.

<div class="hslice" id="main" style="color:blue">    <h2 class="entry-title">Seattle Weather</h2>    <p class="entry-content">It is raining.</p></div> 

To affect the HTML preview, apply the style to the entry-content element itself:

<div class="hslice" id="main">    <h2 class="entry-title">Seattle Weather</h2>    <p class="entry-content" style="color:blue">It is raining.</p></div> 

Internet Explorer wraps the entry-content in a body element when rendering the preview. This guarantees that style rules applied to the body element of a Web page are also applied to the body of the Web Slice preview. To apply a body style that is not inherited by the preview, use a class name or id to differentiate the body of the original Web page; then, write specific style rules for that element. In the following example, the green background applies to the original Web page but not to the preview.

<style type="text/css">    .MyBody { background-color: green; }</style><body class="MyBody">    <div class="hslice" id="main">        <h2 class="entry-title">Seattle Weather</h2>        <p class="entry-content">It is raining.</p>    </div><body> 

The preceding style guidance only applies to Web Slices extracted from the main Web page. An Alternative Display Source has full control over the style of the Web Slice preview.

Alternative Display Source

Clicking a Web Slice button on the Favorites bar will generate a preview of the cached value of the entry-content element. Because the Windows RSS Platform is used for storage, active content such as script or ActiveX controls is removed. To host interactive Web content in a Web Slice preview, an alternative display source must be used.

Alternative display source graphic.

Figure 5: Specifying an alternative display source.

a rel=entry-content

The alternative display is specified by changing the entry-content element to a link that has the following attributes:

  • href: Location of the alternative display Web page.
  • rel: The value must be entry-content.
<div class="hslice" id="auction">    <span class="entry-title">Auction Item</span>    <a rel="entry-content" href="display.html" style="display:none;"></a></div> 

When a user opens the Web Slice preview window, it will navigate to Display.html; the cached copy of entry-content is not used. The alternative display source preview should be small enough to fit into a 320-by-240 (WH) space, on a 96-dots per inch (dpi) screen. The preview window does not automatically resize to the dimensions of the Web Slice, if a different size is used.

The following are not supported in an Alternative Display Source preview:

  • Dialog boxes and popups — Script alerts, HTML popups, and dialog boxes such as Print or Add a Favorite are all blocked. No windows of any kind can be launched from the Web Slice flyout.
  • First-time installation of ActiveX controls — The preview window does not display an information bar (gold bar), so the publisher needs to ensure that any ActiveX objects are enabled for the domain beforehand; otherwise, a broken control icon (red 'X') is displayed. The same restriction applies to downloads or anything else that might require user interaction with the information bar.
    Note  Alternative text inside the object tag is displayed if the ActiveX control is not installed. Publishers can use this text to provide download instructrions, for example.
  • Calls to window.external — There is no valid external object associated with the preview window.

When using an alternative display source, all hyperlinks in a Web Slice preview will navigate within the preview window. For links to open in the current tab, specify that they be opened in a new window, as shown in the following example:

<a href="gotosite.html" target="_blank">view full site</a>

For the server, consider using the no-cache HTTP header response for the Web page that acts as the Alternative Display Source. This will ensure that users previewing a Web Slice will see the most recent content.

Using Both Alternative Update and Display Source

It is also possible to combine alternative update with an alternative display.

Alternative display and update graphic.

Figure 6: Using both alternative update and display source.

For this scenario to work, the code for Basic.html only needs to include the alternative update source, as shown in the following example:

<div class="hslice" id="auction">    <span class="entry-title">Auction Item - Alternative Update</span>    <a rel="feedurl" href="update.html#auction-update" style="display:none;"></a></div> 

Update.html will then provide information about the alternative display source:

<div class="hslice" id="auction-update">    <h2 class="entry-title">Auction Item - Alternative Display</h2>    <div class="entry-content">Current bid is $66</div>    <a rel="entry-content" href="display.html" style="display:none;"></a></div>  

Navigating to a Different Web Page

When you click the Open button Cc196992.webslice_open(en-us,VS.85).gif on the Web Slice flyout, Internet Explorer normally navigates to the Web page where the Web Slice was first found or, alternatively, to the the Alternative Update Source if one was specified. The publisher can also modify this behavior by specifying another location altogether, using the bookmark property.

bookmark property

The bookmark property causes the Open button to navigate to the specified location when clicked. The following example opens Location.html.

<div class="hslice" id="auction">    <h2 class="entry-title">Auction Item</h2>    <a rel="bookmark" href="Location.html" style="display:none;"></a></div> 

Customizing the User Experience

The following advanced techniques help you customize how users interact with the Web Slices on your Web site.

Using the Web Slice Icon

Web Slice Icon (64x64)

The Web Slice icon is intended to provide a common visual cue that a Web site includes Web Slice functionality, which makes content from the Web site available for subscription. It must be used in accordance with the Web Slice Icon Guidelines. Developers can download .png and .gif renderings of the Web Slice icon in various sizes.

Setting the Default Web Slice

The Feed Discovery button Cc196992.webslice_discovery_button(en-us,VS.85).gif lists each Web Slice in the order it was parsed from the document by Internet Explorer. A publisher can choose which Web Slice is presented first, thus promoting one particular Web Slice to represent the whole Web page. For example, a bookseller might mark up a list of top sellers, as well as book reviews on the same Web page. It might make sense for the bookseller to promote the top-seller Web Slice as the default, because that facilitates the financial goals of the Web site whereas book reviews merely increase readership.

To specify the default Web Slice, add a link element in the head of the document:

<link     rel="default-slice"    type="application/x-hatom"     href="#auction" /> 

The link element requires the following attributes:

  • rel: The value must be default-slice.
  • type: The value must be application/x-hatom.
  • href: The #id of the Web Slice within the current document.

If the default Web Slice is not found within the current document, the link is ignored.

Disabling In-Document Discovery

To disable in-document Web Slice discovery for all Web pages, in the Internet Options dialog box, click the Content tab, then click the Settings button for feeds, and then clear the Turn on in page Web Slice discovery check box. Web developer can disable in-document discovery for the current Web page by adding the following meta element to the head of the document (all values are case-insensitive):

<meta name="slice" scheme="IE" content="off"/> 

If in-document discovery is disabled, the Feed Discovery button Cc196992.webslice_discovery_button(en-us,VS.85).gif will still indicate that the Web page includes a Web Slice, but the Web page must provide its own UI for discovering and installing it. To prompt users for installation, call window.external.AddToFavoritesBar().

Creating Dynamic Web Slices

Although Web Slices work well with static content that can be downloaded to be viewed at a later time, creating a Web Slice for content that changes in response to form data, Asynchronous JavaScript and XML (AJAX), or user interaction is more difficult. For example, a Web Slice might offer movie listings for all theaters within a few miles of the user's location. Or, a Web Slice might offer a list of newly released books that match a user's search criteria. To update Web Slices like these, Internet Explorer would have to recreate the conditions that generated them.

If you dynamically create or update a Web Slice after the document has loaded, you must provide an Alternative Update Source and/or Alternative Display Source to handle the preview. Pass URL parameters to the external resource so that it can generate a response based on the user's input. Finally, after updating or inserting a Web Slice, call window.external.ContentDiscoveryReset() to refresh the list of Web Slices and feeds on the Feed Discovery button. Cc196992.webslice_discovery_button(en-us,VS.85).gif

Authenticating the User

If your Web site requires user authentication, consider providing a way for the user to save login credentials in a cookie that can be used to identify the user after the browser is closed. Although user name and password settings are available in the Web Slice Properties dialog box, they are only used for HTTPS+Basic and HTTP/HTTPS+Digest authentication. Cookie-based authentication is more broadly supported, and will work regardless of the security settings of the Web Slice.

Note  HTTP-based authentication is not supported for Web Slices that use an alternative update and/or display source. For these scenarios, use cookie-based authentication.

Because some users will choose not to persist their personal information, your Web Slice should explain how to log into your site if authentication was unsuccessful. If you use an Alternative Update Source, then return a single item feed that contains this information in the item's description.

Related Topics


clock March 23, 2009 23:29 by author ethan
Updated: 14 April 2006

SQL Server 2005 Reporting Services offers two deployment models:

  • A standard deployment consists of a single report server instance that uses a local or remote SQL Server Database Engine to host the report server database. You can use SQL Server 2000 or SQL Server 2005 to host the report server database.
  • A scale-out deployment consists of multiple report servers that share a single report server database. The database can be installed on a remote SQL Server instance or locally with one of the report servers. The SQL Server instance that hosts the report server database can be part of a failover cluster.
    Scale-out deployment is supported in the following editions: Enterprise Edition, Developer Edition, and Evaluation Edition.

To simplify the deployment process, you can use checklists that describe the sequence of tasks that must be performed in order to complete a standard deployment. For more information, see Server Deployment Checklist. To learn more about scale-out deployment, see Configuring a Report Server Scale-Out Deployment. For more information about SQL Server 2005 licensing, see the SQL Server 2005 Licensing section on the How to Buy page of the SQL Server Microsoft Web site.

The following diagram shows the standard deployment model where the report server database is located on a remote server. You can also install it locally so that all server components are on the same computer.

Report server standard deployment

Primary considerations in choosing where to host the report server database are:

  • Processing resources
  • Disk space availability

Both the report server and the Database Engine compete for processing resources such as CPU time, memory, and disk access. Some report server operations are resource intensive. For example, a report server attempts to use all available memory for report rendering operations. Running the report server on a separate computer can reduce competition for processing resources.

Report server requirements for disk space provide a second reason for using a remote SQL Server Database Engine to store report server data. Although the footprint of a report server database may be small initially, disk space requirements can grow significantly at run time depending on how you run reports and the number of users accessing the report server. For more information, see Report Server Database Requirements.

You can deploy Reporting Services in a scale-out deployment to create a highly available and scalable report server installation. Configuring a scale-out deployment is also useful if you want to improve the performance of scheduled operations and subscription delivery. A report server scale-out deployment consists of multiple report servers that share a single report server database. Each report server in the deployment is referred to as a node. Nodes participate in the scale-out if the report server is configured to use the same report server database as another report server.

Report server nodes can be load balanced to support high volume reporting. You can also create the report server database on a failover cluster to support high availability requirements.

Unsupported cluster configurations include deploying a complete report server installation (that is, a report server and its database) on each node of a multi-node cluster. Specifically, you cannot deploy Reporting Services on a two-node cluster that consists of an active node and a passive node that is used when the active node fails.

Deploying on a Network Load Balanced (NLB) Cluster

You can run report server nodes on an NLB cluster. You can use a software or hardware solution to implement the NLB cluster. To run the report servers on an NLB cluster, you must use software and tools that support that functionality. Reporting Services does not provide server cluster or virtual server management, nor does it provide a way for you to define a virtual server name that provides a single point of entry to all of the nodes in a report server scale-out.

NLB is only necessary if you want to improve report server performance for on-demand reporting and interactive reports (such as drillthrough and matrix reports). Scheduled reports and subscription processing are faster on a scale-out deployment, but do not necessarily require an NLB cluster to get faster performance.

Deploying on a SQL Server Failover Cluster

SQL Server 2005 provides failover clustering support so that you can use multiple disks for one or more SQL Server instances. Failover clustering is supported only for the report server database; you cannot run the Report Server Windows service or Web service as part of a failover cluster.

To host a report server database on a SQL Server failover cluster, the cluster must already be installed and configured. You can then select the failover cluster as the server name when you create the report server database.

Although the Report Server Windows service and Web service cannot participate in a failover cluster, you can install Reporting Services on a computer that has a SQL Server failover cluster installed. The report server runs independently of the failover cluster. If you install a report server on a computer that is part of a SQL Server failover instance, you are not required to use the failover cluster for the report server database; you can use a different SQL Server instance to host the database.

Scale-out Deployment Diagram

The following diagram shows multiple report servers and report server databases deployed in separate server clusters.

Scale-out deployment diagram

Release History

14 April 2006

New content
  • Deploying on a SQL Server Failover Cluster
  • Deploying on a Network Load Balanced (NLB) Cluster
Changed content:
  • Clarified how Reporting Services uses cluster technologies.

clock March 12, 2009 13:26 by author ethan

Team Foundation Server (commonly abbreviated TFS) is a Microsoft offering for source control, data collection, reporting, and project tracking, and is intended for collaborative software development projects. It is available either as stand-alone software, or as the server side back end platform for Visual Studio Team System (VSTS).

Contents

Architecture


Team Foundation Server 3-tier architecture

Team Foundation Server works in a three-tier architecture: the client tier, the application tier and the data tier. The client tier is used for creating and managing projects and accessing the items that are stored and managed for a project. TFS does not include any user interface for this tier, rather it exposes web services which client applications can use to integrate TFS functionality with themselves. These web services are used by applications like Visual Studio Team System to use TFS as data storage back end or dedicated TFS management applications like the included Team Foundation Client. The web services are in the application layer. The application layer also includes a web portal and a document repository facilitated by Windows SharePoint Services. The web portal, called the Team Project Portal, acts as the central point of communication for projects managed by TFS. The document repository is used for both project items and the revisions tracked, as well as for aggregated data and generated reports. The data layer, essentially a SQL Server 2005 Standard Edition installation, provides the persistent data storage services for the document repository. The data tier and application tier can exist on different physical or virtual servers as well, provided they are running Windows Server 2003 or better. The data tier is not exposed to the client tier, only the application tier is.

Most activity in Team Foundation Server revolves around a "work item". Work items are a single unit of work which needs to be completed. In many respects they are similar to a "bug" item in bug tracking systems such as Bugzilla, in that a work item has fields to define Area, Iteration, Assignee, Reported By, a history, file attachments, and any number of other attributes. Work items themselves can be of several different types, such as a Bug, a Task, a Quality of Service Assessment, a Scenario, and so forth. The framework chosen for any given project in a Team Foundation Server defines what types of work items are available and what attributes each type of work item contains. These items are internally stored in XML format, and their schema can be customized to add other attributes to different items, or create new items on a per-project basis. Each work item has associated control policies which control who is allowed to access and/or change the items. It also includes notification and logging capabilities to log all the creation, access or change events (controlled by policies) and optionally notify certain users when certain events occur.

Any given Team Foundation Server contains one or more Team Projects, which consists of Visual Studio solutions, configuration files for Team Build and Team Load Test Agents, and a single SharePoint repository containing the pertinent documents for the project. A team project contains the user defined work items, source branches, and reports that are to be managed by TFS. TFS provides capabilities for managing these projects. When creating a project, a software development framework must be chosen, and cannot be changed afterwards. TFS includes several templates for the most common ones, including agile and formal methodologies. Choosing the framework populates the project with predefined items such as project roles and permissions, as well as other documents like project roadmap, document templates, and report definitions. These items can be then linked to work items as well. The status of certain elements of the project can be set to automatically update as work items are updated. TFS can integrate with Microsoft Excel for the creation and tracking of project items. The status of the items can be created and edited in Excel and the resulting spreadsheet document can be submitted to TFS, which will import the data into its project management feature. It can also integrate with Microsoft Project as the project management front end. The project items can also be exported as Excel documents for further analysis of the data.

TFS does not natively include a UI for performing these tasks. The capabilities are exposed via web services, which are then used by client applications like Visual Studio Team System IDE. However, TFS does include a Team Foundation Client (TFC) application which can be used to perform these tasks outside of the VSTS IDE. TFC also operates by invoking the same web services. TFS exposes a client API that can be used by client applications to access the functionality; the API itself manages proxies to communicate with the web services as well as client side caching to reduce latency. The WSDL descriptions of the web services are also provided, in case an application wants to directly call the web services. Visual Studio Team System Web Access, available as an add-on, also addresses this.

Source control

Team Foundation Server provides a source control repository, called Team Foundation Version Control (TFVC). Unlike Microsoft's previous source control offering, Visual SourceSafe (VSS), which relied on a file-based storage mechanism, Team Foundation source control stores all code, as well as a record of all changes and current check-outs in a SQL Server database. It supports features such as multiple simultaneous check-outs, conflict resolution, shelving and unshelving (shelving is a way to save a set of pending changes without committing them to source control, while still making them available to other users), branching and merging, and the ability to set security levels on any level of a source tree, alongside the most visible features of document versioning, locking, rollback, and atomic commits. The source control mechanism integrates with Team System's work items as well; when a check-in (termed "changeset") occurs, a developer can choose to have his code associated with one or more specific work items, to indicate that the check-in works towards solving specific issues. TFS administrators can enforce check-in policies that require Code Analysis requirements to have passed, as well as to enforce the association of check-ins with work items, or update the state of associated work items (like flagging a bug as "fixed" when checking in code that has the bug fixed). Individual versions of files can be assigned labels, and all files with the same label forms a release group. Unlike VSS, TFS source control repository does not support linking to an item from multiple places in the source folder structure, nor does it allow an item to be "pinned" (allow different references to the same file from different directories to point to different versions in a way that cannot be further edited).

TFVC supports branching at entire source code level as well as individual files and directory levels as well, with each branch being maintained individually. Multiple branches can be merged together, with the built in conflict resolution algorithm merging the changes between two branches of the same file where it can automatically reconcile the differences or flagging them for manual inspection if it cannot. Merge can be performed at "changeset" level as well, instead of the branch level. A successful merge is automatically checked out in the source control repository.

TFVC is not limited to source code only, but using the Windows SharePoint Services infrastructure it is built on, it provides a version-controlled library for other documents in the project as well, including project plans, requirements and feature analysis documents among others. All documents in the source controlled repository can be linked with any work item, and access to them can be controlled by defining access policies.

Reporting

Reporting is another major component of Team Foundation Server. Using the combined data for work items, changesets, and information provided by Team Build and results from Test Agents, a variety of reports can be created. For example, the rate of code change over time, lists of bugs that don't have test cases, regressions on previously passing tests, and so on. The reports are built using SQL Server Reporting Services, and can be exported in several different formats, including Excel, XML, PDF, and TIFF. Reports can be accessed both through Visual Studio, as well as through the web portal.

TFS uses its logging framework for automated data collection as well. The logging infrastructure monitors and logs information regarding access and use of the work items and source code, which can then be used by the analysis services to find trends. TFS includes a warehouse adapter in the data tier, which caches data from the underlying normalized database in a form suitable for analytics - in fact tables and dimension tables. SQL Server Analysis Services are then used to analyze this data, and reports created. Reports can span multiple work items including bug trends, code churning, build trends amongst others. Other analysis applications can also use the data directly pulled off the web services.

Project portal

On a per-project basis, TFS also creates a SharePoint site for the project, which can be used to track the progress of the project as well as to explore the work items and source controlled documents in the project, which are presented via the document library. It can also be used to view the reports generated. As a communication medium, the users associated with each other can use it to communicate amongst each other. The comments can be linked to various items as well. For each project, depending on the project properties, TFS uses a predefined template that defines the appearance of the site. These templates can be customized by the TFS administrators.

Shared services

TFS provides a handful of services that can be used for integration with other applications like IDEs and Project Management Systems. The linking service allows loosely coupled relationships to be created between items, for example a bug item and the source code revision(s) it applies to. The security services allows creation of security groups from users, to which access rights are then assigned. The classification service allows definition of policies to automatically classify items based on a multitude of criteria and the eventing service allows any component to raise an event and a notification action assigned to the event. The notification can be either using feed syndication or e-mail, or invoking other web service.

Team build

Team Build is a build server included with Team Foundation Server that can be installed on almost any machine that can support Visual Studio. Machines configured with Team Build can be used by developers to do a complete build of the most recent versions of the software contained in source control. Records of every build, whether it succeeds or fails, are kept so that developers and build administrators can keep track of the progress of the project. If a build succeeds, it analyses what changes have been made to in source control since the last successful build, and updates any work items to indicate that progress has been made. For example, if a tester filed a bug work-item against build #15, and a developer checked in a change just prior to build #18 being created, then the bug work-item would be updated to state that the bug has been fixed. A tester can then confirm or deny that the bug has been resolved.

Currently there are two versions of TeamBuild, each version matched to a TFS installation version. It is also highly customizable.

TFSBuild.proj is the file which drives a TeamBuild. The Team Build Language is synonymous with the msbuild language.

References

·         Team Foundation Server: At Work

·         Visual Studio 2005 Team System: Enterprise-Class Source Control

·         Using Source Code Control in Team Foundation

·         Team Foundation Server Fundamentals: A Look at the Capabilities and Architecture

·         Visual Studio Team System 2008 Web Access

See also

External links


clock February 23, 2009 09:02 by author ethan
1. 数据库和数据仓库的区别  http://www.kuqin.com/datawarehouse/20080505/7903.html

2. 百度百科——数据仓库 http://baike.baidu.com/view/19711.htm

3.  数据挖掘研究院 http://www.chinakdd.com/

4. Data Warehouse Project Management  http://www.information-management.com/issues/20060301/1048521-1.html


clock December 25, 2008 11:56 by author ethan

夏令时,又称日光节约时制Daylight Saving Time),是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为夏令时。一般在天亮早的夏季人为将时间提前一小时, 可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的国家具体规定不同。目前全世界有近110个国家每年要实行夏令 时。

 

据说最早建议使用夏时制的是本杰明·富兰克林,他在任美国驻法国大使期间,由于习惯于当时美国农村贵族的早睡早起生活,早上散步时看到法国人10 点才起床,夜生活过到深夜。于是他在1784年的一期《巴黎杂志》上发表了一篇文章,说法国人的生活习惯浪费了大好的阳光,建议法国人早睡早起,说每年可 以节约64百万磅蜡烛。但他当时并没有建议实行夏时制,因为当时根本还没有统一的时区划分。不过夏时制在英语里就是节约阳光时间的意思。

 

直到1907年,一位英国建筑师威廉·维莱特(William Willett)才正式向英国议会提出夏时制的设想,主要是为了节省能源和提供更多的时间用来训练士兵,但议会经过辩论没有采纳。

 

1916年,德国首先实行夏时制,英国因为怕德国会从中得到更大的效益,因此紧跟着也采取了夏时制,夏时制节约了约15%的煤气和电力,但为了弥 补损失,电力和煤气公司也将价格提高了15%。法国不久也效仿实行。1917年,俄罗斯第一次实行了夏令时,但直到1981年才成为一项经常性的制度。 1918年,参加了第一次世界大战的美国也实行了夏时制,但战后立即取消了。

 

1942年,第二次世界大战期间,美国又实行了夏时制,1945年战争结束后取消。1966年,美国重新实行夏时制。欧洲大部分国家从1976年,即第四次中东战争导致首次石油危机3年后(1973年)开始实行夏时制。

 

根据联合国欧洲经济委员会的建议,从1996年起夏令时的有效期推迟到10月份的最后一个星期日。

 

夏令时的影响:

http://www.microsoft.com/china/partner/bulletin/us_dst_notification_jan10.mspx

http://world.people.com.cn/GB/1031/5473289.html

http://www.sciencenet.cn/blog/user_content.aspx?id=16723


clock December 25, 2008 11:51 by author ethan

Reference:

http://www.mapsofworld.com/usa/thematic-maps/usa-time-zone.html

http://www.time.gov/

 

 

USA Time Zone Map represents the different time zones of the United States of America. USA is divided into six standard time zones. A seventh time zone of the US covers the US Virgin Island and Puerto Rico region. Most of the US States observe daylight saving time for maintaining uniformity of time in certain areas. All these aspects can be learned through a detailed study of United States Time Zone Map.

There are two federal time agencies operating in the US, the Department of Commerce Agency, the National Institute of Standards and Technology, and its military counterpart the United States Naval Observatory, which is a defense organization. These agencies provide accurate time of every region of the US.

The USA time zone map given on this page defines the time zone boundaries in the US, which are under the authority of Department of Transportation along with the Daylight Saving Time observances. From Time Zone in the United States chart and USA time zone clock, one can learn about the principal time zones in the US, which are as follows: EST or Eastern Standard Time Zone, which includes the states on Atlantic coast and eastern portion of Ohio valley; CST or Central Standard Time Zone that covers the Gulf coast, Tennessee Valley and Great Plains; MST or Mountain Standard Time Zone, which includes the Rocky Mountains; PST or Pacific Standard Time Zone that covers the states on the Pacific coast including Nevada. Time Zones in the non-contiguous states of US are Alaska Standard Time Zone or AKST and Hawaii-Aleutian Standard Time Zone or HAST. All of the Standard time zones are defined in terms of offsets from UTC or Coordinated Universal Time.


clock November 24, 2008 15:47 by author ethan

原文连接:http://groups.google.com/group/microsoft.public.outlook.general/browse_thread/thread/5feeca600765f307?pli=1

From the Outlook Help file:

"Appointments are activities that you schedule in your calendar that do not
involve inviting other people or reserving resources. You can schedule
recurring appointments, view your appointments by day, week, or month, and
set reminders for your appointments.
You can specify how the appointments in your calendar look to others by
designating the time of the appointment as busy, free, tentative, or out of
office. Also, others can give you permission to schedule or make changes to
appointments in their calendars."

"A meeting is an appointment to which you invite people or reserve resources
for. You can create and send meeting requests and reserve resources for
face-to-face meetings or for online meetings. When you create a meeting, you
identify the people to invite and the resources to reserve, and you pick a
meeting time. Responses to your meeting request appear in your Inbox. You
can also add people to an existing meeting or reschedule a meeting."

 


clock November 19, 2008 10:42 by author ethan

原文链接:http://www.javaeye.com/topic/241260 

 

在看js代码时,有时会看到关于quirks mode(怪异模式)和strict mode(严格格式)的东西,一直也没深究怎么回事,只是零零碎碎的有些概念,最近终于受不了这种似懂非懂的感觉,决定好好学习总结一下。

1、quirks mode和strict mode是浏览器解析css的两种模式,或者可以称之为解析方法。目前正在使用的浏览器这两种模式都支持 。

2、历史原因。

当早期的浏览器Netscape 4和Explorer 4对css进行解析时,并未遵守W3C标准,这时的解析方式就被我们称之为quirks mode(怪异模式),但随着W3C的标准越来越重要,众多的浏览器开始依照W3C标准解析CSS,仿照W3C标准解析CSS的模式我们叫做strict mode(严格模式).


3、后来的浏览器虽然支持strict mode,但众多浏览器并未放弃支持quirks mode。

一个重要的原因就是为了之前大量在quirks mode下开发的网页能够得到正确的显示。所以,这些支持两种模式的浏览器当拿到一张网页时,所做的一个前期工作就是判断采取何种方式进行解析(判断条件后面会说)。注:Explorer 5仍然只支持quirks mode



4、浏览器如何判断何用哪种方式解析CSS?

解决方案就是采用doctype声明,大多数浏览器采用下面的这些判断规则

  •     浏览器要使老旧的网页正常工作,但这部分网页是没有doctype声明的,所以浏览器对没有doctype声明的网页采用quirks mode解析。
  •     对于拥有doctype声明的网页,什么浏览器采用何种模式解析,这里有一张详细列表可参考:http://hsivonen.iki.fi/doctype/
  •     对于拥有doctype声明的网页,这里有几条简单的规则可用于判断:

对于那些浏览器不能识别的doctype声明,浏览器采用strict mode解析

 

在doctype声明中,没有使用DTD声明或者使用HTML4以下(不包括HTML4)的DTD声明时,基本所有的浏览器都是使用quirks mode呈现,其他的则使用strict mode解析。


可以这么说,在现有有doctype声明的网页,绝大多数是采用strict mode进行解析的。


在ie6中,如果在doctype声明前有一个xml声明(比如:<?xml version="1.0" encoding="iso-8859-1"?>),则采用quirks mode解析。这条规则在ie7中已经移除了。


5、mozilla提出了almost strict moede ,和strict mode的区别是:

img元素在strict中是inline的,而在almost strict mode中是block的。其实我们前面所说,在大多数浏览器,大多数doctype声明触发的是almost strict mode;


6、quirks mode和strict mode最大的不同就是提现在对盒模式的解释上 ,这也是我们在js里要注意的地方。


什么是盒模式? 这是针对块级元素说的,我这里只简单说一下(详情请查阅相关资料)。说白了就是把块级元素想像成一个装东西的盒子,而margin,padding,border,width这些css属性构成了盒模式。

 

而区别就是产生在width属性上:


strict mode中 :

width是内容宽度 ,也就是说,元素真正的宽度 = margin-left  +  border-left-width  +  padding-left  + width  +  padding-right  +  border-right-width  +  margin-right;

 

quirks mode中 :

width则是元素的实际宽度 ,内容宽度 = width  -  (margin-left  +  margin-right  +  padding-left  +  padding-right  +  border-left-width  +  border-right-width)


这里把盒模式相关的东西记录一下,备忘 !


·内联元素 ,例如<a>、<span>等,定义上下边界不会影响到行高(line-height),内联元素距离上一行元素的距离由行高决定,而不是填充或边界。 注2.  内联元素(display: inline) 内联元素不需要在新行内显示,而且也不强迫其后的元素换行,如a、em、span等都为内联元素。内联元素可以为任何其他元素的子元素。

·浮动元素(无论左或者右浮动)边界不压缩 ,且若浮动元素不声明宽度,则其宽度趋向于0,即压缩到其内容能承受的最小宽度。 

·如果盒中没有内容,则即使定义了宽度和高度都为100%,实际上只占0% ,因此不会被显示,此点在采取层布局的时候需特别注意。 

·边界值可为负,其显示效果各浏览器可能不相同 。 

·填充值不可为负 。 

·边框默认的样式(border-style)为不显示(none) 。


7、在quirks mode 和 strict mode中还有一个区别 ,但没经过验证,我只是发现有这个现象。

strict mode 中,

table的css属性font-size会继承父级元素的 ,也就是说,table中的字体大小会继承父级元素字体的大小。

quirks mode 中,

table的css属性font-size不会继承父级元素的 ,需要专门设置一下。也就是说,table中的字体大小不会继承父级元素字体的大小。


8、在js中如何判断当前浏览器正在以何种方式解析? 
    document对象有个属性compatMode ,它有两个值:
        BackCompat    对应quirks mode
        CSS1Compat    对应strict mode

9、我们在编写跨浏览器兼容性的js代码时,常用到的判断代码(来源于ext) :

Js代码 复制代码
  1. var ua = navigator.userAgent.toLowerCase();  
  2.        var client = {  
  3.        isStrict:   document.compatMode == 'CSS1Compat',  
  4.        isOpera:    ua.indexOf('opera') > -1,  
  5.        isIE:       ua.indexOf('msie') > -1,  
  6.        isIE7:      ua.indexOf('msie 7') > -1,  
  7.        isSafari:   /webkit|khtml/.test(ua),  
  8.        isWindows:  ua.indexOf('windows') != -1 || ua.indexOf('win32') != -1,  
  9.        isMac:      ua.indexOf('macintosh') != -1 || ua.indexOf('mac os x') != -1,  
  10.        isLinux:    ua.indexOf('linux') != -1  
  11.        };  
  12.        client.isBorderBox = client.isIE && !client.isStrict;  
  13.        client.isSafari3 = client.isSafari && !!(document.evaluate);  
  14.        client.isGecko = ua.indexOf('gecko') != -1 && !client.isSafari;  
  15.   
  16.        /** 
  17.         * You're not sill using IE6 are you? 
  18.         */  
  19.        var ltIE7 = client.isIE && !client.isIE7;  
 


10、废话 :我不知道现在的很多js框架为什么还对解析模式进行了判断。我认为这些框架肯定是给现在要开发的项目使用的,那应该都是strict mode才对呀?是不是因为还有很多人不习惯给页面加上doctype声明呢?

 

其它相关文章连接:

1. http://www.cnblogs.com/justinyoung/articles/900776.html  浏览器的模式问题 Quirks Mode vs Standards Mode

2. http://www.cnblogs.com/JustinYoung/articles/Quirks-mode.html  Quirks mode、Almost standards mode、Standards mode

 


clock November 7, 2008 10:41 by author ethan

www.javascriptkit.com

 It is a useful website for your routine web development. It introduces a lot of browser-compatible JavaScript scripts, which can help us to avoid many browser-compatibility problems.


clock October 29, 2008 01:09 by author ethan

Before .NET came into the world, the most popular component technologyon Windows platform is COM. During the time of COM, people havedeveloped a lot of COM components in their system. So though .NET is amuch better component technology, it is not economical and realistic to abandon all the existing componens and rewrite them using .NET.Microsoft has thought about it before the .NET was born. It provided the COM interoperability with .NET applications. In New Portal, we met thissituations. To reuse the old component and reduce the workload ofmaintenance, we must access the COM components of SchoolStream inmanaged code.

So if we understand the COMinteroperability with .NET, it will be helpful to improve ourdevelopment efficiency and quality. This article just introduces thisknowledge.

(You can read full of the article at http://www.codeproject.com/KB/COM/cominterop.aspx#getstarted

Contents

  • Introduction

    Part I : Using Classic COM Components from .NET Applications

  • Getting started
  • Generating metadata from the COM Type library
  • Binding to the COM component and invoking its methods from a .NET Application
  • Accessing other supported interfaces (QueryInterface) and Dynamic Type Discovery
  • Late Binding to COM Objects
  • Event Handling - Connection Points in Classic COM Vs Delegate Event Model in .NET
    • Connection Points in Classic COM
    • Creating an ATL COM Component that sources events
    • Event Handling using Delegates
    • Sinking Unmanaged COM Events in a .NET Application
  • Using COM Collections from .NET Applications
    • Creating a COM collection Component using ATL
    • Creating a COM collection Component using VB
    • Consuming COM Collections in a .NET Application
    • Enumerating elements in a .NET Collection
  • Mapping method parameter keywords in C# to IDL's Directional attributes
  • Reusing Classic COM Components in Managed code
    • Reuse Mechanisms in Classic COM
    • Reuse through Mixed-mode inheritance
    • Reuse through Mixed-mode containment
  • Understanding COM Threading models & Apartments from a .NET application's perspective

    Part II : Consuming .NET Components from COM aware Clients

  • Creating a .NET Component
    • Generating a typelibrary from the assembly & Registering the assembly
    • Consuming the component from a VB Client
    • Shedding more light on the COM Interop wizardry
    • Snooping in on the Typelibrary generated by TLBEXP/REGASM
    • How COM aware clients talk to .NET Components
  • Using attributes to tweak the generated typelibrary metadata
    • Altering the interface type
    • Altering the GUID and the ProgID
    • Hiding Public types from being exposed to COM
    • Altering the Marshaling behavior for types
  • Exception Handling - .NET Exceptions compared with COM HRESULTs
  • Handling events from .NET Components in Unmanaged Event Sinks
    • Creating a .NET Component that sources Events
    • Handling the events in a VB Client Application
  • Deploying assemblies hosting .NET components
  • Thread Affinity in .NET Components
  • Conclusion: COM's position in the über powerful .NET world
  • Quotable Quotes
  • Bibliography
  • Acknowledgements

Generating metadata from the COM Type library

Consuming COM Components from .NET applications

How the Connection Point Event Handling mechanism in Classic COM maps to the Delegate event handling mechanism in .NET

How the Connection Point Event Handling mechanism in Classic COM maps to the Delegate event handling mechanism in .NET

Consuming COM collections in .NET Applications

Consuming COM collections in .NET Applications

Under the hood: Accessing .NET Components from COM aware clients


Search

Calendar

<<  March 2010  >>
SuMoTuWeThFrSa
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Categories

Tags