Из того, что я знаю о WCF, я думаю, что это правильное решение для конкретной проблемы, с которой я столкнулся, но я хотел бы получить некоторую информацию по этому вопросу.
Описание проблемы:
Клиенты последовательно получают доступ к объектам домена из списка примерно раз в 1-10 минут (в среднем это 2 минуты), но никакие 2 клиента никогда не должны обращаться к одному и тому же объекту. Некоторые заказы должны быть сохранены в списке.
Пример использования:
Client X -> WCFService::GetNextObject() -> Fetch from DB, sort
<- return nextObject
Where X is [1,~200)
Список объектов - это, в основном, таблица БД, где каждый объект помечается с приоритетом. Все объекты с приоритетом 1 должны быть переданы следующим. Порядок оттуда зависит от уровня приоритета. Например. объекты приоритета 1 должны передаваться в хронологическом порядке на основе даты / времени для объекта, тогда как объекты приоритета 4 должны передаваться в алфавитном порядке на основе строкового значения объекта.
[Редактировать] Некоторые пояснения: существуют другие схемы сортировки для разных уровней приоритета, которые должны ссылаться на связанные записи в бесчисленных других таблицах - это кажется слишком сложным, но для этого есть обоснованный бизнес-пример. Аналогично, объекты добавляются и удаляются из этого списка потенциально очень часто (но в среднем редко). [/ Edit]
Я смотрю на использование WCF, чтобы люди из любого географического местоположения могли использовать его через LAN / WAN, и это обеспечит поддержание порядка и отсутствие двух одинаковых объектов nextObject. Правильно ли я считаю, что WCF - хороший выбор для этого?
Что меня интересует, так это состояние службы WCF? Или, лучше сказать: это без гражданства? Будет ли каждый клиентский доступ к сервису создавать новый логический экземпляр WCF? И если да, то как обычно достигается синхронизация / блокировка?
Следует отметить, что все остальное в компании разработано в стеке .NET, поэтому очевидно, что существует сходство с технологиями .NET. Это, однако, не обязательно в любом случае.