Senior
DDP protokolunun xüsusiyyətləri nələrdir?
sobes.tech Süni İntellekt
AI-dan cavab
DDP (Paylanmış Məlumat Protokolu) Meteor (veb və mobil inkişaf üçün çərçivə) daxilində müştəri və server arasında əlaqə üçün istifadə olunan protokoldur.
Əsas xüsusiyyətlər:
- Nəşr və Abunəlik: Server "məlumatları" (sənəd kolleksiyaları) "nəşr edir" və müştərilər maraqlandıqları nəşrlərə "abunə olurlar". Serverdəki məlumatlar dəyişdikdə, onlar avtomatik olaraq bütün abunə olan müştərilərə göndərilir.
- Həqiqi vaxtda: Məlumat dəyişiklikləri dərhal ötürülür, bu da müştəri üzərində məlumatların aktual qalmasını təmin edir.
- Uzaqdan Prosedur Çağırışları (RPC): Müştərilər, serverdəki metodları çağıraraq müəyyən əməliyyatları həyata keçirə bilərlər.
- Çağırışların idempotentliyi: Eyni arqumentlərlə təkrarlanan çağırışlar istənməyən yan təsirlərə səbəb olmur (əksər standart metodlar üçün).
- Daşıma: Adətən WebSocket istifadə olunur, davamlı iki tərəfli əlaqə üçün, lakin HTTP-ə fallback edə bilər.
- Məlumatlar: Məlumatların ötürülməsi JSON formatında həyata keçirilir.
- Yalnız lazım olduqda məlumat göndər: Server, yalnız abunə olunan və dəyişiklik olduqda məlumatları göndərir.
- Çevrimdışı işləmə: Meteor, müştərilərə məlumatlarda müvəqqəti olaraq dəyişiklikləri yerli olaraq saxlama və əlaqə bərpa olunduqda onları serverlə sinxronizasiya etməyə imkan verir.
// Serverdə nəşr nümunəsi (Node.js)
Meteor.publish('myCollection', function() {
return MyCollection.find({}); // Kolleksiyadakı bütün sənədləri nəşr edir
});
// Müştəri tərəfində abunəlik nümunəsi (JavaScript)
Meteor.subscribe('myCollection');
// Müştəri tərəfində metod çağırış nümunəsi (JavaScript)
Meteor.call('addDocument', { name: 'Yeni sənəd' }, function(error, result) {
if (error) {
console.error("Sənəd əlavə edilərkən xəta:", error);
} else {
console.log("Sənəd uğurla əlavə olundu:", result);
}
});
// Serverdə metodun həyata keçirilməsi nümunəsi (Node.js)
Meteor.methods({
addDocument: function(doc) {
// Doğrulama və sənədin əlavə olunması
return MyCollection.insert(doc);
}
});