// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

image::images/netbeans-stamp-80-74-73.png[title="O conteúdo desta página se aplica ao NetBeans IDE 7.3, 7.4 e 8.0"]

= Modos de Desenvolvimento Remoto de C/C++ no IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Modos de Desenvolvimento Remoto de C/C++ no IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Modos de Desenvolvimento Remoto de C/C++ no IDE

Março de 2014 [Número da revisão: V8.0-1]

Este artigo descreve os recursos de desenvolvimento remoto disponíveis no NetBeans IDE quando você tiver o módulo C/C++ instalado, e como escolher a melhor forma de usá-los no seu ambiente de desenvolvimento.













== O Que É Desenvolvimento Remoto

O desenvolvimento remoto é uma funcionalidade do NetBeans IDE que permite executar o IDE em um computador executando Microsoft Windows, Mac OS X, Oracle Solaris ou Linux. Ele permite ainda compilar, executar e depurar seu programa em outro computador que execute Oracle Solaris ou Linux.


== Quando Usar o Desenvolvimento Remoto

Você pode usar o desenvolvimento remoto se uma das circunstâncias abaixo for verdadeira para você:

* Seu sistema operacional não está executando Oracle Solaris ou Linux.

* Você está executando o IDE em um sistema Solaris que às vezes tem cargas altas.

* Seu acesso aos sistemas que executam o Oracle Solaris ou Linux se limita ao SSH (Shell Seguro) por motivos de segurança.

* A execução das ferramentas da interface gráfica do usuário é difícil no ambiente do Solaris.

* O software que você está desenvolvendo deve ser compilado e executado em várias plataformas, como Solaris e Linux.


== Como Funciona o Desenvolvimento Remoto

O IDE fornece funcionalidades para gerenciar hosts remotos. Você pode configurar um host remoto para usar para compilação, execução e depuração dos projetos em C, C++ e Fortran. O host remoto deve atender às seguintes condições:

* O sistema operacional do host remoto deve ser Oracle Solaris ou Linux.

* O host remoto deve executar o daemon do SSH, `sshd`.

* Pelo menos um conjunto de ferramentas (GNU, Oracle Solaris Studio ou Sun Studio) deve estar acessível no host remoto.

* Você deve ter uma conta de usuário no host.

Você pode gerenciar seus hosts remotos na janela Serviços do IDE.

image::images/services_window.png[]

Depois de configurar o host remoto e conectá-lo, você poderá compilar, executar e depurar projetos como faz no seu sistema local. Os comandos do IDE Remoto são executados em SSH.

Quando você usa um host de desenvolvimento remoto, os hosts locais e remotos precisam acessar os arquivos do projeto. Esse acesso pode ser realizado por meio de compartilhamento de arquivos ou cópia segura dos arquivos. Antes de o IDE usar o compartilhamento de arquivos entre os sistemas locais e remotos, o sistema de arquivos compartilhado ou a pasta deve ser configurada e ficar acessível para ambos os sistemas. Os arquivos remotos são acessados por SFTP ou outro mecanismo de compartilhamento de arquivo disponível no sistema operacional em que o host está sendo executado (por exemplo, NFS, Samba ou WebDAV).

Se o compartilhamento de arquivos não for possível, você poderá usar a Cópia Automática para copiar os arquivos no servidor usando SSH.


== Benefícios do Desenvolvimento Remoto

O desenvolvimento remoto oferece os seguintes benefícios:

* Você pode usar o mesmo ambiente de desenvolvimento para todos os projetos.

* Os recursos para seu sistema de desktop são melhor utilizados.

* O tráfego de rede é otimizado.

* O tempo de resposta do IDE é melhor.

* Você pode navegar por sistemas de arquivo remotos do IDE.

* Você pode abrir uma janela de terminal no IDE para um host remoto.

* Você só pode usá-lo em ambientes seguros de SSH.

 image::images/modes_diagram.png[]

No modo simples, os arquivos de origem residem principalmente no host local. Quando você cria seu projeto, os arquivos de origem são entregues sob demanda para o host remoto com o uso do SFTP (Protocolo de Transferência de Arquivos do SSH).

No modo misto ou compartilhado, os arquivos de origem residem em um local compartilhado entre o host local e o remoto usando o NFS, Samba, WebDAV ou outro sistema de compartilhamento de arquivos.

