Delen via


Overzicht van integratie met COM+-toepassingen

Windows Communication Foundation (WCF) biedt een uitgebreide omgeving voor het maken van gedistribueerde toepassingen. Als u al toepassingslogica op basis van onderdelen gebruikt die wordt gehost in COM+, kunt u WCF gebruiken om uw bestaande logica uit te breiden in plaats van deze opnieuw te schrijven. Een veelvoorkomend scenario is wanneer u bestaande COM+ of Enterprise Services-bedrijfslogica beschikbaar wilt maken via webservices.

Wanneer een interface op een COM+-onderdeel wordt weergegeven als een webservice, wordt de specificatie en het contract van deze services bepaald door een automatische toewijzing die wordt uitgevoerd tijdens de initialisatietijd van de toepassing. In de volgende lijst ziet u het conceptuele model voor deze toewijzing:

  • Er wordt één service gedefinieerd voor elke blootgestelde COM-klasse.

  • Het contract voor de service wordt rechtstreeks afgeleid van de interfacedefinitie van het geselecteerde onderdeel met de mogelijkheid van methodeuitsluiting die in de configuratie is gedefinieerd.

  • De bewerkingen in dat contract worden rechtstreeks afgeleid van de methoden in de interfacedefinitie van het onderdeel.

  • De parameters voor deze bewerkingen worden rechtstreeks afgeleid van het COM-interoperabiliteitstype dat overeenkomt met de methodeparameters van het onderdeel.

Standaardadressen en transportbindingen voor de service worden geleverd in een serviceconfiguratiebestand, maar deze kunnen naar behoefte opnieuw worden geconfigureerd.

Notitie

De contracten voor de weergegeven webservices blijven constant zolang de COM+-interfaces en -configuratie ongewijzigd blijven. Bij een wijziging van verschillende interfaces worden de beschikbare services niet automatisch bijgewerkt en moet het com+ servicemodelconfiguratieprogramma (ComSvcConfig.exe) opnieuw worden uitgevoerd.

De verificatie- en autorisatievereisten van de COM+-toepassing en de bijbehorende onderdelen blijven afdwingen wanneer ze worden gebruikt als webservice.

Als de aanroeper een webservicetransactie initieert, worden onderdelen gemarkeerd als transactionele lijst binnen dat transactiebereik.

De volgende stappen zijn vereist om de interface van een COM+-onderdeel als een webservice beschikbaar te maken zonder het onderdeel te wijzigen:

  1. Bepaal of de interface van het COM+-onderdeel beschikbaar kan worden gesteld als een webservice.

  2. Selecteer een geschikte hostingmodus.

  3. Gebruik het hulpprogramma COM+ Service Model Configuration (ComSvcConfig.exe) om een webservice voor de interface toe te voegen. Zie Het com+ servicemodelconfiguratieprogramma gebruiken voor meer informatie over het gebruik van ComSvcConfig.exe.

  4. Configureer eventuele aanvullende service-instellingen in het toepassingsconfiguratiebestand. Zie Voor meer informatie over het configureren van een onderdeel : COM+ Service-instellingen configureren.

Ondersteunde interfaces

Er zijn enkele beperkingen voor het type interfaces dat als webservice kan worden weergegeven. De volgende typen interfaces worden niet ondersteund:

  • Interfaces die objectverwijzingen doorgeven als parameters: de volgende benadering voor beperkte objectverwijzing wordt beschreven in de sectie Ondersteuning voor beperkte objecten.

  • Interfaces die typen doorgeven die niet compatibel zijn met de com-interoperabiliteitsconversies van .NET Framework.

  • Interfaces voor toepassingen waarvoor groepering van toepassingen is ingeschakeld wanneer deze worden gehost door COM+.

  • Interfaces van onderdelen die zijn gemarkeerd als privé voor de toepassing.

  • COM+ infrastructuurinterfaces.

  • Interfaces van de systeemtoepassing.

  • Interfaces van Enterprise Services-onderdelen die niet zijn toegevoegd aan de algemene assemblycache.

Ondersteuning voor beperkte objectverwijzing

Omdat een aantal geïmplementeerde COM+-onderdelen objecten gebruikt op basis van referentieparameters, zoals het retourneren van een ADO Recordset-object, bevat COM+-integratie beperkte ondersteuning voor objectverwijzingsparameters. De ondersteuning is beperkt tot objecten die de IPersistStream COM-interface implementeren. Dit omvat ADO Recordset-objecten en kan worden geïmplementeerd voor toepassingsspecifieke COM-objecten.

Als u deze ondersteuning wilt inschakelen, biedt het hulpprogramma ComSvcConfig.exe de schakeloptie allowreferences waarmee de parameter voor de reguliere methodehandtekening wordt uitgeschakeld en wordt gecontroleerd of het hulpprogramma wordt uitgevoerd om ervoor te zorgen dat objectverwijzingsparameters niet worden gebruikt. Bovendien moeten de objecttypen die u als parameters doorgeeft, worden benoemd en geïdentificeerd in het <persistableTypes> configuratie-element dat een onderliggend element van het <comContract> element is.

