Re[21]: Windows захватили инопланетяне?
От: blp  
Дата: 16.01.20 18:24
Оценка: :)
Здравствуйте, Sinclair, Вы писали:
blp>>Можно. Нужно будет просто переписать всю функциональность SCM, которая этом соотвествует (проверка того, что приложение уже запущено / еще запускается, зависимостей и т д)
S>Ну конечно же нет. Даже на этом сайте есть статья о том, как сделать так, чтобы было запущено не более 1го экземпляра приложения в пользовательской сессии.
Читаем внимательно: надо не просто сделать запуск одной копии приложения. Надо еще написать всю остальную функциональность, которая уже есть для сервисов. Например, запуск зависимых сервисов, перезапуск сервиса, если он внезапно завершился, правильная очередность остановки и т. д. — по сути вся функциональность SCM. Я понимаю, что в вашем уютном мире ничего, кроме запуска одной копии сервиса и его остановки, не нужно, но в реальном мире не так.

S>В том коде, который отвечает за старт приложения/сервиса, объём действий будет плюс-минус одинаковый.

S>Объём бойлерплейта, который нужно написать на стороне приложения для обработки ситуации "ой, экземпляр уже есть — дай-ка я лучше ему передам событие для обработки, а сам закроюсь", даже меньше, чем
Вы забыли, что таких "приложений" у нас много — получается что весь этот код нам теперь придется тащить в каждое приложение вместо того, чтобы держать его снаружи (как сейчас в SCM). Это создает проблемы с поддержкой и патчами — поэтому адекватные люди, дизайнящие ОС, так не делают.

>бойлерплейта для превращения приложения в сервис.

Добавьте туда еще то, что код per-user сервисов — это отрефактореный код существующих сервисов и драйверов (виндовые драйвера больше поохожи на виндовые сервисы в плане организации кода и интеграции с SCM). Ваше предложение предполагает взять существующие сервисы/драйвера и поменять их архитекутуру, сделав просто приложениями, да еще и впилить в каждое из них кусок логики SCMа для запуска/перезапуска. Улавливаете?

blp>>это какими? Как штатно остановить "просто приложение", которое не поддерживает интерфейс работы с SCM, чтобы оно успело корректно деинициализироваться и корректно остановить шатдаун системы/логофф пока оно это не сделает?

S>Если у приложения есть UI (а если его нету, то мы можем обойтись обычным сервисом, который бегает в winsta0), то как бы есть WM_CLOSE, WM_ENDSESSION
blp>>Как сделать так, чтобы на это мог/не мог повлиять юзер?
S>Вот я не буду ехидничать, а просто дам ссылку на MSDN: https://docs.microsoft.com/en-us/windows/win32/rstmgr/guidelines-for-applications
S>Если вам что-то непонятно, то спрашивайте.
Мне как раз все понятно. Это опять эффект Даннинга-Крюгера.
Когда сервис останавливается, он может заблокировать shtdown/logoff на время, которое он определяет сам. В этом случае юзер на экране видит спиннер и ждет — может ждать минуту или две, пока, например, данные на диск не запишутся устройство не размонтируется. Ничего подобного для приложений просто нет и никогда не было. Если приложение блокирует shutdown/logoff об этом уведомляют юзера и предлагаю юзеру пойти разобраться, что там приложению надо (это еще и не всегда работает) и продолжить shutdown/logoff. С сервисами, над которымы юзеру давать контроль нельзя, такой фокус не работает. Это одно из отличий сервисов от приложений.

читаю МСДН, дорого:
https://docs.microsoft.com/en-us/windows/win32/api/winsvc/ns-winsvc-service_preshutdown_info

https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ms700677(v=vs.85)

in a critical shutdown, where the user has clicked the Shut down now button in the new Windows UI and applications will no longer be allowed to block shutdown


Best Practices for Handling Shutdown in Windows Vista
...
Applications should not block shutdown


>Я не суперэксперт по виндовой разработке, (я сервис в последний раз писал году наверное в 2003), и пникаких супер-возможностей, которые специфичны именно для сервиса по взаимодействию с шатдауном/рестартом не припомню.

Ну вот, еще один. Писал что-то там 17 лет назад, не помнит специфики, следовательно ее нет. Скучно.

blp>>Не единственное. Мой список был "навскидку", на самом деле он больше, но и того, что я привел, хватит с головой.

>Не убедили.
Печально. А вроде выглядели адекватно.

S>Ну как же недокументированные-то? Вот же они задокументированы: https://docs.microsoft.com/en-us/windows/application-management/per-user-services-in-windows

