ServiceStack請(qǐng)求DTO設(shè)計(jì)我是一名.Net開發(fā)人員,用于在Microsoft Technologies上開發(fā)Web應(yīng)用程序。我正在努力教育自己了解Web服務(wù)的REST方法。到目前為止,我喜歡ServiceStack框架。但有時(shí)我發(fā)現(xiàn)自己以一種我習(xí)慣使用WCF的方式編寫服務(wù)。所以我有一個(gè)問題讓我煩惱。我有2個(gè)請(qǐng)求DTO,所以有2個(gè)這樣的服務(wù):[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; }}正如在這些請(qǐng)求DTO上看到的,我有類似的請(qǐng)求DTO幾乎為每個(gè)服務(wù),這似乎不干。我試圖GetBookingLimitResponse在列表里面使用類GetBookingLimitsResponse因?yàn)檫@個(gè)原因ResponseStatus在內(nèi)部GetBookingLimitResponse被公開,以防我在GetBookingLimits服務(wù)上有錯(cuò)誤。我也有這些請(qǐng)求的服務(wù)實(shí)現(xiàn),如: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,
};
}如你所見,我也想在這里使用驗(yàn)證功能,所以我必須為每個(gè)DTO請(qǐng)求編寫驗(yàn)證類。所以我覺得我應(yīng)該通過將類似的服務(wù)分組到一個(gè)服務(wù)來保持我的服務(wù)號(hào)碼低。但是在我腦海中突然出現(xiàn)的問題是,我應(yīng)該發(fā)送的信息多于客戶對(duì)該請(qǐng)求的需求嗎?我認(rèn)為我的思維方式應(yīng)該改變,因?yàn)槲覍?duì)當(dāng)前的代碼感到不滿意,我寫的這個(gè)代碼就像一個(gè)WCF人。有人能告訴我正確的方向。
ServiceStack請(qǐng)求DTO設(shè)計(jì)
慕標(biāo)琳琳
2019-08-26 17:34:54