В настоящее время я просматриваю код, который в основном считывает данные по строке из файла и вызывает соответствующий метод для клиента WCF для каждой строки. Моя проблема с кодом является то, что новый клиент создается для каждой операции, а именно:Вызов нескольких операций с клиентом WCF
function CallSomeOp(line)
{
using (var client = new Client()
{
client.SomeOp(line);
}
}
Это кажется, что клиент будет закрыть соединение и открыть новый для каждой строки в файле, который, кажется, как большой накладные расходы , То, что я хотел бы сделать, это переместить создание клиента вне функции и в инициализации, так что несколько операций называются на одного клиента, то есть:
using (var client = new Client())
{
for(var line in lines)
{
CallSomeOp(line, client);
}
}
Но я не уверен, если это нормально или не. Есть ли какая-то проблема с вызовом нескольких операций на клиенте, то есть в конечном итоге у меня закончится память или что-то еще?
Спасибо за ответ, я сделал эксперимент с профилировщиком и с помощью одного экземпляра сократил время работы с 58 секунд до 25. Я не знаю, что много о WCF, но это похоже на быструю победу. – avid
Можете ли вы опубликовать код вашего сервиса? Что оно делает? Помните о том, что один экземпляр может привести к проблемам масштабирования со многими вызовами. – diggingforfire
Я не могу опубликовать код сервиса, и я не совсем уверен, что он делает! Он должен просто взять некоторые данные и поместить их где-нибудь. Заявитель, использующий клиент, является однопоточным. – avid