еще раз — недокументированы новые типы сервисов, как их например самому писать. Тупо эти константы, которые передаются в CreateService в MSDN не описаны. Сами сервисы, что они делают — документированы. Чтобы адекватные люди могли понять, что это за сервисы и как себя ведут.

sc create X_Test binPath= "..." type= userown obj= X
sc qc TrustedInstaller_Test

[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: X_Test

TYPE : 50 USER_OWN_PROCESS TEMPLATE
...


blp>>шаблоны сервисов не существовали ранее — с ними, очевидно, не может работать никакой существующий инструмент.

S>Очевидно, что "нормальный" порядок релизов — это допилить существующие инструменты для того, чтобы управлять вот этой кунсткамерой.
Существующие инструменты прекрасно управляют тем, что есть и вписывается в набор сущностей, которыми они управляют. Я же сказал — отсутсвие красивого красивого GUI для темплейтов серивсов никак не относится к инструментам работы с самими сервисами. Сервисы (не темплейты) так же можно, например, запускать и останавливать, зная их имя. Можно получать список имен сервисов и т. д.

> покажите мне скрипт, который рестартит сервис WpnUserService на машине топикстартера.

Какой именно из "сервис WpnUserService на машине топикстартера"? Их на машине может быть больше одного. А может быть 0, если на машину топкстартера никто не залогинен. Ответьте на этот вопрос, может быть просветление снизойдет на вас.

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

Скучно.
Отредактировано 16.01.2020 18:34 blp . Предыдущая версия .
Re[22]: Windows захватили инопланетяне?
От: Vetal_ca Канада http://vetal.ca
Дата: 16.01.20 19:09
Оценка: +1
blp>Когда сервис останавливается, он может заблокировать shtdown/logoff на время, которое он определяет сам. В этом случае юзер на экране видит спиннер и ждет — может ждать минуту или две, пока, например, данные на диск не запишутся устройство не размонтируется. Ничего подобного для приложений просто нет и никогда не было. Если приложение блокирует shutdown/logoff об этом уведомляют юзера и предлагаю юзеру пойти разобраться, что там приложению надо (это еще и не всегда работает) и продолжить shutdown/logoff. С сервисами, над которымы юзеру давать контроль нельзя, такой фокус не работает. Это одно из отличий сервисов от приложений.

Сразу предупреждаю, Windows разработку закинул давно.

Тупой вопрос: почему нельзя по следующей схеме:

system-сервис <-> per-user-app ?

Почему per-user-service с "граблями" ?
Re[23]: Windows захватили инопланетяне?
От: blp  
Дата: 16.01.20 20:02
Оценка:
Здравствуйте, Vetal_ca, Вы писали:

V_>Сразу предупреждаю, Windows разработку закинул давно.


V_>Тупой вопрос: почему нельзя по следующей схеме:

V_>system-сервис <-> per-user-app ?
Да можно как угодно. Можно в гамаке и стоя, можно вверх ногами.

V_>Почему per-user-service с "граблями" ?

Потому что это изначально сервис, которому сделали просто несколько инстансов по числу юзерских сессий, а не приложение. Сделать из существующих сервисов приложения и написать повторно все, что нужно, чтобы их запускать / трекать как можно прямо сейчас сервисы в разы геморройнее чем сделать per-user service.
Re[24]: Windows захватили инопланетяне?
От: Vetal_ca Канада http://vetal.ca
Дата: 16.01.20 21:20
Оценка:
Здравствуйте, blp, Вы писали:

blp>Да можно как угодно. Можно в гамаке и стоя, можно вверх ногами.


Это не ответ. Или объясни без мути и обтекаемых фраз или признай, что не способен. Неужели ты думаешь, что такое действо я в первый раз вижу?

blp>Потому что это изначально сервис, которому сделали просто несколько инстансов по числу юзерских сессий, а не приложение. Сделать из существующих сервисов приложения и написать повторно все, что нужно, чтобы их запускать / трекать как можно прямо сейчас сервисы в разы геморройнее чем сделать per-user service.


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

В чем принципиальная невозможность написать стандартным способом в данном конкретном случае? Один сервис + per user app.

Четко и по теме, или никак.
Re[25]: Windows захватили инопланетяне?
От: blp  
Дата: 16.01.20 21:29
Оценка:
Здравствуйте, Vetal_ca, Вы писали:

V_>Здравствуйте, blp, Вы писали:


blp>>Да можно как угодно. Можно в гамаке и стоя, можно вверх ногами.


V_>Это не ответ.

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

blp>>Потому что это изначально сервис, которому сделали просто несколько инстансов по числу юзерских сессий, а не приложение. Сделать из существующих сервисов приложения и написать повторно все, что нужно, чтобы их запускать / трекать как можно прямо сейчас сервисы в разы геморройнее чем сделать per-user service.


>Почему другие могут а здесь не получилось?

Другие могут что? что у кого не получилось здесь? И эти люди мне говорят что-то про обтекаемые фразы...

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

V_>В чем принципиальная невозможность написать стандартным способом в данном конкретном случае?
что такое "стандартный способ"? Способ делать что?

>Один сервис + per user app.

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

V_>Четко и по теме, или никак.

Баюс-баюс.
Re[26]: Windows захватили инопланетяне?
От: Vetal_ca Канада http://vetal.ca
Дата: 16.01.20 21:49
Оценка: :)
Здравствуйте, blp, Вы писали:


