Principes de base de .NET avec SSIS
Si vous connaissez le cadre d'application .NET, ou si vous avez déjà écrit de code VB.NET auparavant, vous constaterez que le SSIS offre de nombreuses possibilités dans se sens. Ainsi, vous constaterez les types de données, les variables et la structure de l'écriture de code dans .NET pour C# et en VB.NET.
Le cadre d'application .NET est un cadre d'application open source propriétaire et partiel (le .NET Core est open source), y compris l'exécution et les bibliothèques du cadre d'application) développé par Microsoft; il fonctionne principalement sur la plate-forme Windows. Ses deux principaux composantes sont une grande bibliothèque de classes FCL (Framework Class Library) et le CLR (Common Language Runtime), fournissant l'interopérabilité des langages de programmation, ce qui signifie que chaque langage de programmation peut utiliser du code écrit dans d'autres langages de programmation. Le CLR est un environnement logiciel géré permettant aux programmes et applications écrits avec le cadre d'application .NET de s'exécuter. Le CLR est une sorte de machine virtuelle d'application s'occupant de la sécurité, de la gestion de la mémoire et de la gestion des exceptions. Le FCL et le CLR forment le cadre d'application .NET. Microsoft fournit un environnement de développement intégré (IDE) pour le cadre d'application .NET appelé Visual Studio.
Types de données .NET Types de données versus flux de données
Bien qu'il existe des similitudes entre eux, il existe également plusieurs différences fondamentales entre les types de données utilisés dans le .NET et les types de données utilisés dans SSIS. Les types de données utilisés dans SSIS sont des flux de données, étant pris en charge par la mémoire tampon de ligne de tuyau et sont exposés à l'aide d'un système de types dédié. Le système de types est différent de celui utilisé par les variables SSIS ou par les fournisseurs de données tels que OLE DB et ADO.NET. Le tableau suivant présente des comparaisons entre les types de données trouvés dans les types de tampon de la ligne de tuyau .NET et SSIS :
Type .NET | Type de tampon de ligne de tuyau SSIS |
---|---|
Int64 | DT_I8 |
Array Of Byte | DT_BYTES |
Boolean | DT_BOOL |
String | DT_STR |
DateTime | DT_DBDATE |
DateTime | DT_DBTIMESTAMP |
DateTime | DT_DBTIMESTAMP2 |
DateTimeOffset | DT_DBTIMESTAMPOFFSET |
Decimal | DT_NUMERIC |
Double | DT_R8 |
Object | DT_IMAGE |
Int32 | DT_I4 |
String | DT_WSTR |
String | DT_NTEXT |
Single | DT_R4 |
Int16 | DT_I2 |
TimeSpan | DT_DBTIME2 |
Byte | DT_U11 |
GUID | DT_GUID |
Tous les types de données du cadre d'application .NET dérivent du type Object. Par conséquent, tous les types de données peuvent être convertis en objet. Cela signifie que si vous avez un type de données dans SSIS n'ayant pas d'équivalent approprié, vous pouvez toujours le convertir en type Object.
Même si le GUID est un .NET natif, il ne fait pas partie du système de type de variable SSIS disponible. Pour créer un GUID, vous devez recourir à Script Tasks ou Script Components. Si vous souhaitez affecter un GUID à une variable, vous devez d'abord le convertir en chaîne ; par exemple :
Dts.variable["MonGUID"].Value="{"+Guid.NewGuid().Tostring()+"}";
Types de données
Le type de données d'un élément indique quel type de données l'élément peut contenir et comment ces données sont entreposées. Toutes les valeurs pouvant faire partie de l'évaluation d'une expression ou pouvant être entreposées dans la mémoire de l'ordinateur ont un type de données. Ces éléments peuvent être des variables, des constantes, des énumérations, des paramètres, des paramètres et des propriétés. Les valeurs de retour de procédure ont également un type de données. Dans le cadre d'application .NET, vous devez préalablement déclarer le type de données. La syntaxe varie selon que vous utilisez C# ou VB.NET comme langage de programmation. Le tableau suivant montre comment les éléments sont déclarés dans les deux langages de programmation :
Élément de programmation | Déclaration C# | Déclaration VB.NET |
---|---|---|
Variable | Double Amount; String Name; |
Dim Amount As Double Dim Name As String |
Littéral | Double Amount = 10.4; String Name="chaine"; |
Dim Amount As Double=10.4 Dim Name As String="chaine"; |
Constante | const Double VAT=17.2; | Const VAT As Double=17.2; |
Énumération | Enum Couleurs {Bleu,Vert} | Enum Couleurs Vert Bleu End Enum |
Propriété | public int MaPropriete { get; set;} | Public Property MaPropriete() As Integer Get Return m_MaPropriete End Get Set m_MaPropriete End Get Set m_MaPropriete = Value End Set End Property Private m_MaPropriete As Integer |
Paramètre | public void MaMethod(string parametre1) | Sub MaMethod(ByVal parametre1 As String) |
Argument | nouvelleChaine = inputArgument.Substring(0,2); | nouvelleChaine = Left(inputArgument,2) |
Valeur de retour | public string MaNouvelleMethode(String parametre1) | Function MaNouvelleMethode(ByVal parametre1 As String) As String |
Variables
Une variable est un emplacement d'entreposage contenant une quantité connue ou inconnue d'informations appelée valeur. En VB.NET, une variable est dimensionnée, d'où le nom Dim. Les variables peuvent avoir des modificateurs d'accès indiquant leur portée. Au niveau de la classe, une variable avec une portée publique est exposée à toutes les instances de la classe, ainsi qu'à d'autres objets, y compris d'autres classes. Si la variable est privée, elle n'est disponible qu'à l'intérieur de la classe. Les mêmes règles s'appliquent aux propriétés : une propriété publique est exposée à tous les autres objets. Une variable déclarée à l'intérieur d'une méthode ou d'une fonction est limitée à cette méthode ou fonction et ne peut pas être utilisée en dehors de la portée de la fonction. De plus, si la variable est déclarée à l'intérieur d'un if ou d'une construction de boucle dans une fonction, elle n'est étendue qu'à if ou à la construction de boucle.
Opérateurs
Il existe différentes catégories d'opérateurs dans le cadre d'application .NET, comme indiqué dans le tableau suivant :
Catégorie | Exemple |
---|---|
Primaire | x.y, typeof, x++, x-- |
Unaire | !x, ++x, --x |
Multiplicatif | x*y, x/y, x%y |
Additive | x+y, x-y |
Décalage | x >> y, x <> y |
Relationnel | x >> y, x > y, x <=y, x >= y |
Type de test | is, as |
Égalité | x==y, x!=y |
ET binaire | x & y |
OU EXCLUSIF binaire | X ^ y |
ET conditionnel | x && y |
OU conditionnel | x || y |
Fusion nulle | x ?? y |
Assignation et expressions lambda | x = y, x += y, x -= y, x *= y, x /= y, x %= y, x &= y, x |= y, x ^= y, x <<= y, x >>= y, => |
Using/Import, classes et espaces de noms
Pour permettre aux noms de types d'être référencés sans avoir à les qualifier avec leur espace de noms, vous devez utiliser les mots clefs using (C#) ou Imports (VB.NET). Cela se fait au niveau du fichier et peut également être fait à l'intérieur des espaces de noms, des classes,... Chaque fichier source peut contenir n'importe quel nombre de Imports ou using.
Ni Import ni using ne rendent les éléments d'autres projets ou assemblys disponibles pour votre projet. Vous devez toujours définir une référence aux projets ou assemblys. Les mots-clefs using ou Imports suppriment uniquement le besoin de noms qualificatifs déjà disponibles pour vos projets.