Tuesday, 28 April 2015

WCF Service – KnownType DataContract

Data Contract describes the type of data that will be sent or received between a service and a client. But in certain scenarios, sent or received data is not known between the the communicating parties. For example, a service sending data back to client is not the actual data contract but a derived type of it. In such cases, there will be a De-serialization problem. De-serialization engine will not recognize the derived Data Contract type and will generate an error.
In order to handle such scenarios, Data Contract Known types are available in Windows Communication Foundation. So by definition, “Known Type in WCF is an acceptable derived type for a Data Contract“.In one of the article WCF Service articles, blogger explained WCF KnowTypeAttribute with the help of a simple example. But here in this WCF Tutorial, I’ll try to discuss all possible ways to use Data Contract Known Types, so that the reader can get a detailed understanding about Known Types and be able to use it in various practical scenarios.

Consider the following Data Contract classes having inheritance relationship as follows:
[DataContract]
public class UserAccount { }

[DataContract]
public class Admin : UserAccount { }

[DataContract]
public class Guest : UserAccount { }

Now, look into following code:

[DataContract]
[ServiceKnownType(typeof(Admin))]
[ServiceKnownType(typeof(Guest))]
public class SecurityInfo
{
    [DataMember]
    private UserAccount user;
}

Above code will work fine, either we set SecurityInfo data member to Admin or Guest.
But if KnownTypeAttribute for Admin and Guest are not provided, deserialization engine will not recognize Admin and Guest types and will cry.
For more detailed understanding with example of all possible ways of associating Known Types in WCF, Click Here.

Related Posts:

  • WCF Concurrency Introduction Concurrency is the control of multiple threads active in an InstanceContext at any given time. This is controlled using the System.Servi… Read More
  • WCF REST ServicesA Beginner's Tutorial on Creating WCF REST ServicesIntroductionIn this article we will try to understand what are WCF REST services. We will see what … Read More
  • Instance Management :: WCFServiceBehavior- Specifies the internal execution behavior of a service contract implementation. ServiceBehaviour attribute is used to specify the Ins… Read More
  • Fault Contract in WCF What is fault Contract? A Fault Contract is a way to handle an error/exception in WCF. In C# we can handle the error using try and catch blocks at t… Read More
  • DataContractSerializer vs XmlSerializer in WCF DataContractSerializer Is meant to be used for serialization/deserialization of class in WCF service to and from either JSON or XML. serializes pro… Read More

0 comments:

Post a Comment

Topics

ADFS (1) ADO .Net (1) Ajax (1) Angular (47) Angular Js (15) ASP .Net (14) Authentication (4) Azure (3) Breeze.js (1) C# (55) CD (1) CI (2) CloudComputing (2) Coding (10) CQRS (1) CSS (2) Design_Pattern (7) DevOps (4) DI (3) Dotnet (10) DotnetCore (20) Entity Framework (5) ExpressJS (4) Html (4) IIS (1) Javascript (17) Jquery (8) jwtToken (4) Lamda (3) Linq (10) microservice (4) Mongodb (1) MVC (46) NodeJS (8) React (10) SDLC (1) Sql Server (32) SSIS (3) SSO (1) TypeScript (3) UI (1) UnitTest (2) WCF (14) Web Api (16) Web Service (1) XMl (1)

Dotnet Guru Archives