|
delphi-7 exe=>dll=>dll release vs free win-10
|
|||
---|---|---|---|
#18+
bk0010 Передать данные и получить результат. То есть, ты от неё хочешь некий сервис. По смыслу плагина этот сервис не фиксирован, он просто поддерживает тот или иной формат общения. И ты собираешься взять dll и начать обращаться к ней к вопросами: "а ты поддерживаешь сервис? а какой? а с какими прибамбасами? итп...." При этом средством общения становятся вызовы экспортируемых процедур со всеми присущими им ограничениями (например, примитивные типы данных). Такая структура ещё кое-как существует в первой версии, но оказывается совершенно нежизнеспособна при развитии. Потому что требования меняются, формат общения расширяется, приходят новые мысли, и в результате очень быстро оказывается, что в рамках хоть какой-то совместимости со старым половину нового можно сделать только через задницу, а другая половина не реализуема вовсе. Всё становится не в пример проще и удобнее, если перестать лезть к гландам через задницу и развернуть общение в правильном направлении. Это плагин в ходе инициализации должен вызывать ядро и говорить ему: "у меня есть такой-то сервис. а ещё у меня есть сякой сервис. а ещё я хочу подписаться вот на такое оповещение". Соответственно, потребность в каких-либо экспортируемых сущностях просто уходит. Всё, что нужно ядру - сделать плагину LoadLibrary. Плагин, инициализируясь, регистрирует себя везде, где считает нужным. Всё дальнейшее общение идёт через те классы, объекты или интерфейсы, которые он предоставил. Очень просто, надёжно, красиво - и отлично сопровождается. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 21:43 |
|
delphi-7 exe=>dll=>dll release vs free win-10
|
|||
---|---|---|---|
#18+
softwarer Всё, что нужно ядру - сделать плагину LoadLibrary. Плагин, инициализируясь, регистрирует себя везде, где считает нужным. Для узкоспециализированного плагина имени единственного известного ему хоста, нечто подобное реализуемо. Но это будет плагин типа службы разведки или контрразведки, когда хост и не догадывается, что ему добровольно оказывают полезные услуги. В противном случае, этому плагину было бы неплохо и заявить о своем существовании. Для того чтобы сказать - эй хост, если тебе покажется, что я могу сделать для тебя что-нибудь полезное, обращайся ко мне по такому-то интерфейсу. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 23:00 |
|
delphi-7 exe=>dll=>dll release vs free win-10
|
|||
---|---|---|---|
#18+
booby softwarer Всё, что нужно ядру - сделать плагину LoadLibrary. Плагин, инициализируясь, регистрирует себя везде, где считает нужным. Для узкоспециализированного плагина имени единственного известного ему хоста, нечто подобное реализуемо. Но это будет плагин типа службы разведки или контрразведки, когда хост и не догадывается, что ему добровольно оказывают полезные услуги. В противном случае, этому плагину было бы неплохо и заявить о своем существовании. Для того чтобы сказать - эй хост, если тебе покажется, что я могу сделать для тебя что-нибудь полезное, обращайся ко мне по такому-то интерфейсу. по сути, это разновидность обратного управления, когда хост добровольно выставляет часть своих кишков наружу, для свободного использования произвольно загруженными плагинами. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 23:06 |
|
delphi-7 exe=>dll=>dll release vs free win-10
|
|||
---|---|---|---|
#18+
booby Для узкоспециализированного плагина имени единственного известного ему хоста, нечто подобное реализуемо. А у нас что, один и тот же плагин обычно подключается и к Microsoft Office, и к 1C? booby когда хост и не догадывается, что ему добровольно оказывают полезные услуги. Даже не знаю, как можно это прочитать в том, что я написал. Там вроде русским языком написано - плагин обращается к ядру и заявляет о своём существовании и предоставляемых сервисах. booby по сути, это разновидность обратного управления, когда хост добровольно выставляет часть своих кишков наружу, для свободного использования произвольно загруженными плагинами. Эта "часть кишок" называется "внешний интерфейс" :) А в остальном да, именно так. В этом вся прелесть. Вместо судорожных подёргиваний через прокрустово ложе узкоспециализированных процедур ядро открывает плагинам API своих возможностей, а те цепляются к ним сообразно своему предназначению. И расширения этого API никак не меняют интерфейс, не требуют переписывать/перекомпилировать старые плагины итп., просто появляются ещё и новые возможности. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 23:36 |
|
delphi-7 exe=>dll=>dll release vs free win-10
|
|||
---|---|---|---|
#18+
softwarer, я, как человек малограмотный, смотрю на инверсию управления, главным образом, как на способ устранения программиста от программирования - не твое дело, что там происходит, плагин сам разберется, что с тобой вообще делать. Общее и отличие от "клиент-серверного" программирования здесь такое - не дело программиста "клиента" понимать, что происходит на "сервере". Но существо "плагино-программирования" заключается в том, что не дело программиста вообще понимать, как работает его программа, в любой её части. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2022, 23:53 |
|
delphi-7 exe=>dll=>dll release vs free win-10
|
|||
---|---|---|---|
#18+
softwarer Всё становится не в пример проще и удобнее, если перестать лезть к гландам через задницу и развернуть общение в правильном направлении. Это плагин в ходе инициализации должен вызывать ядро и говорить ему: "у меня есть такой-то сервис. а ещё у меня есть сякой сервис. а ещё я хочу подписаться вот на такое оповещение". Соответственно, потребность в каких-либо экспортируемых сущностях просто уходит. Всё, что нужно ядру - сделать плагину LoadLibrary. Плагин, инициализируясь, регистрирует себя везде, где считает нужным. Всё дальнейшее общение идёт через те классы, объекты или интерфейсы, которые он предоставил. Очень просто, надёжно, красиво - и отлично сопровождается. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2022, 21:32 |
|
|
start [/forum/topic.php?fid=58&gotonew=1&tid=2036593]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 260ms |
total: | 394ms |
0 / 0 |