Übersicht über die Integration von COM+-AnwendungenIntegrating with COM+ Applications Overview

Windows Communication Foundation (WCF) bietet eine umfangreiche Umgebung zum Erstellen von verteilten Anwendungen.Windows Communication Foundation (WCF) provides a rich environment for creating distributed applications. Wenn Sie bereits komponentenbasierte Anwendungslogik, die in COM+ gehostet verwenden, können Sie WCF zum Erweitern der vorhandenen Logik, anstatt neu schreiben müssen, verwenden.If you are already using component-based application logic hosted in COM+, you can use WCF to extend your existing logic rather than having to rewrite it. Ein häufiges Szenario ist das Verfügbarmachen vorhandener COM+- oder Enterprise Services-Geschäftslogik über Webdienste.A common scenario is when you want to expose existing COM+ or Enterprise Services business logic through Web Services.

Wenn eine Schnittstelle auf einer COM+-Komponente als Webdienst verfügbar gemacht wird, werden die Spezifikation und der Vertrag dieser Dienste von einer automatischen Zuordnung bestimmt, die zur Anwendungsinitialisierungszeit ausgeführt wird.When an interface on a COM+ component is exposed as a Web service, the specification and contract of these services are determined by an automatic mapping that is performed at application initialization time. In der folgenden Liste wird das Modell für diese Zuordnung gezeigt:The following list shows the conceptual model for this mapping:

  • Ein Dienst wird für jede verfügbar gemachte COM-Klasse definiert.One service is defined for each exposed COM class.

  • Der Vertrag für den Dienst wird direkt von der Schnittstellendefinition der ausgewählten Komponente abgeleitet, wobei die Möglichkeit des Methodenausschlusses in der Konfiguration definiert wird.The contract for the service is derived directly from the selected component's interface definition with the possibility of method exclusion defined in configuration.

  • Die Vorgänge in diesem Vertrag werden direkt von den Methoden in der Schnittstellendefinition der Komponente abgeleitet.The operations in that contract are derived directly from the methods on the component's interface definition.

  • Die Parameter für diese Vorgänge werden direkt von dem COM-Interoperabilitätstyp abgeleitet, der den Methodenparametern der Komponente entspricht.The parameters for those operations are derived directly from the COM interoperability type that corresponds to the component's method parameters.

Standardadressen und Transportbindungen für den Dienst werden in einer Dienstkonfigurationsdatei bereitgestellt, sie können jedoch ggf. neu konfiguriert werden.Default addresses and transport bindings for the service are provided in a service configuration file, but these can be reconfigured as required.

Hinweis

Die Verträge für die verfügbar gemachten Webdienste bleiben konstant, solange die COM+-Schnittstellen und die Konfiguration unverändert bleiben.The contracts for the exposed Web services remain constant as long as the COM+ interfaces and configuration remain unchanged. Bei einer Änderung mehrerer Schnittstellen werden die verfügbaren Dienste nicht automatisch aktualisiert; das COM+ Service Model Configuration-Tool (ComSvcConfig.exe) muss jedoch erneut ausgeführt werden.A modification to several interfaces does not automatically update the available services and requires re-running the COM+ Service Model Configuration tool (ComSvcConfig.exe).

Die Authentifizierungs- und Autorisierungsanforderungen der COM+-Anwendung und ihrer Komponenten werden bei der Verwendung als Webdienst weiterhin erzwungen.The authentication and authorization requirements of the COM+ application and its components continue to be enforced when used as a Web service.

Initiiert der Aufrufer eine Webdiensttransaktion, werden als transaktionsfähig markierte Komponenten innerhalb dieses Transaktionsbereichs aufgeführt.If the caller initiates a Web service transaction, components marked as transactional enlist within that transaction scope.

Die folgenden Schritte sind erforderlich, um die Schnittstelle einer COM+-Komponente ohne Änderung der Komponente als Webdienst verfügbar zu machen:The following steps are required to expose a COM+ component's interface as a Web service without modifying the component:

  1. Legen Sie fest, ob die Schnittstelle der COM+-Komponente als Webdienst verfügbar gemacht werden kann.Determine whether the COM+ component's interface can be exposed as a Web service.

  2. Wählen Sie einen entsprechenden Hostingmodus aus.Select an appropriate hosting mode.

  3. Verwenden Sie das COM+ Service Model Configuration-Tool (ComSvcConfig.exe) zum Hinzufügen eines Webdiensts für die Schnittstelle.Use the COM+ Service Model Configuration tool (ComSvcConfig.exe) to add a Web service for the interface. Weitere Informationen zur Verwendung von ComSvcConfig.exe finden Sie unter Vorgehensweise: Verwenden Sie das COM+ Service Model Configuration-Tool.For more information about how to use ComSvcConfig.exe, see How to: Use the COM+ Service Model Configuration Tool.

  4. Konfigurieren Sie zusätzliche Diensteinstellungen in der Anwendungskonfigurationsdatei.Configure any additional service settings in the application configuration file. Weitere Informationen zum Konfigurieren einer Komponente, finden Sie unter Vorgehensweise: Konfigurieren von COM+-Diensteinstellungen.For more information about how to configure a component, see How to: Configure COM+ Service Settings.

Unterstützte SchnittstellenSupported Interfaces

Es gibt einige Beschränkungen beim Typ von Schnittstellen, die als Webdienst verfügbar gemacht werden können.There are some restrictions on the type of interfaces that can be exposed as a Web service. Die folgenden Typen von Schnittstellen werden nicht unterstützt:The following types of interfaces are not supported:

  • Schnittstellen, die Objektverweise als Parameter übergeben; der folgende beschränkte Objektverweisansatz wird im Abschnitt "Beschränkte Objektverweisunterstützung" beschrieben.Interfaces that pass object references as parameters - the following limited object reference approach is described in the Limited Object Reference Support section.

  • Schnittstellen, die Typen übergeben, die mit den .NET Framework.NET Framework-COM-Interoperabilitätskonvertierungen nicht kompatibel sind.Interfaces that pass types that are not compatible with the .NET Framework.NET Framework COM interoperability conversions.

  • Schnittstellen für Anwendungen, in denen beim Hosten durch COM+ das Anwendungspooling aktiviert ist.Interfaces for applications that have application pooling enabled when hosted by COM+.

  • Schnittstellen von Komponenten, die für die Anwendung als privat markiert sind.Interfaces of components that are marked as private to the application.

  • COM+-Infrastrukturschnittstellen.COM+ infrastructure interfaces.

  • Schnittstellen aus der Systemanwendung.Interfaces from the system application.

  • Schnittstellen aus Enterprise Services-Komponenten, die dem globalen Assemblycache nicht hinzugefügt wurden.Interfaces from Enterprise Services components that have not been added to the global assembly cache.

Beschränkte ObjektverweisunterstützungLimited Object Reference Support

Da einige bereitgestellte COM+-Komponenten Objekte als Verweisparameter verwenden, wie Rückgabe eines ADO-Recordset-Objekts, schließt die COM+-Integration beschränkte Unterstützung für Objektverweisparameter ein.Because a number of deployed COM+ components do use objects by reference parameters, such as returning an ADO Recordset object, COM+ integration includes limited support for object reference parameters. Die Unterstützung ist auf Objekte beschränkt, die die IPersistStream-COM-Schnittstelle implementieren.The support is limited to objects that implement the IPersistStream COM interface. Sie schließt ADO-Recordset-Objekte ein und kann für anwendungsspezifische COM-Objekte implementiert werden.This includes ADO Recordset objects and can be implemented for application specific COM objects.

Zum Aktivieren dieser Unterstützung des Tools ComSvcConfig.exe bietet die Allowreferences Schalter an, der den regulären Signatur Methodenparameter deaktiviert und stellt sicher, dass das Tool ausgeführt wird, um sicherzustellen, dass Objektverweisparameter nicht verwendet werden .To enable this support, the ComSvcConfig.exe tool provides the allowreferences switch that disables the regular method signature parameter and checks that the tool runs to ensure that object reference parameters are not being used. Darüber hinaus müssen die übergebenen Objekttypen benannt und innerhalb des <persistableTypes>-Konfigurationselements identifiziert werden, das ein untergeordnetes Elements des <comContract>-Elements ist.In addition, the object types that you pass as parameters must be named and identified within the <persistableTypes> configuration element that is a child of the <comContract> element.

Wenn diese Funktion verwendet wird, nutzt der COM+-Integrationsdienst die IPersistStream-Schnittstelle zum Serialisieren oder Deserialisieren der Objektinstanz.When this feature is used, the COM+ integration service uses the IPersistStream interface to serialize or deserialize the object instance. Wenn die Objektinstanz IPersistStream nicht unterstützt, wird eine Ausnahme ausgelöst.If the object instance does not support IPersistStream, an exception is thrown.

In einer Clientanwendung können die Methoden im PersistStreamTypeWrapper-Objekt zum Übergeben eines Objekt an einen Dienst und entsprechend zum Abrufen eines Objekts verwendet werden.Within a client application, the methods on the PersistStreamTypeWrapper object can be used to pass an object in to a service and similarly to retrieve an object.

Hinweis

Aufgrund der benutzerdefinierten und plattformspezifischen Art der Serialisierung Ansätze ist dies am besten geeignet für die Verwendung zwischen WCF-Clients und WCF-Dienste.Due to the custom and platform-specific nature of the serialization approach, this is best suited for use between WCF clients and WCF services.

Auswählen des HostingmodusSelecting the Hosting Mode

COM+ macht Webdienste in einem der folgenden Hostingmodi verfügbar:COM+ exposes Web services in one of the following hosting modes:

  • COM+-gehostetCOM+-hosted

    Der Webdienst wird im dedizierten COM+-Serverprozess (Dllhost.exe) der Anwendung gehostet.The Web service is hosted within the application's dedicated COM+ server process (Dllhost.exe). Dieser Modus erfordert, dass die Anwendung explizit gestartet wird, bevor sie Webdienstanforderungen erhalten kann.This mode requires the application to be explicitly started before it can receive Web service requests. Mit den COM+-Optionen "Als NT-Dienst ausführen" oder "Bei Leerlauf nicht herunterfahren" kann das Herunterfahren der Anwendung und ihrer Dienste bei Leerlauf verhindert werden.The COM+ options "Run as an NT Service" or "Leave running when idle" can be used to prevent idle shutdown of the application and its services. Dieser Modus bietet Webdiensten und DCOM Zugriff auf die Serveranwendung.This mode provides both Web service and DCOM access to the server application.

  • Im Internet gehostetWeb-hosted

    Der Webdienst wird in einem Webserver-Arbeitsprozess gehostet.The Web service is hosted within a Web server worker process. In diesem Modus muss COM+ nicht aktiv sein, wenn die ursprüngliche Anforderung empfangen wird.This mode does not require COM+ to be active when the initial request is received. Wenn die Anwendung beim Empfangen dieser Anforderung nicht aktiv ist, wird sie automatisch vor dem Verarbeiten der Anforderung aktiviert.If the application is not active when this request is received, it is automatically activated prior to processing the request. Dieser Modus bietet ebenfalls Webdiensten und DCOM Zugriff auf die Serveranwendung, er bewirkt jedoch einen Prozesshop für Webdienstanforderungen.This mode also provides both Web service and DCOM access to the server application, but causes a process hop for Web service requests. Dies erfordert in der Regel, dass der Client den Identitätswechsel aktiviert.This typically requires the client to enable impersonation. In WCF dies erreichen Sie mit der AllowedImpersonationLevel Eigenschaft von der WindowsClientCredential -Klasse, die als Eigenschaft der generischen zugegriffen wird ChannelFactory<TChannel> -Klasse, als auch die Impersonation Enumerationswert.In WCF, this can be done with the AllowedImpersonationLevel property of the WindowsClientCredential class, which is accessed as a property of the generic ChannelFactory<TChannel> class, as well as the Impersonation enumeration value.

  • Prozessintern im Internet gehostetWeb-hosted in-process

    Der Webdienst und die COM+-Anwendungslogik werden im Webserver-Arbeitsprozess gehostet.The Web service and the COM+ application logic are hosted within the Web server worker process. Dieser bietet die automatische Aktivierung des Modus "Im Internet gehostet", ohne einen Prozesshop für Webdienstanforderungen zu bewirken.This provides automatic activation of the Web-hosted mode without causing a process hop for Web service requests. Der Nachteil besteht darin, dass der Zugriff auf die Serveranwendung über DCOM nicht möglich ist.The disadvantage is that the server application cannot be accessed through DCOM.

SicherheitsüberlegungenSecurity Considerations

