Integrace s aplikacemi modelu COM+ – přehled
Windows Communication Foundation (WCF) poskytuje bohaté prostředí pro vytváření distribuovaných aplikací. Pokud už používáte logiku aplikace založenou na komponentách hostované v modelu COM+, můžete použít WCF k rozšíření stávající logiky a nemusíte ji přepisovat. Běžným scénářem je zveřejnění stávající obchodní logiky modelu COM+ nebo Enterprise Services prostřednictvím webových služeb.
Když je rozhraní komponenty MODELU COM+ vystaveno jako webová služba, specifikace a kontrakt těchto služeb jsou určeny automatickým mapováním, které se provádí v době inicializace aplikace. Následující seznam ukazuje koncepční model pro toto mapování:
Pro každou vystavenou třídu MODELU COM je definována jedna služba.
Kontrakt pro službu je odvozen přímo z definice rozhraní vybrané komponenty s možností vyloučení metody definované v konfiguraci.
Operace v daném kontraktu jsou odvozeny přímo z metod v definici rozhraní komponenty.
Parametry těchto operací jsou odvozeny přímo z typu interoperability modelu COM, který odpovídá parametrům metody komponenty.
Výchozí adresy a přenosové vazby pro službu jsou poskytovány v konfiguračním souboru služby, ale je možné je podle potřeby překonfigurovat.
Poznámka:
Kontrakty pro vystavené webové služby zůstávají konstantní, pokud rozhraní a konfigurace modelu COM+ zůstanou beze změny. Úprava několika rozhraní neaktualizuje automaticky dostupné služby a vyžaduje opětovné spuštění nástroje com+ Service Model Configuration (ComSvcConfig.exe).
Požadavky na ověřování a autorizaci aplikace MODELU COM+ a jeho komponenty se budou dál vynucovat při použití jako webová služba.
Pokud volající iniciuje transakci webové služby, komponenty označené jako transakční zařazení v rámci tohoto oboru transakce.
Následující kroky jsou nutné k zveřejnění rozhraní komponenty MODELU COM+ jako webové služby beze změny komponenty:
Určete, jestli lze rozhraní komponenty COM+ vystavit jako webovou službu.
Vyberte odpovídající režim hostování.
Pomocí nástroje COM+ Service Model Configuration (ComSvcConfig.exe) přidejte webovou službu pro rozhraní. Další informace o použití ComSvcConfig.exe naleznete v tématu Postupy: Použití nástroje com+ Service Model Configuration Tool.
V konfiguračním souboru aplikace nakonfigurujte všechna další nastavení služby. Další informace o tom, jak nakonfigurovat komponentu, naleznete v tématu Postupy: Konfigurace nastavení služby MODELU COM+.
Podporovaná rozhraní
Existují určitá omezení pro typ rozhraní, která lze vystavit jako webovou službu. Následující typy rozhraní nejsou podporovány:
Rozhraní, která předávají odkazy na objekty jako parametry – následující přístup omezený odkaz na objekt je popsán v části Podpora odkazů na objekty s omezenými objekty.
Rozhraní, která předávají typy, které nejsou kompatibilní s převody interoperability modelu COM rozhraní .NET Framework.
Rozhraní pro aplikace, které mají povolené sdružování aplikací při hostování modelu COM+.
Rozhraní komponent, které jsou pro aplikaci označené jako soukromé.
Rozhraní infrastruktury MODELU COM+.
Rozhraní ze systémové aplikace
Rozhraní z komponent služeb Enterprise Services, které nebyly přidány do globální mezipaměti sestavení.
Podpora omezených odkazů na objekty
Vzhledem k tomu, že řada nasazených komponent modelu COM+ používá objekty referenčními parametry, jako je například vrácení objektu sady záznamů ADO, zahrnuje integrace modelu COM+ omezenou podporu parametrů odkazu na objekt. Podpora je omezena na objekty, které implementují IPersistStream
rozhraní MODELU COM. To zahrnuje objekty ADO Recordset a lze je implementovat pro objekty modelu COM specifické pro aplikace.
Pokud chcete tuto podporu povolit, nástroj ComSvcConfig.exe poskytuje přepínač allowreferences , který zakáže parametr signatury regulární metody a zkontroluje, že nástroj běží, aby se zajistilo, že se nepoužívají parametry odkazu na objekt. Kromě toho musí být typy objektů, které předáte jako parametry, pojmenovány a identifikovány v rámci <persistableTypes>
elementu konfigurace, který je podřízený prvek <comContract>
.
Při použití této funkce používá integrační služba IPersistStream
MODELU COM+ rozhraní k serializaci nebo deserializaci instance objektu. Pokud instance objektu nepodporuje IPersistStream
, vyvolá se výjimka.
V klientské aplikaci lze metody objektu PersistStreamTypeWrapper použít k předání objektu službě a podobně k načtení objektu.
Poznámka:
Vzhledem k vlastní a platformě specifické povahy serializace je to nejvhodnější pro použití mezi klienty WCF a službami WCF.
Výběr režimu hostování
Com+ zveřejňuje webové služby v jednom z následujících režimů hostování:
Com+-hostované
Webová služba je hostovaná ve vyhrazeném procesu serveru COM+ aplikace (Dllhost.exe). Tento režim vyžaduje, aby aplikace byla explicitně spuštěna, než může přijímat požadavky webové služby. Možnosti modelu COM+ "Spustit jako službu NT" nebo "Ponechat spuštěné při nečinnosti" lze použít, aby se zabránilo nečinnosti vypnutí aplikace a jejích služeb. Tento režim poskytuje přístup webové služby i modelu DCOM k serverové aplikaci.
Hostované na webu
Webová služba je hostována v rámci procesu pracovního procesu webového serveru. Tento režim nevyžaduje, aby byl com+ aktivní při přijetí počátečního požadavku. Pokud aplikace není při přijetí této žádosti aktivní, aktivuje se automaticky před zpracováním požadavku. Tento režim také poskytuje webovým službám i modelu DCOM přístup k serverové aplikaci, ale způsobuje směrování procesu pro požadavky webových služeb. To obvykle vyžaduje, aby klient povolil zosobnění. Ve WCF to lze provést s AllowedImpersonationLevel vlastností WindowsClientCredential třídy, která je přístupná jako vlastnost obecné ChannelFactory<TChannel> třídy, stejně jako výčtu Impersonation hodnotu.
Proces hostovaný na webu
Webová služba a logika aplikace MODELU COM+ se hostují v rámci procesu pracovního procesu webového serveru. To poskytuje automatickou aktivaci režimu hostovaného webem, aniž by to způsobilo směrování procesu pro požadavky webové služby. Nevýhodou je, že serverová aplikace nemůže být přístupná prostřednictvím modelu DCOM.
Aspekty zabezpečení
Stejně jako ostatní služby WCF se nastavení zabezpečení pro vystavenou službu spravují prostřednictvím nastavení konfigurace pro kanál WCF. Tradiční nastavení zabezpečení modelu DCOM, jako je například nastavení oprávnění pro celý počítač, se nevynucují. Aby bylo možné vynutit role aplikací modelu COM+, musí být pro danou komponentu povolena autorizace kontroly přístupu na úrovni komponent.
Použití nebezpečené vazby může ponechat komunikaci otevřenou pro manipulaci nebo zpřístupnění informací. Pokud tomu chcete zabránit, doporučujeme použít zabezpečenou vazbu.
U režimů hostovaných pomocí modelu COM+ a hostovaných na webu musí klientské aplikace povolit proces serveru zosobnit uživatele klienta. To lze provést v klientech WCF nastavením úrovně zosobnění na Impersonation.
S Internetová informační služba (IIS) nebo službou aktivace procesu systému Windows (WAS) pomocí přenosu HTTP lze nástroj Httpcfg.exe použít k rezervaci adresy koncového bodu přenosu. V jiných konfiguracích je důležité chránit před podvodným službami, které fungují jako zamýšlená služba. Aby se zabránilo spuštění neautorované služby na požadovaném koncovém bodu, je možné legitimní službu nakonfigurovat tak, aby běžela jako služba NT. To umožňuje legitimní službě deklarovat adresu koncového bodu před všemi neautorními službami.
Při zveřejnění aplikace modelu COM+ s nakonfigurovanými rolemi modelu COM+ jako webovou hostovanou službou je nutné přidat účet pro spuštění procesu služby IIS do jedné z rolí aplikace. Tento účet, obvykle s názvem IWAM_machinename, musí být přidán, aby bylo možné po použití povolit čisté vypnutí objektů. Účet by neměl mít udělená žádná další oprávnění.
Funkce recyklace procesů modelu COM+ nelze použít v integrovaných aplikacích. Pokud je aplikace nakonfigurovaná tak, aby používala recyklaci procesů a komponenty jsou spuštěné v hostovaném procesu MODELU COM+, služba se nespustí. Tento požadavek nezahrnuje služby využívající režim procesu hostovaný webem, protože se nepoužijí nastavení recyklace procesů.