DCOM-Beispiel: Ruft das COM-Objekt im Windows-Dienst von mehreren Clients auf
Aktualisiert: November 2007
Das DCOM-Beispiel demonstriert, wie ein COM-Objekt, das in einem Windows-Dienst implementiert ist, von mehreren, auf verschiedenen Computern laufenden Clients aus aufgerufen wird. Es besteht aus mehreren Teilen:
DrawServ Der Windows-Dienst, der das COM-Objekt implementiert.
ATLDraw Der Client, der eine Verbindung zu dem COM-Objekt von DrawServ herstellt.
DrawCtl Eine Steuerelementversion von ATLDraw. Sie verfügt über eine Connect-Methode (die einen Computernamen als Zeichenfolgenparameter verwendet), eine Disconnect-Methode und eine Clear-Methode.
MFCCont Ein MFC-Container für DrawCtl. Geben Sie den Namen des Servers (u. U. des Remoteservers) ohne Anführungszeichen und Schrägstriche ein.
ATLCont Ein ATL-Container für DrawCtl. Geben Sie den Namen des Servers (u. U. des Remoteservers) ohne Anführungszeichen und Schrägstriche ein.
Dieses Beispiel funktioniert nur, wenn auf allen Computern Windows 2000 oder höher ausgeführt wird.
Vergleichen Sie dieses Beispiel mit dem ATL-DCOM-Beispiel.
Sicherheitshinweis: |
---|
Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird. |
So rufen Sie Beispiele und Anweisungen für ihre Installation ab
Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.
Weitere Informationen finden Sie unter Suchen von Beispieldateien.
Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.
Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.
Erstellen und Ausführen des Beispiels
So erstellen Sie dieses Beispiel und führen es aus
Öffnen Sie die Projektmappe dcom.sln.
Erstellen Sie das DrawServ-Beispiel und das ATLDraw-Beispiel.
Kopieren Sie Drawserv.exe und Atldraw.exe auf jeden Computer, von dem aus das Beispiel ausgeführt werden soll. Registrieren Sie den Server auf jedem Computer, indem Sie DrawServ mit dem Befehlszeilenargument /RegServer bzw. -RegServer (ohne Berücksichtigung der Groß- und Kleinschreibung) ausführen. Beispiel:
DrawServ /RegServer
(Dies funktioniert nur, wenn Register.dll registriert ist.) Der Server muss deshalb auf jeden Client kopiert werden, weil die CLSID für den Server und die Typbibliothek des Servers auf dem Client registriert sein müssen.
Starten Sie den Dienst auf dem Server mithilfe des Symbols Dienste in der Systemsteuerung.
Wählen Sie die Eigenschaften der DrawServ-Klasse aus. Verwenden Sie dazu auf jedem Client DCOMCNFG. Wählen Sie auf der Registerkarte Speicherort die Option Anwendung auf dem folgenden Computer ausführen, und geben Sie den Namen des Computers ein, auf dem das Serverobjekt ausgeführt wird. Deaktivieren Sie das Kontrollkästchen Anwendung auf diesem Computer ausführen.
Führen Sie ATLDraw aus, und wählen Sie die Option Server. Stellen Sie über die Menüs der einzelnen Clients eine Verbindung her. Zeichnen Sie im Clientfenster, indem Sie die linke Maustaste gedrückt halten und eine Linie ziehen. Die gezeichnete Linie sollte auf jedem Client erscheinen, der mit demselben Server verbunden ist. Darüber hinaus können Sie mit dem Befehl Farbe im Menü Ansicht die Farbe für jeden Client ändern.
Wenn bei der Verbindungsherstellung zu einem Remoteserver Probleme auftreten (z. B., wenn Tstcon32.exe nicht CoInitializeSecurity aufruft), führen Sie DCOMCNFG auf dem Client aus und öffnen die Registerkarte Standardeigenschaften. Legen Sie für Standard-Authentication-Level die Einstellung Keine und für Standard-Impersonation-Level die Einstellung Anonym fest.
Siehe auch
Aufgaben
DCOM-Beispiel: Demonstriert den Remoteaufruf eines COM-Objekts