Вызов функции на сервере несколькими клиентами: изолировать вызовы каждого клиента - PullRequest
0 голосов
/ 24 марта 2011

Мой проект был автономным приложением, тогда я решил разделить его на клиент и сервер, потому что мне нужно мощное использование процессора и портативность одновременно.Теперь несколько клиентов могут подключаться к одному серверу.

Было легко, когда обработка 1 на 1 выполнялась.Теперь мне нужно снова и снова вызывать одну и ту же функцию и область действия одновременно - через клиентские запросы -

Пожалуйста, кто-нибудь может подсказать, как мне выполнять эти операции, мне нужно знать, как я могуизолировать процессы клиентов друг от друга на стороне сервера?Мое общение асинхронное, сервер получает запрос и запускает новый поток.Я думаю, что передаю параметр, в котором передается информация о клиенте, а другой параметр в качестве идентификатора задания - чтобы помочь клиенту, клиент может запросить несколько заданий, и некоторые задания завершаются быстрее, чем другие-

Должен ли я создать экземпляр классаПроцесс на каждый звонок?Могу ли я использовать статический метод и т. Д., Любое объяснение будет очень полезно!

Ниже приведена часть моего кода, требующая модификации

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));
...
}

РЕДАКТИРОВАТЬ: я думаю, что янеобходимо создать новый класс Process и вызвать функцию для каждого клиента и игнорировать одного и того же клиента для той же работы, так как работа уже выполняется.

Ответы [ 2 ]

2 голосов
/ 24 марта 2011

Вы можете обернуть ваше сообщение с помощью службы WCF и настроить его на обслуживание PerCall (то есть каждый запрос будет обрабатываться отдельно от других).

Таким образом, вы очистите свою бизнес-логикуСинхронизация вещей.Это лучший способ, потому что управление и создание потоков не сложно реализовать, но сложно реализовать правильно и оптимизировать для потребления ресурсов.

2 голосов
/ 24 марта 2011

Не вдаваясь в дизайн вашего приложения, так как вы мало о нем говорили, я думаю, что ваша проблема идеально подходит для использования WCF WebServices.Вы получаете изоляцию клиента в соответствии с дизайном, потому что каждый запрос будет запускаться в своем собственном потоке.Вы можете создать хост WCF как отдельную службу приложений / Windows.

...