Utilisation de types non scalaires dans des interfaces invocables

De RAD Studio
Aller à : navigation, rechercher

Remonter à Présentation des interfaces invocables


L'architecture des services Web prend en charge les types scalaires suivants pour Delphi et C++ :

Boolean

ByteBool

WordBool

LongBool

Char

Byte

ShortInt

SmallInt

Word

Integer

Cardinal

LongInt

Int64

Single

Double

Extended

string

WideString

Currency

TDateTime

Variant


Les types scalaires supplémentaires suivants sont pris en charge pour C++ :

bool

unsigned short

_int64

char

int

AnsiString

signed char

unsigned

float

unsigned char

long

double

short

unsigned long

long double


Vous n'avez rien à faire de particulier lorsque vous utilisez ces types scalaires sur une interface invocable. Toutefois, si votre interface inclut des propriétés ou des méthodes qui utilisent d'autres types, votre application doit recenser ces types avec le registre des types distants.

Les tableaux dynamiques peuvent être utilisés dans les interfaces invocables. Ils doivent être recensés dans le registre des types distants, mais ce recensement intervient automatiquement lorsque vous recensez l'interface. Le registre des types distants extrait toutes les informations requises des informations de type générées par le compilateur.

Remarque : Vous devez éviter de définir plusieurs types de tableaux dynamiques avec le même type d'élément. Comme le compilateur les traite comme des types transparents pouvant être implicitement transtypés l'un vers l'autre, il ne distingue pas leurs informations accessibles à l'exécution. Par conséquent, le registre des types distants ne peut pas différencier les types. Cela ne pose pas un problème pour les serveurs mais peut amener les clients à utiliser une mauvaise définition de type. Une autre approche consiste à utiliser des classes distantes pour représenter des types de tableaux.

Remarque : Les types de tableaux dynamiques définis dans l'unité Types sont recensés automatiquement, de sorte que votre application n'a pas besoin d'ajouter de code de recensement particulier pour ces types. Un de ces types en particulier, TByteDynArray, mérite une mention spéciale car il établit une correspondance avec un bloc ‘base64’ de données binaires plutôt qu'avec chaque élément du tableau séparément, comme les autres types de tableaux dynamiques.

En outre, les types énumérés et ceux correspondant à l'un des types scalaires automatiquement soumis au marshaling peuvent être utilisés dans une interface invocable. Comme les types de tableaux dynamiques, ils sont automatiquement recensés dans le registre des types distants.

Pour tous les autres types, comme les tableaux statiques, les structures ou enregistrements, les ensembles, les interfaces ou les classes, vous devez établir une correspondance entre le type et une classe distante. Une classe distante est une classe qui inclut des informations de type accessibles à l'exécution (RTTI). Votre interface doit alors utiliser la classe distante à la place du tableau statique, de la structure ou enregistrement, de l'ensemble, de l'interface ou de la classe correspondants. Toutes les classes distantes que vous créez doivent être recensées dans le registre des types distants. Comme pour les autres types, ce recensement intervient automatiquement.

Rubriques

Voir aussi