2 Part Project. Windows Service and Winforms Client.
Simple Windows Service to connect to a Local SQL Server.
Simple Winforms at for remote presentation of datachanges.
Encryption between the Two is required and simple security.
All items are documented in the project scope to a low level, not overly complex for someone who knows remoting/SQL/vb.net
The Applications will need to be written in VB.Net (Framework 3.0 or above) We are on VS2010
The Application will need to be compatible with Windows (XP and Above/2000 Svr and Above) x86 & x64
## Deliverables
The Application will Require 2 Parts. A Windows Service and a Winforms Application
For information only, this application will be connecting into the backend database of a kaseya server ([[login to view URL]][1]) however will be using normal SQL strings and no data will be written to this database.
Port Number needs to be able to be configured.
**A Windows Service**
The Windows Service Will Allow connecting to a SQL Database.
Upon Starting the Service it will read an encrypted Config File, and Check For Settings for Database Connection, Username/Password.
The Program will allow for a SQL Statement (Query Only) to be sent to the SQL Server and allow for a Data to Be Returned. This Data will be evaluated against a Current Dataset (in Memory). If Change of Data Is Detected it will be sent out to the Winforms Client (This Could Either Be Row Removed or Row Added, rows may not always come out of the Dataset in the Same Order).
The Client Can Also Request a History of Changes (as listed Below) or a Current DataSet to be returned. The Timer for the SQL Check will need to be in pulled from the Config File, but will default to Once Per Minute.
In the future the Service will allow for different requests to be sent through, so this availability needs to be factored in.
Information from the Service to the Winform Application will need to be encrypted. Multiple Winforms will connect to the Server Service at any given time.
A Local XML Database of MAC Addresses needs to be kept. When the Winforms Application connects it needs to pull the local machine's Mac Address and compare it to the allowed list as a way of restricting unauthorised users. If multiple Mac Addresses Exist, it compares all, to see if one is allowed.
**A WinForms Application**
The Winforms application will be a System Tray Application
Icon is to be able to to changed (In Code, not by end user)
It will have the Items on the Menu.
? Open
Open will open a Winform Page, with A Datagrid
An Example is Below
? History
Open will open a Winform Page, with A Datagrid
An Example is Below
? Refresh
Will Do A Manual Refresh of the Data
? Settings
Will open a Winforms Page for Configuration of the Client
An Example is Below
? Exit
On Double Clicking of the SysTray Icon, default action is to use the open form (option 1 in the Menu).
When the program is started it will read its configuration file, Based off the details in the configuration file, it will connect to the server and start watching for data changes
On Update from the Server Program, the Application will create a popup, simular to
<[login to view URL]>
(Happy if you incorporate this code)
The Popup will display a String that Can Be Sent to it (made up of the data sent from the remoting agent). Popup will remain up for period of 60 Seconds (Changeable in Settings), unless (a) user closes the popup or (b) the user clicks on the text which will take them to the "open" menu item above
The Program will also change the SysTray Icon to a different Icon, until the system tray icon is clicked on for the first time after the update, or the user closes or clicks on a current popup box. This is so that if the client was away from the computer, they are aware their was a popup. The Program Needs to Allow For Multiple PopUps to be displayed at the same time if required (one above the other and not over the top of each other).
**
**
** **
**Settings Option**
Will Contain Server URL Field (for connecting to the server, be aware this maybe a FQDN)
Will Contain Server Port Field
Will Contain a Popup Duration Field.
Will Contain a Save Button
Will contain a Manual Check for Updates Button for Updating the Application
** **
**Configuration File**
The Application will require a Configuration File.
This file will need to be Encrypted
This will keep the Server Location to connect to and other items through the Settings Section
**Updating**
Both the Service and Winform, need the availability of Checking a Website for Current Version Number. If Higher than the current running version, they need to be able to download the newer version and update themselves. Update Server Page and Download Link Can Be in the Configuration File (Encrypted Like the rest of the config File). In Code both will check for updates every 7 days.
**Open Form**
The DataGrid for display is.
| **offlineTime** | **Time Offline** | **machName** | **groupName** | **ConnectionGatewayIp** | **OsType** | **OsInfo** |
| 2011-01-15 19:49:14.000 | 6:04 | terminal | [login to view URL] | [login to view URL] | 2003 | Server Standard Edition Service Pack 2 Build 3790 |
| 2011-01-15 16:12:11.000 | 6:12 | sbserver | [login to view URL] | [login to view URL] | 2003 | Small Business Server Service Pack 2 Build 3790 |
Fields are actual field names, except "Time Offline" which is calculated from Time Offline to NOW()
Column Renaming in Code is required, just to make the table more readable
**History Form**
The DataGrid for display is.
| **offlineTime** | **Time Online** | **machName** | **groupName** | **ConnectionGatewayIp** | **OsType** | **OsInfo** |
| 2011-01-15 19:49:14.000 | 2011-01-15 19:49:14.000 | terminal | [login to view URL] | [login to view URL] | 2003 | Server Standard Edition Service Pack 2 Build 3790 |
| 2011-01-15 16:12:11.000 | 6:12 | sbserver | [login to view URL] | [login to view URL] | 2003 | Small Business Server Service Pack 2 Build 3790 |
History is not needed longer than the Server Application has been running (or 48 Hrs) whichever is greater.
Fields are actual field names, except "Time Online" Which is detected from when the server service saw the sql statement no longer report that server offline.
Column Renaming in Code is required, just to make the table more readable
** **
Sample Data is available Upon Request.
SQL String being sent to SQL Server, will contain fields that will not be used.