Переваги та недоліки, які мають мати веб-фреймворк? [зачинено]


16

Це питання зосереджено на визначенні переваг та недоліків використання веб-фреймворків : Cake PHP, Zend, jQuery, ASP.NET). Це питання є повністю мовним агностиком . Дозвольте розпочати з поняття «Стоячи на плечах гігантів ».

Переваги:

  • Розширення можливостей розробників - шляхом використання функцій, які раніше мали б взяти 100 рядків коду, і стиснення їх в одну просту функцію виклику дозволяє розробникам інтегрувати більш складні функції у свої веб-сайти.
  • Дозволити для швидшої розробки програм - це дуже актуально для людей, які потребують веб-сайтів, створених у дуже маленькому вікні (чи має хто-небудь приклади цього?)
  • Нижчі витрати - дозволяють програмістам передавати економію замовника, цілком нове коло клієнтів, які бажали веб-сайту, але раніше не могли дозволити собі більш високі витрати на розробку.

Недоліки:

  • Втрачене розуміння - покладаючись на особливості рамки, розробник загрожує втратою розуміння того, як все працює (під капотом).
  • Скеля конфігурації - Після того, як ви підете далі, ніж конфігурація вашої системи, ваша продуктивність знижується, реалізувати функції поза конфігурацією фреймворку може бути важко.
  • Трамвайні лінії розробника - ви (розробник) повинні робити такі речі, як розробник хоче, щоб ви робили.

Цікаво, що люди ставляться до моїх точок зору і чи хтось з ними не згоден? Також якщо у людей є додаткові бали, я буду вдячний.

Відповіді:


12

Ось підсумок: реалізувати функції поза конфігурацією фреймворку може бути важко.

Перейдемо через це припущення через припущення.

Втрачене розуміння - покладаючись на особливості рамки, розробник загрожує втратою розуміння того, як все працює (під капотом).

Помилковий. Ви ніколи не втратите розуміння того, як все працює. Рамки не магічні. Це просто зручний код, який вам не потрібно писати самостійно.

Вірите чи ні, ви помилитесь, використовуючи рамки. Вам доведеться налагоджувати помилку аж до найнижчих рівнів HTTP, щоб зрозуміти, що ви зробили не так.

Ви ніколи не втратите з поля зору, що відбувається під капотом. Якщо, звичайно, ваша рамка не є настільки епічною і досконалою, що у вас ніколи не виникає проблем.

Скеля конфігурації - Після того, як ви підете далі, ніж конфігурація вашої системи, ваша продуктивність знижується, реалізувати функції за межами конфігурації фреймворку може бути важко.

Це мало дорогоцінного сенсу.

Спочатку. Побудова без рамки може перетворити тривіальне завдання на велике завдання програмування, що включає тест блоку, налагодження, діагностику, контроль конфігурації та все те, що інші безцінні роботи відновлюють речі, що знаходяться в рамках. Як це "продуктивність"?

Друге. Реалізація речей поза рамками - це завжди велика робота, тому що - так - реалізація будь-якого поза рамками - це завжди велика робота. Це не має нічого спільного з витраченим часом на вивчення та налаштування рамки. Реалізувати що-небудь поза рамками за своєю суттю важко.

Трамвайні лінії розробника - ви (розробник) повинні робити речі так, як розробник [фреймворку] бажає, щоб ви робили.

Правильно. І це часто гарна річ. Робити речі послідовним способом є більш цінним, ніж робити їх своїми особистими уподобаннями. Це може вимагати «навчання» та «розуміння», але вони мають цінність.

Проблеми безпеки - надання людям цих інструментів для швидкого розвитку професійних веб-сайтів - це потенційний ризик, люди можуть швидко створити професійні веб-сайти для шахрайських компаній.

Що? Це не має нічого спільного з рамками. Шахрайство - це шахрайство, незалежно від використовуваних інструментів.


3
Я не згоден з вами щодо "Втраченого розуміння". Якщо ви берете для прикладу jQuery, вам просто потрібно переглянути десятки питань щодо переповнення стека, коли очевидно, що запитуючий не може розрізнити jQuery, JavaScript та DOM.
RoToRa

