Помимо общей иллюстрации крупных приложений CGI примеры Py- MailGUI и PyMailCGI были выбраны для этой книги, чтобы подчеркнуть некоторые компромиссы, встречающиеся при разработке веб-приложений. PyMailGUI и PyMailCGI выполняют примерно одинаковые функции, но в корне отличны по реализации:
PyMailGUI
Это традиционное «настольное» приложение с интерфейсом пользователя: оно целиком выполняется на локальном компьютере, для реализации пользовательского интерфейса вызывает функции библиотеки графического интерфейса, выполняемой в том же процессе, и взаимодействует с Интернетом через сокеты только при необходимости (например, для загрузки или отправки почты по требованию). Запросы пользователя немедленно направляются методам-обработчикам, выполняемым локально, а между запросами информация о состоянии автоматически сохраняется в совместно используемых переменных. Как уже говорилось, благодаря тому, что между событиями данные сохраняются в памяти, программа PyMailGUI способна сохранять сообщения в кэше — она загружает заголовки и выбранные сообщения только один раз, а при последующих операциях загружаются только заголовки вновь прибывших сообщений. Она обладает достаточным объемом информации для проверки синхронизации с почтовым ящиком на сервере. При выполнении удалений PyMailGUI может просто обновить в памяти кэш загруженных заголовков без необходимости повторно загружать весь список. Кроме того, благодаря тому, что программа PyMailGUI выполняется как единый процесс на локальном компьютере, она может использовать такие механизмы, как потоки выполнения, чтобы обеспечить возможность одновременного выполнения нескольких операций передачи почты (вы можете одновременно отправлять и загружать сообщения) и в ней проще реализовать поддержку дополнительных функциональных возможностей, таких как сохранение и просмотр файлов с почтой.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011