Синглтон и клиент активированный объект (CAO), Remoitng - PullRequest
2 голосов
/ 06 июля 2010

Оба выполняют ту же операцию, что и

* MSDN 1004 *

  • Singleton: "" Объекты Single Call обслуживают один и только один входящий запрос .... "
  • CAO: «Объекты, активируемые клиентом (CAO), являются объектами на стороне сервера, которые активируются по запросу от клиента ....»

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

1 Ответ

3 голосов
/ 06 июля 2010

Вы неправильно прочитали строки. Вот определение из MSDN. Я выделяю (жирным шрифтом) некоторые различия между этими объектами.

  • Один звонок

    Объекты Single Call обслуживают один и только один запрос, поступающий в . не замужем Объекты Call полезны в сценариях где объекты должны сделать конечный объем работы. Один звонок объекты обычно не требуются хранить информацию о состоянии, и они не может содержать информацию о состоянии между вызовы метода . Тем не менее, один звонок объекты могут быть настроены в мода с балансировкой нагрузки.

  • Объекты-одиночки

    Объекты Singleton - это те объекты, которые обслуживают несколько клиентов. и, следовательно, обмениваться данными путем сохранения состояния информация между клиентом вызовы . Они полезны в случаях в котором данные должны быть разделены явно между клиентами, а также в которые накладные расходы на создание и Содержание объектов является существенным.

  • Объекты, активируемые клиентом (CAO)

    Объекты, активируемые клиентом (CAO), являются объектами на стороне сервера, которые активируется по запросу от клиент . Это способ активации сервера объекты очень похожи на классические COM Coclass активация. Когда клиент отправляет запрос на сервер объект с использованием оператора "новый", сообщение с запросом на активацию отправляется удаленное приложение. Сервер затем создает экземпляр запрошенный класс и возвращает ObjRef вернуться к клиентскому приложению, которое вызвал это. Затем создается прокси клиентская сторона, использующая ObjRef. вызовы метода клиента будут выполнены на прокси. Объекты, активируемые клиентом может хранить информацию о состоянии между вызов метода для своего конкретного клиента а не через другого клиента объекты . Каждый вызов "нового" возвращает прокси независимому экземпляр типа сервера.

Информация о состоянии - это некоторые данные, которые вы храните в переменных или свойствах объекта для обработки клиентского запроса.

Поскольку объект Single call создается, когда клиент запрашивает его выполнить некоторую работу, и уничтожается после того, как он выполнил работу, он не может содержать информацию о состоянии, поскольку каждый запрос создает новый объект (Он может загрузить и сохранить данные в источнике данных, чтобы он работал).

A Объект Singleton создается только один раз (может быть, при запуске сервера) и действует до тех пор, пока выполняется процесс сервера. Он может хранить информацию в переменных и свойствах для обработки клиентских запросов, поскольку каждый клиент работает с одним и тем же объектом и не уничтожается после вызова клиента.

Простой пример отображения различий между единичным вызовом и одноэлементным объектом - создание метода Increment () для увеличения переменной (целого числа) в объекте и записи переменной в консоль. Объект одиночного вызова всегда выводит одно и то же значение на консоль (1, если переменная начинается с 0), тогда как объект-одиночка всегда печатает увеличенное значение (1, 2, 3 и т. Д.) После каждого вызова.

...