>>Почему другие могут а здесь не получилось?

blp>Другие могут что? что у кого не получилось здесь? И эти люди мне говорят что-то про обтекаемые фразы...

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


blp>что такое "стандартный способ"? Способ делать что?


Очистить микрософт от гнилых "специалистов", понятно что. Причем так, чтобы они из Микрософта никуда дальше не перескочили. Без заслушивания никчемной воды от никчемных людей. Вот мой ответ, четкий и ясный.

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



Понятно, общение бесполезно. Темой не владеешь.
Re[27]: Windows захватили инопланетяне?
От: blp  
Дата: 16.01.20 21:57
Оценка: -1
Здравствуйте, Vetal_ca, Вы писали:

V_>Здравствуйте, blp, Вы писали:



>>>Почему другие могут а здесь не получилось?

blp>>Другие могут что? что у кого не получилось здесь? И эти люди мне говорят что-то про обтекаемые фразы...
V_>У меня опыт ни раз подтвержденный: Чем умнее человек и чем лучше он понимает тему, тем проще и короче он может донести мысль.
Соверешнно верно. Еще умные люди умеют внятно формулировать вопросы или не задавать вопросы, когда ответы на них вполне можно найти самостоятельно если просто сформулировать вопрос правильно.

blp>>что такое "стандартный способ"? Способ делать что?

V_>Очистить микрософт от гнилых "специалистов", понятно что. Причем так, чтобы они из Микрософта никуда дальше не перескочили. Без заслушивания никчемной воды от никчемных людей.
Поток сознания какой-то. Вас что-то беспокоит и вы хотите об этом поговорить?

>Вот мой ответ, четкий и ясный.

Ваш ответ на вопрос "что такое стандартный способ?" из предыдущего сообщения, которое было про сервисы. Оукеей.


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


V_>Понятно, общение бесполезно. Темой не владеешь.

И вам не хворать!
Re[28]: Windows захватили инопланетяне?
От: Vetal_ca Канада http://vetal.ca
Дата: 16.01.20 22:40
Оценка: 1 (1)
Здравствуйте, blp, Вы писали:


blp>Соверешнно верно. Еще умные люди умеют внятно формулировать вопросы или не задавать вопросы, когда ответы на них вполне можно найти самостоятельно если просто сформулировать вопрос правильно.


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

blp>Поток сознания какой-то. Вас что-то беспокоит и вы хотите об этом поговорить?


Таким со мной некомфортно, да. Это нормальная реакция. Отбраковка работает.

>>Вот мой ответ, четкий и ясный.

blp>Ваш ответ на вопрос "что такое стандартный способ?" из предыдущего сообщения, которое было про сервисы. Оукеей.

Сервис + per-user userspace GUI/headless процесс.

Пару примеры этого стандартного подхода (с моего PC) —

[Genie Timeline Service] + UI
[PDAgent + PDEngine] + Perfect Disc

Что именно нельзя реализовать по такой схеме, что приходится делать per-user service?
Re[29]: Windows захватили инопланетяне?
От: blp  
Дата: 16.01.20 23:20
Оценка:
Здравствуйте, Vetal_ca, Вы писали:

V_>Но ты, надув щеки создавал видимость знания. Ошибся, каюсь, не стоило тратить время.

Вы же уже один раз ушли, громко хлопнув дверью. Зачем возвращаетесь?

V_>Все что ты донес, что с сервисами хаос и непонимание.

Несомненно. Вот у некоторых людей в голове — хаос и непонимание про сервисы. Некоторые из этих людей фонтанируют идеями про то как можно без сервисов все сделать.

>Плюс куча не специалистов с надутыми щеками крутятся у умирающего трупа Windows. Ничего нового.

Вот интересно, вы себя к кому относите? Если вы не крутитесь вокруг умирающего трупа (умрающий труп — это вообще прекрасная фигура речи, да. Труп, умирающий. Повторно, видимо), зачем вы так активно беседуете на тему архитектурных решений в windows? Вас они почему волнуют?

