Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Pendekatan Berasaskan Mesej ServiceStack Dapat Meningkatkan Reka Bentuk DTO Permintaan?

Bagaimanakah Pendekatan Berasaskan Mesej ServiceStack Dapat Meningkatkan Reka Bentuk DTO Permintaan?

DDD
Lepaskan: 2024-12-31 11:31:21
asal
236 orang telah melayarinya

How Can ServiceStack's Message-Based Approach Improve Request DTO Design?

ServiceStack Request DTO Design

Rangka kerja perkhidmatan web seperti WCF dan WebAPI menggalakkan pemikiran panggilan API sebagai panggilan kaedah C# biasa, dengan tandatangan khusus untuk setiap permintaan. Sebaliknya, ServiceStack menggunakan pendekatan berasaskan mesej di mana keseluruhan pertanyaan ditangkap dalam mesej permintaan. Ini menawarkan kelebihan seperti:

  • Memadatkan berbilang panggilan RPC menjadi satu perkhidmatan berasaskan mesej
  • Perkhidmatan pengelompokan berdasarkan semantik panggilan dan jenis respons

Perkhidmatan Had GetBooking pemfaktoran semula

Menggunakan konsep ini untuk perkhidmatan GetBookingLimit dan GetBookingLimits anda, pertimbangkan perkara berikut:

  • Bezakan Operasi Perkhidmatan vs Jenis: Simpan DTO (operasi) permintaan berasingan daripada DTO (jenis data) respons.
  • Kembalikan Respons Generik: Alih keluar sifat ResponseStatus daripada DTO respons sebagai ralat kini akan dikembalikan melalui ErrorResponse DTO generik.
  • Kekalkan Tatanama Konsisten: Tempah Dapatkan untuk pertanyaan kunci unik dan gunakan Cari atau Cari untuk pertanyaan yang mengembalikan berbilang hasil.
  • Matlamat untuk Kontrak Menggambarkan Diri: Gunakan nama sifat deskriptif untuk membuat permintaan DTO mudah untuk faham.

Kod Difaktorkan Semula:

[Route("/bookinglimits/{Id}")]
public class GetBookingLimit : IReturn<BookingLimit>
{
    public int Id { get; set; }
}

[Route("/bookinglimits/search")]
public class FindBookingLimits : IReturn<List<BookingLimit>>
{
    public DateTime BookedAfter { get; set; }
}

[Authenticate]
public class BookingLimitService : AppServiceBase 
{ 
    public BookingLimit Get(GetBookingLimit request) 
    { 
        return new BookingLimit {...};
    }

    public List<BookingLimit> Get(FindBookingLimits request) 
    { 
        return new List<BookingLimit> {...};
    }
}
Salin selepas log masuk

Pengendalian Ralat dan Pengesahan

  • Ralat boleh dikendalikan dengan membuang pengecualian C# atau menggunakan Fluent Pengesahan.
  • Daftar pengesah dengan bekas.RegisterValidators(typeof(CreateBookingValidator).Assembly) untuk pengesahan automatik tanpa menambahkan kod invasif pada perkhidmatan.
  • Pertimbangkan untuk menggunakan DTO permintaan StoreBooking tunggal untuk kedua-dua penciptaan dan kemas kini .

Dengan mengikuti ini prinsip, anda boleh mereka bentuk dan melaksanakan DTO permintaan dengan berkesan menggunakan pendekatan berasaskan mesej ServiceStack, mempromosikan kekeringan dan kejelasan kod.

Atas ialah kandungan terperinci Bagaimanakah Pendekatan Berasaskan Mesej ServiceStack Dapat Meningkatkan Reka Bentuk DTO Permintaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan