Objet de transfert de données de motif
je suis désolé, je suis novice sur les applications d'entreprise ainsi que du modèle de conception. peut-être cette question occcur manque de connaissances sur les design pattern. j'ai trouvé qu'il est préférable de l'utiliser DTO pour le transfert de données.
mes affaires de classe d'entité comme ci-dessous:
public class Patient
{
public string ID { get; set; }
public string FullName { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
}
donc, dans mon application utilisateur uniquement à donner des ID et HospitalID. donc il appelle pour un autre service web et d'obtenir des informations de personne
public class PersonDTO
{
public string NIC { get; set; }
public string FullName { get; set; }
public string FirstName { get; set; }
public string BirthPlace { get; set; }
public string BirthCertificateID { get; set; }
}
donc sur la base de ces informations im va le Patient de l'objet. (À l'aide de pattern DTO)
alors j'ai pensé à écrire une nouvelle classe pour convertir comme suit.
public class PatientDO
{
public static Patient ConvertToEntity(
PatientRegistrationDTO pregDTO,
PersonDTO person
)
{
Patient p = new Patient();
p.NIC = pregDTO.NIC;
p.FullName = person.FullName;
p.FirstName = person.FirstName;
return p;
}
}
mais dernièrement, j'ai lu quelques articles et ils ont utilisé Serializer Helper class
ainsi que la XmlSerializer
je ne comprends pas pourquoi ils ont utilisé quelque chose comme ça.
pour la DTO modèle est qu'besoin d'utiliser XmlSerializer et pourquoi est-il utilisé?
OriginalL'auteur DevT | 2013-02-06
Vous devez vous connecter pour publier un commentaire.
Vous devriez vraiment jeter un oeil à AutoMapper.
http://automapper.org
C'est un morceau de logiciel que vous pouvez inclure dans votre solution, qui va automatiquement les valeurs de la carte à partir d'une classe à l'autre.
Il va propriétés de la carte avec le même nom automatiquement, et est également assez intelligent quand il vient aux objets enfants. Cependant, il offre également la cartographie complète de contrôle lorsque vous en avez besoin.
MODIFIER
Quelques exemples pour montrer comment AutoMapper œuvres. Veuillez noter que je n'avais jamais ce type de code dans la vraie vie. Concision!
Exemple les classes.
Généralement, vous avez une partie de votre projet afin de configurer tous vos mappant automatiquement. Avec les exemples que j'ai donnés, vous pouvez configurer une carte entre les Entités.Le gestionnaire et les Modèles.Le gestionnaire de la sorte:-
Puis, dans votre code, vous pouvez utiliser quelque chose comme cela pour obtenir un nouveau Modèles.Le gestionnaire d'objet de l'Entité version.
D'ailleurs, SUIS est assez intelligent pour résoudre un grand nombre de propriétés automatiquement si vous nommer les choses de manière cohérente.
Exemple ci-dessus, UserFirstname et UserLastname doit être rempli automatiquement parce que:-
Cependant, la UserMiddlename de la propriété dans les Modèles.Le gestionnaire sera toujours vide après une cartographie op entre les Entités.Le gestionnaire et les Modèles.Manager, car l'Utilisateur ne dispose pas d'une propriété publique appelée Middlename.
omi, la plupart des problèmes de performances que j'ai vu de AutoMapper viennent de mal définie mappages ( écrit par moi! ). Plus gros problème que j'ai eu, c'est quand AutoMapper analyse un nHibernate objet graphique et fait des charges de la base de données des appels.
C'est pourquoi j'ai upvoted vous répondre. Cependant, comme il le dit, il est nouveau, je veux juste faire remarquer c'est une bonne approche, mais aucune exigence stricte.
cela pourrait être une très bonne lecture sur automapper devtrends.co.royaume-uni/blog/...
Si je n'ai pas utilisé personnellement mais ce autoprojecting à l'aide de requêtes Linq peut vous donner une idée. lostechies.com/jimmybogard/2011/02/09/...
OriginalL'auteur Paul Alan Taylor
Il y a une belle, mais simple démo en CodeProject. Il est digne de passer par elle.
Les débutants peuvent obtenir une idée de base de la conception de Dto.
http://www.codeproject.com/Articles/8824/C-Data-Transfer-Object
Voici un résumé du contenu:
L'Objet de Transfert de Données "DTO", est un simple objet sérialisable utilisé pour transférer des données à travers de multiples couches d'une application. Les champs contenus dans la DTO sont généralement les types primitifs comme des chaînes de caractères, booléen, etc. D'autres Otd peuvent être contenues ou intégrées dans le DTO. Par exemple, vous pouvez avoir une collection de BookDTOs contenues dans un LibraryDTO. J'ai créé un cadre utilisé par plusieurs applications qui utilise des Otd pour le transfert de données à travers des niveaux. Le cadre s'appuie également sur d'autres OO les motifs tels que l'Usine, de Façade, etc. Une des grandes choses au sujet de la DTO par rapport à un ensemble de données est que la DTO n'a pas à correspondre directement un tableau de données ou de vue. La DTO pouvez l'ensemble des champs à partir d'un autre DTO
C'est la classe de base pour tous les Objets de Transfert de Données.
C'est une classe dérivée de DTO:
C'est la classe d'aide pour un DTO. Il a des méthodes publiques pour sérialiser et désérialiser un DTO.
Maintenant commencer la Sérialisation /Désérialisation:
Enfin ce code est exécuté dans l'application principale
OriginalL'auteur Venugopal M
Un XmlSerializer ou JsonSerializer peut être utilisé pour la sérialisation (chargement) XML ou Json de données à partir d'une source (webservice). Ou d'expliquer le nom de DTO: vous serialize (transfert de données) à partir d'une source (webservice) à un (DTO) de l'objet. Donc les Dto sont des objets. Parfois, c'est malin de faire une large possible à la DTO de l'objet et de la remplir complètement de sorte que vous pouvez utiliser à partir de cet objet que vous voulez et de le copier dans votre "propre" programme d'objets.
Exemple: j'ai développé un programme pour montrer transport des données de navigation. Je sérialiser l'ensemble de xml ou json message vocal dans un DTO objet. Dans ce DTO objet est plus de l'information que j'ai besoin dans mon programme et il peut être sous une forme différente, donc je vais utiliser uniquement ce qui est nécessaire. DTO ojbjects rend plus facile pour extraire des données à partir des sources (webservices).
Je ne veux pas utiliser AutoMapper parce que le nom "Auto". Je veux savoir ce que je fais et pense que là où mes données.
OriginalL'auteur Herman Van Der Blom