Y at-il un moyen d'exposer plusieurs services WCF par un seul point final?

StackOverflow https://stackoverflow.com/questions/2461256

  •  20-09-2019
  •  | 
  •  

Question

J'offre actuellement un service avec de nombreuses méthodes via WCF. Je voudrais donc factoriser le seul service est divisé en plusieurs classes, chacune offrant un ensemble de fonctionnalités différentes. Cependant, je préfère encore avoir une seule connexion au client. Est-ce possible?

Je suppose que la réponse est non, alors comment dois-je résoudre ce problème? Y at-il un travail autour? Ou est mon idée complètement stupide et je devrais changer la conception de l'application?

Était-ce utile?

La solution

Rappelez-vous E = ABC (Endpoint = Adresse, reliure, contrat). Avec un autre contrat, même avec toutes choses égales par ailleurs, vous avez encore un point final différent.

Cependant, un seul service peut mettre en œuvre des contrats de services multiples. Cela permettrait à un seul fichier .svc d'être la cible de plusieurs contrats de services différents, tous configurés comme des URL relatives au .svc.

Autres conseils

Vous pouvez mettre en œuvre qui vous permettent classes partielles pour séparer votre contenu dans les fichiers cs individuels tout en maintaing une seule interface et le point final. Ce n'est pas la manière la plus idéale, parce qu'à la fin de la journée, il est encore une seule classe composée de classes partielles, mais au moins il ressemble dans votre structure de fichier, donnant ainsi une séparation plutôt qu'un fichier de classe massif .

Exemple Structure:

IMyService.cs

[ServiceContract]
public interface IMyService
{
   [OperationContract]
   string GenericMethod()

   [OperationContract]
   string GetUsers(int companyId)

   [OperationContract]
   string GetMessages(int userId)

}

MyService.cs

//Put any attributes for your service in this class file
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public partial class MyService : IMyService
{
  public string GenericMethod() 
  {
     return "";
  }
}

UserService.cs

public partial class MyService
{
    public string GetUsers(int companyId) 
    {
       return "";
    }
}

MessagingService.cs

public partial class MyService
{
      public string GetMessages(int userId) 
      {
          return "";
      }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top