[V4RB] Auto-download of engines
Shaun Wexler
dev at macfoh.com
Fri Aug 25 04:18:42 CDT 2006
On Aug 25, 2006, at 3:29 AM, Ruslan Zasukhin wrote:
> The same ideas of binary compatibility present in MS COM.
>
> And they have idea of extension which I not like too much, but no
> other way.
> If you need add new methods you must create NEW interface:
>
> I_Table
> I_Table2
> I_Table3
>
> They even really name them in this way...
Actually, no. You can use the existing COM too. App1 might only know
about the functions I_Table, I_Table2, and I_Table3, whose exported
interface is declared as TableVersion_0, part of framework version
"A". Let's say that App3 is built against TableVersion_1 (providing
the new functions for Table4 and Table5), and App2 is built against
TableVersion_2 (providing the new function Table6), both of which are
part of the binary-compatibility framework version "B", but the
TableVersion_2 was later added in B v3.5, whereas TableVersion_1 was
part of the original B v3.0 API.
The COM dispatch can implement all functions:
I_Table // TableVersion_0, available in frameworks A & B
I_Table2 // TableVersion_0, available in frameworks A & B
I_Table3 // TableVersion_0, available in frameworks A & B
I_Table4 // TableVersion_1, available in framework B
I_Table5 // TableVersion_2, available in framework B
I_Table6 // TableVersion_2, available in framework B (v3.5 or
greater)
All apps will vector thru the same COM, but both App1 and App3 are
happily unaware that I_Table5 and I_Table6 even exist. Because App2
is built against v3.5 of framework "B", it must perform a runtime
check for TableVersion_2 availability, and if the installed framework
is too old, it can perform the download/upgrade itself if necessary,
weak link, disable functionality, whatever...
--
Shaun Wexler
MacFOH
http://www.macfoh.com
More information about the Valentina
mailing list