O que um desenvolvedor precisa saber sobre o Windows Server?

7

Sou um .NET Developer certificado e desenvolvo muito o SharePoint no trabalho. Adicionar / editar / excluir usuários requer o uso do AD e, claro, qualquer coisa relacionada à estrutura do site no SharePoint tem relação com o IIS.

Como desenvolvedor, o que preciso saber sobre o IIS / AD e o Windows Server como um todo? Uma das coisas que eu estou querendo saber é como posso fazer um usuário ser incluído em vários grupos?

Obrigado

    
por dotnetdev 21.07.2009 / 16:35

6 respostas

6

Noções básicas sobre o Active Directory : qualquer usuário pode estar em muitos grupos no AD, o problema é como levá-los até lá. Fazê-lo de forma programática é possível e fácil o suficiente, mas a questão é se a sua política de segurança permite esse tipo de coisa? Quem controla o AD em que o aplicativo deve ser implantado e o quanto ele tem mais a ver com esse tipo de coisa do que os detalhes técnicos reais de adicionar pessoas a grupos. Essas são ótimas perguntas para começar a fazer perguntas antes de chegar à fase de lançamento.

O mesmo acontece para o IIS. As questões políticas são quase sempre maiores do que as técnicas. Perguntar o que você pode e não pode fazer sem causar problemas é um ótimo começo. O uso de diretórios virtuais e sites virtuais é outra coisa boa para se dar uma olhada.

E enquanto você estiver perguntando, aqui estão mais algumas coisas que desejo que mais desenvolvedores tenham interesse em entender.

Um servidor não é uma entidade permanente inalterável , hardware é substituído, ISPs mudam, unidades são preenchidas .. Não codifique coisas como caminhos de arquivos absolutos, endereços IP e nomes de servidores.

Outra grande é saber qual o seu aplicativo realmente precisa ser executado . Em um servidor, ninguém quer realmente ter que instalar todos os recursos porque o desenvolvedor não pode lhe dizer o que está chamando. Um aplicativo que mora na memória para mim é aquele em que acabei tendo que instalar o MSSQL Server 2005 em um servidor da Web apenas porque o código não seria executado sem ele. Eventualmente (meses e horas de trabalho depois) nós descobrimos o que estava acontecendo e como evitar isso. Se não tivesse sido tão importante um aplicativo com essa influência por trás dele, eu teria empurrado de volta e dito "absolutamente não, porque esse é um risco de segurança ENORME"

Esse tipo de coisa causa incômodas dores de cabeça na solução de problemas no back-end. "Funciona na minha máquina" são tão úteis porque você provavelmente tem mais uma tonelada de ferramentas na sua máquina do que queremos instaladas em um servidor. Além disso, um ambiente de teste deve ser o mais próximo possível da produção para eliminar esses tipos de problemas.

    
por 21.07.2009 / 17:57
5

Da minha experiência, estas são as áreas que mais desejo aos desenvolvedores:

IIS. Especialmente importante para aplicativos ASP.Net. Algumas áreas importantes para investigar:

  1. IP Binding e Host Headers. Quando você cria um novo site do IIS, certificando-se de saber como configurar o IP e os cabeçalhos de host corretamente.

  2. Configurações do pool de aplicativos. Há várias configurações aqui que afetam seu aplicativo, incluindo valores de tempo limite e reciclagem. Certifique-se de entender como isso pode afetar suas sessões.

  3. Ativando métodos. Se você estiver fazendo uma API REST, saiba como ativar métodos adicionais, como PUT.

  4. Certificados SSL. Entenda como instalar um certificado SSL e como o processo de obtenção de um certificado funciona.

  5. Ajustes de desempenho. Certifique-se de que você saiba como ativar o GZIP, desativar tags de email, configurar a expiração de conteúdo e definir cabeçalhos de cache. Use o Fiddler para ver como o IIS está respondendo às solicitações. Você pode melhorar drasticamente o desempenho do aplicativo com algumas alterações simples.

WCAT. Relacionado ao IIS, mas entenda como configurar WCAT e configure testes de carga para sua aplicação. Dessa forma, você pode ter dados concretos sobre o tempo de resposta e as limitações do seu aplicativo.

Permissões. Entenda quais permissões precisam estar em quais pastas em seu aplicativo. Por exemplo, se seu aplicativo gravar em uma pasta, você precisa conceder acesso NETWORK_SERVICE a essa pasta?

Firewall do Windows. Parece básico, mas especialmente para o Windows Server 2008, entender como adicionar uma entrada ao firewall, definir a porta, definir o escopo, etc.

