Ben üç katmanlı bir sistem için bir REST API tasarlıyorum: Client application
-> Front-end API cloud server
-> user's home API server (Home)
.
Home
bir ev cihazıdır ve Front-end
Websocket 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ı Client
talep eder Home
ve bazı çağrıları kendisi yapar. Bazen Home
adresine bildirim gönderir Client
.
Front-end
ve Home
temel olarak aynı API'ye sahip; LAN üzerinden doğrudan Client
bağlanıyor olabilir Home
. Bu durumda, Home
bazı Client
eylemleri Front-end
kendi ü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-end
dönebilir ;202 Accepted
Home
503
Home
adresine ileti göndermesi gerekiyorClient
.Client
anket yapmakFront-end
veya 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 Hoffa
geçerli nokta, teşekkürler. Bu doğru, ama tamamen değil. Bu yaygın bir veritabanı, depolama alanı vb. @Javier
teşekkür ederim, bu cevabın iyi bir parçası.
@Mike Brown
kesinlikle. Lütfen yap.