Что это взяло бы для создания господствующей тенденции OpenID?

Вы не можете дождаться выхода потока в DllMain (). Если поток уже не выходил к тому времени, когда был получен DLL_PROCESS_DETACH, так будет всегда тупиковый. Это ожидаемое поведение.

Причиной этого является то, что вызовы DllMain () сериализуются через блокировку загрузчика. Когда вызывается ExitThread (), он запрашивает блокировку загрузчика, чтобы он мог вызвать DllMain () с помощью DLL_THREAD_DETACH. Пока этот вызов не закончен, поток все еще запущен.

Итак, DllMain ждет выхода потока, и поток ожидает выхода DllMain, классической ситуации взаимоблокировки.

См. Также Рекомендации по использованию библиотеки динамической ссылки в MSDN.

Решение состоит в том, чтобы добавить новую функцию в вашу DLL для приложения для вызова перед выгрузкой библиотеки DLL. Как вы уже отмечали, ваш код уже отлично работает при явном вызове.


В случае, когда требования обратной совместимости делают невозможным добавление такой функции, и если вы должны иметь рабочие потоки, рассмотреть возможность разделения вашей DLL на две части, одна из которых динамически загружается другой. Динамически загруженная часть будет содержать (как минимум) весь код, необходимый для рабочих потоков.

Когда DLL, которая была загружена самим приложением, получает DLL_PROCESS_DETACH, вы просто устанавливаете событие, чтобы сигнализировать потоки чтобы выйти, а затем немедленно вернуться. Один из потоков должен быть назначен для ожидания всех остальных, а затем освободить вторую DLL, которую вы можете безопасно использовать с помощью FreeLibraryAndExitThread () .

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


В частном случае, когда потокам не нужно использовать какие-либо, но самые простые Windows API, возможно, будет возможно использовать пул потоков и рабочие обратные вызовы, чтобы избежать необходимости во второй DLL. После того, как вышли вызовы, которые вы можете проверить с помощью WaitForThreadpoolWorkCallbacks () , безопасно, чтобы библиотека была выгружена - вам не нужно ждать, когда сами потоки будут завершены.

Ловушка заключается в том, что обратные вызовы должны избегать любых API Windows, которые могут занять блокировку загрузчика. Не документировано, какие вызовы API безопасны в этом отношении, и это зависит от разных версий Windows. Если вы вызываете что-то более сложное, чем SetEvent или WriteFile, скажем, или если вы используете библиотеку, а не собственные функции Windows API, вы не должны использовать этот подход.

16
задан Argalatyr 11 July 2009 в 02:49
поделиться

21 ответ

Это должно быть намного проще: задействовать меньше знаний о концепциях и требовать меньше шагов - предпочтительно ноль. Когда технология работает практически без помощи, она сработает.

Механизм учетных данных OpenID, поставщиков и поставщиков не должен подвергаться воздействию пользователя. Люди говорят об обучении масс пользователей интернета, но этого никогда не произойдет - массы никогда не перестанут быть глупыми. Если вы хотите обратиться к массам, вам нужно опустить технологию, чтобы соответствовать их уровню. Когда сайт, связанный с Google, обнаруживает, что вы вошли в Google и молча использует эту учетную запись, он работает без необходимости сообщать, кто вы. Тот факт, что OpenID настолько неуклюж по сравнению, объясняет, почему крупные провайдеры, такие как Google, все еще избегают его, и почему широкая публика не примет его.

Я думаю, что разработчики OpenID перепутались, когда они использовали URL, а не адрес электронной почты для идентификаторов. Люди знают, что такое адреса электронной почты, у них уже есть один, который связан с ними (или их можно легко получить), а провайдеры электронной почты, такие как Google и Microsoft, с радостью принимают роль порталов. Фактически, автоматический перевод с адреса электронной почты на URL - это все, что нужно:

myname@example.com -> http://www.example.com/openid/myname

14
ответ дан 30 November 2019 в 17:40
поделиться

Сделайте его менее открытым.

я не хочу тех же идентификационных данных на нескольких сайтах. я не хочу должным быть создавать учетную запись flickr, прежде чем StackOverflow позволит мне отправить. мне не, должно быть, придется создать новый счет flickr на каждый веб-сайт, в котором я хочу зарегистрироваться.

