ventajas servidor desventajas cliente c++ c com com+ dcom

c++ - servidor - COM, COM+, DCOM, ¿por dónde empezar?



ventajas y desventajas de corba (7)

COM sigue siendo útil si desea trabajar con, o extender, varias API de Windows, como extensiones de shell, host de scripting, etc.

Essential COM (Box) y ATL Internals (Rector and Sells) son excelentes fuentes. La COM efectiva (Box, et al) también está bien.

Si realmente desea una imagen completa en COM, intente obtener una copia del inmenso OLE interno (Brockschmidt).

El COM distribuido (Eddon, Eddon) es decente en DCOM, al igual que los Servicios básicos de COM + (Eddon, Eddon) en COM +.

incluso algunos libros de C ++ supuestamente "puros" tienen bits en COM en ellos. Imperfet C ++ de Matthew Wilson tiene algunas partes útiles para ver cómo funciona en el interior, y su libro STL extendido tiene un par de capítulos sobre cómo adaptar COM a las colecciones STL.

Si desea saber más acerca de cómo escribir servidores COM, probablemente necesitará recuperar ATL. Lo anterior ATL Internals es una necesidad. A pesar de su humilde título de sonido, Beginning ATL COM también tiene algunas cosas útiles.

También es útil en el proceso de aprendizaje contrastar COM con .NET. El Manual de Interoperabilidad de .NET y COM es un gran problema, pero contiene algunas cosas útiles. Además, revisaría Shared Source CLI Essentials, solo para ayudar a contrastar las dos tecnologías.

HTH

Tengo curiosidad por COM +, DCOM. Sé que MSFT no lo alienta a usar estas herramientas de forma nativa (es decir, con C / C ++, de hecho, no hay mucha documentación disponible), pero quiero aprender a usar estas tecnologías, como integrar Internet Explorer en un programa de C.

Pensé que tal vez podría encontrar personas que hayan trabajado con esto o que conozcan esta tecnología.

¿Donde empezar? ¿Algunas ideas? ¿Algún ejemplo (como Hello World DCOM)?


Comience con "Inside COM", luego pase a "Inside DCOM" y luego lea "Essential COM". Obtendrá un control sobre COM. Tanto los libros Inside COM como Inside DCOM son publicaciones de Microsoft. Excelentes libros para quien quiera conocer a fondo COM / DCOM.


Compilé una lista de libros, que deben leerse en este orden:

  1. ''Inside COM'' de Dale Rogerson, este debería ser tu primer libro. Explica los conceptos básicos de conteo de referencias, interfaces, IUnknown, componentes, idl, IDispatch, tipos de automatización y apartamentos. De este libro notará que se necesita bastante código para crear componentes y que puede omitir fácilmente un ''Lanzamiento'', lo que conduce a la pérdida de recursos. También este libro carece de algunos detalles.
  2. ''ATL Internals'' de Tavares. ATL le ayuda tanto con el uso del cliente como con la creación de componentes COM. Con los punteros inteligentes (por ejemplo, CComPtr) es difícil hacer que el recuento de referencias sea incorrecto en estos días. ATL también facilita la fabricación de componentes en c ++. Desafortunadamente, ATL oculta muchas funcionalidades en las macros y tiene una forma intuitiva de implementar el IUnknown. Una alternativa podría ser ''Inside ATL''.
  3. ''COM esencial'' de Don Box. Este libro se menciona con frecuencia, pero no es un buen libro para principiantes. Se pierde la imagen general, pero es excelente en sus detalles (por ejemplo, la diferencia entre ''size_is'' y ''length_is'' en idl).
  4. ''Comprender ActiveX y OLE: una guía para desarrolladores y administradores''. Este libro toca algunas de las interfaces más esotéricas como IPersist, IStorage; IMoniker etc., pero no entra en gran detalle.

Tenga en cuenta que COM es algo así como una tecnología antigua, aunque sigue siendo viable, especialmente para los desarrolladores nativos.



Si se toma en serio el aprendizaje de COM, la "COM esencial" de Don Box es definitivamente una "lectura obligada" absoluta. COM puede ser confuso y, en mi humilde opinión, Don Box es una de las pocas personas que realmente lo "entendió".

El código de ejemplo en "COM esencial" está en C ++. No encontrará muchos libros que admitan COM en C. Puede escribir COM en C, pero será muy, muy doloroso. COM está optimizado para el desarrollo de C ++.

