Скрученный (асинхронный сервер) по сравнению с Django (или любая другая платформа)

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

Относительно Контроллеров и Представлений, я не вижу очевидного преимущества для разделения их для большинства основных проектов, хотя у Вас может быть конкретная потребность сделать так в конкретном приложении.

, Если Вы действительно принимаете решение сделать это, тогда необходимо будет сказать платформу, как найти контроллеры. Основной способ сделать это путем предоставления собственного ControllerFactory. Можно смотреть на исходный код для DefaultControllerFactory для понимания для того, как это сделано. При выделении подтипов в этом классе и переопределении GetControllerType (представляют controllerName в виде строки) метода может быть достаточно для выполнения то, что Вы спрашиваете.

, Как только Вы создали свой собственный ControllerFactory, Вы добавляете следующую строку к Application_Start в global.asax для сообщения платформы, где найти его:

ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory());

Обновление: Read это сообщение и сообщения, с которыми это связывается для большего количества информации, Видят также комментарий Phil Haack что сообщение о:

ControllerBuilder.Current.DefaultNamespaces.Add(
    "ExternalAssembly.Controllers");

..., который не является полным решением, но возможно достаточно хороший для простых случаев.

14
задан fanar 11 September 2009 в 17:09
поделиться

6 ответов

Асинхронные серверы поддерживают гораздо большее количество одновременных клиентских подключений. Более традиционные серверы сталкиваются с ограничениями потоков и процессов при обслуживании большого количества одновременных клиентов, особенно с долгоживущими соединениями. Асинхронные серверы также могут обеспечить лучшую производительность, поскольку они избегают накладных расходов, например, переключения контекста потока.

Помимо структуры Twisted , в стандартной библиотеке Python также есть строительные блоки асинхронного сервера: ранее asyncore и asynchat , но теперь также asyncio .

16
ответ дан 1 December 2019 в 06:43
поделиться

Во-первых, Django - это фреймворк для написания веб-приложений, поэтому он предоставляет ORM, шаблоны html, требует запуска http-сервера и т. Д. Twisted помогает писать код гораздо более низкого уровня, чем этот. Вы можете использовать twisted для написания http-сервера, на котором работает Django. Если вы используете Django, вы ограничены моделью http, при использовании twisted он может взаимодействовать по любому протоколу, который вам нравится, включая протоколы push. Итак, для вашего примера чата вы получаете сервер, который лучше масштабируется, так как он может отправлять комментарии людям, которые вошли в VS с помощью django, каждый клиент, который должен многократно опрашивать.

отредактировано для отражения комментариев: sos-skyl

19
ответ дан 1 December 2019 в 06:43
поделиться

Вы можете использовать WHIFF вместо любого :). Проверять, выписываться http://aaron.oirt.rutgers.edu/myapp/gfChat/nucularChatRoom который использует цикл опроса javascript с json для проверки для обновлений сервера. Вы могли бы сделать что-то подобное в Django, но я не знаю, как это сделать, потому что я отказался от Django.

Кстати: я надеюсь перенести эту демонстрацию на движок приложений Google как более полный сервис, когда моя жизнь немного успокаивается.

0
ответ дан 1 December 2019 в 06:43
поделиться

В twisted вы можете реализовывать собственные протоколы. Django определенно не может этого сделать.

3
ответ дан 1 December 2019 в 06:43
поделиться

If you'd like to look at some source for integrating Twisted and Django, have a look at Yardbird.

0
ответ дан 1 December 2019 в 06:43
поделиться

Самым большим преимуществом для меня является то, что Twisted дает мне приложение, которое имеет состояние и может взаимодействовать со многими разными клиентами, используя множество протоколов.

Для меня мой Twisted сервер обменивается данными с номером датчиков, установленных в домах и на предприятиях, которые контролируют потребление энергии. Он хранит данные и хранит последние данные и состояние в удобных классах Python в памяти. Запросы через xmlrpc от django получают это состояние и могут предоставлять пользователю последние данные. Мои материалы по Gridspy все еще находятся в разработке, поэтому настоящий сайт your.gridspy.co.nz находится на стадии предварительной альфа-версии.

Самое приятное то, что вам нужно на удивление мало кода, чтобы создать эффективный сервер. За вас проделан огромный объем работы.

5
ответ дан 1 December 2019 в 06:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: