Keuntungan & kerugian yang bisa didapat dari menggunakan Kerangka Web? [Tutup]

16

Pertanyaan ini difokuskan pada penggalian keuntungan dan kerugian menggunakan Kerangka kerja berbasis web : seperti Cake PHP, Zend, jQuery, ASP.NET). Pertanyaan ini sepenuhnya agnostik bahasa . Biarkan saya mulai dengan gagasan "Berdiri di bahu Giants ".

Keuntungan:

  • Memberdayakan Pengembang - dengan mengambil fitur yang sebelumnya telah mengambil 100-an baris kode dan mengompresnya menjadi satu fungsi panggilan sederhana memberdayakan pengembang untuk mengintegrasikan fitur yang lebih kompleks ke dalam Situs Web mereka.
  • Izinkan untuk pengembangan aplikasi yang lebih cepat - ini sangat relevan untuk orang yang membutuhkan situs web yang dibuat dalam jendela yang sangat kecil (adakah yang punya contoh tentang hal ini?)
  • Biaya yang Lebih Rendah - memungkinkan pemrogram untuk memberikan penghematan biaya kepada pelanggan, serangkaian pelanggan baru yang dihasilkan yang menginginkan situs web tetapi sebelumnya tidak mampu membayar biaya pengembangan yang lebih tinggi.

Kekurangan:

  • Lost Understanding - dengan mengandalkan fitur kerangka kerja, pengembang berisiko kehilangan pemahaman tentang cara kerja (di balik tenda).
  • Tebing konfigurasi - setelah Anda melangkah lebih jauh dari konfigurasi kerangka kerja Anda, produktivitas Anda langsung turun, mungkin sulit untuk mengimplementasikan fitur di luar konfigurasi kerangka kerja.
  • Tramlines pengembang - Anda (pengembang) harus melakukan hal-hal dengan cara yang pengembang ingin Anda lakukan.

Saya ingin tahu apa pendapat orang tentang poin saya, dan apakah ada yang tidak setuju dengan mereka? Juga jika orang memiliki poin tambahan saya akan berterima kasih.

JHarley1
sumber

Jawaban:

12

Inilah intinya: mungkin sulit untuk mengimplementasikan fitur di luar konfigurasi kerangka kerja.

Mari kita pergi melalui asumsi ini dengan asumsi.

Lost Understanding - dengan mengandalkan fitur kerangka kerja, pengembang berisiko kehilangan pemahaman tentang cara kerja (di balik tenda).

Salah. Anda tidak akan pernah kehilangan pemahaman tentang bagaimana segala sesuatu bekerja. Kerangka tidak ajaib. Itu hanya kode praktis yang tidak harus Anda tulis sendiri.

Percaya atau tidak, Anda akan membuat kesalahan menggunakan framework. Anda harus men-debug sampai ke level terendah HTTP untuk memahami apa yang Anda lakukan salah.

Anda tidak akan pernah melupakan apa yang terjadi di bawah tenda. Kecuali, tentu saja, kerangka kerja Anda sangat epik dan sempurna sehingga Anda tidak pernah memiliki masalah.

Tebing konfigurasi - setelah Anda melangkah lebih jauh dari konfigurasi kerangka kerja Anda, produktivitas Anda langsung turun, mungkin sulit untuk mengimplementasikan fitur di luar konfigurasi kerangka kerja.

Ini sangat masuk akal.

Pertama. Membangun tanpa kerangka kerja dapat menjadikan pekerjaan sepele menjadi tugas pemrograman besar yang mencakup pengujian unit, debugging, diagnostik, kontrol konfigurasi, dan semua pekerjaan tidak bernilai lainnya yang menemukan kembali hal-hal yang ada dalam kerangka kerja. Bagaimana itu "produktivitas"?

Kedua. Menerapkan hal-hal di luar kerangka kerja selalu banyak pekerjaan karena - ahem - menerapkan apa pun di luar kerangka kerja selalu banyak pekerjaan. Ini tidak ada hubungannya dengan waktu yang dihabiskan untuk belajar dan mengkonfigurasi kerangka kerja. Menerapkan apa pun di luar kerangka kerja pada dasarnya sulit.

