Re[3]: SFL – Service Framework Library
От: Andrew S Россия http://alchemy-lab.com
Дата: 05.06.07 13:41
Оценка: +1
AS>>Вопрос автору — а доступна ли широкой общественности версия 2 библиотеки — та, что без переходников
Автор: Игорь Вартанов
Дата: 05.08.05
?


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


Игорь, ну а может просто выложите отдельно в исходниках, либо тут в виде ссылки в отдельном сообщении с кратким пояснением, чем отличается? Думаю, общественость бы не возмутилась, а совсем напротив

PS На мейл отписал.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re: Branch - SFL 3.0
От: Andrew S Россия http://alchemy-lab.com
Дата: 29.06.07 08:33
Оценка: 6 (1)
Всем привет.
С любезного разрешения Игоря, я все же решил опубликовать свои доработки к 2-й версии фреймворка. В основном, меня там не устраивал синтаксис — как объявления сервисов, так и методов-обработчиков.
В результате получился некий монстрик. Брать здесь.

Что там нового по сравнению с 1.0 и 2.0

1. (В отличие от 1.0) Переходники генерируются статически.
2. Возможность задавать идентификатор для создаваемого объекта сервиса, а также связывать сервис со статически объявленным объектом (что может быть очень полезно в классических MFC\WTL программах с их theApp и _Module:
    SFL_SERVICE_TABLE_ENTRY(CMyService, MyService)
    SFL_SERVICE_TABLE_ENTRY_EX(CMyService, MyService1, _T("My simple service"))
    SFL_SERVICE_TABLE_LINK(CMyService, myService)
    SFL_SERVICE_TABLE_LINK_EX(CMyService, myService1, _T("My simple service link"))


3. Изменен метод взаимодействия обработчиков и функции диспатча. Убраны ненужные (на мой взгля) параметры. Тут проще пояснить кодом.
Было:
    DWORD OnStop(DWORD& /*dwWin32Err*/, DWORD& /*dwSpecificErr*/, BOOL& bHandled )
    {
        bHandled = TRUE;
        return SERVICE_STOPPED;
    }

Стало:
    BOOL OnStop()
    {
        m_ssStatus.dwCurrentState = SERVICE_STOPPED;
        return TRUE;
    }


На мой взгляд, куда как проще, ну и писанины и нативного кода в результате меньше.
4. Изменена идеология регистрации сервисов — не используется external char [], а используется класс. В результате стало возможным из идентификатора сервиса получить экземпляр его прокси — SFL_SERVICE_PROXY(svcid).
5. Убран код, который создает свой main. Это, собственно, было одним из основных "минусов", на мой взгляд. Вместо этого в своей точке входа в нужном месте (после парсинга параметров\etc) пишем:
SFL_SERVICE_TABLE(svcTable,
....

int _tmain(int argc, _TCHAR **argv, _TCHAR **envp)
{
    svcTable::Start();
    return 0;
}

6. Убраны CONTROL_RANGE. На мой взгляд, это не юзабельно в сервисах, но требует реализации диспатчка на if-ах. switch оптимальнее.
7. Добавлены методы Run и PreHandle (по аналогии с PreProcess для MFC). PreHandle — заместо CONTROL_RANGE, при необходимости позволяет "поднять" данный функционал.
8. Убрано много кода, который в версии 2 остался с версии 1 и уже не нес смысловой нагрузки.
9. Для сервисов с HandlerEx добавлена возможность работы на NT4 системах. Пример такого сервиса как раз в указанной выше ссылке.
10. Результат в нативном коде практически соответствует, как если бы мы сервисы написали вручную на С.

В общем, изменений довольно много, наверняка еще многое забыл указать — библиотека практически переписана.
На большую гору плюсов, конечно, есть и минусы. Самый главный — зависимость от boost::preprocessor. Из него используется:
    #include <boost/preprocessor/seq/for_each_i.hpp>
    #include <boost/preprocessor/seq/size.hpp>

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

В общем, комментарии приветствуются.

PS если администрация или Игорь сочтут нужным перенести это в отдельный топик — я не против
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[2]: SFL – Service Framework Library
От: Игорь Вартанов Ниоткуда  
Дата: 21.10.07 19:14
Оценка:
AS>Вопрос автору — а доступна ли широкой общественности версия 2 библиотеки — та, что без переходников
Автор: Игорь Вартанов
Дата: 05.08.05
?


Да, новая версия теперь доступна широкой общественности на CodeGuru: SFL 2.0: Service Framework Library for Native Windows Service Applications, Part 1.

PS. Я намеренно старался сделать версии максимально близкими, как по синтаксису, так и по структуре. Так что, увы, Andrew, все ваши предложения были мною проигнорированы. Надеюсь, вас это не сильно огорчит.

PPS. Уже несколько лет как CodeGuru смигрировали на новый движок, в результате чего вся серия статей пострадала — тексты оказались катастрофически урезаны и, что хуже всего, исходники стали недоступны. На попытки взывать к их совести никто не реагирует. Приношу свои извинения за этих уродов. Поэтому SFL2.0, если она еще кого-то интересует, теперь выложена на GitHub, а именно здесь: https://github.com/ivartanov/sfl2
---
С уважением,
Игорь
Отредактировано 30.07.2024 19:17 Игорь Вартанов . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.