What is Team Foundation Server?
Team Foundation Server is a product from Microsoft. It is an Application Lifecycle Management (ALM) platform for .NET Software Development Life Cycle. This platform is not restricted to only .NET applications. Team Foundation Server (TFS) is a combination of a reporting tool and version control tool.
Features of Team Foundation Server:
The reporting features supported by TFS are as follows:
- Source Code Control: Team Foundation Server is a Version Control System. It enables the team to manage all source files or artifacts for a project. It allows the developers to store the files in a centralized repository (database).
It helps to maintain different versions of source code. The files can be checked-in to the TFS. These files can be checked-out for working and can be stored as a local copy. The checked-out files will be locked to the other users (information would be sent that the files are being edited by some other user). Files can be checked-in and checked out as a project too.
- Work Item Tracking: A work item is a fundamental piece of work on a team project. For example Testing work item, Bug work item
This helps to track the status of the assigned work. For example: Who is assigned with the work? What is the work status? etc.
- Build Automation: TFS enables the team to create and manage product builds regularly. For example, a team may perform daily builds and upload them to a shared server. The build output can be a .exe file.
- Project Portal: Each team project has an associated project portal which is the Windows SharePoint Web site. The team members can use the project portal to store documents and find reports. The team members can also use other Windows SharePoint collaborative features like calendars and lists.
TFS Physical Architecture:
The physical architecture of TFS is as follows:
- Team Foundation Server:
It can be called the heart of the deployment. It exposes web services that are consumed by different types of clients. One of the clients is Team Explorer, others can be Microsoft Excel, .NET Applications, etc. It stores the entire information in a database.
- Team Foundation Server Build:
It is useful to automate the build of the projects on TFS. It has to be installed separately and should be configured with TFS.
- Team Foundation Server Proxy:
This is an optional component. It is used in a distributed team (onsite developers). For better performance of the remote developers, this team foundation server proxy has to be installed near to the remote developers.
TFS Technical Architecture:
The technical architecture of TFS is as follows:
- Team Foundation Data Tier:
It can be called the backbone of TFS where all the source control-related items and reports are stored.
- Team Foundation App Tier:
The data tier is abstracted by the App Tier called the TFS. Requests to this tier come via the Team Foundation Client Tier. The requests can come from a Team Explorer, Excel, or a project. The Client connects to TFS over HTTP or HTTPS. The app tier gets the data from the database. The app tier and the data tier can be on different machines.
- Build Machine:
It performs build services to generate the executable file or the deployable unit.
- Version Control Proxy:
It is required for remote developers. The check-out is done through this proxy. It caches the checked-out item and is used only for check-out. Check-in happens only on the TFS.
- Report Client:
It uses the SSRS of the database to generate reports.
Using TFS for .NET Applications:
When TFS is used for .NET applications, the following steps are involved:
- Creation of a team project collection – This is done by the admin.
- Creation of a team project – This is also done by the admin.
- Establishing a Connection to the TFS.
- Managing the project security by providing appropriate access.
- Addition of the .NET project to the TFS.
- Managing version control during the various stages of coding.
- Work item tracking.
- Working with the Team Project Portal whenever required.
- Building the project whenever required and scheduling the same.
- Reporting the status of the project.
Creating a Team Project Collection (TPC): The projects are grouped together as part of Team Project Collections (TPC). TPC is a container for multiple team projects. Every collection can be stored on different servers and on different databases. Also, under a TPC we can have multiple team projects.
Creating a Team project: A team project is a container to store application data like tools, artifacts, etc. A team project can store a website, WCF services, console application, etc. It is the virtual collection of artifacts relevant to a software application on which a team is working. It eliminates the problem of having access to multiple artifacts which are not relevant to the team project.
Demo: Connection to TFS
In order to connect to the TFS, following these demo steps:
Step 1: Open Visual Studio.
Step 2: Go to the Team menu and click on “Manage Connections”.
Step 3: From the Team Explorer-Connect window, click on Manage Connections and choose Connect to Project. A “Connect to Project” dialog box will pop up as shown below.
Step 4: From the dialog box, choose Add TFS Server.
Step 5: Enter the server name “mysetatfs01” under Enter name URL and click on Add.
Step 6: Expand mysetatfs01 and select the appropriate Team project in the expanded view. Click on the “Connect” button.
Step 7: After successfully connecting to the TFS, you should be able to see Team Explorer – Home window as shown below. From the window, choose to Configure your workspace.
Step 8: After clicking on Configure your workspace, you will be asked to choose a location to which you want to map. Select an appropriate location where you have access to save files. Click on Map&Get.
Mapping and getting the project from TFS might take time to complete. Please be patient till the operation completes.
- Managing Project Security: Managing project security involves configuring permissions on the project and adding users into a specific team project as contributors.
- Managing Version Control: Version control can be achieved in TFS as changes can be audited easily. You can also identify which user has checked in a changeset. You can also track the comments of each user who has checked in.
- Work Item Tracking: Work item tracking in TFS describes every activity that a person needs to do. It is a unit of work assigned to each team member. For example, a bug or a task depending on the type of project.
- This helps the members to assign work in a structured fashion (instead of sending emails about the work allocated). An email would also be sent to the assigned person if SMTP is configured to TFS. Details of the work assigned can also be seen in TFS. Work items stored in an Excel sheet can also be imported into TFS. Work item tracking can also be seen in graphical formats using reports.
- Builds: TFS can be used to perform a building activity on the build server to provide output like a .exe file. You have to create a build definition which is a one-time activity. Build definition is used to set the way or time at which the build should take place. Build definitions can be:
- Continuous integration is built on each check-in.
- Rolling builds accumulate the check-ins until the previous build completes.
- Schedule select the days of the week and the time at which the build should take place automatically. After the build, the built data is sent to a location called the drop location. If a manual build is set, ‘Queue build’ is the option used to start the next build.
- Reports: Reports are based on SSRS (SQL Server Reporting Services) and can be generated for work item tracking, builds, etc.