Giorni fa ho avuto la malsana idea di spostare un sito web, perfettamemte funzionante da anni, in un nuovo hosting: l'esigenza era quella di dare maggiore risorse a quest'ultimo visto la grossa mole di traffico che provocava.

Il sito in questione è creato usando wordpress, e usando come plugin principale woocommerce: nulla di esotico o particolare, semplicemente un sito di web commerce che al completarsi di un ordine esporta un file csv che quindi viene importato (usando un software creato dalla mia azienda) nel gestionale e inoltra anche direttamente la relativa richiesta di spedizione ai trasportatori (usando i relativi web service e altro).

Come spesso accade una volta migrato il tutto...... qualcosa non funziona.

In particolare l'esportazione di detti file csv non funziona più, e la relativa attività rimane in stato Queing.

Forte del fatto che il plugin che esporta i file csv è a pagamento, e dispone di un customer service, apro il ticket per avere delucidazioni e aiuto.

Forte delusione: mi accorgo subito che il customer care di questo plugin è praticamente.... inutilizzabile.

Tutti consigli del tipo "controlla se la presa è attaccata, e se il problema permane sono c.... tuoi".

Siamo all'ultima puntata della serie di post dedicata al mondo COM. Qui fornirò solo alcuni ragguagli riguardo a come le informazioni dei vari COM Component sono posti all'interno del registro di sistema.

Ecco i posto precedenti.

Componenti COM: Introduzione - parte 1 di 6
Componenti COM: Le interfacce - parte 2 di 6
Componenti COM: Interface Definition Language .....anche chiamato IDL - parte 3 di 6
Componenti COM: vTable e dintorni - parte 4 di 6
Componenti COM: Early Binding e Late Binding, gioie e dolori - parte 5 di 6

Registro di sistema

Per poter utilizzare i componenti COM contenuti all'interno di un COM Server occorre registrare quest'ultimo nel sistema operativo ospitante: in tal modo verranno creati alcune voci nel registro di sistema che servono per poterlo utilizzare correttamente.

Questo processo di registrazione può avvenire utilizzando un sistema di installazione, che si occupa di copiare e creare tutte le corrette voci di registro, oppure usando il l'utility regsvr32, se il COM Server è di tipo dll. Usualmente se è di tipo exe, basta richiede l'esecuzione di questo e uno degli effetti ottenuti è la sua completa autoregistrazione in modo automagico.

Questa è la quinta parte della serie dei post dedicati al mondo del COM. Come detto all'inizio questa tecnologia è molto "stagionata" e vintage, anche se tutt'oggi ancora ampiamente utilizzata, e la mia volontà di condividere con Voi i miei appunti su questo argomento è per aiutare quanti, come il sottoscritto, si trovano ancora a dover modificare ogni tanto dei progetti legacy.

Inoltre rappresenta anche un mio omaggio a una tecnologia che nel passato ha veramente rivoluzionato il mondo della programmazione.

Ecco i post precedenti.

Componenti COM: Introduzione - parte 1 di 6
Componenti COM: Le interfacce - parte 2 di 6
Componenti COM: Interface Definition Language .....anche chiamato IDL - parte 3 di 6
Componenti COM: vTable e dintorni - parte 4 di 6

Nel post precedente ho scritto circa i due metodi di accesso possibili a un COM Component.

Eccoci alla quarte parte della serie di post dedicata al mondo COM: in questo post parleremo della vTable, e dei vari metodi cui accedere ai metodi esposti dai COM Component.

Qui i post precedenti

Componenti COM: Introduzione - parte 1 di 6
Componenti COM: Le interfacce - parte 2 di 6
Componenti COM: Interface Definition Language .....anche chiamato IDL - parte 3 di 6

Continueremo a utilizzare, per esporre alcuni dettagli, l'esempio esplicitato nei post precedenti e relativo alla calcolatrice e del COM Server dll che implementa la logica di funzionamento della stessa, esponendo i metodi Init e Somma.

Oss.: Tutto quanto detto varrà sostanzialmente anche se si intende utilizzare un COM Server di tipo exe.

vTable

Come visto nei post precedenti un COM server è in grado di ospitare, al suo interno, uno o più componenti COM, e la sua struttura interna segue una precisa specifica binaria che indica, tra l'altro, come devono essere poste le informazioni all'interno del relativo file (dll o exe che sia).

Questa specifica prevede anche la presenza all'interno del file compilato di una tabella chiamata vTable.

Il contenuto della vTable é creata partendo dalle interfacce di tutti i componenti COM ivi contenuti, e rappresenta l'associazione tra il nome del metodo pubblico e il codice binario che lo implementa e contenuto all'interno del file che repparesenta il COM Server.

In altri termini ogni riga contenuta nella vTable rappresente un metodo pubblico dell'intefaccia di un COM Component, e conterrà un valore che permetterà di accedere, all'interno del file COM Server stesso, all'ubicazione ove è presente il codice binario che implementa tale metodo.

Esempio (esemplificato) di struttura di vTable

Nome Metodo Lista Parametri Indirizzo Metodo all'interno del file
Init aParametro01, aParametro02 Indirizzo codice binario metodo Init
Somma  NN Indirizzo codice binario metodo Somma