Wie andere WCF-Dienste sind die Sicherheitseinstellungen für den verfügbar gemachten Dienst über die Konfigurationseinstellungen für den WCF-Kanal verwaltet.Like other WCF services, the security settings for the exposed service are administered through configuration settings for the WCF channel. Herkömmliche DCOM-Sicherheitseinstellungen wie die computerweiten DCOM-Berechtigungseinstellungen werden nicht erzwungen.Traditional DCOM security settings such as the DCOM machine-wide permissions settings are not enforced. Zum Erzwingen von COM+-Anwendungsrollen muss die Autorisierung "Zugriffsüberprüfungen auf der Komponentenebene" für die Komponente aktiviert werden.To enforce COM+ application roles, "component-level access checks" authorization must be enabled for the component.

Bei Verwendung einer nicht gesicherten Bindung kann für die Kommunikation die Gefahr von Manipulationen oder der Offenlegung von Informationen bestehen.The use of a non-secured binding can leave communication open to tampering or information disclosure. Verwenden Sie eine gesicherte Bindung, um dies zu verhindern.To prevent this, it is recommended that you use a secured binding.

Für die Modi "COM+-gehostet" und "Im Internet gehostet" müssen die Clientanwendungen dem Serverprozess den Identitätswechsel für den Clientbenutzer gestatten.For the COM+-hosted and Web-hosted modes, client applications must permit the server process to impersonate the client user. Dies kann erfolgen in WCF-Clients durch Festlegen der Identitätswechselebene auf Impersonation.This can be done in WCF clients by setting the impersonation level to Impersonation.

Wenn Internetinformationsdienste (IIS) oder Windows Process Activation Service (WAS) den HTTP-Transport verwenden, kann mit dem Tool Httpcfg.exe eine Transportendpunktadresse reserviert werden.With Internet Information Services (IIS) or Windows Process Activation Service (WAS) using the HTTP transport, the Httpcfg.exe tool can be used to reserve a transport endpoint address. In anderen Konfigurationen ist der Schutz vor nicht autorisierten Diensten wichtig, die als der gewünschte Dienst fungieren.In other configurations, it is important to protect against rogue services that act as the intended service. Um den Start eines nicht autorisierten Dienstes am gewünschten Endpunkt zu verhindern, kann der legitime Dienst so konfiguriert werden, dass er als NT Dienst-ausgeführt wird.To prevent a rogue service from starting at the desired endpoint, the legitimate service can be configured to run as an NT service. Dadurch hat der legitime Dienst vor jedem nicht autorisierten Dienst Anspruch auf die Endpunktadresse.This enables the legitimate service to claim the endpoint address prior to any rogue services.

Wenn Sie eine COM+-Anwendung mit konfigurierten COM+-Rollen als im Internet gehosteten Dienst verfügbar machen, muss der "Starten Sie IIS-Prozesskonto" einer der Rollen der Anwendung hinzugefügt werden.When exposing a COM+ application with configured COM+ roles as a Web-hosted service, the "Launch IIS Process Account" must be added to one of the application’s roles. Dieses Konto, in der Regel mit der Bezeichnung IWAM_computername, muss hinzugefügt werden, um das saubere Herunterfahren von Objekten nach der Verwendung zu ermöglichen.This account, typically with the name IWAM_machinename, must be added to enable clean shutdown of objects after use. Dem Konto sollten keine weiteren Berechtigungen gewährt werden.The account should not be granted any additional permissions.

Die COM+-Funktionen zur Prozesswiederverwendung können für integrierte Anwendungen nicht verwendet werden.The COM+ process recycling features cannot be used on integrated applications. Wenn die Anwendung für die Verwendung der Prozesswiederverwendung konfiguriert ist und die Komponenten in einem COM+-gehosteten Prozess ausgeführt werden, tritt beim Start des Dienstes ein Fehler auf.If the application is configured to use process recycling and the components are running in a COM+ hosted process, the service fails to start. Diese Anforderung schließt Dienste nicht ein, die den Modus „Prozessintern im Internet gehostet“ verwenden, da die Einstellungen für die Prozesswiederverwendung nicht angewendet werden.This requirement does not include services using the Web-hosted in-process mode because the process recycling settings are not applied.

Siehe auchSee Also

Übersicht über die Integration von COM-AnwendungenIntegrating with COM Applications Overview