Я совершенно не знаком с WCF. Я был уверен, что это будет работать как обычные веб-сервисы, и я также уверен, что тоже делаю это неправильно, но теперь я хочу убедиться, что делаю это правильно.
Приложение ASP.Net подключается к службе WCF через Интернет. Я выполнил базовую безопасность и использовал SSL. Он работает, но медленнее, чем когда у нас были регулярные веб-сервисы. Возвращаемые данные в основном такие же, как с обычной веб-службой.
Когда я использовал обычную веб-службу, в любое время, когда мне нужно было получать данные, я бы создал новый объект службы и вызвал функцию для необходимых мне данных. Казалось, что это работает нормально, но, как я мог себе представить, это не лучший способ сделать это, особенно если одновременно подключались тысячи пользователей. Поэтому, когда я конвертировал в WCF, я решил оставить одного клиента открытым и просто использовать его для всех, подключающихся к сайту. Я поместил его в кеш, и когда кеш удалил объект, у меня была функция обратного вызова для его удаления.
Теперь я даже не думал об этом до тех пор, пока не изменил все это, что это может создать проблему для подключения нескольких людей. Если человек A запрашивает данные, человеку B необходимо дождаться, когда это закончится, прежде чем их данные будут извлечены через службу.
Итак, я изменил его на сеанс. Я либо реализовал это неправильно, либо просто обернулся, так как он вообще не работал. Клиент будет тайм-аут, причинить ошибку или просто не работать. Я изменил его обратно на кеширование и теперь работает нормально (за исключением медленных).
Что такое "лучшая практика" для этого сценария? Я создаю клиент "на лету", когда это необходимо, создайте один сеанс (и выясните, что я сделал не так), или сохраните его как есть и используйте метод кэширования одного клиента?