ServiceStack Demande DTO design

Je suis un .Net développeur a utilisé pour développer des applications web sur les Technologies Microsoft. Je suis en train de me renseigner pour comprendre le RESTE de l'approche pour les services web. Jusqu'à présent, je suis amoureuse de la ServiceStack cadre.

Mais parfois, je me retrouve à écrire des services dans un mode que je suis habitué avec WCF.
J'ai donc une question qui me chiffonne.

J'ai 2 demande DTO est donc 2 services tels que:

[Route("/bookinglimit", "GET")]
[Authenticate]
public class GetBookingLimit : IReturn<GetBookingLimitResponse>
{
    public int Id { get; set; }
}
public class GetBookingLimitResponse
{
    public int Id { get; set; }
    public int ShiftId { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
    public int Limit { get; set; }

    public ResponseStatus ResponseStatus { get; set; }
}

[Route("/bookinglimits", "GET")]
[Authenticate]
public class GetBookingLimits : IReturn<GetBookingLimitsResponse>
{      
    public DateTime Date { get; set; }
}
public class GetBookingLimitsResponse
{
    public List<GetBookingLimitResponse> BookingLimits { get; set; }
    public ResponseStatus ResponseStatus { get; set; }
}

Comme on le voit sur ces Demande DTO j'ai demande similaire DTO près de tous les services et cela semble ne pas SÉCHER.

J'ai essayé d'utiliser GetBookingLimitResponse classe dans une liste à l'intérieur de GetBookingLimitsResponse pour cette raison ResponseStatus à l'intérieur de GetBookingLimitResponse classe est dublicated dans le cas où j'ai une erreur sur GetBookingLimits service.

Aussi j'ai des implémentations de services pour ces demandes comme :

public class BookingLimitService : AppServiceBase
{
public IValidator<AddBookingLimit> AddBookingLimitValidator { get; set; }
public GetBookingLimitResponse Get(GetBookingLimit request)
{
BookingLimit bookingLimit = new BookingLimitRepository().Get(request.Id);
return new GetBookingLimitResponse
{
Id = bookingLimit.Id,
ShiftId = bookingLimit.ShiftId,
Limit = bookingLimit.Limit,
StartDate = bookingLimit.StartDate,
EndDate = bookingLimit.EndDate,
};
}
public GetBookingLimitsResponse Get(GetBookingLimits request)
{
List<BookingLimit> bookingLimits = new BookingLimitRepository().GetByRestaurantId(base.UserSession.RestaurantId);
List<GetBookingLimitResponse> listResponse = new List<GetBookingLimitResponse>();
foreach (BookingLimit bookingLimit in bookingLimits)
{
listResponse.Add(new GetBookingLimitResponse
{
Id = bookingLimit.Id,
ShiftId = bookingLimit.ShiftId,
Limit = bookingLimit.Limit,
StartDate = bookingLimit.StartDate,
EndDate = bookingLimit.EndDate
});
}
return new GetBookingLimitsResponse
{
BookingLimits = listResponse.Where(l => l.EndDate.ToShortDateString() == request.Date.ToShortDateString() && l.StartDate.ToShortDateString() == request.Date.ToShortDateString()).ToList()
};
}
}

Comme vous le voyez je tiens également à utiliser la Fonctionnalité de Validation ici, donc je dois écrire des classes de validation pour chaque demande DTO j'ai. Donc, j'ai un sentiment que je devrais garder mon numéro de service à la basse par le regroupement des services similaires en un seul service.

Mais la question est ici que surgit dans mon esprit que dois-je envoyer plus d'informations que le client en a besoin pour la demande ?

Je pense que ma façon de penser doit changer parce que je ne suis pas heureux avec code actuel qui j'ai écrit à penser comme un WCF gars.

Quelqu'un peut me montrer la direction à suivre.