Quels types de données C # ne sont pas sérialisables WCF?

Nous avons des classs d'entités C # qui correspondent à certaines de nos tables de database SQL Server. Nous devons être en mesure de sérialiser ces classs afin de les renvoyer au client, à partir du server, via WCF. Pour chaque type de données SQL Server, nous avons un type de données C # CLR correspondant dans l'entité associée.

Nous avons des types de données SQL Server, tels que Image et VarBinary, que nous devons mapper à un type de données C # CLR, afin que nous puissions renvoyer datatables au client. Le problème est que je ne suis pas sûr du type de données CLR à utiliser pour ces types SQL Image et VarBinary, afin que nous puissions les sérialiser via WCF.

Merci.

Types pris en charge par le sérialiseur de contrat de données

Types connus de contrat de données

Sauf si vous utilisez un transport binary, je m'attends à ce que WCF soit un très mauvais choix pour l'envoi binary car SOAP et JSON sont terribles à gérer. Vous pourriez passer un tableau byte [], par exemple, mais ce serait extrêmement verbeux (surtout dans SOAP).

Probablement mieux de simplement BASE64 datatables dans une string et envoyer cela.

Je pense que les liens que Mitch a inclus dans sa réponse aident définitivement. L'autre chose pour vous aider à déterminer quels types de CLR utiliser serait quel type de binding allez-vous utiliser? Si vous utilisez les bindings NetXXX (par exemple NetTcpBinding), vous supposez que le client sera un client .NET et l'enencoding des messages est optimisé pour cela. Il vaut peut-être mieux utiliser un tableau d'octets pour ces types au lieu d'une string base64. Si vous optez pour l'interopérabilité (et utilisez WebHttpBinding ou WSHttpBinding, ou une autre binding interopérable), alors la string base64 est peut-être la meilleure solution (comme Kirk l'a suggéré). Il ne sera pas optimisé pour la vitesse / taille, mais vous ne dépendez pas de .NET sur le client.

J'espère que cela t'aides!