Добрый вечер! Требуется написать сервер-клиентское приложение на C#. В одном exe нужно что бы было клиент и сервер. Написал асинхронные классы сервера и клиента, с этим проблем не было. Следовательно хочу создать класс ClientServer (Singleton) что бы на форме не путалось два объекта сервера и клиента. Сделал два интерфейса, поскольку функционал у сервера и клиента одинаков, первый интерфейс это запуск, отправка данных, второй интерфейс - события в класса (обработка ошибок, событие подключения клиента/сервера, отключения). В каком направлении дальше копать, что бы код вышел более менее читабельный. Подскажите как разработать архитектуру? (Вся проблема, в том что в одной проге клиент и сервер, т.е пользователь может выбрать клиент (сервер становиться недотупный для него) или наоборот).
сделал интерфейс основных методов (запуск, отправка данных, остановка) и интерфейс событий (ошибка, сообщение, отключение, подключение). И есть третий интерфейс, который наследует эти два интерфейса. В классе, который являться Singliton наследую интерфейс основных методов, а полем является интерфейс который наследует интерфейсы методов и событий