Pull to refresh

Comments 8

Извините, я немного не в теме C#, но
Ситуация с .NET осложняется тем, что внутри процесса стартует JVM, потребляя немало ресурсов и внося дополнительные требования к окружению.


Скорость работы тонкого клиента всегда будет чуть ниже, так как он работает через посредника.


Это как? О какой тут скорости идёт речь? Тонкий клиент медленнее из-за сетевого взаимодействия? А как толстый клиент с JVM обшается? Это быстро?

Представим узлы кластера А и Б, толстый клиент К, тонкий клиент Т подключен к узлу А.


При попытке извлечь данные, находящиеся на узле Б, толстый клиент отправит запрос напрямую. Тонкий же работает только через узел А.


А как толстый клиент с JVM обшается? Это быстро?

Через JNI и указатели на unmanaged (offheap) память. Да, это намного быстрее сокета.

А нельзя ли «толстую» версию клиента через IKVM запустить? Насколько это будет стабильно и быстро?

У меня уже был опыт использования JMS через IKVM — работало нормально.
Добавлю, что типичный оверхед на JNI составляет несколько десятков наносекунд. Reverse JNI на момент замеров (JDK 7) был немного медленнее, чем прямой. В рамках распределенной системы, где типичный latency измеряется миллисекундами, оверхед JNI амортизируется практически в ноль.
Меня больше волнует не оверхед на JNI — а дополнительные требования к окружению.

Именно поэтому сделан тонкий клиент, который использует только чистый .NET и дополнительных требований не имеет.

Sign up to leave a comment.