ASP.NET MVC по сравнению с веб-формами: замена средств управления WebForms

Предположим, у вас есть большой проект, написанный на c ++, который имеет тысячу файлов .cpp и тысячу файлов .h. И давайте скажем, что проект также зависит от десяти статических библиотек. Допустим, мы находимся на Windows, и мы строим наш проект в Visual Studio 20xx. Когда вы нажимаете Ctrl + F7 Visual Studio, чтобы начать компиляцию всего решения (предположим, у нас есть только один проект в решении)

В чем смысл компиляции?

  • Visual Studio ищет файл .vcxproj и начинает компилировать каждый файл с расширением .cpp. Порядок компиляции не определен. Так что вы не должны предполагать, что файл main.cpp компилируется первым
  • Если файлы .cpp зависят от дополнительных файлов .h, чтобы найти символы, которые могут или не могут быть определены в file .cpp
  • Если существует один файл .cpp, в котором компилятору не удалось найти один символ, ошибка времени компилятора вызывает сообщение Символ x не найден
  • Для каждого файла с расширением .cpp создается объектный файл .o, а также Visual Studio записывает выходные данные в файл с именем ProjectName.Cpp.Clean.txt , который содержит все объектные файлы, которые должен обрабатываться компоновщиком.

Второй шаг компиляции выполняется Linker.Linker должен объединить весь объектный файл и, наконец, создать вывод (который может быть исполняемым файлом или библиотекой)

Steps In Linking проект

  • Разобрать все объектные файлы и найти определение, которое было объявлено только в заголовках (например: код одного метода класса, как упомянуто в предыдущих ответах, или событие инициализация статической переменной, которая является членом класса)
  • Если один символ не может быть найден в объектных файлах, его также ищут в дополнительных библиотеках. Для добавления новой библиотеки в проект Свойства конфигурации -> Каталоги VC ++ -> Каталоги библиотек и здесь вы указали дополнительную папку для поиска библиотек и Свойства конфигурации -> Линкер - > Ввести для указания имени библиотеки. -Если компоновщик не может найти символ, который вы пишете в одном .cpp, он вызывает ошибку времени компоновщика , которая может звучать как error LNK2001: unresolved external symbol "void __cdecl foo(void)" (?foo@@YAXXZ)

Наблюдение ]

  1. Как только компоновщик находит один символ, он не ищет его в других библиотеках
  2. Порядок компоновки библиотек имеет значение .
  3. Если Линкер находит внешний символ в одной статической библиотеке, он включает этот символ в выходные данные проекта. Однако, если библиотека является общей (динамической), он не включает код (символы) в выходные данные, но Может произойти сбой во время выполнения

Как устранить эту ошибку

Ошибка времени компиляции:

  • Убедитесь, что вы правильно написали синтаксический проект вашего c ++.

Ошибка времени компоновщика

  • Определите весь свой символ, который вы объявляете в заголовочных файлах
  • Используйте #pragma once, чтобы компилятор не включал один заголовок, если он был уже включены в текущий .cpp, который скомпилирован
  • Убедитесь, что ваша внешняя библиотека не содержит символов, которые могут вступать в конфликт с другими символами, которые вы определили в ваших заголовочных файлах
  • Когда вы используете шаблон, чтобы убедиться, что вы включили определение каждой функции шаблона в файл заголовка, чтобы позволить компилятору генерировать соответствующий код для любых экземпляров.
9
задан John Saunders 25 July 2009 в 16:41
поделиться

10 ответов

Дело в том, что:

Если вы хотите стать мастером веб-разработки, вы должны владеть HTML + CSS + Javascript

А с WebForms вы должны изучить способ, которым это делает WebForms. , но с MVC у вас есть мощь .Net и свобода генерировать нужный HTML + CSS + Javascript.

11
ответ дан 4 December 2019 в 10:33
поделиться

Недавно я провел рефакторинг очень сложного веб-сайта, используя ASP.NET + вручную обработанный javascript для MVC + jQuery. Сложность кода снизилась на 50% -75% и стала намного более тестируемой. Я заменил все сложные веб-элементы управления, которые мне приходилось писать (с крутой кривой обучения, которую мне пришлось преодолеть), на очень простые методы HtmlHelper.

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

Повышенная простота, сокращение времени разработки, тестируемость, гибкость пользовательского интерфейса ... Я не хочу возвращаться.

1
ответ дан 4 December 2019 в 10:33
поделиться

Вам не нужно заменить элементы управления Webforms чем-то другим из MVC. Просто смешайте их - http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx

0
ответ дан 4 December 2019 в 10:33
поделиться

Мне было интересно - что эквивалентно «контролю» из веб-форм в asp.net mvc? Это точно не частичное мнение. Что еще это может быть? Контроллер + частичное представление через частичные запросы?

Может быть, я тупой, слепой или и то, и другое, но я не видел никакого «контроля» для asp.net mvc. Просто много фрагментов кода для выполнения той или иной задачи.

Я считаю, что asp.net mvc довольно неприятен для быстрого развития. Единственный выход из этой проблемы - много открытого исходного кода (например, MvcContrib), руководств, примеров приложений и, самое главное, - немного более умные разработчики.

0
ответ дан 4 December 2019 в 10:33
поделиться

Проблема в том, что ASP.NET MVC намного моложе, чем ASP.NET. В течение многих лет сторонние компании разрабатывали ТОННЫ повторно используемых компонентов, и я считаю, что появление сопоставимого набора элементов управления для ASP.NET MVC - лишь вопрос времени.

Если вам действительно нужен очень богатый графический интерфейс со сторонними элементами управления, и вы не можете их переписать за приемлемое время - придерживайтесь asp.net. Хотя, на мой взгляд, MVC дает вам массу возможностей, было бы неразумно тратить на переписывание элементов управления гораздо больше времени, чем вы можете сэкономить. Если вы можете жить без элементов управления и любите концепции MVC - используйте MVC, и вы

2
ответ дан 4 December 2019 в 10:33
поделиться

Вот новая напыщенная речь на эту тему http://www.charliedigital.com/PermaLink,guid,6dcb0333-9d70-40c7-975b-0ff4011c4661.aspx

2
ответ дан 4 December 2019 в 10:33
поделиться

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

1
ответ дан 4 December 2019 в 10:33
поделиться

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

Теперь, когда Интернет повзрослел, и мы все постепенно узнали о HTML, CSS, javascript и подобных вещах, которые мы хотим оптимизировать наши веб-сайты для наших собственных нужд, и мы не хотим полагаться на элементы управления ASP.net Forms для управления мельчайшими деталями наших веб-сайтов.

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

1
ответ дан 4 December 2019 в 10:33
поделиться

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

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

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

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

1
ответ дан 4 December 2019 в 10:33
поделиться

Вот ключевой момент, который, я думаю, вы не хватает. Когда ASP.NET больше не является способом ведения дел в MS ... вы в конечном итоге будете вынуждены уйти и заняться чем-то другим. Я программировал на Perl, ASP classic, затем на ColdFusion, затем на PHP, затем на веб-формах ASP.NET, затем на ASP.NET MVC ... единственное, что у всех них общего, - это базовая база данных, шаблоны проектирования, лучшие практики для данный набор технологий И ... HTML, JavaScript, CSS и Photoshop.

Никто не просит вас изучить MVC. Никто не говорит вам не использовать WebForms. Однако жалобы на то, что вам нужно писать необработанный пользовательский интерфейс, не продвинут вас далеко в этой отрасли. Вы должны узнавать что-то новое каждый день ... и похоже, что некоторое время, потраченное на HTML и CSS, было бы отличным местом для начала!

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

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

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

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

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

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

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

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

0
ответ дан 4 December 2019 в 10:33
поделиться
Другие вопросы по тегам:

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