Tramlines pengembang - Anda (pengembang) harus melakukan hal-hal seperti yang diinginkan oleh pengembang [framework] untuk melakukan sesuatu.

Benar. Dan ini sering kali merupakan hal yang baik. Melakukan sesuatu dengan cara yang konsisten lebih berharga daripada melakukannya dengan cara preferensi pribadi Anda sendiri. Mungkin membutuhkan "belajar" dan "pemahaman" tetapi ini memiliki nilai.

Masalah keamanan - memberi orang alat ini untuk mengembangkan situs web yang terlihat profesional dengan cepat adalah risiko potensial, orang dapat dengan cepat membuat situs web yang terlihat profesional untuk perusahaan yang curang.

Apa? Ini tidak ada hubungannya dengan kerangka kerja. Penipuan adalah penipuan, terlepas dari alat yang digunakan.

S.Lott
sumber
3
Saya tidak setuju dengan Anda tentang "Lost Understanding". Jika Anda menggunakan jQuery sebagai contoh, Anda hanya perlu melihat lusinan pertanyaan di Stack Overflow di mana jelas bahwa penanya tidak dapat membedakan antara jQuery, JavaScript dan DOM.
RoToRa
5
@RoToRa: Jika Anda melihat topik tertentu pada SO (yaitu, pemrograman C) Anda akan melihat sejumlah besar orang yang tidak tahu apa yang sedang terjadi. Memang, beberapa orang bahkan tidak mengerti apa angka floating-point. Saya tidak berpikir itu kerangka kerjanya. Saya pikir ada beberapa orang yang memiliki kemampuan terbatas untuk memahami teknologi.
S.Lott
Poin yang sangat bagus di sana Scott, Anda telah menyoroti sejumlah masalah. Maksud saya adalah dengan kerangka kerja dan penipuan apakah itu membuat pengembangan situs web yang terlihat profesional cepat, tapi itu jauh dari topik (poin bagus).
JHarley1
@ JHarley1: "tapi itu jauh dari topik". Anda dapat memperbarui pertanyaan untuk memperbaikinya.
S.Lott
1
"Lost Understanding" mengasumsikan bahwa orang-orang mengerti apa yang terjadi ketika mereka menggunakan misalnya Java sederhana. Tetapi Java sendiri melakukan banyak hal di bawah tenda, dan pada kenyataannya Anda tidak dapat mengetahui dengan pasti apa yang terjadi pada level rendah, kecuali jika Anda tahu persis apa JVM pada platform mana yang akan digunakan; tetapi tidak mementingkan perincian seperti itu adalah salah satu kelebihan dari bahasa-bahasa tersebut, dan hal yang sama dapat dikatakan tentang kerangka kerja.
user281377
3

Con: Kemungkinan penurunan dukungan / Kehilangan Popularitas

  • Jika ada dua kerangka kerja web yang pada dasarnya melakukan hal yang sama, dan kerangka kerja Anda tidak menang, ada kemungkinan proyek akan mati. Dalam situasi ini Anda dibiarkan mempertahankan sendiri kerangka kerja (sumber terbuka), menulis ulang aplikasi, atau melanjutkan tanpa pembaruan (sumber tertutup).
  • Bergantung pada frameworknya, Anda mungkin terpaksa memperbarui aplikasi Anda dengan jadwal rilis framework tersebut. Jatuh terlalu jauh ke belakang bisa membuat Anda tidak memenuhi syarat untuk mendapatkan dukungan. Tanpa kerangka kerja, Anda dapat bekerja sesuai jadwal Anda. (Ini tergantung pada apakah Anda membutuhkan / menginginkan dukungan atau tidak).

