Проектирование сервера

Тема в разделе "WASM.NETWORKS", создана пользователем cupuyc, 24 окт 2009.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Вот задумался над реализацией сервера по архитектуре MVC.

    - на нижнем уровне есть класс, CServer (Model), он слушает порт. при возникновении нового подключения создаёт событие через интерфейс CServerEvents (View) - on_new_connection(..)

    - есть менеджер подключений CConnnectionManager. реагирует на новые подключения - создаёт CIoStream для общения с клитентом.

    проблема: хотелось бы абстрагировать всю эту затею от конкретных сокетов, но не получается. по идее, CServer должен только уведомлять о попытке подключения, а производить подключение должен CNetworkManager. Но сокеты, насколько я понимаю, реализовать такое не возволяют - функция accept создаёт сокет и, соответственно, соединение. Передавать менеджеру сокет для создания на его основе CIoStream как-то не очень хорошо (менеджер не должен быть привязан к конкретной реализации сервера).

    вобщем что-то у меня не складывается ясной картины. единственно, что пришло мне в голову - в методе on_new_connection() передавать описатель соединения (типа uint connection_descriptor) и для CIoStream сделать конструктор, который будет из описателя создавать объект. вобщем-то тоже не очень хорошо, т.к. хороший тон - кто выделил ресурсы - тот их и освобождает.