Apakah mungkin untuk memasangkan aplikasi secara longgar ke kerangka kerjanya?

14

Katakanlah saya sedang mengembangkan aplikasi web. Pilihan pertama saya adalah menggunakan PHP dengan Fat-Free Framework (F3) dan pola MVC. Tahun depan, saya mungkin memutuskan ingin beralih ke Zend Framework, atau bahkan ASP.NET MVC. Apakah masuk akal untuk mencoba dan merancang aplikasi saya sedemikian rupa sehingga secara longgar digabungkan dengan kerangka kerjanya, atau apakah kerangka kerja terlalu integral untuk membuat ini realistis?

Satu-satunya alasan saya bertanya adalah karena muncul dalam percakapan dengan seorang rekan baru-baru ini, yang mengkritik pie saya di langit gagasan longgar menggabungkan aplikasi saya ke F3.

David Kennedy
sumber
2
Abaikan konsep aplikasi Anda sendiri .
Vaughan Hilts
@VaughanHilts orang tampaknya setuju dengan Anda, tetapi saya tidak yakin apa yang Anda maksud. Bisakah Anda menguraikan?
David Kennedy
Hah: sitepoint.com/...
David Kennedy

Jawaban:

29

Menggabungkan aplikasi Anda ke kerangka kerjanya secara longgar berarti Anda akan menulis kerangka kerja proxy. Menulis kerangka kerja proxy itu banyak pekerjaan, dan jika Anda pernah beralih ke kerangka kerja baru Anda harus melakukan banyak pekerjaan untuk membuat kerangka kerja proxy mendukung kerangka kerja baru. Tentu saja, kerangka kerja yang berbeda menggunakan idiom dan pola yang berbeda, yang akan membuat kerangka kerja proxy menjadi sangat kompleks (jika Anda mencoba membuatnya cocok untuk semuanya) atau sangat terbatas (jika Anda menggunakan penyebut umum terendah). Bagaimanapun Anda harus berjuang dengan kerangka kerja proxy itu.

Apakah memiliki kemampuan untuk mengubah kerangka kerja sesuai keinginan semua masalah ini? Seperti yang saya katakan, Anda tidak akan dapat mengubahnya dengan hati-hati karena Anda harus menyesuaikan kerangka kerja proxy, yang mungkin ternyata lebih berfungsi daripada menyesuaikan kode aplikasi secara langsung.

Idan Arye
sumber
4
Penggunaan Anda atas istilah "kerangka kerja proxy" membantu mengklarifikasi masalah bagi saya.
David Kennedy
1
Memberi +1 pada jawaban ini. Ada banyak kali pengodean ulang terhadap kerangka kerja baru bisa jauh lebih murah daripada pembuatan kerangka kerja proxy - yang juga spekulatif. Yang sedang berkata, saya pikir bahwa seluruh kerangka-switching hal yang pasti mungkin dan masuk akal untuk kerangka kerja di mana Anda memiliki 1) beberapa titik kontak ke API dan 2) kesamaan di antara API dari kerangka kerja yang berbeda - tapi saya berpendapat itu pasti tidak kasus umum.
J Trana
5

Tidak bisa.

Anda dapat merancang dengan cara yang portabel di seluruh kerangka kerja. MVC adalah MVC, dan prinsipnya hampir sama apa pun bahasa atau platform yang digunakan.

Namun, kode aktual akan sangat bergantung pada kerangka atau bahasa. Satu-satunya cara untuk mengabstraksikan diri Anda dari itu adalah dengan membuat kode berdasarkan kerangka kerja perantara. Kemudian Anda dapat memiliki perubahan implementasi menengah (dari F3 ke .NET?) Tanpa mengubah aplikasi. Yang banyak pekerjaannya, mengasumsikan abstraksi yang tidak bocor, dan hanya memindahkan masalah tanpa menyelesaikannya: Anda sekarang terikat pada kerangka kerja menengah Anda.

Pada catatan yang lebih positif: pertimbangkan untuk mengekspresikan beberapa tes Anda (gaya BDD) dalam platform yang independen dari implementasi Anda. Itu mungkin selamat dari penulisan ulang utama.

ptyx
sumber
Mengubah dari PHP ke .NET mungkin tidak realistis seperti yang Anda tunjukkan. Saya berpikir pada tingkat yang sangat tinggi, abstrak, mungkin jernih.
David Kennedy
5

Saya pernah melihat Robert C. Martin memberikan ceramah di mana dia mengatakan sesuatu di sepanjang baris "keputusan pertama yang Anda buat adalah yang paling sulit untuk diubah nanti".

Jadi saran saya adalah mencoba untuk menunda keputusan ini jika Anda belum yakin apa yang ingin Anda gunakan. Identifikasi karya yang dapat Anda definisikan sekarang, dan yang akan dengan mudah tetap independen dari kerangka apa pun yang akhirnya Anda gunakan.

M. Scott Ford
sumber
Itu saran yang sangat bagus!
David Kennedy
5

Lock-in framework bisa menjadi masalah serius, tetapi membantu untuk melihat masalah sebagai salah satu portabilitas. Portabilitas bukan atribut absolut, tetapi relatif terhadap titik awal Anda dan ke mana Anda mungkin ingin pergi. Dengan analogi, maka, perangkat lunak adalah portabel hanya sejauh Anda telah porting ke lingkungan lain.

Sebagian besar pengembangan aplikasi di dalam kerangka cenderung menjadi kode lem, hal-hal yang mengikat komponen-komponen kerangka kerja Anda bersama-sama. File konfigurasi dapat mengabstraksi sejumlah lem dalam beberapa sistem tetapi banyak detail halus harus dilakukan dalam kode.

Di sisi lain, aturan dan proses bisnis dapat disarikan dari aplikasi. Bagian yang sulit dari abstraksi adalah ketika aturan diterapkan langsung oleh kerangka kerja; keamanan, aksesibilitas dan urutan proses cenderung ditegakkan oleh kerangka kerja Anda dan mungkin paling sulit untuk dilihat.

Jika Anda dapat memisahkan bagian lem aplikasi Anda dari aturan bisnis dan proses bisnis dan bagian data bisnis, maka Anda akan dapat membuat beberapa bagian dari solusi Anda portabel.

BobDalgleish
sumber
+1. Dengan mengekstraksi logika bisnis Anda dalam layanan (web), Anda dapat membiarkan aplikasi apa pun mengkonsumsinya, mengurangi aplikasi PHP MVC menjadi sekadar GUI web untuk logika bisnis Anda, membuatnya lebih mudah untuk menggantikan secara keseluruhan.
CodeCaster
Merancang layanan web mirip dengan merancang kerangka kerja Anda sendiri. Juga, sejumlah besar aturan bisnis Anda, terutama bagian rekayasa informasi, perlu diwujudkan dalam GUI.
BobDalgleish