Ben üç katmanlı bir sistem için bir REST API tasarlıyorum: Client application-> Front-end API cloud server-> user's home API server (Home).
Homebir ev cihazıdır ve Front-endWebsocket veya uzun bir anketle bağlantıyı sürdürmesi beklenir (bu, REST'i ihlal ettiğimiz ilk yerdir. Daha sonra daha da kötüleşir) . Front-endçoğunlukla tüneller bağlantı Clienttalep eder Homeve bazı çağrıları kendisi yapar. Bazen Homeadresine bildirim gönderir Client.
Front-endve Hometemel olarak aynı API'ye sahip; LAN üzerinden doğrudan Clientbağlanıyor olabilir Home. Bu durumda, Homebazı Clienteylemleri Front-endkendi üzerine kaydetmesi gerekir.
Bu sistemdeki REST'in artıları:
- REST insan tarafından okunabilir;
- REST, protokol nesnelerine fiillerin (CRUD gibi), adların ve yanıt kodlarının iyi tanımlanmış bir eşlemesine sahiptir;
- HTTP üzerinden çalışır ve tüm olası proxy'leri geçirir;
REST kontraları:
- Sadece bir istek-yanıt iletişim stiline değil, aynı zamanda bir yayınla-abone ol seçeneğine de ihtiyacımız var;
- HTTP hata kodları üç katmanlı iletişim hatalarını işlemek için yeterli olmayabilir; yalnızca gerekli bağlantının kesildiğini ve olması gerektiğini öğrenmek için bazı zaman uyumsuz çağrılara
Front-enddönebilir ;202 AcceptedHome503 Homeadresine ileti göndermesi gerekiyorClient.Clientanket yapmakFront-endveya bağlantı kurmak zorunda kalacak .
Biz düşünen WAMP / Autobahn o önceden bir mesaj kuyruğuna gibi bakıyor bana vurunca, işlevsellik Yayın / abonelik almak için WebSocket'e bitti.
Bir tür mesajlaşma kuyruğunu taşıma olarak değerlendirmeye değer mi?
Mesaj kuyruğu kontrasları şu şekildedir:
- CRUD fiillerini ve hata kodlarını kendim bir mesaj düzeyinde tanımlamam gerekecek.
- "Daha yüksek bakım maliyeti" hakkında bir şeyler okudum, ama bu ne anlama geliyor?
bu düşünceler ne kadar ciddidir?
@Jimmy Hoffageçerli nokta, teşekkürler. Bu doğru, ama tamamen değil. Bu yaygın bir veritabanı, depolama alanı vb. @Javierteşekkür ederim, bu cevabın iyi bir parçası.
@Mike Brownkesinlikle. Lütfen yap.