Develop a multi-threaded service that will listen for incoming transactions on a user specified port number. The service needs to be multi-threaded because it could receive a HIGH volume of transactions and needs to be able to handle it with no degredation in speed.
The incoming transactions currently are NMEA strings, but we would like for the application to be written in such a way that its functionality (i.e. the different types of transactions that it can handle) can be extended via a standardized plug-in style interface. We would like the first such plug-in interface to be included in the application to both define the plug-in interface, the method of installation, and provide an example for future development. The FIRST plug-in should do nothing more than to write the NMEA strings to a log file. The application should also be able to handle MULTIPLE plug-ins running simultaneously based on the TYPE of incoming transaction. (i.e. if the transaction is an NMEA string run plug-in A, if the transaction is a TYPE2 string run plug-in B) This should be accomplished by defining some transaction identifier and tying that to the plug-in. NMEA strings, for example, begin with a specific identifier that can be used to identify the transaction. Additional transactions would have a similar indentifier that can be used to select the proper plug-in to call.
The service needs a method for the configuration settings to be changed (i.e. port number, defined plug-ins). Each plug-in also needs a method of setting its own configuration settings (in this case the path of the log file). The IDEAL method for obtaining configuration settings would be through a control panel applet, but would consider other options if proposed.
## Deliverables
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
## Platform
Must be written entirely in
_Visual Basic .NET_ (prefer under [login to view URL] 2003) using no third party components, add-in products, or code. Must be able to be installed under multiple version of Windows including (at a minimum) XP pro, 2000, and 2003. Should include a standard [login to view URL] installer to install the application and setup the service.