Este libro no es perfecto ni "completo". Hay algunas áreas (otorgadas, un poco esotéricas) sobre las cuales el libro pasa por alto. Por ejemplo, el libro tiene como 1 1/2 páginas en "monikers" (nunca he visto un tratamiento de monikers que me satisfaga). Considero que este libro es el libro fundamental.

En segundo lugar, en la vida real es probable que desee utilizar una biblioteca de apoyo como ATL, en lugar de escribir todo el pegamento COM directamente. Hay demasiadas formas de cometer errores sutiles en COM incluso en la configuración básica. ATL te dará buenos patrones e implementará el código aburrido para ti. En el aprendizaje, es mejor usar C ++ simple.

Hay muchos libros sobre ATL y varios son bastante buenos. Entiendo que ATL ha cambiado bastante desde los viejos tiempos de VC ++ 6, pero no tengo conocimiento de primera mano allí: lamentablemente, la mayoría del código COM con el que trabajo está siempre vinculado al sabor de C ++ en VC6 .

Asegúrese de que el libro que obtenga esté escrito para la versión de Visual Studio y / o ATL que planea usar.

Algunos antecedentes en los libros de COM:

Tenga en cuenta que hay muchos libros por ahí que no entienden a COM, o se centran en cosas equivocadas. Los libros más antiguos son peores a este respecto. Algunos de los primeros libros trataron el COM como poco más que un detalle de plomería necesario para hacer que OLE funcione ("Vinculación e incrustación de objetos", eso es lo que le permite arrastrar y soltar un rango de hoja de cálculo en un documento de Word). Debido a eso, una gran cantidad de material es muy confuso. Pasó un tiempo antes de que la gente se diera cuenta de que OLE no era tan importante y que COM realmente lo era.

Para cuando Don Box publicó "Essential COM", las grietas en la base de COM habían comenzado a hacerse evidentes. No hay nada terriblemente defectuoso con COM, pero las necesidades de la comunidad de desarrollo han evolucionado y superado lo que COM podría hacer sin una reforma seria.

.NET nació de ese esfuerzo para abordar las limitaciones en COM, especialmente en el área de "información de tipo". Apenas unos años después de la publicación de "Effective COM", la atención de la comunidad se desvió a .NET. Debido a eso, el buen material de capacitación de COM está ahora y probablemente seguirá siendo limitado para siempre.

Por lo tanto, COM no está roto, y funciona muy bien para las cosas para las que se usa (por eso Explorer lo usa todavía). Simplemente ya no es la mejor solución para muchos de los problemas que deben resolverse hoy.

En resumen:

Recomiendo "COM esencial" para los conceptos básicos. Luego, cualquiera de los muchos buenos libros de ATL disponibles (sin preferencias fuertes allí), y luego use otros recursos como MSDN o, por supuesto, Desbordamiento de pila, para cubrir áreas que son de particular interés para usted.

Si prefiere evitar confiar en los recursos de la variedad de árbol muerto, siga adelante y aprenda ATL desde la web. Pero vale la pena leer algunos libros a la antigua, y "Essential COM" es uno de ellos.

Buena suerte.


COM , COM+ y DCOM son tres cosas completamente diferentes. En este punto, hay muy pocas razones para aprender COM y casi ninguna razón para aprender DCOM. La única razón por la que puedo pensar es si tiene que mantener o integrar componentes heredados. COM + todavía se usa porque permite el alojamiento fuera de proceso de componentes y cosas agradables como la administración de transacciones distribuidas.

La mejor manera de comenzar a escribir algunos COM es usar ATL . En .NET COM + se llama Enterprise Services .

El mejor libro que conozco en COM es el COM esencial de Don Box y el libro COM + de Tim Ewald también es excelente.


Essential COM es especialmente para implementar o usar componentes COM de C ++, sin usar un IDE, un marco de trabajo o una biblioteca para ayudar.

COM es trivial de usar desde VB o desde Delphi, por ejemplo, que oculta el pegamento específico de COM del programador de aplicaciones. En C ++, a menudo usaría alguna biblioteca de clase que intenta abstraer los detalles ... Essential COM le dirá cuáles son esos detalles (y el tipo de implementa su propia biblioteca / marco al hacerlo).