Servidor SMTP. Compreenda como configurar, configurar e solucionar problemas do servidor SMTP do Windows. Você também pode querer olhar para o HMailServer como uma alternativa para usar com seus aplicativos. Além disso, leia sobre o filtro de SPAM e como criar corretamente e-mails (adequado de, para, mensagens multipartes, etc.).

IP do SQL Server e ligação de porta. Não está diretamente relacionado ao Windows Server, mas é muito usado. Entenda como configurar o SQL Server para vincular-se a um IP e uma porta específicos. Conheça a diferença entre portas dinâmicas e estáticas, como configurar e conectar-se a portas não padrão, como construir strings de conexão usando nomes de instâncias e portas personalizadas.

Muitos dos itens da lista acima estão no domínio dos administradores de servidores, mas você pode se tornar muito mais valioso se puder entender e solucionar essas áreas.

    
por 21.07.2009 / 18:41
1

Hmm, isso pode realmente ser uma pergunta do stackoverflow.com (para obter respostas de outros programadores). Se você está se perguntando o que um administrador de sistemas pode querer que os programadores saibam, eu diria:

  • Monitoramento de desempenho - quanto mais fácil seu código estiver no hardware, melhor

  • Entenda (e documente) como seu código interage com diferentes versões do IIS e do Sharepoint

Quanto à sua pergunta de associação ao grupo, eu usaria a GUI ou DSADD - mas você provavelmente está procurando código lá? Podemos fazer com que essa questão seja migrada para o site-irmão se você estivesse realmente procurando uma entrada de codificador.

    
por 21.07.2009 / 17:12
1

Eu recomendaria saber 32 bits versus 64 bits e quanta memória seus aplicativos (web via IIS ou winforms) podem consumir. Eu também examinaria o IIS7 especificamente para todas as interfaces, eventos e acesso geral ao pipeline de processamento que pode aproveitar os serviços do Windows.

O conhecimento geral do Active Directory (AD) é definitivamente útil se o seu aplicativo exigir autenticação. Esteja ciente de contas e permissões, como aplicativos da web e winforms ou aplicativos gerais, todos eles devem ser executados em uma conta de diretório ativa. Todos os processos do IIS são executados em IUSR_machinename e os compartilhamentos de arquivos também são vinculados por direitos de segurança. Pode parecer irrelevante durante o desenvolvimento, já que ninguém pode pensar no problema, mas os domínios do Windows são strongmente vinculados pelo AD e suas permissões / ACLs afetam tudo dentro do domínio. Apenas algo para fazer uma nota. Nota: as políticas do AD também podem afetar os aplicativos também.

Também recomendo trabalhar com o EventLogging (para erros e mensagens de aplicativos) dentro da plataforma .NET, já que alguns dos aplicativos em que trabalhei tiveram que criar nosso próprio sistema de log (erro) o tempo todo. o EventLog do Windows disponível para nós. Não foi difícil criar um sistema de registro, mas por que mais funciona quando o EventLog já está disponível?

Também de uma perspectiva de aplicativo, eu examinaria o Microsoft Message Queuing (MSMQ). Se o seu aplicativo / site tiver muitos dados sendo misturados em bancos de dados e servidores da Web ou precisar enviar dados para outros sistemas / aplicativos, o enfileiramento é uma técnica útil e o MSMQ é gratuito e integrado ao Windows Server. O MSMQ é um sistema de mensagens baseado em transações e pode ser muito útil para aplicativos que possuem necessidades de dados dinâmicos. Desculpe ser vago, mas entrar no MSMQ exigiria muito esforço e pode ser um exagero. Eu recomendaria ler sobre o MSMQ e o conceito geral dele em MSDN ou Wikipedia para iniciantes.

Espero que isso ajude!

Editar: eu faria a pergunta específica sobre adicionar um usuário (eu suponho via .NET) a diferentes grupos no Stackoverflow, mas achei que a pergunta geral sobre o AD e o Windows era apropriada para Falha no servidor.

    
por 21.07.2009 / 18:09
1

Depende muito do seu papel.

Se você tiver uma função de arquiteto / desenvolvedor líder, precisará saber como o sistema funcionará na produção.

Se você estiver fazendo alguma implantação, você também precisa saber sobre as plataformas nas quais você irá instalar.

Se você é um desenvolvedor que está apenas começando tarefas como "escrever uma função que faz x", você não precisa saber muito.

O interessante aqui é que o valor de mercado de um desenvolvedor que entende o lado das operações é muito maior do que alguém que é apenas um desenvolvedor.

    
por 21.11.2009 / 15:54
0

Você nunca ative o Gerenciador de Recursos de Sistema do Windows. Ele vai comer 9-11% da CPU em todos os momentos para que ninguém saiba o quê.

    
por 21.07.2009 / 17:47