Назад | Перейти на главную страницу

Что разработчику нужно знать о Windows Server?

Я сертифицированный разработчик .NET и много занимаюсь разработкой для Sharepoint на работе. Добавление / редактирование / удаление пользователей требует использования AD и, конечно же, все, что связано со структурой сайта в Sharepoint, имеет отношение к IIS.

Что мне, как разработчику, нужно знать о IIS / AD и Windows Server в целом? Меня интересует, как сделать пользователя включенным в несколько групп?

Спасибо

Понимание Active Directory: Любой пользователь может быть во многих группах в AD, проблема в том, как их туда попасть. Сделать это программно возможно и достаточно просто, но вопрос в том, позволяет ли ваша политика безопасности такое? Кто контролирует AD, в котором должно быть развернуто ваше приложение, и насколько тесно связано с подобными вещами, а не с техническими деталями добавления людей в группы. Это отличные вопросы, которые стоит задать перед тем, как перейти к этапу развертывания.

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

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

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

Еще один большой знать, что действительно нужно вашему приложению для запуска. На сервере никто не хочет устанавливать все навороты, потому что разработчик не может сказать вам, что он вызывает. Одно приложение, которое живет для меня в памяти, - это то, где мне пришлось установить MSSQL Server 2005 на веб-сервер только потому, что без него код не работал бы. В конце концов (спустя месяцы и часы работы) мы поняли, что происходит и как этого избежать. Если бы это не было настолько важным приложением с таким влиянием, я бы оттолкнул его и сказал: «Абсолютно нет, потому что это ОГРОМНЫЙ риск для безопасности».

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

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

IIS. Особенно важно для приложений ASP.Net. Несколько ключевых областей, на которые стоит обратить внимание:

  1. Привязка IP и заголовки хоста. При создании нового сайта IIS убедитесь, что вы знаете, как правильно настроить заголовки IP и хоста.

  2. Настройки пула приложений. Здесь есть ряд настроек, которые влияют на ваше приложение, включая значения тайм-аута и повторное использование. Убедитесь, что понимаете, как это может повлиять на ваши занятия.

  3. Включение методов. Если вы используете REST API, знайте, как включить дополнительные методы, такие как PUT.

  4. Сертификаты SSL. Узнайте, как установить сертификат SSL и как работает процесс получения сертификата.

  5. Твики производительности. Убедитесь, что вы знаете, как включить GZIP, отключить электронные теги, настроить срок действия контента и установить заголовки кеша. Используйте Fiddler, чтобы увидеть, как IIS отвечает на запросы. Вы можете значительно улучшить производительность своего приложения с помощью нескольких простых изменений.

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

Разрешения. Поймите, какие разрешения должны быть для каких папок в вашем приложении. Например, если ваше приложение выполняет запись в папку, нужно ли вам предоставить NETWORK_SERVICE доступ к этой папке?

Брандмауэр Windows. Кажется базовым, но особенно для Windows Server 2008, нужно понять, как добавить запись в брандмауэр, установить порт, установить область и т. Д.

SMTP-сервер. Узнайте, как устанавливать, настраивать и устранять неполадки сервера SMTP Windows. Вы также можете рассмотреть HMailServer в качестве альтернативы для использования с вашими приложениями. Также прочитайте о фильтрации спама и о том, как правильно создавать электронные письма (правильные от, до, составные сообщения и т. Д.).

Привязка IP-адреса и порта SQL Server. Не имеет прямого отношения к Windows Server, но часто встречается. Узнайте, как настроить SQL Server для привязки к определенному IP-адресу и порту. Знайте разницу между динамическими и статическими портами, как настраивать нестандартные порты и подключаться к ним, как создавать строки подключения с использованием имен экземпляров и настраиваемых портов.

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

Я бы рекомендовал знать 32-битные и 64-битные версии и сколько памяти могут потреблять ваши приложения (веб-сайты через IIS или winforms). Я бы также изучил IIS7 специально для всех интерфейсов, событий и общего доступа к конвейеру обработки, который может использовать преимущества служб Windows.

Общие знания Active Directory (AD) определенно пригодятся, если вашему приложению они необходимы для аутентификации. Помните об учетных записях и разрешениях, поскольку веб-приложения и winforms или общие приложения должны запускаться под учетной записью Active Directory. Все процессы IIS работают под IUSR_machinename общие файловые ресурсы также связаны обеспечительными правами. Это может показаться несущественным во время разработки, поскольку никто не может подумать об этой проблеме, но домены Windows жестко связаны AD, и их разрешения / ACL влияют на все внутри домена. Просто кое-что, на что стоит обратить внимание. Примечание. Также политики AD могут влиять на приложения.

Я также рекомендовал бы работать с EventLogging (для ошибок и сообщений приложений) на платформе .NET, поскольку для некоторых приложений, над которыми я работал, нам приходилось создавать нашу собственную систему регистрации (ошибок), пока у нас был Windows EventLog. доступны нам. Создать систему журналов было несложно, но зачем делать больше работы, когда EventLog уже доступен?

Также с точки зрения приложения я бы посмотрел на Microsoft Message Queuing (MSMQ). Если ваше приложение / сайт содержит много данных, перемещаемых между базой данных и веб-серверами, или если вам необходимо отправить данные в другие системы / приложения, организация очередей является полезным методом, а MSMQ является бесплатным и встроен в Windows Server. MSMQ - это система обмена сообщениями на основе транзакций, которая может быть очень полезна для приложений, которым нужны динамические данные. Извините за расплывчатость, но для входа в MSMQ потребуется много усилий и может оказаться излишним. Я бы рекомендовал прочитать о MSMQ и его общей концепции на MSDN или Википедия для начинающих.

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

Редактировать: Я бы задал конкретный вопрос о добавлении пользователя (я предполагаю, через .NET) в разные группы в Stackoverflow, но я подумал, что общий вопрос об AD и Windows подходит для Serverfault.

Хм, на самом деле это может быть вопрос stackoverflow.com (чтобы получить ответы от других программистов). Если вам интересно, что системный администратор может требовать от программистов, я бы сказал:

  • Мониторинг производительности - чем проще ваш код на оборудовании, тем лучше

  • Понять (и задокументировать), как ваш код взаимодействует с различными версиями IIS и Sharepoint.

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

Это во многом зависит от вашей роли.

Если у вас есть роль архитектора / ведущего разработчика, вам необходимо знать, как система будет работать в производственной среде.

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

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

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

Никогда не включайте диспетчер системных ресурсов Windows. Он будет съедать 9-11% CPU постоянно, никто не знает что.