blp>>Поток сознания какой-то. Вас что-то беспокоит и вы хотите об этом поговорить?

V_>Таким со мной некомфортно, да. Это нормальная реакция. Отбраковка работает.
Каким с вами некомфортно? Какая отбраковка? Постарайтесь почетче сформулировать мысль, а то собеседник может не заметить, как именно вы хотели на него наехать — слишком витиевато получается

V_>Сервис + per-user userspace GUI/headless процесс.

Да, тут больше текста, но все равно непонятно. Задача, которую решает юнистек — это много сервисов, каждый из которых per-user-logged-on.
Как ваша адова архитектура с одинм сервисом и потенциально несколькими процессами, в это вписывается? Например, как эти процессы корректно шатдаунить, когда юзер делает log off, чтобы они гарантированно успели деинициализироваться?
Re[30]: Windows захватили инопланетяне?
От: Vetal_ca Канада http://vetal.ca
Дата: 16.01.20 23:51
Оценка: :)
Здравствуйте, blp, Вы писали:

V_>>Сервис + per-user userspace GUI/headless процесс.

blp>Да, тут больше текста, но все равно непонятно. Задача, которую решает юнистек — это много сервисов, каждый из которых per-user-logged-on.
blp>Как ваша адова архитектура с одинм сервисом и потенциально несколькими процессами, в это вписывается? Например, как эти процессы корректно шатдаунить, когда юзер делает log off, чтобы они гарантированно успели деинициализироваться?


Сервис содержит в себе контекст пользователя. При закрытии user space app информируется сервис, далее делается необходимый shutdown на уровне сервиса.

Service (псевдокод):

onLogon(userId)
{
   userContext = createContext(userId)
   onUserLogon(userContext)
}
onLogoff(userId)
{
   userContext = getUserContext(userId)
   onUserLogoff(userContext)
}

onShutdown()
{
   foreach userId in logonUsers
   {
      userContext = getUserContext(userId)
      onUserLogOff(userContext)
   }

   // Деинициализация прошла, разрешаем shutdown

   signalOsShutdownAllowed()
}



Можно и shutdown/startup зависимости добавить с другими, "singleton-kind" сервисами, не вижу в этом проблемы

User-space процессы шатдаунятся стандартным способом (SIGTERM, WM_CLOSE или что-там, без разницы). Что-то критичное, для чего нужно "попридержать" shutdown (buffers flush etc), выполняется в onUserLogOff(userContext), в контексте сервиса.
Отредактировано 16.01.2020 23:53 Vetal_ca . Предыдущая версия .
Re[31]: Windows захватили инопланетяне?
От: blp  
Дата: 17.01.20 00:52
Оценка:
Здравствуйте, Vetal_ca, Вы писали:

V_>User-space процессы шатдаунятся стандартным способом (SIGTERM, WM_CLOSE или что-там, без разницы). Что-то критичное, для чего нужно "попридержать" shutdown (buffers flush etc), выполняется в onUserLogOff(userContext), в контексте сервиса.

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

Если решать другую задачу, решение можно придумать любое.
Например, можно сказать, что задачей было нарисовать лошадку и нарисовать лошадку.
Отредактировано 17.01.2020 0:58 blp . Предыдущая версия .
Re[32]: Windows захватили инопланетяне?
От: Vetal_ca Канада http://vetal.ca
Дата: 17.01.20 01:17
Оценка:
Здравствуйте, blp, Вы писали:

blp>Здравствуйте, Vetal_ca, Вы писали:


V_>>User-space процессы шатдаунятся стандартным способом (SIGTERM, WM_CLOSE или что-там, без разницы). Что-то критичное, для чего нужно "попридержать" shutdown (buffers flush etc), выполняется в onUserLogOff(userContext), в контексте сервиса.

blp>Ну то есть вместо нескольких сервисов на юзера, никак не связаных друг с другом для разных юзеров, мы имеем один сервис на систему, который хранит в себе стейт всех юзеров.

Да, это system wide service по определению.

blp>Это не есть решение той самой задачи, которую решает юнистек — а именно полностью независимые друг от друга сервисы для разных юзеров.


Вот это и есть криворукость. Системный сервис (daemon, и т.д.) это не per user entity. Вот так наберут неквалифицированных людей. А потом они про лошадок лепечут перед тем, как вылететь пинком под зад.

blp>Если решать другую задачу, решение можно придумать любое.



Я уже давно считаю массовые увольнения благом. Не хватающим для некоторых контор вокруг меня


blp>Например, можно сказать, что задачей было нарисовать лошадку и нарисовать лошадку.
Re[22]: Windows захватили инопланетяне?
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.01.20 05:33
Оценка: 2 (1)
Здравствуйте, blp, Вы писали:

blp>Здравствуйте, Sinclair, Вы писали:

blp>>>Можно. Нужно будет просто переписать всю функциональность SCM, которая этом соотвествует (проверка того, что приложение уже запущено / еще запускается, зависимостей и т д)
S>>Ну конечно же нет. Даже на этом сайте есть статья о том, как сделать так, чтобы было запущено не более 1го экземпляра приложения в пользовательской сессии.
blp>Читаем внимательно: надо не просто сделать запуск одной копии приложения. Надо еще написать всю остальную функциональность, которая уже есть для сервисов. Например, запуск зависимых сервисов, перезапуск сервиса, если он внезапно завершился, правильная очередность остановки и т. д. — по сути вся функциональность SCM. Я понимаю, что в вашем уютном мире ничего, кроме запуска одной копии сервиса и его остановки, не нужно, но в реальном мире не так.
Ну вот, уже лучше. Видите, насколько полезнее писать конкретные вещи, чем общие соображения — начинается содержательная дискуссия.
Пока что всё ещё непонятно, почему нельзя обойтись system-wide сервисом, который тащит в себе нужное состояние со всеми перезапусками и прочими особенностями, а приложениям оставить то, для чего они нужны — коммуникацию с пользователем.

blp>Добавьте туда еще то, что код per-user сервисов — это отрефактореный код существующих сервисов и драйверов (виндовые драйвера больше поохожи на виндовые сервисы в плане организации кода и интеграции с SCM). Ваше предложение предполагает взять существующие сервисы/драйвера и поменять их архитекутуру, сделав просто приложениями, да еще и впилить в каждое из них кусок логики SCMа для запуска/перезапуска. Улавливаете?

Эмм, то есть вот эти вот per-user сервисы когда-то были system wide, а потом их решили перевелосипедить на per-user?
Это интересно. Можете рассказать, зачем это было сделано?

blp>Когда сервис останавливается, он может заблокировать shtdown/logoff на время, которое он определяет сам. В этом случае юзер на экране видит спиннер и ждет — может ждать минуту или две, пока, например, данные на диск не запишутся устройство не размонтируется. Ничего подобного для приложений просто нет и никогда не было. Если приложение блокирует shutdown/logoff об этом уведомляют юзера и предлагаю юзеру пойти разобраться, что там приложению надо (это еще и не всегда работает) и продолжить shutdown/logoff. С сервисами, над которымы юзеру давать контроль нельзя, такой фокус не работает. Это одно из отличий сервисов от приложений.

Очень хорошо. Почему бы такие вещи не доверить system-wide сервису? Заодно разрешаем пользователю сделать logoff прямо сейчас, не вынуждая его ждать минуту, пока там сервис соизволит завершить асинхронные задачи.
Shutdown — дело другое, можно и подождать.

blp>Ну вот, еще один. Писал что-то там 17 лет назад, не помнит специфики, следовательно ее нет. Скучно.

Концепция сайтов, подобных этому, построена не только на тех, кто хочет научиться, но и на тех, кто хочет научить. Вы хотите, чтобы те посетители, которые знают больше вас, рассказывали вам что-то интересное. Если они будут придерживаться вашей стратегии ведения дискуссии, то вы так и не прочтёте ничего нового. А значит что? Значит всегда надо быть готовым что-то рассказать самому — тем, кто знает меньше вас.
Логика понятна?
blp>еще раз — недокументированы новые типы сервисов, как их например самому писать.
Давайте попробуем угадать: эти сервисы — какое-то зло, которое лучше не давать разрабатывать рядовым разработчикам. Если так, то отсутствие документации по ним — это норм, вменяемое решение. Отсутствие гуя — это намеренный, здравый ход, нацеленный на промоушен обновлённых курсов MCSA.

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

Третий вариант — никакого осознанного решения не апдейтить тулзы и документацию не было, просто в Редмонде окончательно развалился менеджмент, и межкомандная координация осталась где-то там, в тех временах, когда я ещё писал сервисы под винду.
Вы за какой вариант выступаете?

blp>Существующие инструменты прекрасно управляют тем, что есть и вписывается в набор сущностей, которыми они управляют.

Ок, откуда тогда error message? Вернёмся к корневому сообшению.
>> покажите мне скрипт, который рестартит сервис WpnUserService на машине топикстартера.
blp>Какой именно из "сервис WpnUserService на машине топикстартера"?
Их на машине может быть больше одного. А может быть 0, если на машину топкстартера никто не залогинен. Ответьте на этот вопрос, может быть просветление снизойдет на вас.
Отличный вопрос. Давайте для начала тот, который относится к текущей сессии пользователя. Чтобы избежать вырожденных случаев, ограничимся интерактивным запуском скрипта — т.е. на машине гарантированно кто-то залогинен.

