Purpose:
This project develops prototypes for a Remote Code Repository that will be developed as Project #4 using the analysis engine you developed in Project #2. The Remote Code Repository is charged with committing/pulling source code files to/from a remote server. It must do this for source code file sets that may reside on one or more directories in local or remote machines. This will require you to develop both server and client programs where the server may reside on a remote machine. The Remote Code Repository can be accessed only with valid credentials and supports two user roles: developer and administrator. As a developer, the user can upload a new set of files to the remote server and his files are analyzed for quality and stored for later use. Developers can see only the files that they own and those for which they are granted permission by the owner. A user with administrator role can see any directory that resides on the server. In this project we will be creating prototypes to support a Remote Code Repository. To implement that, we need a communication channel and Graphical User Interface (GUI) to support an easy to use mechanism for managing code from other locations, e.g., clients on the local network or somewhere else in the internet. The Remote Repository must support operations implemented in our Local Repository, but accessible from another machine, e.g.:- File managment
- Package ownership
- Checkin and Checkout
- Package browsing
Requirements:
Your Remote Code Repository Prototypes Project:- Shall be written in C#, using the .Net Framework. You may also use helper code provided in Project3Helpers.
- Shall use Visual Studio 2015, Community Edition available at no cost.
- Shall implement a message-passing communication channel using Windows Communication Foundation (WCF).
-
Shall define a Message class that provides:
- Source and Destination addresses
- Message type
- Author
- Time-Date
-
String body:
Expected to hold an XML string supplying information needed to execute a specific request.
- Shall define service contracts for sending messages and for uploading and downloading files.
- Shall provide simple test client and server, designed to show that the communication channel works as specified.
- Shall provide a Graphical User Interface with a set of tabbed views. Each view provides or displays information for one of the Repository activities, e.g., CheckIn, CheckOut, Browsing, and making queries about the stored package content.
- Shall provide, for each view, one or more packages that perform all of the processing necessary to send requests, receive query information, upload and download files.
- Shall use the Local Code Analyzer of Project #2 to test the GUI operations2.
- The GUI displays must show, unambiguously, that the GUI meets its requirements, as stated above.
What you need to know:
In order to successfully meet these requirements you will need to know:- The definition of the term package and have looked carefully at a few examples.
- How to implement WCF applications. As we will explain, you don't want to use the Visual Studio WCF Project wizard. Instead use the starter samples provided in Project #3 Helpers.
- How to implement WPF applications. You will find some of the demos in Project #3 Helpers will get you started quickly.