2010-08-14 9 views
5

I Zweck .NET und COM, wissen wollenIst .NET Ersatz für COM?

  • Ist .NET den gleichen Zweck wie die von COM hat? Weil der Hauptzweck von COM darin besteht, Sprachinteroperabilität wie .NET zu ermöglichen?
  • Wenn ja Warum nutzen viele Unternehmen COM für ihre Entwicklungsprojekte?
  • Lohnt es sich, COM zu lernen, wenn wir .NET verwenden können?
+0

In Verbindung stehende http://stackoverflow.com/questions/2280639/is-net-all-com-underseeth –

Antwort

6
  1. Einer der Gründe für COM war, dass, wenn Sie eine C++ Bibliothek in Borland C++ Builder entwickelt man es nicht in VB6 verwenden könnte. Aber Sie könnten es auch nicht in VC6 verwenden (COM ist viel älter als diese Produkte btw). COM ist also ein C-ähnliches Protokoll für die Interoperabilität zwischen Anwendungen und Bibliotheken. .NET ermöglicht die Interoperabilität zwischen verwalteten Anwendungen. Wenn Sie mit C++ interoperieren möchten, verwenden Sie C++/CLI. Aber was tun Sie, wenn Sie eine ältere COBOL-Anwendung haben, die eine .NET-Komponente verwenden möchte? Wenn man diese Komponente als COM aufdeckt, wäre das eine Möglichkeit, sich ihr zu nähern. Eine andere API bietet eine C-ähnliche API.

  2. Nicht überraschend seit COM seit den späten 80er Jahren (glaube ich) viel Geschäftswert auf COM-Tech gebaut wurde. Es macht keinen geschäftlichen Sinn und ist viel zu kostspielig und riskant, um Arbeitsanwendungen zu .NET nur zum Spaß neu zu schreiben. Unternehmen, die Legacy-Anwendungen pflegen müssen, haben natürlich viele COM-basierte Tools und Apps.

  3. Es hängt alles von Ihrem Geschäftsfall ab. Kannst du nur mit der .NET-Plattform davonkommen? Ich denke, du brauchst COM nicht zu kennen (obwohl COM von der .NET-Plattform benutzt wird und manchmal Fehler durchsickern). Wenn Sie COM-Bibliotheken verwenden, die vom Betriebssystem oder anderen Bibliotheken bereitgestellt werden, ist es sinnvoll, einige grundlegende COM-Regeln zu kennen.

PS. Ich mag COM. Ich mag den Registrierungsteil nicht, ich mag DCOM nicht, und ich denke, dass die COM-Apartments am Ende mehr verwechselt haben als sie den Entwicklern geholfen haben (sie wurde ursprünglich entwickelt, um Entwicklern zu helfen, Rennbedingungen und damit zusammenhängende Probleme zu vermeiden). Aber die Kern-COM ist ziemlich anständig. Einige Kämpfe waren vorbei "Ist COM OO?" aber das läuft darauf hinaus, warum wir OO verwenden? IMO, um Verkapselung zu geben. Die Frage lautet also: "Ist COM gut verkapselt?". Die Antwort ist ja (IMO).

PS. Zuletzt habe ich überprüft, dass Firefox etwas namens XPCOM verwendet hat, das für mich sehr ähnlich aussah wie COM.

+0

Ich benutze, um mit meinem Chef zu scherzen, dass C++ + COM Kompetenz bald wie COBOL Kompetenz ist.Es gibt nicht viele Jobs, aber noch weniger Leute, die es wissen, so dass wir in der Lage sind, unsere eigenen Gehälter festzulegen, da mit dieser Technologie so viel geschäftlicher Wert verbunden ist. – FuleSnabel

1

Sie können dieses Channel9 Video interessant finden. Juval Löwy, ein Microsoft COM/WCF-Experte sagt, es ist sinnvoll, kann jede Klasse einen WCF-Dienst, ähnlich wie DCOM machen kann

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

Dieser Zusammenhang argumentiert, dass Kompromisse hinsichtlich der Leistung für Benutzerfreundlichkeit gemacht werden und Leichtigkeit der Entwicklung im Laufe der Zeit. Wenn dieser Trend anhält, wird der Bedarf an COM/DCOM-Programmierung auf niedriger Ebene reduziert. Natürlich deckt dies nicht jedes Szenario ab, deckt jedoch viele nicht kritische Geschäftsanforderungen ab.

Sollten Sie COM lernen? Wie es heute steht, basiert WCF (und andere Teile von .NET) auf COM. Wenn Sie ein Verständnis von COM haben, können Sie diese Probleme auf niedriger Ebene beheben, aber wenn es sich nicht um Ihre primäre oder sekundäre berufliche Schwerpunktsetzung handelt, würde ich nicht viel Zeit darauf verwenden.

+0

Ich werde mir das ansehen, aber meine Knie-Ruck-Reaktion ist: Nein, nicht schon wieder !!! Jede Klasse zu einer COM-Klasse zu machen, schien damals eine brillante Idee zu sein, aber es ist wirklich ein Durcheinander, weil die Entwicklungskosten viel steigen. Möchte ich auch alle meine internen Klassen unseren Benutzern zugänglich machen? Und mit DCOM überflutete es das Netzwerk mit Pings. Mit Webservices denke ich, es ist noch schlimmer als die Schnittstelle eines Webservice, die Sie nicht auf die gleiche Weise wie eine Klasse im Speicher entwerfen (ein Webservice verwendet oft klumpige Methoden, um den Anrufaufwand zu reduzieren). Auch ein Webservice kann jederzeit verschwinden, ein Inmemory-Objekt nicht. – FuleSnabel

+0

@FuleSnabel Ich stimme nicht einigen Ihrer Punkte zu, wenn ich über einige der gesprächigeren Bindungen spreche ... Vielleicht ist eine Sache, die verhindert, dass die Theorie Wirklichkeit wird, die Notwendigkeit, alle privaten Schnittstellen öffentlich zu machen. Eine Möglichkeit, das zu beheben, könnte darin bestehen, die Klasse "Int" zu einem WCF-Dienst zu machen. Wenn das passieren sollte, dann können Sie vielleicht Ihre Privatsphäre privat halten. Vielleicht möchten Sie auch die Namedpipes-Bindung für mehr Effizienz betrachten, aber der Hauptpunkt besteht darin, die parallele Programmierung mit WCF auf Kosten der Effizienz pro Thread problemlos zu ermöglichen. – LamonteCristo

Verwandte Themen