You are to create a multiple-project solution using C# and ASP.NET as a WCF Service Application.
You need not create anything other than the requirements for the forms. Do not worry about any styling CSS etc. We will handle that. Just handle the basic form creation and the code that will complete the task.
This project MUST BE COMPLETE BY DEC 10. We will only release the funds after we have verified and tested your work. You can see from our reputation that have successfully paid out on our previous projects.
You will be creating a simple chat application with the following criteria. You are allowed to complete this task by ONLY following this outline (you must follow the recommendations and requirements in this outline, you may work within these guidelines ONLY):
You will create a simple Web Service that operates as a small chat room. The Web Service should have features to post messages, to get messages, and to exchange messages that belong to a message thread. In this assignment, you may persist the data any way you would like. That is, you can just persist the information in memory. You can save messages to files. Or you can store messages in a simple database. It's up to you.
You will also create a client program that will test the service. The client program should test all of the service functions (methods).
Implementing the Service:
At a minimum, your service should support methods to do the following:
Clients should be able to send messages to the service. You can choose the exact format of the message structure, but I have given you a sample structure in the following section to get you started. Again, you might implement these structures differently based on how you persist the message data.
Clients should be able to request messages from the service. Clients should be able to receive only messages that they have not read or a history of messages for a particular thread. You might implemented different service methods to get this information or use overloaded methods.
As users (identified by e-mail) send messages, the e-mail of the sender should be recorded along with the e-mail of the receiver(s). Again, you can persist this data any way that you see fit.
The service should provide a list of users. This will likely be a complex type and require a [DataContract].
The service should provide a list of message threads. The system should operate such that each message belongs to a particular thread. Again, this data structure will likely be a complex type and require a [DataContract]
You might use a message structure similar to the following:
Message Sender (e-mail)
Message Destination(s) (e-mails). You might consider implementing this as a list using the generic List class. You might create a more complex data structure containing and indicator to depict whether the message has been read by a particular user. When the service receives a message, you might add it to a queue for each designated user.
Message thread identifier (integer)
Message contents (string)
You will also need a data structure to store message threads. I suggest a simple thread ID description, and possible creation timestamp. The .NET Queue structure should allow you to implement this easily.
Implementing a Test Client
Implement a client to test the service. The client should support the following.
Create a new message thread.
Get a list of message threads
Get a list of user e-mails.
Get pending messages for a thread.
Get all pending messages.
You should create the program such that it appears as a multi-project solution. One project should contain the service. Another project should contain the client that tests the service. The client that you develop should fully exercise all of the service methods. You need not deploy the service.