Здравствуйте Павел, вы писали:
П>Все это, конечно, понято, поэтому не очень интересно. Я думал, что есть какая-нибудь хитрость, позволяющая серверу сразу словить момент, когда отваливается клиент, без использования ручной обратной связи. Говорят у ДКОМа есть какой-то встроеный пинг. Может есть возможность настраивать его таймауты?
Тут —
http://msdn.microsoft.com/library/en-us/dndcom/html/msdn_dcomarch.asp , я нашел следующую фразу:
Existing implementations of DCOM use pingPeriod = 2 minutes and numPingsToTimeOut = 3. These values can not be changed ...так что не судьба.
П>Сегодня обнаружил, что при корректном завершении клиентского процесса, даже если он не закрыл ссылку, серверная прокся успевает сообщить серверу, что клиент помер. В этом случае рефкаунт на сервере декрементится как положено. Поэтому проблема забывчивых клиентов снимается. Проблема же больных клиентов а так же некачественных соединений до сих пор не решена. Если ее невозможно решить без ручного пинга, то просто непонятно о чем они там, в MS-е, думали, когда проектировали ДКОМ?
Есть мненеие, что MS DCOM не проектировала, а COM наращивал. А так как COM не проектировался для ненадежных сетевых соединений, то и DCOM получился хорошим, только для кластеров, где разрыв сети маловероятен ...а для настоящей сети с ним проблем, возможно больше чем со старыми, добрыми сокетами. Ну не зря же сам MS так сейчас любит SOAP, который, как я представляю должен накрыть идеи использования DCOM в Интеренет. Хотя, как я уже упомянул, для кластеров и интранетов возможно DCOM еще поработает.