Pro: Kode untuk bisnis

  • Kerangka kerja membuat Anda tidak perlu khawatir tentang pekerjaan kasar, dan fokus pada kode yang secara langsung membawa nilai bagi bisnis.
  • Terkadang upgrade kerangka kerja yang (hanya berfungsi) memungkinkan Anda memberikan fitur baru kepada pengguna Anda secara praktis "gratis". Terutama dengan kerangka kerja yang datang dengan kontrol khusus (seperti kisi yang versi baru mungkin menawarkan semacam pencarian / filter).
Ryan Hayes
sumber
Cheers Ryan, ada beberapa poin bagus di sini. Saya tidak pernah menganggap Kerangka dijatuhkan / jatuh karena anugerah.
JHarley1
Bisakah saya mendapatkan umpan balik tentang downvote?
Ryan Hayes
Saya menemukan itu berguna - Saya telah memilih.
JHarley1
3

Keuntungan

  • Waktu pengembangan lebih cepat
  • Lebih sedikit bug
  • Pengembangan bersama yang lebih cepat
  • Dukungan perpustakaan
  • Interaksi DB yang mudah

Kekurangan

  • "Kemas" untuk kerangka kerja
  • Seringkali tidak fleksibel ketika ingin memperluas atau memodifikasi perilaku inti
  • "Errors of doom" - kesalahan yang muncul dari inti atau arsitektur yang mendasarinya tanpa traceback yang baik ke tempat asalnya. Contoh sempurna adalah kesalahan Spring saat menggunakan Grails.

Saya menganjurkan menggunakan kerangka kerja untuk semua kecuali proyek yang paling sederhana. Jika Anda perlu menambahkan formulir kontak kami ke situs HTML yang ada, Anda dapat menggunakan satu file PHP alih-alih pindah ke suatu kerangka kerja.

Josh K.
sumber
2

Beberapa hal yang terlintas dalam pikiran adalah ...

Keuntungan

  • Penggunaan kembali kode - dengan menggunakan kerangka kerja, Anda menggunakan kembali kode yang diuji dan benar.
  • Pengembangan / prototyping yang cepat.
  • (sering) validasi input terintegrasi yang dapat dianggap aman (mengingat pengembang menggunakannya dengan benar)

Kekurangan

  • Kehilangan dukungan. Yang muncul di sini adalah Symfony 1.4. Saya membayangkan Symfony akan mendukung 1.4 untuk beberapa waktu, tetapi mengetahui bahwa 2.0 tidak kompatibel dengan mundur, 1.4 tampak seperti jalan buntu dukungan di tahun-tahun mendatang.
  • Atas; Dengan menggunakan kerangka kerja, Anda menjalankan ribuan baris yang mungkin tidak berlaku untuk aplikasi spesifik Anda, tetapi berlaku untuk orang lain. Beberapa menganggap ini sebagai trade off yang wajar, dan beberapa memilih untuk menulis kode mereka dari awal untuk kinerja.
  • Menggunakan kerangka kerja yang salah untuk kebutuhan spesifik Anda. Tidak semua kerangka dibuat sama.
Mendambakan
sumber
1

Itu semua tergantung pada framework yang Anda gunakan.

Jika Anda menggunakan ASP.NET, Anda berada pada posisi yang kurang menguntungkan: Ini adalah abstraksi yang paling bocor , dan paling buruk membuatnya susah untuk melakukan hal-hal yang sepele dalam kerangka kerja lain yang tidak menyembunyikan fakta bahwa Anda bekerja di web.

ASP.NET MVC berusaha untuk memperbaiki masalah itu, dan ia melakukannya dengan sangat baik.

Kerangka ada sehingga kita bisa menghabiskan lebih banyak waktu untuk menyelesaikan pekerjaan, dan lebih sedikit waktu membangun perancah. Dalam hal itu, saya tidak melihat kerugian, kecuali jika Anda benar-benar ingin menghabiskan waktu membangun perancah.

George Stocker
sumber
Anda melihat masalah saya dengan ASP.NET MVC adalah bahwa saya harus melepaskan beberapa konsep dan melakukan hal-hal yang ASP.NET MVC yang membuat saya butuh waktu. Mungkin Anda bisa mengatakan bahwa kerugian kerangka kerja adalah penurunan produktivitas saat Anda harus mengatasinya.
JHarley1
1

