Пишу клиент-серверное приложение. Озадачился вопросом какой подход выбрать в передачи данных между клиентом и сервером. Например, должна быть та же функциональность авторизации/регистрации пользователя. То есть сервер принимает некоторые команды и отвечает на них.
Мои варианты:
- Использовать HttpWebRequest/HttpWebResponse
- Использовать TcpSocketListener/TcpSocketClient
Первый вариант:
+ более высокий абстракции (т.е. последний (прикладной) уровень модели OSI: проще писать код и передавать данные (есть headers, body ...)
- не знаю как стандартизировать данные (чтобы и клиент и сервер использовали одну и ту же договорённость обмена данными)
Второй вариант:
- более низкий уровень абстракции (транспортный уровень модели OSI): не так удобно писать код
+ можно стандартизировать обмен данными с помощью dll-файла.
То есть как я обычно делал договорённость между клиентом и сервером:
- Создал MyRequest.dll, в которой есть enum Command (команда, которую требует клиент от сервера) и byte[] data (сериализованные данные, которые нужны для выполнения команды) и MyResponse.dll.
- Подключил обе библиотеки и к клиенту, и к серверу.
- Знаю, что клиент/сервер работают по одному и тому же написанному мною "стандарту".
Что скажете? Или может стоит разобраться в SOAP (не особо понял принцип его работы)? Будут рад вашим предложениям.