Как разделить один и тот же экземпляр объекта (синглтон) между процессами в С#?

Возможный дубликат:
Как поделиться объекты между процессами в .Net?

Я могу сделать это для одного процесса (один .exe), но как я могу сделать это между процессами?


person Community    schedule 27.08.2009    source источник
comment
Я думаю, вы ищете - http://stackoverflow.com/questions/763821/how-to-share-objects-across-processes-in-net   -  person kv-prajapati    schedule 27.08.2009
comment
Я думаю, вы ищете - stackoverflow.com/questions/763821/   -  person    schedule 20.09.2011


Ответы (3)


Это можно сделать с помощью удаленного взаимодействия. Ваш класс должен наследовать от MarshalByRefObject, что даст ваш клиенты прокси к реальному объекту.

person Brian Rasmussen    schedule 27.08.2009

Вам нужно будет использовать какую-то распределенную хеш-таблицу. или механизм кэширования.

По возможности старайтесь избегать таких вещей, как удаленное взаимодействие, потому что вызовы удаленного объекта могут стать дорогостоящими и начать сильно снижать производительность. Если вы используете удаленное взаимодействие .net, внимательно изучите интерфейс удаленного объекта. Вы должны передавать крупнозернистые данные через границу процесса, поэтому избегайте болтливых интерфейсов с большим количеством вызовов с небольшими битами данных.

Каковы требования класса, который вы хотите использовать как синглтон? Там может быть совершенно другой взгляд на это. В настоящее время считается, что синглтоны нежелательны, потому что их трудно надежно тестировать, поэтому можно было бы избежать концепции синглтона.

person Neil Barnwell    schedule 27.08.2009

с помощью удаленного взаимодействия .Net (см. ответы выше или по этому URL-адресу: http://msdn.microsoft.com/en-us/library/kwdt6w2k%28VS.71%29.aspx)

person Dewfy    schedule 27.08.2009
comment
Это не дает ответа на вопрос. Чтобы подвергнуть критике или запросить разъяснения у автора, оставьте комментарий под его публикацией. - person Bryan Crosby; 28.08.2012
comment
@BryanCrosby спасибо за заметки, просто поместите туда правильную ссылку - person Dewfy; 28.08.2012