Server di automazione
L'automazione consente all'applicazione di modificare gli oggetti implementati in un'altra applicazione o di esporre oggetti in modo che possano essere modificati. Un server di automazione è un'applicazione che espone oggetti programmabili (denominati oggetti di automazione) ad altre applicazioni (denominate client di automazione). I server di automazione sono talvolta denominati componenti di automazione.
L'esposizione di oggetti di automazione consente ai client di automatizzare determinate procedure accedendo direttamente agli oggetti e alle funzionalità resi disponibili dal server. L'esposizione di oggetti in questo modo è utile quando le applicazioni forniscono funzionalità utili per altre applicazioni. Ad esempio, un elaboratore di testo potrebbe esporre la relativa funzionalità di controllo ortografico in modo che altri programmi possano usarlo. L'esposizione di oggetti consente ai fornitori di migliorare le funzionalità delle applicazioni usando la funzionalità pronta per l'uso di altre applicazioni.
Questi oggetti di automazione hanno proprietà e metodi come interfaccia esterna. Le proprietà sono attributi denominati dell'oggetto Automation. Le proprietà sono simili ai membri dati di una classe C++. I metodi sono funzioni che funzionano sugli oggetti di automazione. I metodi sono simili alle funzioni membro pubbliche di una classe C++.
Nota
Anche se le proprietà sono come i membri dati C++, non sono direttamente accessibili. Per fornire l'accesso trasparente, configurare una variabile interna nell'oggetto Automation con una coppia di funzioni membro get/set per accedervi.
Esponendo le funzionalità dell'applicazione tramite un'interfaccia comune ben definita, Automazione consente di creare applicazioni in un unico linguaggio di programmazione generale come Microsoft Visual Basic anziché in linguaggi macro specifici dell'applicazione diversi.
Supporto per i server di automazione
Visual C++ e il framework MFC offrono un supporto completo per i server di automazione. Gestiscono gran parte del sovraccarico dovuto alla creazione di un server di automazione, in modo da poter concentrare gli sforzi sulle funzionalità dell'applicazione.
Il meccanismo principale del framework per il supporto di Automazione è la mappa dispatch, un set di macro che si espande nelle dichiarazioni e nelle chiamate necessarie per esporre metodi e proprietà per OLE. Una mappa di distribuzione tipica è simile alla seguente:
BEGIN_DISPATCH_MAP(CMyServerDoc, COleServerDoc)
DISP_PROPERTY(CMyServerDoc, "Msg", m_strMsg, VT_BSTR)
DISP_FUNCTION(CMyServerDoc, "SetDirty", SetDirty, VT_EMPTY, VTS_I4)
END_DISPATCH_MAP()
La Creazione guidata classi e la visualizzazione classi consentono di gestire le mappe di distribuzione. Quando si aggiunge un nuovo metodo o proprietà a una classe, Visual Studio aggiunge una macro o DISP_PROPERTY
corrispondente DISP_FUNCTION
con parametri che indicano il nome della classe, i nomi esterni e interni del metodo o della proprietà e i tipi di dati.
La finestra di dialogo Aggiungi classe semplifica anche la dichiarazione delle classi di automazione e la gestione delle relative proprietà e operazioni. Quando si usa la finestra di dialogo Aggiungi classe per aggiungere una classe al progetto, specificare la relativa classe di base. Se la classe base consente l'automazione, nella finestra di dialogo Aggiungi classe vengono visualizzati i controlli usati per specificare se la nuova classe deve supportare l'automazione, se è "OLE creatable", ovvero se gli oggetti della classe possono essere creati in una richiesta da un client COM e il nome esterno da usare per il client COM.
La finestra di dialogo Aggiungi classe crea quindi una dichiarazione di classe, incluse le macro appropriate per le funzionalità OLE specificate. Aggiunge anche lo scheletro di codice per l'implementazione delle funzioni membro della classe.
La Creazione guidata applicazione MFC semplifica i passaggi necessari per portare a terra l'applicazione server di automazione. Se si seleziona la casella di controllo Automazione nella pagina Funzionalità avanzate, la Creazione guidata applicazione MFC aggiunge alla funzione dell'applicazione InitInstance
le chiamate necessarie per registrare gli oggetti di Automazione ed eseguire l'applicazione come server di automazione.