Como implantar um aplicativo baseado na API e no navegador da Web do ASP.NET em um ambiente de produção [closed]

2

(Por favor, perdoe se isso for postado em um fórum incorreto. Não sabíamos exatamente onde postá-lo.)

Temos um aplicativo de página única da API da Web do ASP.NET - um aplicativo baseado em navegador sendo executado no IIS para servir HTML5 / CSS3 / JavaScript, que fala ao ponto de extremidade da API da Web do ASP.NET apenas para acessar um banco de dados e transferir JSON dados. Tudo está funcionando muito bem em nosso ambiente de desenvolvimento - ou seja, temos uma solução do Visual Studio com um projeto ASP.NET Web API e dois projetos de biblioteca de classes para acesso a dados. Durante o desenvolvimento e teste em caixas de desenvolvimento, usando o IIS Express para um localhost: porta para executar o site e acessar a API da Web, está tudo bem.

Agora, precisamos movê-lo para um ambiente de produção (e estamos com problemas - ou simplesmente não entendendo o que precisa ser feito).

O ambiente de produção é todo interno (nada será exposto na Internet pública). Existem dois domínios. Um domínio, o domínio corporativo, é o local onde todos os usuários fazem login normalmente. O outro domínio, o domínio do processo, contém a instância do SQL Server que nosso aplicativo e a API da Web precisarão acessar.

A equipe de TI quer colocar uma DMZ entre os dois domínios para hospedar o aplicativo IIS e proteger os usuários no domínio corporativo de terem acesso diretamente ao domínio do processo. Então, eu acho que o que eles querem é:

domínio corp (usuários finais) < - > firewall (porta aberta 80) < - > DMZ (servidor da web que executa o IIS) < - > firewall (porta aberta 80 ou 1433 ????) < - > domínio de processo (IIS para API da Web e SQL Server)

Somos desenvolvedores e realmente não entendemos todos os aspectos da rede, por isso, estamos nos perguntando como implantar nosso aplicativo de navegador / API da Web nesse cenário.

  1. Precisamos dividir nosso aplicativo para que todo o código do cliente (HTML5 / CSS3 / JavaScript / images / etc.) esteja no servidor IIS no DMZ, enquanto a API da Web é instalada no servidor no processo domínio?
  2. Ou o aplicativo inteiro (código do cliente e API da Web) fica junto no servidor IIS na DMZ, que, de alguma forma, acessa a instância do SQL Server para obter dados?
  3. A partir do servidor IIS e do aplicativo na DMZ, basta acessar a API da Web no servidor no domínio do processo acessando " link "?
  4. No segundo firewall entre o DMZ e o domínio do processo, você teria que abrir a porta 1433 ou apenas a porta 80, já que a API da Web é um endpoint HTTP?
  5. Ou existe alguma maneira melhor de implantação (por exemplo, como aplicativos de página única da API da Web do ASP.NET escritos em HTML5 e JavaScript devem ser implantados em ambientes de produção?)

Tenho certeza de que há outras perguntas, mas começaremos com isso. Obrigado !!!

(Nota: os servidores são Win2k8 R2, SQL Server 2k8 R2 e IIS 7.5).

    
por lmttag 12.11.2012 / 23:19

1 resposta

0

Eu posso entender seu grupo de TI querendo quebrar isso, mas parece que eles também não entendem completamente como essa configuração funciona. Não vou entrar muito nisso, mas essencialmente o único tráfego que você estará trocando com os servidores até o domínio process é o tráfego HTTP padrão (supondo que você esteja usando a API da Web para chamadas REST)

Essencialmente, você acaba com o seguinte:

           Initial Request
SPA Web Server ---> Client (Running SPA)
                      |
                      | - REST Call
          Firewall -> | - Port 80 Only
                Web API Server
                      |
                      | - SQL (1433) .NET Connection/Data Source
          Firewall -> | - Port 1433 / 1434
             Backend SQL Servers

Lembre-se de que, com um SPA, a única comunicação que o cliente tem com o servidor da Web do SPA é a solicitação inicial para obter o HTML, JS e CSS. Depois disso (dependendo de como você o escreveu), ele deve estar emitindo diretamente chamadas REST para o servidor da API da Web.

O servidor da API da Web emite consultas SQL diretamente para o banco de dados a partir dele.

Portanto, o longo e o curto é o seguinte:

TL; DR : você deve ter um firewall entre seus clientes e suas duas instâncias do IIS (eles podem ser o mesmo servidor btw) para permitir o tráfego HTTP / HTTPS e / ou. Em seguida, em outra interface do (s) servidor (es) da Web, você tem uma conexão com o domínio do Processo e somente o tráfego do SQL pode entrar (1433 e 1434).

Espero que ajude.

    
por 12.11.2012 / 23:38