-1
ответ дан 30 November 2019 в 17:40
поделиться

Я бы использовал его, если бы мог сделать это для каждого сайта и позднее объединить данные в свое собственное время и сроки. На самом деле, это огромная боль в заднице, даже найти достойного поставщика OpenID; под приличным я имею в виду stackoverflow.com не один, поэтому я не собираюсь беспокоиться.

0
ответ дан 30 November 2019 в 17:40
поделиться

Сейчас я ищу OpenId, чтобы интегрировать его в стартовый сайт, чтобы он мог управлять процессом входа в систему для моего сайта.

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

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

0
ответ дан 30 November 2019 в 17:40
поделиться

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

, Например:

Для входа в систему к stackoverflow с Opera я должен нажать вход в систему, выбрать myOpenID из списка, ввести мое имя пользователя, совершить нападки, вводят, нажимают Ctrl+Enter, чтобы автозаполнить пароль на myOpenID сайте, затем нажать продолжать кнопку.

Для входа в систему в любой нормальный сайт с Opera я просто нажимаю Ctrl+Enter для езды на автомобиле сохраненного пользователя / комбинация передачи.

0
ответ дан 30 November 2019 в 17:40
поделиться

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

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

0
ответ дан 30 November 2019 в 17:40
поделиться

Сайты, которые используют OpenID, должны поместить его передняя сторона и центр на странице входа в систему. Я видел, что много сайтов скрывают его позади ссылки под стандартной страницей входа в систему/регистрации как это:

Имя пользователя:

Пароль:

или использование Ваш OpenID

0
ответ дан 30 November 2019 в 17:40
поделиться

Веб-платформы должны идти с ним как со значением по умолчанию, если Вы не занимаете много дополнительного времени для конфигурирования простой комбинации имени пользователя/пароля.

0
ответ дан 30 November 2019 в 17:40
поделиться

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

0
ответ дан 30 November 2019 в 17:40
поделиться

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

Но я думаю, что просто принять OpenID недостаточно. Нам действительно нужно больше сайтов, подобных этому, которые отказываются создавать собственную систему аутентификации, и требуется аутентификация OpenID. Если «следующая важная вещь» говорит, что вы должны использовать свой OpenID для входа в систему (с очень простым мастером для установки нового идентификатора с кем-то еще), я считаю, что он начнет правильно вращать мяч.

0
ответ дан 30 November 2019 в 17:40
поделиться

Я думаю, что мы должны рассматривать OpenID, предлагаемый как метод входа в систему больше ориентированных на потребителя веб-сайтов. Существует много больших потребительских сайтов, которые могут быть использованы как поставщики OpenID, но единственное место, я вспоминаю наблюдение OpenID, доступный как вход в систему перед Stackoverflow, должно прокомментировать Блоггера. Быть поставщиком является большим и все, но это в значительной степени невидимо для потребителей. Наблюдение фактического места для использования OpenID, с другой стороны, вероятно, соберет несколько больше интереса.

0
ответ дан 30 November 2019 в 17:40
поделиться

Поскольку кто-то, который, прежде всего, веб-приложения программ в Java, я могу/, использует OpenID, потому что поддержка библиотеки не там. JOID и openid4java является только двумя, что я знаю о. JOID, по-видимому, активно не сохраняется, не включая действительно важные патчи, которые были в списке рассылки в течение многих месяцев; и openid4java требует> 40 мегабайтов внешних зависимостей, включая некоторых, которые должны войти в подтвержденный путь к классу, который является, как , один пользователь прокомментировал , смешной:

Комментарий witichis, 28 апреля 2008

загрузка 46 МБ для простого перенаправления и de/encryp - является Вами f **** n' выпитый?

, По-моему, OpenID не плох. Это консолидирует данные для входа в систему. Это действительно решает настоящую проблему, в то время как это не может быть оптимальное решение Эти только две проблемы, я вижу, то, что необходимо доверять поставщику идентификационных данных, чтобы не позволить кому-то еще утверждать, что был Вами, и что полагающиеся стороны (веб-сайты, Вы входите в систему) могут тайно сговориться для соединения идентификационных данных на нескольких сайтах вместе.

