Сетевое программирование Java. Логика поверх протокола или свой протокол?
Занимаюсь разработкой сетевых приложений(почти всегда клиент-серверной архитектуры).
Являюсь самоучкой, поэтому знаю о том, что делаю, но теории не хватает.
Суть вопроса: Пересел с C# на Java и вновь задался вопросом: Стоит ли(и как) разрабатывать свой протокол(даже модификацию TCP\IP) для достижения целей или лучше обходиться построением доп. логики поверх протокола?
К примеру, на C# у меня есть клиент-серверное ядро с логикой поверх протокола, которая обеспечивает сохранность самого коннекта(детект коннекта, дисконнекта, реконнект, гарантия доставки всего сообщения(учет дефрагментации пакетов)), но всё это можно было бы вставить модификацией TCP\IP.