2016-04-15 1 views
1

CQRS Je voudrais être en mesure de tirer parti de routage des ServiceStacks et construit en fonction de la documentation pour exposer les opérations de service basé sur l'annotation de type de message avec la route et le verbe. Un service générique va simplement déléguer la demande reçue à un autre service de traitement des demandes.ServiceStack Serviceless pour

par ex. donneras, j'ai le type suivant et itinéraires configurés avec verbe pour chaque Demande public class {}

[Route("/order", "POST")] 
public class PlaceOrder : Request { } 

[Route("/order/{id}", "GET")] 
public class OrderDetailsCriteria : Request { 
    Guid OrderId { get; set; } 
} 

public class OrderDetails { } 

[Route("/inventoryItem/{id}", "PATCH")] 
public class ReduceInventory : Request { 
    Guid InventoryItemId { get; set; } 
} 

Je voudrais créer un service simple qui traitera de tous ces mais en même temps que permettre aux verbes tel que configuré dans les types d'attributs quelque chose comme:

public class MyService : Service { 
    public void Post(Request request) { 
     RequestService.Send(request); 
    } 

    public void Patch(Request request) { 
     RequestService.Send(request); 
    } 

    public object Get(Request request) { 
     return RequestService.Send(request); 
    } 
} 

Essentiellement, je ne veux pas avoir à créer un service ou chaque ensemble de types de demande, car chaque méthode sera effectivement faire la même chose.

Répondre

0

Vous pouvez définir une seule mise en œuvre pour gérer tous pour une demande Verbs en utilisant la méthode Any(), par exemple:

public object Any(MyRequest request) 
{ 
    var verb = base.Request.Verb; //if needed 
    ... 
    RequestService.Send(request); 
} 
+0

Merci. Oui, ma première pensée était de le faire, mais je n'ai pas de documentation sur l'opération des métadonnées. Donc, je suppose que ServiceStack doit utiliser la réflexion sur les services afin de découvrir les types de pouvoir générer les documents –

+0

@RicardodaSilva Je voudrais aussi vous recommandons fortement d'ajouter '' IRETURN ou 'marqueurs IReturnVoid' pour demander DTO, ceux-ci fournissent les informations de métadonnées, typage fort et une belle API pour vos clients de service. – mythz