Megosztás a következőn keresztül:


Közepes szintű ügyfélalkalmazások

Ez a témakör a Windows Communication Foundationt (WCF) használó középső rétegbeli ügyfélalkalmazásokkal kapcsolatos különböző problémákat ismerteti.

A középső rétegbeli ügyfél teljesítményének növelése

A korábbi kommunikációs technológiákhoz, például a ASP.NET használó webszolgáltatásokhoz képest a WCF-ügyfélpéldány létrehozása összetettebb lehet a WCF gazdag funkciókészlete miatt. Ha például egy ChannelFactory<TChannel> objektum meg van nyitva, biztonságos munkamenetet hozhat létre a szolgáltatással, amely növeli az ügyfélpéldány indítási idejét. Ezek a további funkciók általában nem befolyásolják nagy mértékben az ügyfélalkalmazásokat, mivel a WCF-ügyfél több hívást indít, majd bezárul.

A középső szintű ügyfélalkalmazások azonban gyorsan létrehozhatnak számos WCF-ügyfélobjektumot, és ennek eredményeképpen megnövekedett inicializálási követelményeket tapasztalhatnak. A középső rétegbeli alkalmazások teljesítményének növelésének két fő megközelítése van a szolgáltatások hívása során:

  • Gyorsítótárazza a WCF-ügyfélobjektumot, és használja újra a későbbi hívásokhoz, ahol csak lehetséges.

  • Hozzon létre egy ChannelFactory<TChannel> objektumot, majd ezzel az objektummal hozzon létre új WCF-ügyfélcsatorna-objektumokat minden híváshoz.

Az alábbi módszerek használatakor megfontolandó problémák a következők:

  • Ha a szolgáltatás egy munkamenettel tart fenn ügyfélspecifikus állapotot, akkor nem használhatja újra a középső szintű WCF-ügyfelet több ügyfélszintű kérésekkel, mert a szolgáltatás állapota a középső szintű ügyfél állapotához van kötve.

  • Ha a szolgáltatásnak ügyfélenként kell hitelesítést végeznie, a középső szinten minden bejövő kéréshez létre kell hoznia egy új ügyfelet a középső rétegbeli WCF-ügyfél (vagy WCF-ügyfélcsatorna-objektum) újbóli használata helyett, mert a középső réteg ügyfél-hitelesítő adatai nem módosíthatók a WCF-ügyfél (vagy ChannelFactory<TChannel>) létrehozása után.

  • Bár a csatornák által létrehozott csatornák és ügyfelek szálbiztosak, előfordulhat, hogy nem támogatják egynél több üzenet egyidejű írását a vezetékre. Ha nagy üzeneteket küld, különösen streamelés esetén, a küldési művelet blokkolhatja a várakozást egy másik küldés befejezésére. Ez kétféle problémát okoz: az egyidejűség hiányát és a holtpont lehetőségét, ha a vezérlési folyamat visszatér a csatornát újrahasználó szolgáltatáshoz (azaz a megosztott ügyfél meghív egy szolgáltatást, amelynek kódútvonala visszahívást eredményez a megosztott ügyfél számára). Ez az újrafelhasznált WCF-ügyfél típusától függetlenül igaz.

  • A hibás csatornákat attól függetlenül kell kezelnie, hogy megosztja-e a csatornát. A csatornák újrafelhasználásakor azonban a hibás csatornák egynél több függőben lévő kérést vagy küldést is le tudnak venni.

Az ügyfél több kéréshez való újrafelhasználásának ajánlott eljárásait bemutató példa: Adatkötés egy ASP.NET-ügyfélben.

Emellett növelheti az indítási teljesítményt azoknál az ügyfeleknél, amelyek futtatáskor szerializálható adattípusokat használnak az adott adattípusok szerializálási kódjának generálása és fordítása használatával XmlSerializer , ami lassú indítási teljesítményt eredményezhet. A ServiceModel metadata segédprogram (Svcutil.exe) javíthatja az alkalmazások indítási teljesítményét azáltal, hogy létrehozza a szükséges szerializálási kódot az alkalmazás lefordított szerelvényekből. További információ : Útmutató: A WCF-ügyfélalkalmazások indítási idejének javítása az XmlSerializer használatával.

Lásd még