Здравствуйте, SergeyT., Вы писали:
ST>Ну, сервисы же не в .net реализованы
. Это ведь всего лишь обертка над Win API, которое о .net слыхом не слыхивала. А чем не подходит стандартный средства сервисов, которые предусматривают хостинг более чем одного сервиса в одном исполняемом файле?
пока сервисов было парочка, было терпимо "поддерживать" в таком виде. потом стали появлятся еще и еще задачи схожие по типу обработки, вот и пришлось сделать в виде плагинов, получилось вроде бы неплохо — реализвуешь интерфейс, подкидываешь в нужную папку и все готово, только не все пока, что хотелось.
(кстати очень напоминает принцип oracle jobs — работают независимо и не влияют на работу друг-друга даже в случаях ошибок)
в идеале хочу плагинный подход но с доменами приложений под каждую сущность-службу. при старте сервиса создается домен, запускается служба, при остановке — стопим, выгружаем домен. да тут возникла трабла с тем, что сервис может отвалится: ну вот конкретный пример — сервис работает под учеткой, происодит имперсонация и... ошибка пароль не подходит. ИМХО, нужно писать в лог сервиса об этой конкретной ошибке, в журнал событий приложения fatal error, и, переводить службу с состояние Stopped. Вот с последним и бьюсь
кроме того в .net есть косяк с выгрузкой сборок (т.е. их и выгрузить нельзя), а было бы неплохо, например для обновления плагина при работающем процессе. AppDomain.Unload не помогает потому как тип сборки-плагина загружены получается и в главный домен тоже (ну чтобы иметь типы из которых потом будут создаваться инстансы служб)
короче дурдом, куда не копни — везде какие-то косяки архитектуры