2010-02-03 16 views
1

Je suis vraiment novice en matière de services Web et j'ai besoin de créer un service Web capable de traiter les graphiques d'objets. Mon exemple canonique serait un service web CRM qui donnerait un numéro de client retournerait un "objet" de type Company avec une propriété de collection de Contacts.Graphiques d'objet et services Web

-à-dire:

[WebService] 
public Company GetCompanyByCustomerNumber(string customerNumber) {...} 

renverrait une instance de:

public class Company 
{ 
.... 
    public List<Contact> Contacts { get { ... } } 
} 

Il serait vraiment agréable d'être en mesure de créer le webservice afin qu'il puisse être facilement consommé de Visual Studio afin que il peut travailler directement avec l'entreprise et les contacts associés ...

Est-ce possible?

Merci Fredrik

+0

Bien que pas explicitement lié à ce que je recommande regarder NHibernate faire l'interrogation réelle des données que vos retours de service, je ne l'admets les modèles de gestion des sessions de WCF et NH sont assez complexes. –

+0

Merci, mais j'ai tout sur le "côté interne" c'est pour la communication à l'extérieur :-) –

Répondre

1

Il semble que le correctif dans .NET Framework 3.5 SP1 Wich ajoute le support pour l'attribut IsReference sur la DataContract est exactement ce qu'il me faut!

donc je peux écrire:

[DataContract(IsReference=true)] 
public class Contact 
{ 
    Company parentCompany; 
    [DataMember] 
    public Company ParentCompany 
    { 
     get { return parentCompany; } 
     set { parentCompany = value; } 
    } 

    string fullName; 
    [DataMember] 
    public string FullName 
    { 
     get { return fullName; } 
     set { fullName = value; } 
    } 
} 

[DataContract(IsReference = true)] 
public class Company 
{ 
    string name; 
    [DataMember] 
    public string Name 
    { 
     get { return name; } 
     set { name = value; } 
    } 

    List<Contact> contacts = new List<Contact>(); 
    [DataMember] 
    public List<Contact> Contacts 
    { 
     get { return contacts; } 
    } 
} 

Merci pour toute l'aide qui m'a mis de la bonne direction!

// Fredrik

2

au lieu des services Web ASMX, vous seriez mieux à l'aide Windows Communication Foundation (WCF). Avec cela, vous pouvez définir des données Contrats avec des attributs comme celui-ci:

[DataContract] 
public class Company 
{ 
    [DataMember] 
    public Contact[] Contacts { get; set; } 
} 
+0

Y at-il un outil de support dans le côté du consommateur qui comprendra le "graphique" là-bas afin qu'il puisse être utilisé "tel quel" par l'appelant? Aussi, si le contact a une propriété telle que ParentCompany est supportée, j'ai lu quelque part que les dépendances circulaires ne fonctionnent pas? Merci –

+0

Aussi, est-il possible d'appliquer dynamiquement ces attributs, puisque ma Société et Contact sont vraiment des "Entités" du même type "Entité" mais avec différentes propriétés disponibles via ICustomTypeDescriptor? –

+0

Oui, il existe un support d'outil dans Visual Studio 2008+. J'ai ajouté un lien où vous pouvez lire plus. –