No modo totalmente remoto, os arquivos de origem residem no host remoto. O IDE acessa os arquivos usando SFTP.


== Decidindo Qual Modo de Desenvolvimento Remoto Usar

O melhor modo de desenvolvimento para sua situação específica depende do ambiente de desenvolvimento em que você trabalha. Cada seção a seguir descreve um exemplo de um ambiente de desenvolvimento em que um modo de desenvolvimento oferece os maiores benefícios.


=== Modo Simples

O modo simples pode ser o melhor modo remoto para suas necessidades se o diagrama a seguir descrever seu ambiente de desenvolvimento.

image::images/simple_mode_diagram.png[]

Neste ambiente, o modo simples oferece estes benefícios:

* Você pode usar o mesmo IDE para desenvolvimento local e remoto.

* Você pode alternar facilmente entre hosts e plataformas no IDE.

* Você pode usar o IDE em um ambiente somente SSH.

* Sua mobilidade aumentou.


=== Modo Misto (Compartilhado)

O modo misto ou compartilhado pode ser uma boa escolha se seu ambiente de desenvolvimento tiver a aparência mostrada no seguinte diagrama.

image::images/mixed_mode_diagram.png[]

Os benefícios do uso de modo misto neste ambiente são:

* Você pode alternar facilmente entre hosts e plataformas no IDE.

* Não há nenhuma duplicação de arquivos (armazenamento no cache) como ocorreria na outros dois modos.

* O throughput de rede será tão bom quanto seu mecanismo de compartilhamento de arquivo (por exemplo, NFS, Samba ou WebDAV) puder especificar.


=== Modo Totalmente Remoto

O modo totalmente remoto pode ser o melhor para você se o seu ambiente de desenvolvimento tiver a aparência mostrada no diagrama a seguir.

image::images/full_mode_diagram.png[]

Neste ambiente, os benefícios do uso de modo totalmente remoto são:

* A migração com o uso de encaminhamento de X-window ou VNC é praticamente inigualável.

* O tempo de resposta do IDE aumenta.

* Você dependerá menos dos recursos do host de desenvolvimento.

* Uma carga menor no host de desenvolvimento reduz a carga no Oracle Solaris.

* Você pode criar novos projetos remotos de arquivos binários remotos.


== Selecionando seu Modo de Desenvolvimento Remoto

O modo de desenvolvimento remoto que você usa é determinado pela forma que você configura um host de compilação remoto, mas também pela forma como você acessa o projeto no IDE.

Para cada modo, você deve primeiro configurar um host de compilação remota, como descrito no link:./remotedev-tutorial.html[+tutorial de Desenvolvimento Remoto do C/C+++] e na Ajuda do IDE.

Você pode selecionar o modo simples ou misto para o host remoto no IDE usando a caixa de diálogo Propriedades do Host para especificar como os arquivos de projeto devem ser acessados quando você usa o host.

Abra a janela Serviços, expanda o nó Hosts de Compilação do C/C++, clique com o botão direito do mouse em um host remoto e selecione Propriedades.

image::images/host_properties_dialog.png[]


=== Modo Simples

Para o modo simples, defina Acessar arquivos do projeto pela cópia Automática.

É possível clicar com o botão direito do mouse, selecionar Definir Host da Compilação e selecionar o host remoto que você configurou para acessar os arquivos do projeto via cópia automática. Em seguida, você usará o modo de desenvolvimento remoto simples. Quando você compilar o projeto, os arquivos de projeto serão copiados automaticamente para seu diretório de usuário do NetBeans no host remoto.


=== Modo misto

Para o modo misto, defina o Acesso aos arquivos do projeto via Compartilhamento de arquivos no nível do sistema.

É possível clicar com o botão direito do mouse, selecionar Definir Host da Compilação e selecionar o host remoto que você configurou para acessar os arquivos do projeto via compartilhamento do arquivo no nível do sistema. Em seguida, você usará o modo de desenvolvimento remoto misto. Quando você criar o projeto, os arquivos do projeto permanecerão onde estão, pois poderão ser acessados do host local e do host de compilação remota.


=== Modo totalmente remoto

