Saya memiliki tiga proyek masuk yang memiliki masalah yang sama:
mereka perlu memiliki logika pada sistem web dan mereka membutuhkan aplikasi lokal (misalnya tempat penjualan) yang berkomunikasi dengan sistem tersebut melalui layanan web RESTful.
Solusi saya
Solusi yang berhasil saya buat adalah dengan mengimplementasikan pesan aplikasi antrian di desktop untuk menyimpan operasi ketika layanan sedang offline, lebih tepatnya, antrian pesan asinkron . Namun, itu adalah bagian yang mudah (jika itu adalah solusi terbaik). Saya juga peduli dengan sinkronisasi data dan resolusi konflik.
Sistem utama harus berbasis web karena aplikasi web diperlukan untuk laporan dan pemantauan oleh para pemangku kepentingan, dan layanan web akan menangani permintaan untuk beberapa perusahaan.
Klien desktop (sebaiknya tipis) akan diimplementasikan dengan Java (lebih khusus Netbeans) dan sistem web dengan Symfony2. Dua dari proyek tersebut membutuhkan integrasi perangkat keras untuk klien, sehingga membuat aplikasi desktop dengan teknologi web (mis. Appcelerator Titanium) bisa menjadi masalah besar.
Pertanyaan saya
Apa solusi yang lebih baik yang mengukur, yang berarti efisiensi maksimum dengan upaya minimum (dan lebih disukai tanpa biaya tambahan, seperti membeli server cadangan untuk operasi lokal)?
Siapa lagi yang pernah menangani ini sebelumnya? Bagaimana Anda memecahkan masalah Anda? Pelajaran apa yang bisa Anda bagikan?
Bagaimana Anda menangani sinkronisasi?
Sunting: Menambahkan bagian yang hilang ke pertanyaan saya di poin # 3
sumber
Lakukan semuanya secara lokal , dan sinkronkan secara berkala .
Inilah yang akan saya lakukan jika saya adalah Anda (saya tidak mengetahui kerangka sinkronisasi di Jawa seperti yang kita miliki di .NET).
Pertahankan stempel waktu di aplikasi lokal yang akan menahan terakhir kali Anda terhubung dengan sukses.
Terlepas dari waktu Anda terhubung kembali, stempel waktu itu akan digunakan untuk mengeluarkan data baru, kemudian mengirim pesanan baru yang dihasilkan secara lokal.
Anda kemudian akan mempertahankan dua cap waktu. Satu untuk menentukan kapan pesanan telah dibuat (lokal atau online) dan satu ketika telah direkam oleh server.
Saya tidak merekomendasikan Antrian Pesan untuk itu. Saya menggunakan MQ di masa lalu untuk situs web e-commerce yang harus terhubung ke Navision. Semuanya dioperasikan dalam Navision, dan perubahan dikirim ke situs web e-commerce melalui MQ, termasuk status pesanan dan semuanya termasuk deskripsi produk, harga, dll. Pesanan baru dikirim ke Navision melalui MQ juga.
sumber
Atau Anda harus melihat implementasi basis data sistem yang sesekali terhubung yang melakukan pekerjaan kasar sinkronisasi klien jarak jauh ke server. (SQL Server memiliki ini dengan SQL CE sampai batas tertentu, Outlook melakukan ini).
Dengan cara ini, Anda dapat melakukan semua perubahan secara lokal di basis data footprint kecil (Ini mempertahankan versi / cap waktu logis dll. Sehingga Anda tidak perlu khawatir tentang jam PC dll) dan setiap kali Anda online, Anda menyinkronkan ini dengan yang utama server.
Saya tidak akan mencari solusi REST ketika sistem tidak dapat online sebagian besar waktu.
sumber