Цитата:
Сообщение от
DSPIC
Пиши в log файл короче. Что-то мне предсказывает, что это не самое главное в твоей задаче.
не, лог-файл худшее решение на мой взгляд. чой-то нахлебался я ими при работе с ритейлом.
и... мне не столько мою задачку хочется решить, сколько найти правильные подходы к такому классу задач.
поставить виндовый счетчик и вызывать его оказалось делом очень простым.
я и раньше подсчитывал, только делал проект-на-коленке и писал в кастомные таблицы аксапты.
на виндовых счетчиках стало намного нагляднее и сравнимее с другими виндовыми счетчиками.
когда захотел сделать проект для публичного выкладывания тут же начались аспекты "защита от дурака".
- проект вламывается в очень базовый класс - кэши. без кэшей аксапта просто не запускается. поэтому кэши должны работать что бы там ни произошло со счетчиками. проинсталированы-не проинсталированы, есть права-нет прав, на сервере-на клиенте. причем должно работать без личного участия администратора. когда делаешь проект для себя, то можно сделать на коленке и в случае чего поправить на лету. когда делаешь проект для публичного выкладывания, то не хотелось бы подставлять людей и рушить их систему
- раз счетчики могут безмолвно и без последствий для системы отламываться, то хотелось бы дать информацию для людей которые используют этот проект. причем удобным для них способом.
- ну и конечно счетчики используются и на сервере, и на клиентах. на клиентских машинах пользователи могут быть вообще не в курсе происходящего.
- проект для акс2012 сделан в черновом варианте. теперь я хочу сделать аналогичный в акс7 но только на эксеншенах (заодно хочу проверить как живется в условиях закрытого кода)
- кроме того, пытаюсь нащупать какой-то баланс "сложности разработки". за основу взял проект https://github.com/DmitryNaumov/PerformanceCounters обратите внимание, как красиво и по делу там используются атрибуты для инсталляции счетчиков, как нормально вписана фабрика вместо конструкторов. как используются интерфейсы для рабочего функционала и для класса заглушки. Заодно проверил скорость разных вариантов реализации. в акс2012 вариант на интерфейсах работает медленнее всего, а вариант на иерархии - вдвое быстрее остальных вариантов. в акс7 ровно наоборот - вариант dummy-класса в иерархии работает вчетверо медленнее остальных вариантов, а вариант на интерфейсах так же быстр как и простой-класс-с-проверками-внутри.
сейчас в работе 6 вариант реализации этих счетчиков. пока я все еще думаю, что в аксапте конструкторы лучше (из-за единого для всех классов namespace). Но аксаптовский класс уже очень хочется раздербанить на SysPerformaceCounter, SysLog, SysPerformaceCounterInstaller. Но это путь к тому, о чем говорил MaxBelugin в ветке про сложность. Но нужны неймспейсы или вложенные классы, чтобы можно было создавать friend-классы, не опасаясь пересечений с другими доработками.
в общем, как обычно, когда делаешь публичные проекты или публично отвечаешь на вопросы, начинаешь узнавать про систему больше, чем содержится в проекте или в ответе.
думаю, что у меня будет еще пара-тройка подходов к снаряду и новых вариантов реализации. )
проектом приходится заниматься в свободное от работы время, поэтому не быстро.
в принципе могу выложить на github, если кому-то интересна промежуточная версия.