Saya membuat aplikasi web bisnis baru dan saya ingin mencapai:
- Gunakan teknologi terbaik dari bidangnya masing-masing. Saya ingin kerangka backend yang andal dengan ORM solid. Dan saya ingin kerangka SPA (aplikasi halaman tunggal) paling canggih dengan penggunaan fitur HTML dan Javascript paling mutakhir untuk aplikasi frontend
- Mengekspos entitas backend dan layanan bisnis untuk penggunaan dari berbagai jenis aplikasi - mis. Aplikasi web, seluler (Android) dan mungkin jenis lainnya (perangkat pintar, dll.)
Jadi - untuk memenuhi kedua persyaratan, saya cenderung benar-benar memisahkan aplikasi saya di aplikasi backend dan frontend dan mengatur komunikasi di antara mereka menggunakan REST API (JSON). Apakah pendekatan ini masuk akal?
Pemisahan seperti itu bukanlah solusi desain yang jelas, karena banyak teknologi aplikasi web memiliki lapisan tampilan terintegrasi di mana aplikasi sisi server lebih atau kurang mengontrol pembuatan tampilan dan sebagian menangani respons dari tampilan (misalnya SpringMVC dengan lapisan tampilan, PHP Yii dengan tampilan layer, Java JSF / Facelets benar-benar menyimpan status komponen mereka di server). Jadi - ada banyak teknologi di sekitar yang mengusulkan kopling yang lebih kuat dan menjanjikan waktu pengembangan yang lebih cepat dan perjalanan jalur yang lebih standar. Jadi - saya harus berhati-hati ketika mulai menggunakan teknologi dengan cara yang tidak banyak digunakan.
Seperti yang saya pahami maka frontend SPA yang sepenuhnya terpisah biasanya muncul dari keharusan untuk menggunakan API pihak ketiga. Tapi apakah desain suara decoupling seperti itu ketika backend dan frontend dikembangkan oleh satu perusahaan?
Pilihan teknologi saya saat ini adalah Java / Spring backend dan Angular2 / Web Components / Polymer untuk frontend - jika saya boleh mengatakan ini. Tetapi itu tidak relevan untuk pertanyaan ini, karena pertanyaan ini adalah tentang desain umum dan bukan tentang pilihan teknologi konkret?
So - I must be cautious when starting to use technologies in manner which is not widely used.
Ya, Anda harus berhati-hati jika Anda berencana menggunakan palu untuk melempar sutra. Mungkin itu bukan alat yang tepat.Jawaban:
Ya itu normal. Tapi itu normal hanya jika Anda perlu memiliki semacam pemisahan dan Anda tidak memaksa pengaturan ini ke dalam aplikasi Anda secara keseluruhan.
SPA hadir dengan beberapa masalah yang terkait dengannya. Berikut adalah beberapa yang muncul di pikiran saya sekarang:
Tentu, ada keuntungan SPA juga:
Jadi masalahnya adalah bahwa ada kelebihan dan kekurangan untuk kedua pendekatan (SPA vs halaman server). Luangkan waktu untuk meneliti kedua opsi dan kemudian pilih berdasarkan situasi Anda.
sumber
Jawaban atas pertanyaan Anda sederhana. Iya nih. Apa yang Anda usulkan adalah pendekatan yang masuk akal . Tapi kemudian, yang saya pikir ingin Anda tanyakan adalah apakah ini pendekatan yang lebih baik , dan sayangnya, tidak ada dari kita yang bisa menjawabnya untuk Anda. Faktor-faktor yang terlibat mencakup terlalu banyak aspek yang tanpa membocorkan segalanya tentang organisasi Anda dan persyaratan produk, tidak ada kesimpulan nyata yang dapat dibuat. Saya pikir Anda sudah tahu apa yang harus dilakukan.
sumber
Normal dengan peringatan.
kerangka kerja javascript front end terbatas pada apa yang dapat mereka lakukan. Jika Anda membuat apis mentah untuk digunakan oleh banyak aplikasi, mereka biasanya memerlukan pemrosesan sisi server dari panggilan api mentah menjadi model tampilan yang berfungsi dengan aplikasi tertentu.
Maka arsitektur 'normal' mungkin:
Sekarang jika Anda hanya memiliki satu aplikasi web, Anda dapat memotong lapisan 'api mengekspos logika bisnis' dan hanya memiliki kode web sisi server memanggil logika bisnis secara langsung.
Karena Anda telah memisahkan logika bisnis ke perpustakaannya sendiri, itu masih dipisahkan dari logika ui dan Anda selalu dapat menambahkan lapisan layanan nanti.
Demikian pula, karena layanan api dipanggil oleh kode sisi server, Anda tidak dibatasi komunikasi http. (Meskipun ini cukup universal sekarang)
Selain itu, memiliki panggilan javascript host yang sama yang dilayani dari berarti Anda tidak perlu bercanda dengan cors
sumber