ASP.NET — Как эффективно использовать шаблоны разработки без сверхразработки!

проверьте это:

select pet.pet_name, 
  case when (select sum(favorite) from petquest.post where pet.id = post.pet_id) > 1 then 'true' else 'false' end as favstat
from petquest.pet

с вашим подходом

select pet.pet_name
     , CASE WHEN sum(post.favourite) > 1 THEN 'True' else 'False' end as favstat

  from example.pet 
  inner join example.post 
    on pet.id = post.pet_id 
 group by pet.pet;

Или

 select pet.pet_name
     , CASE WHEN (sum(post.favourite) over (partition by pet.pet_name)) > 1 THEN 'True' else 'False' end as favstat
  from example.pet 
  inner join example.post 
    on pet.id = post.pet_id ;
17
задан Peter Mortensen 30 December 2010 в 18:08
поделиться

11 ответов

Откладывание возможности, что эти уровни абстракции требуются организацией (вряд ли, но это действительно происходит), разработчикам - особенно в негибкой, корпоративной / корпоративной среде - очень свойственно добавить слишком много слоев абстракции. Это произошло с классическим ASP.NET просто делает это намного легче. У большинства из нас в этой профессии есть естественное стремление для сверхусложнения вещей, и она берет дисциплину и активный ум для преодоления этого.

кроме того, многие посредственные разработчики неправильно полагают, что максимизация слоев абстракции и использования шаблона делает их лучшими разработчиками.

Наконец, многим посредственным разработчикам преподавали, что они должны использовать слои, абстракции и шаблоны, но не преподавались достаточно хорошо знать как, когда или почему. Таким образом, они входят в проект, думающий "хорошо, я знаю, что у меня должны быть некоторые слои здесь...", и можно вообразить то, что выходит.

В конечном счете, "лучшая практика" лучших практик к код максимально максимально, ПОКА Вы не сталкиваетесь с настоящей проблемой , который препятствует тому, чтобы Вы продвинулись. Много раз у Вас должны быть шаблон или лучшая практика на Вашей панели инструментов , которая является правильной для задачи, точно так же, как у Вас есть правильный ключ для гайки. Лучшие практики и шаблоны являются инструментами - Вы не вынимаете молоток и начинаете качаться, пока у Вас нет гвоздя, который должен быть загнан. Аналогично с разработкой программного обеспечения.

19
ответ дан 30 November 2019 в 11:04
поделиться

Я работал над проектами, которые плохо сделаны в противоположном направлении (200 + исходные деревья МБ без шаблонов разработки). Верьте мне, это не правильное решение также. Код становится неудобным в сопровождении, существует старое наложение кода вокруг этого, разработчики спотыкаются, и т.д.

, С другой стороны, для ответа на вопросы о шаблонах разработки:

No это не прогресс. Да, некоторые люди идут за борт. Вероятно, существует золотая середина, но она требует, чтобы зубрилы шаблона разработки мира успокоились немного, я думаю.

я пытаюсь сделать свои решения максимально простыми. Это может включить шаблон разработки..., или он не может; это действительно не имеет значения, пока это работает, и легко поддержать. Важной вещью являются... шаблоны разработки, не панацея для плохого кода. Просто, потому что каждый использует шаблоны разработки, не означает, что код правильно написан. К сожалению, слишком многим разработчикам преподают (или полагайте самостоятельно), точно, что: это, если они используют шаблоны разработки, их качество кода, выше; это не обязательно верно (даже верный регулярно, я думаю).

Как в стороне: Если Вы хотите превосходный пример сверхдизайна, смотрите на исходный код для приложения лотка CruiseControl.NET. Это - превосходная демонстрация взбешенных шаблонов разработки (честно, Thoughtworks в целом является превосходной демонстрацией этого).

4
ответ дан 30 November 2019 в 11:04
поделиться

Некоторые люди астронавты архитектуры , и они настоят, что эти слои все необходимы, и дизайн является абсолютным мусором, если Вы не включаете их.

На другом конце спектра люди, которые продвигают это все в стороне и просто имеют код все портившие вместе: это просто, правильно, итак, почему не только имеют SQL-запрос тут же в коде - позади заполнения к управлению полем списка?

Вы уже определили проблему с версией астронавта, это именно так чрезмерно сложно, чтобы сделать простые задачи.

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

существует, конечно, второй план. Где точно, который находится, будет отличающимся в зависимости от того, кого Вы спрашиваете.. но это там.

Здание нормальный бизнес-слой является хорошим шагом к получению там. Это должно быть слоем, который представляет самое простое представление объектов в Вашей системе и не содержит общедоступного связанного с базой данных материала (кроме, возможно, объекта Соединения, который говорит бизнес-слой, как добраться до базы данных). Это консолидирует всю Вашу логику в одно место, таким образом, часть ASP проекта будет просто обеспечивать электричеством краткий обзор "Пользователь. LoadAll ()" метод к таблице, которая отображает список пользователей. Приложение ASP не должно иметь никакой подсказки, если оно читает из базы данных, веб-сервиса или просто набора составленного материала.. это просто говорит с бизнес-слоем.

