I’m working on a multi-user phonebank software. I originally was planning to use Windows Communication Foundation. However, I’m using Visual Basic 2010 Express, and while I can create WCF clients, I can’t create a WCF server. As a college student, I don’t have the money for Visual Studio 2010 Professional, and while it’s available through the DreamSpark program, the licensing terms don’t allow for commercial use (I’m hoping to develop a low-cost phonebank system [this isn’t a homework assignment; I’m actually an accounting student]).
Are there any alternatives to WCF I can use? My proposed application design is as follows:
- Job created on server which has all the phone numbers to be called from a database (that is, the person creating the job, from a general database, can create a filtered list of phone numbers to be called). These numbers go into a queue.
- Clients connect to the server, logging in. As each client connects, it’s passed a number from the queue.
- As each caller finishes a call, they push a button indicating the response from that call. The client then sends an update message to the server, and is given the next number in the queue in response.
I’m speculating here, but couldn’t I use an SQL database for both the general list and the filtered list? That is, each list is in its own table, and have a variable pointing to the next database record in the filtered list. When a client requested a record, it would send the next record, and when the client updated a record, it could send a SQL statement making the appropriate change.
I’ve heard of transactions and caching, do I need to use them for an application of this type? If so, how would I?
I would then use System.Net or something like it for the connecting the client to the server, right?
Thanks for all your help!
You could build your server as a REST service. There are numerous frameworks out there for doing this (eg, ServiceStack, OpenRasta, Resources over MVC). It’s a very popular way to build services these days, as it has many benefits including simplicity, it’s easier to scale than many other types of services, and you can build cross-platform clients (including Windows Forms and HTML/Javascript, but literally anything with an HTTP client stack can be a client).