Nime Cloud
Nime Cloud

Reputation: 6389

Function call on server by multiple clients: Isolate each client calls

My project was standalone application then I decided to split it as client & server because I need powerful CPU usage and portability at the same time. Now multiple clients can connect to one server.

It was easy when 1 by 1 processing did the job. Now I need to call the same function & scope area again & again at the same time -via client requests-

Please can anyone give me some clue how should I handle these operations, I need to know how can I isolate clients' processes from each other at the server side? My communication is asynchronous, server receives a request and starts a new thread. I think I pass a parameter which one carries the client information, and another parameter as job id -to help client back, client may ask for multiple jobs and some jobs finish quicker than others-

Should I instantiate the class Process on each call? Can I use a static method, etc, any explanation will be of great help!

Below is the part of my code to need modification

class static readonly Data
{
    public variable listOfValues[]
}


class Process
{

    local variable bestValue



    function findBestValue(from, to)
    {
    ...
     if(processResult > bestValue) bestValue = processResult
    ...

    }

    ...

    for(i=0;i<10;i++) startThread(findBestValue(i*1000,i*1000+999));
...
}

EDIT: I think I have to instantiate a new Process class and call the function for each client and ignore the same client for same job since job is already running.

Upvotes: 0

Views: 532

Answers (2)

Sasha Reminnyi
Sasha Reminnyi

Reputation: 3532

You can wrap your communication with WCF service and configure it to be PerCall service (meaning each request will be processed separately from others).

So you'll clean up your buisness logic from syncronization stuff. That's the best way, because managing and creating threads is not difficult to implement, but it is difficult to implement correctly and optimized for resources consumption.

Upvotes: 2

Goran Genter
Goran Genter

Reputation: 159

Not getting into your application design, since you didn't talk much about it, I think that your problem is ideal for using WCF WebServices. You get client isolation by design because every request will start in it's own thread. You can create WCF host as standalone application/windows service.

Upvotes: 2

Related Questions