Para usar o modo totalmente remoto no IDE, use a barra de ferramentas Desenvolvimento Remoto descrita na seção a seguir.


== Desenvolvimento Totalmente Remoto Usando a Barra de Ferramentas

No modo totalmente remoto, você pode usar o IDE em execução no host local para trabalhar em projetos localizados em um host remoto, usando a barra de ferramentas de desenvolvimento remoto.

A barra de ferramentas é mostrada na figura a seguir.

image::images/RemoteToolbar.gif[] 

Se você não vir a barra de ferramentas no IDE, poderá exibi-la escolhendo Exibir > Barras de Ferramentas > Remota.

Você pode usar a barra de ferramentas remota para selecionar um host remoto que já tenha configurado e trabalhar com projetos e arquivos no host remoto como se eles fossem locais.

Use os ícones conforme descrito na tabela a seguir.

|===
|image::images/connected24.gif[]
 |

Status da conexão. Clique no ícone para conectar o servidor selecionado na lista ao lado do ícone. Se você já estiver conectado, poderá clicar nesse ícone para se desconectar do servidor.

O ícone indica o status da conexão, ficando verde quando conectado e vermelho quando não conectado.

 

|image::images/newProject24.gif[]
 |

Criar projeto remoto. Clique no ícone para criar um novo projeto no host conectado no momento.

Por default, o projeto é criado no seu diretório `~/NetBeansProjects` no host remoto.

 

|image::images/openProject24.gif[]
 |

Abrir projeto remoto. Clique no ícone para abrir projeto existente no host conectado no momento.

Você pode navegar até o projeto no sistema de arquivos remoto.

 

|image::images/openFile24.gif[]
 |

Abrir arquivo remoto. Clique no ícone para abrir um arquivo no host conectado no momento.

Você pode navegar até o arquivo no sistema de arquivos remoto.

 
|===


== Caches e Segurança

Para oferecer acesso rápido aos arquivos remotos, o IDE usa um cache em disco no sistema local. O cache se localiza em `_userdir_/var/cache/remote-files`, em que `_userdir_` é exclusivo para o usuário e sua localização varia de acordo com a plataforma que você está executando o IDE.

Consulte uma descrição do `_userdir_` e dos locais de cada plataforma em link:http://wiki.netbeans.org/FaqWhatIsUserdir[+http://wiki.netbeans.org/FaqWhatIsUserdir+].

Quando você usar um desenvolvimento remoto em modos simples e compartilhados, somente cabeçalhos do sistema serão acessados pelo cache local, de forma que não haja risco de segurança.

No modo totalmente remoto, embora os arquivos se localizem no host remoto, o projeto é analisado no computador local. Quando os arquivos de origem são acessados para análise, eles são armazenados em cache no host local em `_userdir_/var/cache/remote-files` e eventualmente todos os arquivos de origem ficam no cache.

Nos computadores remotos, isso pode ser considerado risco de segurança. Para aumentar a segurança, o diretório de cache pode ser criptografado ou excluído regularmente.

Os caches que residem no ` ~/.netbeans/remote` no host remoto são criados quando você usa o modo simples e os arquivos de origem são copiados automaticamente sob demanda do host local para o host remoto, durante a compilação do projeto. Esses arquivos estão tão seguros quanto qualquer outro do servidor, portanto eles não geram preocupação de segurança.


== Para Obter Mais Informações

Consulte os seguintes locais para obter mais informações:

* O menu Ajuda do IDE oferece acesso a muitas informações sobre o uso do IDE.

* O link:./remotedev-tutorial.html[+tutorial de Desenvolvimento Remoto do C/C+++] informa como fazer o desenvolvimento remoto simples passo a passo

* A link:https://netbeans.org/kb/trails/cnd.html[+Trilha de Aprendizado C/C+++] oferece diversos artigos e tutoriais para o desenvolvimento em C/C++ no IDE.


link:/about/contact_form.html?to=3&subject=Feedback:%20C/C++%20Remote%20Development%20Modes%20-%20NetBeans%20IDE%20Article[+Envie-nos Seu Feedback+]link:mailto:users@cnd.netbeans.org?subject=Feedback:%20C/C++%20Remote%20Development%20Modes%20-%20NetBeans%20IDE%20Article[+Enviar Feedback sobre Este Artigo+]