blp>Скучно.

Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[27]: Windows захватили инопланетяне?
От: Carc Россия https://vk.com/gosha_mazov
Дата: 17.01.20 09:29
Оценка: +2
Здравствуйте, Vetal_ca, Вы писали:

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

V_>Понятно, общение бесполезно. Темой не владеешь.
Да, забейте Вы на этого тролля. Я уже несколько дней слежу за этой дискуссией, ничего по делу он не сказал вовсе.

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

Вот енто про него сказано.

PS: Но… это… народ! Вы действо не прекращайте, мне вот интересно мнение ononim`а, да и прочих с-а-а-всем небезынтересно…
Я сам в этой теме исключительный боксер-теоретик: интересовался, читал то-сё, в общих чертах что-то (мне кажется) понимаю. Но впрямую с разработкой сервисов жизнь так и не столкнула. А послушать профи все ж интересно. "Ибо завсегда есть нюанс" (бородатый анекдот уж приводить не будем )
Aml Pages Home
Re[28]: Windows захватили инопланетяне?
От: Vetal_ca Канада http://vetal.ca
Дата: 17.01.20 15:15
Оценка: 1 (1) +1 :)
Здравствуйте, C
C>Да, забейте Вы на этого тролля. Я уже несколько дней слежу за этой дискуссией, ничего по делу он не сказал вовсе.
C>

C>Если вы ученый, квантовый физик и не можете в двух словах объяснить пятилетнему ребенку, чем вы занимаетесь, — вы шарлатан.

C>Вот енто про него сказано.


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

Но потенциал стимуляции уже исчерпан. Посмотрим, напишет ли кто-то что-то дельное.
Re[33]: Windows захватили инопланетяне?
От: blp  
Дата: 17.01.20 19:06
Оценка:
Здравствуйте, Vetal_ca, Вы писали:

blp>>Это не есть решение той самой задачи, которую решает юнистек — а именно полностью независимые друг от друга сервисы для разных юзеров.


V_>Вот это и есть криворукость. Системный сервис (daemon, и т.д.) это не per user entity. Вот так наберут неквалифицированных людей. А потом они про лошадок лепечут перед тем, как вылететь пинком под зад.

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

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

blp>>Если решать другую задачу, решение можно придумать любое.

V_>Я уже давно считаю массовые увольнения благом. Не хватающим для некоторых контор вокруг меня
Вы явно хотите мне что-то сказать, но постоянно от вас одни намеки. Скажите уже прямо.
Re[23]: Windows захватили инопланетяне?
От: blp  
Дата: 17.01.20 19:24
Оценка:
Здравствуйте, Sinclair, Вы писали:
S>Ну вот, уже лучше. Видите, насколько полезнее писать конкретные вещи
Полезно конкретно формулировать вопросы и иногда читать MSDN после корректных формулировок.

S>Пока что всё ещё непонятно, почему нельзя обойтись system-wide сервисом, который тащит в себе нужное состояние со всеми перезапусками и прочими особенностями, а приложениям оставить то, для чего они нужны — коммуникацию с пользователем.

Потому что задача — сделать per-user сервис. Работающий под аккаунтом юзера, но имеющий свойства сервиса — например, блокирующий логофф/шатдаун до своего завершения. Тут особо одаренные люди уже кинулись менять задачу на более удобную им и радостно показывать, как они умеют ее лучше решать.

S>Эмм, то есть вот эти вот per-user сервисы когда-то были system wide, а потом их решили перевелосипедить на per-user?

S>Это интересно. Можете рассказать, зачем это было сделано?
Эти per-user сервисы раньше в таком виде не существовали. Судя по тому, что я вижу, они — результат рефакторинга и написания нового кода.
per-user сервисы нужны, чтобы, например, изолировать юзерские данные специфичные для этого сервиса друг от друга, что физически невозможно, когда данные разных юзеров лежат памяти одного процесса. Также, например, per-user сервисы можно запускать в security-контексте того юзера, для которого они созданы / запущены и с правами этого юзера, а не с системными правами.

S>Очень хорошо. Почему бы такие вещи не доверить system-wide сервису?

Что в лоб, что по лбу. System-wide сервис никак не сможет заблокирвать logoff (он не может останавливаться на logoff eventе) — он максимум может заблокировать shutdown при своей остановке. Ну очевидно же.

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

S>Shutdown — дело другое, можно и подождать.
а, теоретические фантазии. Неинтересно. Предлагаю самостоятельно подумать и придумать сценарий, в котором нельзя откладывать завершение асинхронных задач до окончания логоффа (ну или наоборот, нельзя делать логофф пока не решена асинхронные задачи). Не получится — так и быть, помогу.

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

Я с этим в целом не спорю. Адекватным людям приятно рассказать что-то интересное.

>Если они будут придерживаться вашей стратегии ведения дискуссии, то вы так и не прочтёте ничего нового.

Если собеседники начинают разговоры с заявлений "посмотрите, какие идиоты! Смотрите какой я умный!", у людей, которым очевидна их глупость, ничего, кроме желания поглумиться, они не вызывают. Это как что-то доказывать антипрививочникам или плоскоземельщикам.

>А значит что? Значит всегда надо быть готовым что-то рассказать самому — тем, кто знает меньше вас.

S>Логика понятна?
Ага. Я — всегда готов, многим людям просто не нужно многое из того, что я могу рассказать (судя по их ответам) Им нужно самоутвердиться и рассказать, какие они были крутые архитекторы 20 лет назад.

S>Давайте попробуем угадать: эти сервисы — какое-то зло, которое лучше не давать разрабатывать рядовым разработчикам.

Непонятно, почему вы так решили. Но это вполне вписывается в религиозную картину "МС-империя зла", и соотвественно, творит зло. С ней невозможно спорить.

>Если так, то отсутствие документации по ним — это норм, вменяемое решение. Отсутствие гуя — это намеренный, здравый ход, нацеленный на промоушен обновлённых курсов MCSA.

Ну ок.

S>Но если такой тип сервисов — это полезная штука, полноценная часть экосистемы винды, то задокументировать их хотели, но релиз был поспешным, и задокументировать их просто не успели.

Скорее всего

S>Третий вариант — никакого осознанного решения не апдейтить тулзы и документацию не было, просто в Редмонде окончательно развалился менеджмент, и межкомандная координация осталась где-то там, в тех временах, когда я ещё писал сервисы под винду.

S>Вы за какой вариант выступаете?

За второй: чтобы не делать релизы винды раз в 3-4 года (а "нормально винды" раз в 5-6 лет), как раньше, а быть on par с вещами вроде андроида, фичи выпускают чаще, документации по ним может не быть какое-то время.

S>Отличный вопрос. Давайте для начала тот, который относится к текущей сессии пользователя.

а что сразу не "тот, который был запущен в Рамадан в 2019 году"? Может вы еще придумаете каких-то ограничений, про которые не в курсе существющие инструменты, которые работают с именами сервисов? Есть способ получить список сервисов с их именами и описаниями. Если способ перезапустить сервис по имени. Способа "найти сервис, который относится к текущей сессии пользователя" не было и нет. Равно как и "найти сервис который был запущен в определенную фазу луны"

blp>>Скучно.

S>
Не, реально сучно. Пока что меня можно было бы заменить поиском по MSDN с тем же результатом. Это я еще не начал говорить ничего, что было бы неизвестно и недокументировано — просто не нужно.
Re[34]: Windows захватили инопланетяне?
От: Vetal_ca Канада http://vetal.ca
Дата: 17.01.20 20:00
Оценка: 1 (1)
Здравствуйте, blp, Вы писали:


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


blp>И когда нас пытаются вернуть к суровой реальности, в которой нужен сервис на юзерскую сессию (работающий под аккаунтом юзера и, например, блокирующий логофф, пока сервисы не завершится), мы лепечем что-то про "неквалицифированных людей".

blp>Если вы на своей работе так же задачи решаете — меняете задачу на более вам удобную и потом придумываете как ее решить, какому-то работадателю сильно не повезло

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

Это называется самореализацией и это мне нравится.

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


blp>Вы явно хотите мне что-то сказать, но постоянно от вас одни намеки. Скажите уже прямо.


Пока "делать писанину" с нулевым выхлопом это твоя привилегия. Заметь, это не только мое мнение
Re[35]: Windows захватили инопланетяне?
От: blp  
Дата: 17.01.20 20:04
Оценка:
Здравствуйте, Vetal_ca, Вы писали:

blp>>Если вы на своей работе так же задачи решаете — меняете задачу на более вам удобную и потом придумываете как ее решить, какому-то работадателю сильно не повезло


V_>Видишь ли, я ставлю задачи и делаю реальность сам.

А, отлично. Так и запишем — живет в собственной реальности, разговаривать с осторожностью

> Вместо того чтобы подстраиваться под косяки других.

Хорошо вам.

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

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

V_>Это называется самореализацией и это мне нравится.

Очень хорошо. Зачем вы занимаетесь еще самутвеждением на форуме RSDN тогда? Доказываете мне тут что-то, постоянно пытаясь намекнуть и т д?

V_>Повышай квалификацию и не придется разгребать г-но из-под неквалифицированных индусов. Которые тебе дают задачи и у тебя нет иных вариантов, кроме как подчиниться

Ну вот опять.
Вы явно хотите мне что-то сказать, но постоянно от вас одни намеки. Скажите уже прямо.
Re[24]: Windows захватили инопланетяне?
От: Sinclair Россия https://github.com/evilguest/
Дата: 18.01.20 08:08
Оценка: 5 (2)
Здравствуйте, blp, Вы писали:

S>>Пока что всё ещё непонятно, почему нельзя обойтись system-wide сервисом, который тащит в себе нужное состояние со всеми перезапусками и прочими особенностями, а приложениям оставить то, для чего они нужны — коммуникацию с пользователем.

blp>Потому что задача — сделать per-user сервис.
Это не задача. Это решение. Задача в чём?

blp>Эти per-user сервисы раньше в таком виде не существовали. Судя по тому, что я вижу, они — результат рефакторинга и написания нового кода.

Тогда ваш аргумент про лёгкость превращения существующих system-wide сервисов и драйверов в per-user сервисы нерелевантен.

blp>per-user сервисы нужны, чтобы, например, изолировать юзерские данные специфичные для этого сервиса друг от друга, что физически невозможно, когда данные разных юзеров лежат памяти одного процесса. Также, например, per-user сервисы можно запускать в security-контексте того юзера, для которого они созданы / запущены и с правами этого юзера, а не с системными правами.

Ну, ок. Допустим, аргумент про изоляцию.

blp>Что в лоб, что по лбу. System-wide сервис никак не сможет заблокирвать logoff (он не может останавливаться на logoff eventе) — он максимум может заблокировать shutdown при своей остановке. Ну очевидно же.

А зачем блокировать Logoff event?

blp>а, теоретические фантазии. Неинтересно. Предлагаю самостоятельно подумать и придумать сценарий, в котором нельзя откладывать завершение асинхронных задач до окончания логоффа (ну или наоборот, нельзя делать логофф пока не решена асинхронные задачи). Не получится — так и быть, помогу.

Не получается.

blp>Ага. Я — всегда готов, многим людям просто не нужно многое из того, что я могу рассказать (судя по их ответам) Им нужно самоутвердиться и рассказать, какие они были крутые архитекторы 20 лет назад.

Меньше думайте о людях; больше — о технических подробностях.

blp>Непонятно, почему вы так решили.

Это гипотеза, которая призвана объяснить отсутствие документации по их написанию.

blp>За второй: чтобы не делать релизы винды раз в 3-4 года (а "нормально винды" раз в 5-6 лет), как раньше, а быть on par с вещами вроде андроида, фичи выпускают чаще, документации по ним может не быть какое-то время.

Ну, то есть сама фича продумана хорошо, архитектура норм, а документация просто "не успевает". Когда там выпустили эти сервисы? Судя по отзывам, прошло уже два с половиной года.
Либо в Редмонде системный кризис с техдоками, либо эта версия неверна.

blp>а что сразу не "тот, который был запущен в Рамадан в 2019 году"? Может вы еще придумаете каких-то ограничений, про которые не в курсе существющие инструменты, которые работают с именами сервисов? Есть способ получить список сервисов с их именами и описаниями. Если способ перезапустить сервис по имени. Способа "найти сервис, который относится к текущей сессии пользователя" не было и нет. Равно как и "найти сервис который был запущен в определенную фазу луны".

Вот видите, как всё плохо. Оказывается, что простая практическая задача типа "вот сервис, который мониторит XXXX, вот как его перезапустить", вызывает какое-то извивание хребтом вместо простого ответа. Нет ни инструментов, ни решения "из палок". Для сравнения: со "старыми" сервисами такой проблемы нет — есть детерминированный способ узнать имя сервиса.
Вот, к примеру, для именованных инстансов SQL Server: https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/start-stop-pause-resume-restart-sql-server-services?view=sql-server-ver15

blp>Не, реально сучно. Пока что меня можно было бы заменить поиском по MSDN с тем же результатом. Это я еще не начал говорить ничего, что было бы неизвестно и недокументировано — просто не нужно.

А вот мне очень весело. Во-первых, я получаю полезные знания, а во вторых, получаю эстетическое удовольствие, глядя на то, как вы выкручиваетесь из положения, в которое сами себя загнали.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.