5
@RoToRa: Якщо ви подивитесь на якусь конкретну тему про SO (тобто програмування на C), ви побачите велику кількість людей, які не можуть зрозуміти, що відбувається. Дійсно, деякі люди навіть не розуміють, що таке число з плаваючою комою. Я не думаю, що це рамки. Я думаю, що є деякі люди, які мають обмежені здібності розуміти технології.
S.Lott

Дійсно хороші моменти, Скотт, ви виділили ряд питань. Моя думка була з рамками та шахрайством, це було зроблено швидким розвитком професійного веб-сайту, але це було миль поза темою (хороша точка).
JHarley1

@ JHarley1: "але це було миль за темою". Ви можете оновити питання, щоб виправити це.
С.Лотт

1
"Втрачене розуміння" передбачає, що люди розуміють, що відбувається, коли вони використовують, наприклад, звичайну Java. Але сама Java робить багато речей під кришкою, і насправді ви не можете точно знати, що відбувається на низькому рівні, якщо ви точно не знаєте, який JVM на якій платформі буде використовуватися; але не стосуватися таких деталей є однією з переваг таких мов, і те саме можна сказати про рамки.
користувач281377

3

Con: Можливе можливе падіння підтримки / втрата популярності

  • Якщо є дві веб-рамки, які в основному роблять те саме, а ваша не виграє, є ймовірність, що проект загине. У цій ситуації вам залишається самостійно підтримувати рамки (відкритий код), переписати додаток або продовжити без оновлень (закрите джерело).
  • Залежно від рамки, можливо, ви будете змушені оновити свою програму до розкладу випуску рамки. Занадто відстале відставання може зробити вас непридатним до підтримки. Без рамки, ви можете працювати за своїм графіком. (Це залежить від того, вам потрібна / хочете підтримка чи ні).

Про: Код для бізнесу

  • Рамки дозволяють вам не турбуватися про бурхливу роботу та зосереджуватись на коді, який безпосередньо приносить цінність бізнесу.
  • Іноді оновлення фреймворку, які (лише працюють), дозволяють вам надавати нові функції своїм користувачам практично «безкоштовно». Особливо з рамками, які постачаються із спеціальними елементами управління (наприклад, сітка, що нова версія може запропонувати певний пошук / фільтр).

Ура, Райан, тут є кілька хороших моментів. Я ніколи не вважав, що Рамка відпадає / падає з благодаті.
JHarley1

Чи можу я отримати зворотній зв'язок щодо голосування, будь ласка?
Райан Хейс

Я вважаю це корисним - я проголосував.
JHarley1

3

Переваги

  • Швидший час розробки
  • Менше помилок
  • Швидше спільного розвитку
  • Бібліотечна підтримка
  • Легка взаємодія з БД

Недоліки

  • "Складено в рамку"
  • Часто негнучкі, коли хочуть розширити або змінити основну поведінку
  • "Помилки приреченості" - помилки, що виникають з ядра або основної архітектури, не мають хорошого простеження до місця їх виникнення. Ідеальний приклад - весняні помилки при використанні Grails.

Я виступаю за використання рамок для всіх, крім найпростіших проектів. Якщо вам потрібно додати форму контакту з нами на існуючий HTML-сайт, ви можете використовувати один PHP-файл, а не переходити до фреймворку.


2

Пару речей, які приходять на думку, це ...

Переваги

  • Повторне використання коду - використовуючи рамку, ви повторно використовуєте тестований і правдивий код.
  • Швидкий розвиток / складання прототипів.
  • (часто) інтегрована перевірка вводу, яку можна вважати захищеною (за умови, що розробник використовує її правильно)

Недоліки

  • Втрата підтримки. Звертаємо увагу на Symfony 1.4. Я думаю, що Symfony буде підтримувати 1.4 протягом досить тривалого часу, але знаючи, що 2.0 не є сумісним назад, 1.4 здається підтримкою тупикової підтримки в найближчі роки.
  • Накладні; Використовуючи рамку, ви виконуєте тисячі рядків, які можуть не застосовуватися до вашої конкретної програми, але стосуються інших. Деякі вважають це розумним компромісом, а деякі вирішують написати свій код з нуля для ефективності.
  • Використання неправильних рамок для ваших конкретних потреб. Не всі рамки створюються однаково.

1

Все залежить від рамки, яку ви використовуєте.

Якщо ви використовуєте ASP.NET, ви перебуваєте у невигідному становищі: це в кращому випадку непрохідна абстракція , а в гіршому - болісно робити речі, які є тривіальними в інших рамках, які не приховують того, що ви робота в Інтернеті.

ASP.NET MVC прагне вирішити цю проблему, і це все добре.

Рамки існують, щоб ми могли витрачати більше часу на виконання робіт і менше часу на будівництво будівельних лісів. У цьому плані я не бачу жодних недоліків, якщо ви дійсно не хочете витратити час на будівництво будівельних лісів.


Ви бачите, що моя проблема з ASP.NET MVC полягала в тому, що мені довелося вивчити деякі поняття і робити те, на що ASP.NET MVC знадобилося мені час. Можливо, ви можете сказати, що недоліком основи може стати зниження продуктивності, коли ви з цим стикаєтесь.
JHarley1

1

Я хотів би додати деякі моменти.

  • Однією з найбільших проблем з рамками, які я вважаю, є те, що люди перестають думати. Вони просто хочуть використовувати фреймворк, тому що це круто або тому, що вони завжди використовують фреймворк. Вони не зупиняються на думці, чи використання виправдане.
  • Ліцензуючи, людям просто здається, що вони використовують рамки, не дивлячись на ліцензування. Це може мати наслідки того, що вони не відомі. Або подумайте, що станеться, коли ліцензія зміниться.
  • Використання для більшості однотипних рамок. Іноді їх може бути безліч рамок, які насправді роблять майже те саме. Як компанія ви робите освічений вибір і не маєте різної структури для кожного проекту.
  • Будьте в курсі нових версій

І все-таки я думаю, що докласти трохи більше зусиль для оцінки фреймворків, оцінки ліцензій, збереження чистого переліку фреймворків на використання та створення розумної стратегії версій варто того, коли враховувати переваги.

Переваги:

  • коли ви послідовно використовуєте рамки, час для проектів зменшується для людей, які вже працювали над вашими проектами.
  • ваш власний швидший розвиток
  • власні розробники можливостей

@Keedijk: Я ніколи не займаюся ліцензуванням, чи є приклади платних фреймворків?
JHarley1

@ JHarley1 oakleafsd.com Я не знаю, що я б назвав це "веб-рамкою", але Mere Mortals .NET має розширення, які допоможуть вам швидше створювати веб-програми. Зараз саме .NET Framework робить більшу частину цієї основи застарілою.
Райан Хейс

@JHarley У моїй відповіді я, можливо, трохи узагальнив, але в думці я думав про такі речі, як веб-контролери telerik або itext itextpdf.com/terms-of-use/index.php . Я також працював у компанії, де зміна ліцензування ExtJs була проблемою sencha.com/forum/showthread.php?33096-License-Change
KeesDijk

-2

Я кажу з особистого досвіду за останні 13 років. У моїй компанії ми використовували стійки, після короткої кривої було чудово. У наступному ми використовували архітектуру, яка була здебільшого непрозорою, дещо схожими, але підростали, ми могли розширити її, але основним кодом були лише банки. І так далі. останні три роки працювали в невеликій компанії (кількість дев <30), і це були всі наші власні jsps, сервлети та ejbs. Переглядаючи наших декількох клієнтів і повторення jsps, у 2012 році потрібно було зробити фільтр j2ee, який імітував 20% струн2. Чому б не використовувати шви 2? Я б хотів, щоб це було, але: не вдалося пройти наш головний архітектор; недостатньо досвіду чи часу.

Таким чином, у нас були перехоплювачі, які використовували наш міні-фреймворк. Тепер, коли я встиг пройти через підказки 2 книги, я бачу, що ми так пропустили!

Ми користуємося чудовими алгоритмами та кешами та інтерфейсом користувача, але втратили багато годин і обтяжилися великою кількістю коду, який у нас є трирічним планом вийти на пенсію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.