Под бизнес-слоем, у Вас могут быть запросы непосредственно, можно использовать ORM, можно создать более глубокий уровень доступа к данным, который делает эти вещи.. хорошей вещью является это решение, полностью содержится бизнес-слоем (и можно изменить его позже, если Вы должны, не влияя на общедоступный API бизнес-слоя).

Теперь любые запросы, имеющие дело с пользователями, содержатся в Пользовательском объекте.. и если у Вас есть ошибка со способом, которым Вы загружаете полномочия, он может быть зафиксирован в одном месте.

я просто сделал миграцию как, я описал выше (ASP с SQL в коде - позади к отличной презентации - бизнесу - уровень (ORM) источника данных), и это является большим. Хотя это действительно добавляет несколько слоев к достиганию фактической информации, когда-то бизнес-методы работают, остальная часть работ кода. Исправление ошибки просто, и фиксирует его везде. Около конца это быстро стало случаем, что, когда необходимо было получить список отчетов, что пользователь мог работать, кто-то уже записал бизнес-метод для этого (Пользователь. GetReports ()), где прежде, Вы, вероятно, никогда не находили бы его, если это было сделано - если Вы были удачливы, это было записано как функция и не просто встроенный код.

12
ответ дан 30 November 2019 в 11:04
поделиться

Для меня проблема остановила от следующего слишком много статей, где автор не не торопился для объяснения контекста, в котором решение прибылось.

парень А, пишущий бизнес-приложения для среднего бизнеса, который заблокирован в определенные технологии, собирается создать приложения по-другому, чем парень, работающий на поставщика, который продает, это - программное обеспечение к другим компаниям.

Так для неопытного разработчика, который хочет сделать "правильную вещь", я думаю, что сверхразработка является легким прерыванием для падения в.

Затем существуют другие парни, которые просто хотят каждый проект быть "прекрасными". Я не знаю, что сказать о тех парнях. У меня никогда не было достаточного количества времени или бюджета для создания любого проекта "прекрасным".

3
ответ дан 30 November 2019 в 11:04
поделиться

Я думаю, что было бы трудно использовать шаблоны разработки, с которыми я знаком в Классике ASP, таким образом, в том отношении мы перед игрой.

, Хотя я не использовал реализация MVC в ASP.NET, это - мое понимание, что это обращается ко многим Вашим проблемам, в которых это является намного более прямым и простым.

2
ответ дан 30 November 2019 в 11:04
поделиться

Цель всех инструментов и методов, которые Вы называете, состоит в том, чтобы управлять сложностью в мире быстрого изменения бизнес-требований. "Сложность и быстро изменяющий бизнес-требования" характерна для мира, где Ваши приложения находятся?

1
ответ дан 30 November 2019 в 11:04
поделиться

Я думаю большая часть того, что Вы видите, вероятно, формальный бизнес-слой и код слоя данных. В этом случае код должен следовать за четко определенными шаблонами так, чтобы было очевидно, что то, где и (что еще более важно) почему. Если это иначе, Вы не смотрите на представительный код ASP.NET.

Вопреки Вашей конкуренции о легком для следования Классический ASP я нахожу, что Классик, сайты ASP любого размера быстро становятся лабиринтом недокументированных, включает файлы, такие, что может быть трудно определить, где функция реализована, или переменная объявляется.

главное состоит в том, что ASP.NET делает намного лучшее задание помощи разработчикам безопасно код повторного использования, чем Классик, которого сделал ASP, не удивляйтесь, когда они используют в своих интересах это.

Теперь это действительно не обращается к Вашей озабоченности по поводу движения за борт с многоуровневым дизайном. Действительно я думаю, что это зависит от ситуации. Если Ваш веб-сайт только система, получающая доступ к базе данных и дело не в этом большой, то, возможно, это - излишество. Но даже в этом сценарии, большая часть данных и бизнес-кода слоя может быть записана решение ORM , и это - хорошая вещь, потому что такой код обычно без ошибок и может быть отодвинут к некоторому темному углу Вашей системы пересмотра и забыт. Затем, когда (не, "если") сайт превращается во что-то, что может на самом деле использовать хорошо сложенный слой данных, этот код должен уже на месте поддерживать его, и по очень небольшому количеству себестоимости или стоимости обслуживания.

, С другой стороны, если Ваш веб-сайт совместно использует доступ к базе данных с программным обеспечением создания отчетов предприятия, или настольное приложение Windows для управления или несколько небольших приложений, говорят с той же базой данных, то, возможно, весь этот "дополнительный" код служит цели. Большая причина записи данных и бизнес-кода уровня состоит в том, что этот код может затем быть общим для каждая из различных систем, которые говорят с базой данных, такой, что этот код реализован точно в одном месте. Возможно, это - много кода для записи для небольшого веб-сайта, но в этом случае он не был записан для того сайта. Это было записано для среды в который сайт — и несколько других приложений — выполнения.

