2010-08-14 3 views
5

Je veux savoir but de .NET et COM,Est-ce que .NET remplace COM?

  • est-NET a le même but que celui de COM? Parce que le but principal de COM est de permettre l'interopérabilité des langues ainsi que celle de .NET?
  • Si oui Pourquoi de nombreuses entreprises utilisent-elles encore COM pour leurs projets de développement?
  • Vaut-il la peine d'apprendre COM quand on peut utiliser .NET?
+0

En rapport http://stackoverflow.com/questions/2280639/is-net-all-com-underneath –

Répondre

6
  1. L'une des raisons pour COM est que si vous avez développé une bibliothèque C++ Builder Borland C++ vous ne pouvez l'utiliser dans VB6. Mais vous ne pouvez pas non plus l'utiliser dans VC6 (COM est beaucoup plus ancien que ces produits). COM est donc un protocole de type C pour l'interopérabilité entre applications et bibliothèques. .NET permet l'interopérabilité entre les applications gérées. Si vous voulez interopérer avec C++, utilisez C++/CLI. Mais que faites-vous si vous avez une application COBOL héritée qui souhaite utiliser un composant .NET? Exposer ce composant COM serait une façon de l'aborder. Exposer une API de type C est une autre manière.

  2. Pas étonnant depuis que COM existe depuis la fin des années 80 (je pense) beaucoup de valeur commerciale a été construite sur la technologie COM. Cela n'a aucun sens et c'est trop coûteux et risqué de réécrire des applications de travail à .NET juste pour le plaisir. Les entreprises qui doivent gérer des applications héritées ont naturellement beaucoup d'outils et d'applications basés sur COM.

  3. Tout dépend de votre analyse de rentabilisation. Pouvez-vous sortir avec la plate-forme. NET seulement Je suppose que vous n'avez pas besoin de connaître COM (bien que COM est utilisé par la plate-forme. NET et parfois des erreurs de fuite à travers). Si vous utilisez des bibliothèques COM exposées par le système d'exploitation ou d'autres bibliothèques, il est logique de connaître certaines règles COM de base.

PS. J'aime COM. Je n'aime pas la partie enregistrement, je n'aime pas DCOM et je pense que les appartements COM à la fin ont confondu plus que cela a aidé les développeurs (il a été initialement développé pour aider les développeurs à éviter les conditions de course et les problèmes connexes). Mais le noyau COM est assez décent. Certains combats ont été terminés "Est-ce que COM OO?" mais cela revient à pourquoi utilise-t-on OO? IMO pour donner l'encapsulation. Donc la question est alors: "Est-ce que COM donne une bonne encapsulation?". La réponse est oui (IMO).

PS. La dernière fois que j'ai vérifié Firefox utilisait quelque chose appelé XPCOM qui me ressemblait beaucoup COM.

+0

Je plaisante avec mon patron sur le fait que la compétence C++ + COM est bientôt une compétence COBOL.Il n'y a pas beaucoup d'emplois, mais encore moins de gens qui le savent, alors nous serons en mesure de fixer nos propres salaires, car il y a tellement de valeur commerciale liée à cette technologie. – FuleSnabel

1

Vous pouvez trouver cette vidéo Channel9 intéressante. Juval Lowy, un expert Microsoft COM/WCF dit qu'il peut être judicieux de mai de chaque classe un service WCF, proche de DCOM

http://channel9.msdn.com/shows/ARCast.TV/ARCastTV-Every-Class-a-WCF-Service-with-Juval-Lowy/

Ce lien fait valoir que les compromis sont faits en termes de performance pour la facilité d'utilisation et facilité de développement au fil du temps. A mesure que cette tendance se poursuit, la nécessité d'une programmation COM/DCOM de bas niveau est réduite. Bien sûr, cela ne couvre pas tous les scénarios, mais il couvre de nombreux besoins commerciaux non critiques.

Devriez-vous apprendre COM? À l'heure actuelle, WCF (et d'autres parties de .NET) est basé sur COM. Avoir une compréhension de COM aidera à résoudre les problèmes de bas niveau qui surgissent, mais à moins que ce soit votre objectif de carrière primaire ou secondaire, je ne passerais pas beaucoup de temps là-dessus.

+0

Je vais regarder ceci mais ma réaction de genou est: Non, pas encore !!! Faire de chaque classe une classe COM semblait être une idée brillante à la fois mais c'est vraiment un gâchis en raison de l'augmentation du coût de développement. Aussi est-ce que je veux exposer toutes mes classes internes à nos utilisateurs? Et avec DCOM, il a inondé le réseau de pings. Avec les webservices, je pense que c'est encore pire en tant qu'interface d'un web service que vous ne concevez pas de la même manière qu'une classe que vous avez en mémoire (un webservice utilise souvent des méthodes volumineuses pour réduire le temps d'appel). Un service Web peut également disparaître à chaque fois qu'un objet inmemory ne le sera pas. – FuleSnabel

+0

@FuleSnabel Je ne suis pas en désaccord avec plusieurs de vos arguments quand vous parlez de certaines des liaisons les plus bavardes ... Peut-être une chose qui empêche la théorie de devenir réalité est la nécessité de rendre publiques toutes les interfaces privées. Une façon de résoudre cela pourrait être de faire de la classe "Int" un service WCF. Si cela devait se produire, alors peut-être que vous pourriez garder vos proches privés. En outre, vous pouvez regarder la liaison namedpipes pour plus d'efficacité, mais le point global est de permettre facilement la programmation parallèle en utilisant WCF au prix d'une efficacité par thread. – LamonteCristo