Modèles d'accès - AWS Directives prescriptives

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Modèles d'accès

Comme indiqué précédemment dans ce guide, vous pouvez choisir parmi trois modèles d'accès pour effectuer des opérations de création, lecture, mise à jour et suppression (création, lecture, mise à jour et suppression) sur des tables DynamoDB : interface de persistance d'objets, interfaces document et interface API de bas niveau. Les sections suivantes décrivent chaque interface. Pour notre exemple d'utilisation entre SQL Server et DynamoDB, nous avons choisi l'interface de persistance des objets pour des raisons de simplicité, de lisibilité et de facilité de maintenance.

Interface de persistance des objets

L'interface de persistance des objets fournit un mécanisme d'accès abstrait de haut niveau pour effectuer des opérations CRUD sur des éléments DynamoDB à l'aide de modèles .NET, similaires aux entités Entity Framework. Les propriétés de l'interface correspondent aux attributs des éléments DynamoDB. LeAWS SDK for .NET prend en charge les attributs de propriété personnalisés dans ce modèle afin de personnaliser la sérialisation et la désérialisation de propriétés individuelles, de gérer les valeurs nulles et de convertir des types.

Exemple de modèle utilisé dans l'application :

[DynamoDBTable(“AppLibrary")] public class ProdApp { [DynamoDBHashKey] public string PK { get; set; } //Partition key [DynamoDBRangeKey] public string SK { get; set; } //Sort key [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")] [DynamoDBProperty] public int Version { get; set; } . . . [DynamoDBProperty] public Int64 TTL { get; set; } }

Accès aux objets :

var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); var _context = new DynamoDBContext(_dynamoDbClient); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; return _context.Load<ProdApp>(pk, ItemType.ProductionApplication); }

Pour de plus amples informations, veuillez consulter Interface de persistance des objets dans la documentation DynamoDB.

Interface documentaire

Le modèle d'interface documentaire fournit un accès basé sur des documents (similaireXMLDocument à .NET) à un élément DynamoDB. Ce modèle fournit une interface de programmation de niveau supérieur, mais traduit ses appels en API de bas niveau pour effectuer l'opération.

var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); var _table = Table.LoadTable(_dynamoDbClient, “AppLibrary”); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; var doc = _table.GetItem(pk, ItemType.ProductionApplication); var app = new ProdApp { PK = doc[“PK”], SK = doc[“SK”], Version = doc[“Version”], . . . }; return app; }

Pour de plus amples informations, veuillez consulter Interfaces de documents dans la documentation DynamoDB.

API de bas niveau

LeAWS SDK pour DynamoDB fournit également un accès API de bas niveau pour effectuer des opérations CRUD à l'aide desDeleteItem méthodesPutItemGetItemUpdateItem,, et. Ce modèle fournit un contrôle complet sur le mappage des attributs et les conversions de types. La réponse à ces appels est un dictionnaire des paires clé-valeur.

[DynamoDBTable(“AppLibrary")] public class ProdApp { [DynamoDBHashKey] public string PK { get; set; } //Partition key [DynamoDBRangeKey] public string SK { get; set; } //Sort key [DynamoDBGlobalSecondaryIndexRangeKey(“Version-index")] [DynamoDBProperty] public int Version { get; set; } . . . [DynamoDBProperty] public ProdConfig Config { get; set; } } var _dynamoDbClient = new AmazonDynamoDBClient(AWSCredentials); public ProdApp GetProdAppById (Guid id, int version) { var pk = $”{id}-{version}”; var resp = _dynamoDbClient.Query(queryRequest); var item = resp.Items[0]; var app = new ProdApp { PK = item[“PK”].S, SK = item[“SK”].S, Version = Convert.ToInt32(item[“Version”].S), . . . Config = new ProdConfig { Name = item[“Config”].M[“Name”].S, Id = Conver.ToInt32(item[“Config”].M[“Id”].S) } }; return app; }

Pour de plus amples informations, veuillez consulter Interfaces de bas niveau dans la documentation DynamoDB.