1
ответ дан 30 November 2019 в 17:40
поделиться

Многие ответы до сих пор, кажется, сводятся к двум опциям:

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

, Состоит в том, что все мы можем сделать? Что относительно распределенных инструментов, чтобы облегчить для обычных пользователей делать открытую делегацию? (Скажите, что-то интегрировалось с OS X / Windows / Ubuntu), там технологические барьеры, которые делают это неосуществимым?

, Если бы клиентский (и выпущенный поставщиками) приложения могли бы позволить Вам управлять своим предпочтением сетевой безопасности, тогда мы возможно были бы в состоянии сражаться [приблизительно 110] из рисков, связанных с предоставлением случайных сайтов Ваших паролей - так как "областью входа в систему" будет некоторая локальная программа, находящаяся в Вашем systray, или что нет. Конечно, интеграция веб-приложений с рабочим столом (таких как обеспеченный Chrome) может сделать такое различие невозможным на практике, таким образом, это может быть спорный вопрос.

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

1
ответ дан 30 November 2019 в 17:40
поделиться

Вы подразумеваете, что это уже не?;)

, Очевидно, много в-настоящее-время-распространенных-приложений должно было бы предложить его и сделать его очевидным, что это была хорошая альтернатива.

, Если бы Google и Facebook сделали его очевидной опцией, которая помогла бы.

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

1
ответ дан 30 November 2019 в 17:40
поделиться

Это должно будет получить адскую более простую партию с легче, чтобы помнить идентификаторами.

2
ответ дан 30 November 2019 в 17:40
поделиться

Я не думаю, что это станет господствующей тенденцией. Я думаю, что Ted Dziuba разбирается в нем, когда он говорит, что это решает "проблему", которую большинство людей не считает стоящими решения.

http://teddziuba.com/2008/09/openid-is-why-i-hate-the-inter.html

2
ответ дан 30 November 2019 в 17:40
поделиться

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

"Можно сделать useraccount здесь, или если Вы используете MySpace, Google Mail, Hotmail, и т.д. тогда можно войти в систему с помощью OpenID".

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

проблема, однако, то, что со всеми поддерживающими его у каждого пользователя теперь будут идентификатор MySpace, идентификатор Google, и т.д. Теперь, если они подпишутся на stackoverflow с их идентификатором MySpace тогда позже с Google, они могут быть озадачены, что stackoverflow не распознает их.

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

3
ответ дан 30 November 2019 в 17:40
поделиться

ISPs должен предоставить openIds всем их клиентам, которые подражают их адресам электронной почты. Возможно, открытые потребности поддерживать автоматический перевод foo@example.com в http://openid.example.com/foo так, чтобы ISPs мог легко настроить это на отдельном сервере.

3
ответ дан 30 November 2019 в 17:40
поделиться

Я думаю, что это возьмет огромное закрытие сделки от сайта, который используют миллионы людей; например, MySpace скоро поддерживает OpenID, поэтому теперь число пользователей, что поддержки OpenID только что перешли огромной суммой. Если больше высоких сайтов в сети действия следует этому примеру, там Вы идете!

5
ответ дан 30 November 2019 в 17:40
поделиться

Конечно, было бы полезно, если бы больше потребителей OpenID были также поставщиками OpenID. Как разработчик, я чувствую себя комфортно, пройдя через несколько трудностей, чтобы понять, что я могу создать новый идентификатор на openid.org, но более массовый потребитель может быть легко отстранен этим процессом.

0
ответ дан 30 November 2019 в 17:40
поделиться

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

Когда я создаю обычный логин, я набираю его. мое имя пользователя, главный пароль и щелкните букмарклет SuperGenPass. Вот и все, когда мне пришлось зарегистрироваться в stackoverflow, мне нужно было найти поставщика openId, зарегистрироваться там (что заняло вечность), войти на мой сайт и настроить делегирование, а затем добавить stackoverflow в мой список сайтов.

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

Заключение: не используйте openid.

0
ответ дан 30 November 2019 в 17:40
поделиться
Другие вопросы по тегам:

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