четверг, 26 февраля 2009 г.

Лучшие методы для апплетов

Это перевод Applet best practices. Автор: Ларри Остерман.

Первое и самое главное, что нужно сделать человеку, желающему написать апплет, - это остановиться и подумать, а нужен ли им апплет вообще?

Конечно же, ответ может быть и "да", но проблема в том, что намного чаще ответ будет "нет".

Если вы всё же решили, что у вас нет иного выхода, кроме как написать апплет, то вы ещё должны убедиться, что ваш апплет не противоречит ожиданиям пользователя. Сделать это вы можете, следуя следующим нехитрым правилам (можно придумать и другие, но для начала вполне сойдут и эти).

  1. Убедитесь, что у ваших клиентов есть способ выключить вашу функциональность. Если ваш апплет является службой или задачей Планировщика, то тут уже сама ОС предоставляет способ для включения и выключения вашей задачи, в противном случае, вы должны сами предоставить такую возможность. И убедитесь, что вы на самом деле отключаете свою функциональность, когда пользователь выключает ваш значок в области уведомлений, а не просто скрываете значок.
  2. Уменьшайте число процессов. Комбинируйте функциональность в один процесс, где это только возможно. Уменьшайте число потоков и используемых DLL. Уменьшайте размер стека ваших потоков до абсолютного минимума.
  3. Windows является много-пользовательской системой. Это означает, что весьма велика вероятность, что ваш апплет будет использоваться в нескольких учётных записях одновременно - на моей машине на кухне у нас постоянно залогинено четыре пользователя одновременно.
  4. Windows является много-пользовательской системой. Это означает, что запускать пользовательский интерфейс из службы - крайне плохая идея - это будет работать только для первого вошедшего в систему пользователя (и не будет работать вовсе в Vista). Вместо этого, используйте COM или Планировщик для запуска своего приложения под текущим пользователем (а ещё лучше - сделайте GUI приложение для общения со своей службой).
  5. Если у вашего приложения есть возможность авто-обновления (что, ИМХО, весьма и весьма неплохо), то избегайте постоянной работы обновлялки. Вместо этого лучше встройте обновлялку в своё приложение, а если это невозможно - то используйте Планировщик для запуска обновлялки раз в месяц (или раз в неделю, да не важно - выберите любую частоту). Ну и не забудьте дать клиенту возможность указать, хочет ли он автоматически скачивать обновления или только после подтверждения обновления пользователем.
  6. При загрузке данных через интернет - используйте BITS. Тогда ваш трафик не будет мешать основному трафику пользователя. Это справедливо для всех апплетов, а не только для обновлялок.
  7. Если вы работаете на Vista, используйте возможности Vista по управлению приоритетами. Уменьшайте приоритет процессора и ввода-вывода своих потоков до фонового - таким образом, ваш апплет не будет мешать пользователю. Это в особенности справедливо для всяких помощников поиска - у них есть способность серьёзно препятствовать работе пользователя, пока они активны.
  8. Значки в системной области уведомлений должны скрываться, если им нечего сказать пользователю. Да, это нормально, когда менеджер задач показывает график нагрузки процессора или часы отображают текущее время, но если у вас статичный значок - то зачем его показывать (да, за исключением случая, когда иногда пользователи хотят этого)?
  9. Если ваш апплет - служба, то используя отложенный запуск, вы не повлияете на время загрузки системы.

В любом случае, вот вам начало списка правил. Я мог что-нибудь и упустить, поэтому я буду обновлять список, если я (или вы) придумаю что-то ещё.

Завтра: что я лично думаю о говно-софте (craplets)?

Комментариев нет:

Отправить комментарий

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

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