gubus 2.0

2010. 12. 25.

WCF használata vastag kliens alkalmazásoknál II.

Kategória: .NET — gubus @ 11:03

A vastag kliens alkalmazásunk Entity Framework entitásokat kér el a szervertől WCF-en keresztül. A kliens és a szerver oldal közös entitás típusokat használ úgy, hogy a kliens oldali WCF proxy generálásakor a közös entitás assembly-ben található típusokat használja fel a generátor. (“Resuse types from referenced assemblies” beállítás az “Add Service Reference” funkciónál a Visual Studio-ban)

A proxy generálás viszont nem működik, ha az entitások egy része tartalmaz körkörös referenciákat, mert akkor a generálás kivételre fut:

Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageContractImporter
Error: Referenced type … with data contract name ‘…’ in namespace ‘…’ cannot be used since it does not match imported DataContract. Need to exclude this type from referenced types.

A hibáról itt van egy összefoglaló:

WCF Client Code Generation – Issue with “Reuse types from referenced assemblies” option in Add Service Reference

Workaround gyanánt az entitásoknál ki kell kapcsolni a körkörös hivatkozást (“IsReference=false” ), és így kell generálni a proxy-t, majd utána újra vissza lehet kapcsolni a körkörös hivatkozást.

És ennél a pontnál lett világosság: hogyha körkörös referenciát használunk, akkor az már rég nem interop webszolgáltatás. Sőt, mivel kliens oldalon és szerver oldalon is .NET van, ez nem is igény, és sokkal egyszerűbb, ha a contract is közös, és egyáltalán nem lenne kliens proxy generálás. Szóval a WSDL-en keresztüli interfészt csak akkor érdemes használni, ha igény is van rá…

When should I use a channel factory?

Use a ChannelFactory when you control both ends of the wire and would rather code directly against the same CLR interface instead of manually keeping the WSDL interface in sync. Instead of using WSDL as the shared contract, you use a shared “interface assembly”.

Vélemény? »

Vélemény?

RSS hírcsatorna a bejegyzéshez kapcsolódó hozzászólásokról. TrackBack URI

MINDEN VÉLEMÉNY SZÁMÍT!

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Módosítás )

Twitter kép

You are commenting using your Twitter account. Log Out / Módosítás )

Facebook kép

You are commenting using your Facebook account. Log Out / Módosítás )

Kapcsolódás: %s

Sablon: Shocking Blue Green. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.