Помогите мне выбрать управление экземплярами в сервисе WCF - PullRequest
2 голосов
/ 12 октября 2010

Мой scenerio такой:

На сервере есть приложение, которое предоставляет COM-объект, позволяющий программно взаимодействовать с этим приложением.Однако я могу подключиться только один раз через COM из-за лицензионных ограничений.Итак, после инициализации COM-объект вернет мне более указанный ConnectionObject.

Мне нужен совет, какую модель управления я бы выбрал для моей службы, которая будет взаимодействовать с ConnectionObject:

Per-Call Service:

У меня есть два варианта:

  1. Я могу войти в систему через COM, выполнить операцию и выйти из системы, освободив соединение.Но этот процесс регистрации занимает немного времени.

  2. Я мог бы создать какой-то одноэлементный класс, который мог бы хранить ссылку на ConnectionObject.Проблема в том, что я не знаю, как совместно использовать один и тот же экземпляр объекта через разные экземпляры службы?Возможно ли это?

Служба Singleton:

Проблема совместного использования ConnectionObject не существует.Объект будет создан в начале жизни службы и освобожден, когда служба будет закрыта.Однако я читал, что использование такого рода услуг не рекомендуется.

Спасибо за любые советы.

1 Ответ

1 голос
/ 12 октября 2010

Учитывая ваши требования к объекту COM и длительный процесс входа в систему и выхода из нее, я бы выбрал сервис singleton. Мы постоянно используем такие сервисы WCF (в том числе и с устаревшими COM-объектами).

Вы можете добавить следующий атрибут в определение класса вашей службы WCF, чтобы получить поведение:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] 
public class MyService : IMyServiceContract
{
    [OperationBehavior]
    public void MyServiceCall ()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...