Как Бы Вы Решили Такую ​​Проблему Совместимости?

Поскольку статья была написана еще в 2006 году, еще до выхода Windows Vista, Рэймонд, конечно же, уже дал ответ. Так что для чистоты эксперимента просьба не портить его в комментариях.

Привет всем, вот ваш шанс решить одну реальную проблему совместимости.

Ответа пока нет: жду, как вы решите эту проблему.

Это настоящая ошибка в трекере Windows Vista. Так, бета-тестер сообщил, что Проводник Windows не может показать более сотни файлов из сетевых папок, расположенных на серверах определенного производителя.

Ответственные группы изучили проблему и обнаружили, что сервер неправильно обрабатывает определенные типы запросов.

Несмотря на то, что сервер заявил, что поддерживает как «быстрые», так и «медленные» запросы, по «быстрому» запросу он вернул только первые 100 файлов из каталога, а затем выдал странный код ошибки.

С другой стороны, если Проводник был переведен в «медленный» режим, все работало хорошо.

(«Быстрые» запросы появились только в Windows Vista; Windows XP поддерживала только «медленные»).

Дополнительная информация: уже вышло обновление серверного ПО, исправляющее эту ошибку, но производитель продолжал поставлять старую версию драйвера.

Что бы вы сделали в такой ситуации? Вот несколько вариантов, выберите свой или предложите новый.



Нечего делать

Игнорируйте некорректную работу стороннего драйвера.

Люди, которым не повезло купить такое устройство, получат неполный список файлов.

Опубликуйте базу знаний с объяснением проблемы и направьте пользователей к поставщику для получения обновленного драйвера.

плюсы Операционная система остается «чистой», без каких-либо хаков совместимости.

Минусы Пользователи с этой проблемой могут даже не подозревать о ее существовании.

Даже если пользователь что-то заметит, маловероятно, что он будет знать, как выполнить поиск в базе знаний по названию поставщика (или даже дистрибьютора), чтобы узнать, нет ли с ней каких-либо проблем.

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

Если файловый сервер работает как NAS, пользователь, вероятно, даже не знает, что происходит внутри запечатанной пластиковой коробки.

Для обновления нужно будет дождаться, пока производитель выпустит новую прошивку, а до тех пор пользователю придется терпеть потерю данных.

Если сервер не находится под контролем пользователя, то ему придется попросить администратора обновить драйвер и надеяться, что администратор на это согласится.

Поскольку Windows XP не использует быстрые запросы и не имеет этой проблемы, пользователи будут считать это ошибкой в Windows Vista.

Автоматически диагностировать ошибочный драйвер и отображать диалоговое окно с предупреждением.

Проводник должен распознать этот странный код ошибки и отобразить диалоговое окно с сообщением: «Похоже, на сервере \\имя_сервера используется более старая версия драйвера XYZ, который не работает правильно с каталогами с большим количеством файлов.

Здесь показаны не все файлы.

Пожалуйста, обратитесь к администратору \\servername для обновления драйвера.

» И флажок «Больше не показывать сообщение».

Плюсы Пользователь будет уведомлен о том, что результат неполный.

Минусы Пользователь не сможет ничего сделать с этим неполным результатом.

Это будет типа «Ха-ха, ты проиграл!» Пользователи часто не знают, кто такой администратор сервера, и желание связаться с администратором обычно вызывает реакцию – «Ого, кто этоЭ» или даже «Это я!» И я понятия не имею, что означает это сообщение».

(Вспоминая домашний NAS) У администратора могут быть свои причины не обновлять драйвера на сервере (например, потому, что это нарушает гарантию), и вряд ли он будет рад тому, что пользователи постоянно сообщают ему содержание нового диалога.

А поскольку Windows XP не поддерживает «быстрые» запросы, пользователи сочтут это ошибкой в Windows Vista.

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

Explorer должен распознать этот странный код ошибки и сказать: «Хорошо, у этого сервера плохой драйвер.

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

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

Плюсы: Windows автоматически обнаруживает проблему и устраняет ее.

Минусы Первый список файлов с сервера все равно будет неверным.

Если вы регулярно посещаете 16 (скажем) серверов, то при посещении 17 первый выйдет из кеша, а в следующий раз снова вернет неправильный список.

Также можно было бы разработать механизм, который позволил бы сетевому администратору определить список «плохих» серверов.

А поскольку Windows XP не поддерживает быстрые запросы, пользователи сочтут это ошибкой Windows Vista.

Сделайте настройку в сетевом клиенте, которая включает «медленный» режим.

Добавьте в сетевой клиент настройку «Если кто-то спрашивает, поддерживает ли сервер быстрые запросы, всегда отвечайте «Нет», даже если сервер сказал «Да».

В этом случае ни одна из программ не будет пытаться использовать «быстрый» режим, все будут использовать только медленный.

Но, по крайней мере, это сработает. плюсы Если эта настройка включена, пользователь никогда не будет получать неверные данные.

Минусы Поскольку определение не автоматическое, то проблемы те же, что и в первом случае «Ничего не делать».

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

До этого оболочка будет выглядеть так, как будто это ошибка в Windows Vista. Серверы, которые работают нормально, также будут работать в медленном режиме, несмотря на правильную поддержку «быстрых» запросов.



Сделайте настройку в Проводнике, которая включает «медленный» режим.

Установите в проводнике настройку «Всегда использовать медленный режим, никогда не использовать быстрые запросы».

Запросы будут медленнее, но всегда будут работать.

Но это повлияет только на работу Проводника; другие программы, которые спрашивают: «Поддерживает ли сервер быстрые запросыЭ» получат соответствующий ответ, а при попытке использовать «быстрые» запросы получат все те же проблемы, которые Explorer уже решил.

плюсы Если эта настройка включена, пользователь никогда не будет получать неверные данные.

Минусы Плюс, как сказано в предыдущем пункте, у каждой программы будут свои настройки такого поведения.



Отключить быстрый режим по умолчанию

Прекратить поддержку быстрого режима в сетевом клиенте, так как он ненадежен; некоторые серверы поддерживают его неправильно.

Это заставит все программы использовать медленный режим.

Однако оставьте возможность включить его снова.

Плюсы: Все просто работает. Минусы: «Быстрый режим» вообще не мог быть разработан.

По умолчанию оно отключено, и почти никто не будет его включать, потому что все равно все работает. Люди будут обвинять Microsoft в мошенничестве, потому что клиенты работают в «медленном режиме», хотя серверы поддерживают «быстрый режим».

И, конечно же, продукты Microsoft будут уступать конкурентам, поддерживающим быстрый режим без каких-либо ограничений.

Будь креативным.

Если вы предлагаете свое решение, также составьте список плюсов и минусов.

Еще один очевидный вариант, не описанный Рэймондом в статье, но на который есть ответ в комментариях.

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

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

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

Я также сразу реагирую на комментарии типа «Microsoft необходимо открыть и полностью документировать свои протоколы, это их собственная вина».

Ошибка , о котором пишет Рэймонд, не имеет никакого отношения к правильному выполнению протокола.

Теги: #Windows #Samba #совместимость #Разработка для Windows

Вместе с данным постом часто просматривают: