c++ - troncamento - ventun anni crusca




motivi per cui scegliere com (3)

COM è lo standard di fatto per l'automazione e IPC su Windows (anche se .Net ha iniziato a spostare l'attenzione), quindi ci sono aree che semplicemente non hanno (o hanno avuto) una scelta:

  • Estensioni della shell
  • ActiveX si basa su COM
  • Estensioni di Internet Explorer
  • estensione delle applicazioni MS Office
  • Scriptability per JScript, VBScript, ... con un file binario

Prima dell'evento di .Net, quasi tutta l'automazione delle applicazioni della SM era attraverso la COM e anche alcune aziende hanno partecipato a quel treno.

Anche DCOM è, se sei disposto a limitarti a Windows, una tecnologia affidabile e collaudata per componenti distribuiti.

mi chiedevo perché si sarebbe scelto Com come la sua "tecnologia" di sviluppo del software

il mio primo pensiero è l'indipendenza da macchina / programmazione _language

qual è il tuo ?


Il punto di forza di COM è che si tratta di una tecnologia di interoperabilità ampiamente applicabile.

  • COM è molto ben supportato su Windows senza dover installare nulla.
  • Offre ricche funzionalità di interoperabilità per varie combinazioni di applicazioni gestite / non gestite e applicazioni in diverse lingue: al client non importa come funziona il server e viceversa.
  • Se hai già una grande base di codice non gestita (come ad esempio abbiamo milioni di righe di codice C ++) e vuoi esporre la sua funzionalità ai client in una varietà di linguaggi, COM sarà sicuramente la tua scelta - ATL rende la creazione di server COM abbastanza semplice e i client essere in grado di utilizzare senza ulteriore sforzo.
  • Non dimenticare COM +, che è semplicemente fantastico se hai un server COM in-process non gestito a 32-bit e vuoi esporlo a un client a 64-bit - molte volte hai solo bisogno di più clic del mouse e non hai bisogno di codificare nulla nuovo a tutti.
  • La COM supporta i modelli di threading (vedi questo articolo per i dettagli) che ti consente di decidere quanta scalabilità hai bisogno dal tuo componente COM e quanto sei disposto a pagare per questo e nessun client sarà in grado di abusare del tuo componente e farsi male a causa di accesso concorrente ai dati.

Il mio primo pensiero è - non farlo !!! Se riesci a stare lontano da COM / DCOM.

Naturalmente se hai bisogno di integrarti con le app legacy non avrai scelta, ma anche in questo caso usa COM solo per attraversare i confini gestiti / non gestiti.

Se la compatibilità legacy non è un problema, rimani gestito. .NET ha tutto ciò che COM può offrire e poi alcuni. E la complessità e la stabilità del codice .NET non è nulla da confrontare con il codice COM equivalente.

Ho lavorato con l'integrazione di Visual Studio per qualche tempo. Originariamente era tutto COM, ma MS ne converte lentamente vari pezzi da gestire. Il nuovo framework Editor basato su MEF riduce la quantità di codice necessario per ordini di grandezza. E nessun problema con il registro. Un tale sollievo.





com