В чем разница между навыками на стороне сервера и навыками разработки десктопов? - PullRequest
1 голос
/ 13 апреля 2009

Этим утром я прочитал очень хороший вопрос о том, чего человеку ожидать от позиции Sharepoint. У меня похожий вопрос по поводу разработки на стороне сервера. Что я могу ожидать от инженерных позиций на стороне сервера, и как это похоже и отличается от разработки настольных систем?

У меня есть опыт работы с WinForms, WPF, небольшой опыт многопоточности, некоторый опыт использования веб-сервисов, некоторый опыт написания некоторых тонких и простых веб-сервисов, написания слоев доступа к данным (DAL) и некоторый опыт настройки и использования SQL Server база данных с интерфейсом в стиле CRUD и с использованием хранимых процедур.

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

Ответы [ 4 ]

3 голосов
/ 13 апреля 2009

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

  • Клиентская сторона - все о взаимодействии с пользователем, серверная сторона (чаще всего) не имеет пользователя. Это на самом деле довольно освобождает.
  • Серверная часть означает думать о менеджерах, а не о пользователях. Вам необходимо предоставить доступ для регистрации ошибок, отчетов, диагностики - ваши собственные и журналы событий Windows обычно.
  • Клиентская сторона эфемерна (пользователи приходят и уходят), серверная сторона постоянна. Поэтому управление ресурсами имеет первостепенное значение: утечки означают смерть. Утечки памяти, утечки ручек, фрагментация кучи. Вы заканчиваете мечтать об этом материале. Меня притащили в Испанию за 24 часа, потому что одна система может сорваться из-за распределителя памяти Windows DDE в аномальном состоянии, что говорит вам, насколько важен этот материал.
  • На стороне клиента отзывчивость пользователя (обслуживание графического интерфейса) - это все, на стороне сервера это сложнее. Многопоточность становится более важной, но она предназначена для масштабируемости, а не для обеспечения поддержки графического интерфейса пользователя. Я не начал подсчитывать циклы процессора или проверять значения задержки прерываний, как я делал это во времена моей прошивки, но он приближается.
  • Безопасность становится важной, но меньше, чем вы думаете. Не каждое серверное приложение имеет выход в Интернет. Думайте с точки зрения уровней доступа, ограничения доступа через представления и т. Д.
  • Когда-то серверная сторона всегда означала родную, но это меняется.

Edit:

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

Что касается "менеджеров", то здесь действительно есть два типа требований: один - для отчетов SysAdms, а другой - для подходящих типов управления. SysAdms нужна помощь в обнаружении ошибок, которые я считаю системными сбоями, которые могут повлиять на ваши приложения (сбои в работе сети, сетевые сбои, переполнение жесткого диска, аварийное переключение сервера, запуск DR и т. Д.) И диагностике, которую я считаю сообщение об аномальном поведении ваших собственных приложений.

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

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

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

2 голосов
/ 13 апреля 2009

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

Веб-разработка имеет проблему с различными версиями программного обеспечения и разрешениями, которые будут пытаться считывать данные. Браузеры, в том числе Internet Explorer, Firefox и Chrome, имеют разные способы выполнения некоторых задач, и в некоторых случаях может возникнуть проблема с выполнением пары кода, если у вас есть некоторый Javascript, смешанный с кодом на стороне сервера. Ограничения браузера могут быть фактором, а также тем, какие плагины можно ожидать от клиентов, например Flash, Java или Silverlight. Временами работа с безгражданством в сети может быть болезненной.

2 голосов
/ 13 апреля 2009

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

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

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

1 голос
/ 13 апреля 2009

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

Существуют отличные методы для улучшения вашего веб-приложения: - осторожно используйте viewstate и отключите его на элементах управления, которые вам не нужны. - эффективно используя кеширование, ASP.net обеспечивает отличный контроль над этим. - Распределяйте ресурсы, например, когда вы имеете дело с File I.O. -Используйте Firebug для анализа ваших запросов и выявления ошибок. -использующие приложения для профилирования, такие как ANTS profiler и Jetbrain Profiler.

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

в конце я бы сказал, что фреймворк .Net - это такой удивительный мир, если вы знаете, как использовать правильный инструмент для правильной работы, то вы можете сделать все, что захотите и красивее, если вы используете Winforms , WPF, Silver light, ASP.net или MVC, всегда есть много вещей, которые вам не нужно изучать, потому что они являются общими для Framework.

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

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