Saya ingin menambahkan beberapa poin.

  • Salah satu masalah terbesar dengan kerangka kerja yang saya temukan adalah orang berhenti berpikir. Mereka hanya ingin menggunakan framework karena itu keren atau karena mereka selalu menggunakan framework. Mereka tidak berhenti untuk berpikir jika penggunaannya dibenarkan.
  • Lisensi, orang sepertinya menggunakan kerangka kerja tanpa benar-benar melihat lisensi. Ini dapat memiliki implikasi yang tidak mereka sadari. Atau pikirkan apa yang terjadi ketika lisensi berubah.
  • Menggunakan banyak kerangka kerja yang sama. Kadang-kadang mereka bisa menjadi banyak kerangka kerja yang sebenarnya melakukan hal yang hampir sama. Sebagai perusahaan, Anda membuat pilihan berpendidikan dan tidak memiliki kerangka kerja yang berbeda untuk setiap proyek.
  • Mengikuti versi baru mungkin merupakan tantangan

Masih saya pikir melakukan sedikit lebih banyak upaya untuk mengevaluasi kerangka kerja, menilai lisensi, menyimpan daftar kerangka kerja bersih per penggunaan dan memiliki strategi versi cerdas yang layak ketika Anda mempertimbangkan Keuntungan.

Keuntungan:

  • ketika Anda secara konsisten menggunakan kerangka kerja, waktu belajar untuk proyek berkurang bagi orang-orang yang sudah mengerjakan proyek Anda.
  • perkembangan Anda sendiri yang lebih cepat
  • pengembang memberdayakan Anda sendiri
KeesDijk
sumber
@Keedijk: Saya tidak pernah membahas tentang perizinan, apakah ada contoh kerangka kerja berbayar?
JHarley1
@ JHarley1 oakleafsd.com Saya tidak tahu bahwa saya akan menyebutnya "kerangka kerja web" tetapi Mere Mortals. NET memang memiliki ekstensi untuk membantu Anda membangun aplikasi web lebih cepat. NET Framework. Itu sendiri sekarang membuat sebagian besar kerangka kerja ini usang.
Ryan Hayes
@JHarley Saya mungkin telah menggeneralisasi sedikit dalam jawaban saya, tetapi dalam pikiran saya, saya memikirkan hal-hal seperti kontrol web telerik atau itextpdf.com/terms-of-use/index.php . Saya juga bekerja di sebuah perusahaan di mana perubahan lisensi ExtJ adalah masalah sencha.com/forum/showthread.php?33096-License-Change
KeesDijk
-2

Saya berbicara dari pengalaman pribadi dalam 13 tahun terakhir. Di perusahaan saya, kami menggunakan struts, setelah kurva pendek itu bagus. Di saya berikutnya kami menggunakan arsitektur yang sebagian besar buram, agak seperti struts tetapi tumbuh, kita bisa memperluasnya tetapi kode inti hanya guci. Dan seterusnya. dalam 3 tahun terakhir telah bekerja di sebuah perusahaan kecil (jumlah dev <30) dan itu semua milik kita sendiri, servlet dan ejb. Melihat beberapa klien kami dan pengulangan jsps, pada tahun 2012 adalah membuat filter j2ee yang meniru 20% dari struts2. Mengapa tidak menggunakan stuts 2? Saya berharap kami punya tetapi: tidak bisa mendapatkannya melewati kepala arsitek kami; tidak cukup pengalaman atau waktu.

Jadi kami memiliki pencegat beberapa JSP umum yang digunakan kerangka mini kami. Sekarang ketika saya memiliki waktu untuk pergi melalui buku 2 struts saya melihat bahwa kami telah sangat kehilangan!

Kami memang menggunakan beberapa algoritma dan cache yang hebat dan UI tetapi telah kehilangan banyak jam dan dibebani dengan banyak kode yang kami punya rencana 3 tahun untuk pensiun.

tgkprog
sumber