Как я могу улучшить нашу производительность .NET? - PullRequest
3 голосов
/ 09 сентября 2010

Я возглавляю команду из шести разработчиков, и за последний год мы перешли на архитектуру Silverlight / WCF / C # / EF / SQL Server для нашей разработки. Сейчас мы развернули 5 или 6 небольших приложений, использующих эту архитектуру, и в настоящее время мы работаем над более крупной системой.

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

Мы привержены .NET и Silverlight, но когда я читаю утверждения о том, что "Ruby on Rails" обеспечивает повышение производительности в 10 раз, я нервничаю. Существует ли широко эквивалентный инструмент / архитектура / шаблон для .NET? Что-то на высоком уровне, что позволяет вам быстро развернуть корпоративную функциональность?

Ответы [ 5 ]

6 голосов
/ 09 сентября 2010

ASP.NET MVC в сочетании с некоторым ORM аналогичен Ruby / Rails в мире .NET. Последние пару лет я занимался гибкой разработкой с ASP.NET MVC и LINQ to SQL с хорошими результатами. Я бы объяснил, что мой самый большой прирост производительности - это переключение на парадигму разработки, основанную на тестировании, и большие инвестиции в основанную на истории разработку в небольших, часто выпускаемых итерациях. Большой выигрыш приходит не обязательно в ускорении разработки программного обеспечения, но в разработке правильного программного обеспечения в первый раз, что приводит к меньшему количеству переделок и высокому соотношению функций, используемых к разрабатываемым функциям. Кроме того, окружение моего кода модульными тестами позволяет мне продолжать развиваться примерно с той же скоростью с течением времени, в то время как непроверенный или недостаточно проверенный код в традиционных методах приводит к существенной потере производительности по мере увеличения сложности. ASP.NET MVC лучше подходит для этого стиля разработки, чем стандартные веб-формы. Вероятно, вы могли бы достичь такого же уровня тестируемости с помощью своего кода WCF.

1 голос
/ 09 сентября 2010

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

псЯ должен был сказать это, для реального + хорошего ответа, проверьте tvanfosson's.

1 голос
/ 09 сентября 2010
  1. Ruby on Rails не так хорош по сравнению с .NET, единственное преимущество, которое у них было, это то, что они начали использовать ORM (Active-Record) до того, как это сделал .NET. Но я вижу, что вы используете EF, поэтому вы в значительной степени на уровне

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

  3. Используйте систему отслеживания ошибок, такую ​​как JIRA. Я верю, что это 20 долларов для команды из 10 человек. Вы также можете использовать bugzilla с дешевым открытым исходным кодом.

  4. Используйте методы Agile-разработки, такие как ежедневные 15-минутные схватки, чтобы выяснить, что все делают, и посадить всех в одну лодку. Производительность - это, в основном, управленческая / мотивационная вещь, вы не хотите, чтобы ваши разработчики ломали голову и ленились. Кроме того, у JIRA есть хороший маленький проворный компонент (он называется «greenhopper»), такой как графики выгрузки и т. Д.

  5. Самая большая модель проектирования для WPF / Silverlight в наши дни называется MVVM. Существуют также структуры, такие как PRISM, MVVM light и MEF для обеспечения шаблонов уровня архитектуры. Хотя использование этих фреймворков в долгосрочной перспективе имеет крутую кривую обучения, они могут вам помочь.

1 голос
/ 09 сентября 2010

Очистить спец.

TDD (разработка на основе тестирования), смешанная с MDD (разработка на основе модели)

Контроль источника (как SVN и Mercurial)

Отслеживание ошибок, разделенных приложением

Вид следования сообщенной проблемы и совершенных коммитов.

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

Это «инструменты», которые помогают команде, частью которой я являюсь, оставаться на верном пути.

1 голос
/ 09 сентября 2010

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

Я бы предложил сосредоточиться на вашей архитектуре в целом и определить, насколько «компонентизирована» ваша система.Например, использовали ли вы в своей архитектуре шаблоны проектирования ?У вас есть определенные, многократно используемые компоненты слоя данных?Конкретные повторно используемые компоненты уровня пользовательского интерфейса?Конкретные повторно используемые компоненты бизнес-уровня?

Хотя такая архитектура может показаться идеалистической, со временем вы сможете создать библиотеку повторно используемых компонентов.Затем построение будущих систем становится не чем иным, как сборкой необходимых строительных блоков, возможно, с минимальной работой по настройке (подумайте о legos, если хотите).

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

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...