3
ответ дан 30 November 2019 в 11:04
поделиться

Это - пример высокоуровневого общего принципа, я думаю.

Это похоже на ножницы, которые мы раньше использовали в начальной школе с округленными подсказками и тусклыми краями. Вы не могли сократить очень хорошо, но Вы не могли свой yourelf (или никто больше) очень легко также.

Что-либо мощное создает потенциал для большей пользы и больше... иначе.

Microsoft, очень к их кредиту, делает действительно хорошее задание предоставления инструментам с низким барьером для доступа, таким образом, any-old-programmer может получить что-то полезное, сделанное относительно быстро. Но из-за их простоты, иногда они не масштабируются слишком хорошо, и необходимо переместиться до более сложного набора инструментов - но она платит, чтобы изучить, как использовать новый материал правильно и эффективно. Таким образом, Вашим вопросом является хороший, потому что это - часть, "понимают это сначала" процесс.

1
ответ дан 30 November 2019 в 11:04
поделиться

Это и не является прогрессом. То, как хорошо новые инструменты, которые мы имеем, используются, может быть вопросом здесь как некоторым маем по сборке и май других под сборкой, например, все находится в коде позади от разметки до логики базы данных к бизнес-логике только для держания всего этого вместе.

Шаблоны разработки могут использоваться в некоторых местах в качестве хорошего способа решить проблему в некоторых случаях. Например, в предыдущем задании были эти устройства, которые имели некоторые общие команды, которые должны были поддерживаться и таким образом, я создал класс адаптера и класс для каждого типа устройства, которое работало приятно для решения проблемы. Другой пример помощи шаблона разработки состоит в том, чтобы иметь шаблон фасада, скрывают некоторые детали как внешние системные функции так, чтобы был общий внутренний список функций для поддержки.

0
ответ дан 30 November 2019 в 11:04
поделиться

По моему опыту, Вы будете намного более гибкими, не используя пользовательские объекты базы данных вообще. В более старых версиях.NET можно раздать Объекты dataTable. В.NET 3.5, Вы получаете сильные типы для бесплатного использования LINQ.

удивительно, как некоторые разработчики тратят 75% своих данных получения времени из базы данных. Который.NET делает превосходный без любого пользовательского кода. Пользуйтесь стандартной библиотекой, и Вы найдете, что у Вас есть намного больше времени для обращения к бизнес-проблемам.

0
ответ дан 30 November 2019 в 11:04
поделиться

Спасибо за все комментарии до сих пор. Для разъяснения немного больше в классическом ASP, мы использовали компоненты VB, которые естественно ограничили нашу способность сверхусложнить их, который был хорош в том смысле, что это сохранило это более простым.

мне понравился ответ Короля "В конечном счете, "лучшая практика" лучших практик должна кодировать максимально максимально, ПОКА Вы не сталкиваетесь с настоящей проблемой, которая препятствует тому, чтобы Вы продвинулись".

Это звучит подобным другому, я слышал, который был оптимизацией “Premature, корень всего зла. ”

После этого, что, если мы просто помещаем всю логику шины в код - позади и затем переместили его в общие библиотеки, поскольку мы обнаружили, какой код будет действительно использоваться несколькими страницами? Например, если это - одна страница, у Вас могло бы быть все в коде - позади. Если существует две страницы, которые совместно используют одну часть логики, делают компонент. Если два компонента используют SQL Server, создают один новый компонент для оптимизации SQL-запросов, и т.д.

мне также понравилось различие Dana о создавании пользовательских приложений по сравнению с отдельным приложением. Это - одна вещь иметь законченный API, если 1 000 других будут использовать его. Это могла быть пустая трата времени для помещения той же энергии в ту от приложения.

"Астронавты архитектуры" большой термин для сверхтехнической тенденции!

Многие люди выражают существует второй план, и я думаю (надеются), что это - то, что мы все ищем! Таким образом, C# дает нам способность сделать аэрокосмические исследования , однако возможно, что уровень только необходим 5% времени. Я думаю, усиливая проблему, то, что большинство интервьюеров в эти дни как Вы, чтобы быть очень сведущим во всех аэрокосмических исследованиях...

Еще один связанный вопрос, который я хотел бы поднять: Как насчет того, чтобы просто использовать ПОСТЕПЕННО (обеспеченная.NET) возражает, чтобы хранить данные в архитектуре ASP.NET. Я видел, что некоторая архитектура создает новый объект для каждого типа межстанционных данных. Разве не было бы более просто просто создать объект коллекции (скажите, что список), и называют его "этими данными", "thatdata", и т.д.?

0
ответ дан 30 November 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: