Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 12, 2010 12:53:24

Viper
От:
Зарегистрирован: 2006-11-08
Сообщения: 137
Репутация: +  0  -
Профиль   Отправить e-mail  

Конфигурируемый импорт

Начну издалека, я сейчас пишу скрипт для тестирования сервера. Этот сервер общается с клиентом по специфическому протоколу, причём этого протокола есть уже несколько версий и вполне возможно будут добавляться ещё. Как правило следующая версия расширяет функционал предыдущей, но может и вносить некоторые изменения. Сам код тестов особо к версии протокола не привязан и по задумке должен выполнятся с той версией которую укажешь при старте. Сейчас все протоколы разнесены в отдельные модули и между собой никак не связаны, что жутко неудобно если нужно внести какие-то изменения. Импорт тоже реализован, мягко говоря, через одно место.

И вот тут как раз встаёт вопрос как это можно красиво реализовать?

Понимаю, что вопрос для вас несколько абстрактный, но хотелось бы услышать ваши советы и идеи по этому вопросу.



Офлайн

#2 Авг. 13, 2010 01:46:11

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Конфигурируемый импорт

А вы, собственно говоря, что спрашиваете? Ничего не понятно…



Офлайн

#3 Сен. 1, 2010 15:11:03

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Конфигурируемый импорт

На мой взгляд, в отдельном модуле нужно сделать класс (пусть это будет DataParser или Protocoller) с единым унифицированным программным интерфейсом для работы со всеми протоколами, и он же будет базовым классом для всех остальных протоколов, каждый из которых будет работать со своим ‘разрозненным’ протоколом, реализованный в модуле, который у вас уже есть. Сервер ваш будет работать именно с этим базовым классом не подозревая о существовании разных протоколов. Добавив новый протокол (унаследованный от базового - Protocoller), достаточно будет в одном для всех месте создать его экземпляр и сервер будет с ним работать как с родным.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version