Wanneer deze functie wordt gebruikt, gebruikt de COM+-integratieservice de IPersistStream interface om het objectexemplaren te serialiseren of deserialiseren. Als het objectexemplaren niet worden ondersteund IPersistStream, wordt er een uitzondering gegenereerd.

In een clienttoepassing kunnen de methoden op het PersistStreamTypeWrapper object worden gebruikt om een object door te geven aan een service en op dezelfde manier om een object op te halen.

Notitie

Vanwege de aangepaste en platformspecifieke aard van de serialisatiebenadering is dit het meest geschikt voor gebruik tussen WCF-clients en WCF-services.

De hostingmodus selecteren

COM+ maakt webservices beschikbaar in een van de volgende hostingmodi:

  • COM+gehost

    De webservice wordt gehost in het toegewezen COM+-serverproces van de toepassing (Dllhost.exe). Voor deze modus moet de toepassing expliciet worden gestart voordat deze webserviceaanvragen kan ontvangen. De COM+-opties 'Uitvoeren als een NT-service' of 'Actief laten wanneer niet actief' kan worden gebruikt om inactiviteit van de toepassing en de bijbehorende services te voorkomen. Deze modus biedt zowel webservice- als DCOM-toegang tot de servertoepassing.

  • Gehost op het web

    De webservice wordt gehost binnen een webserverwerkproces. Voor deze modus hoeft COM+ niet actief te zijn wanneer de eerste aanvraag wordt ontvangen. Als de toepassing niet actief is wanneer deze aanvraag wordt ontvangen, wordt deze automatisch geactiveerd voordat de aanvraag wordt verwerkt. Deze modus biedt ook zowel webservice- als DCOM-toegang tot de servertoepassing, maar veroorzaakt een proceshop voor webserviceaanvragen. Hiervoor moet de client imitatie inschakelen. In WCF kan dit worden gedaan met de AllowedImpersonationLevel eigenschap van de WindowsClientCredential klasse, die wordt geopend als een eigenschap van de algemene ChannelFactory<TChannel> klasse, evenals de Impersonation opsommingswaarde.

  • Web-hosted in-process

    De webservice en de COM+-toepassingslogica worden gehost binnen het werkproces van de webserver. Dit biedt automatische activering van de web-hostmodus zonder dat er een proceshop voor webserviceaanvragen wordt veroorzaakt. Het nadeel is dat de servertoepassing niet kan worden geopend via DCOM.

Beveiligingsoverwegingen

Net als andere WCF-services worden de beveiligingsinstellingen voor de weergegeven service beheerd via configuratie-instellingen voor het WCF-kanaal. Traditionele DCOM-beveiligingsinstellingen, zoals de DCOM-machtigingsinstellingen voor de hele DCOM-computer, worden niet afgedwongen. Als u COM+-toepassingsrollen wilt afdwingen, moet autorisatie op onderdeelniveau worden ingeschakeld voor het onderdeel.

Het gebruik van een niet-beveiligde binding kan communicatie openlaten voor manipulatie of openbaarmaking van informatie. U kunt dit voorkomen door een beveiligde binding te gebruiken.

Voor de com+-gehoste en web-hostende modi moeten clienttoepassingen het serverproces toestaan om de clientgebruiker te imiteren. Dit kan worden gedaan in WCF-clients door het imitatieniveau in te stellen op Impersonation.

Met IIS (Internet Information Services) of Windows Process Activation Service (WAS) met behulp van het HTTP-transport kan het hulpprogramma Httpcfg.exe worden gebruikt om een transporteindpuntadres te reserveren. In andere configuraties is het belangrijk om te beschermen tegen rogue services die fungeren als de beoogde service. Om te voorkomen dat een rogue service vanaf het gewenste eindpunt begint, kan de legitieme service worden geconfigureerd om te worden uitgevoerd als een NT-service. Hierdoor kan de legitieme service het eindpuntadres claimen voordat er sprake is van rogue services.

Wanneer u een COM+-toepassing met geconfigureerde COM+-rollen beschikbaar wilt maken als een web-hostservice, moet het 'IIS-procesaccount starten' worden toegevoegd aan een van de rollen van de toepassing. Dit account, meestal met de naam IWAM_machinename, moet worden toegevoegd om na gebruik het opschonen van objecten in te schakelen. Het account mag geen extra machtigingen krijgen.

De com+ procesrecyclingfuncties kunnen niet worden gebruikt voor geïntegreerde toepassingen. Als de toepassing is geconfigureerd voor het gebruik van procesrecycling en de onderdelen worden uitgevoerd in een com+ gehost proces, kan de service niet worden gestart. Deze vereiste omvat geen services die gebruikmaken van de in het web gehoste in-procesmodus, omdat de instellingen voor procesrecycling niet worden toegepast.

Zie ook