// 
//     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.
//

= Режимы удаленной разработки C/C++ в IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Режимы удаленной разработки C/C++ в IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Режимы удаленной разработки C/C++ в IDE

Март 2014 г. [Номер версии: V8.0-1]

В данной статье описываются возможности удаленной разработки, доступные в IDE NetBeans, если модуль C/C++ установлен, а также рекомендации по оптимальному использованию их в среде разработки.













== Что такое удаленная разработка

Удаленная разработка – это функция IDE NetBeans, позволяющая запускать IDE на компьютере под управлением Microsoft Windows, Mac OS X, Oracle Solaris или Linux, а также создавать, запускать и отлаживать программы на другом компьютере под управлением Oracle Solaris или Linux.


== Когда следует использовать удаленную разработку

Удаленную разработку рекомендуется использовать в следующих ситуациях.

* Ваш настольный компьютер работает под управлением системы, отличной от Oracle Solaris или Linux.

* IDE запущена в общей системе Solaris, что иногда приводит к высоким нагрузкам.

* Ваш доступ к системам под управлением Oracle Solaris или Linux ограничен Secure Shell (SSH) по соображениям безопасности.

* Запуск графических инструментов пользовательского интерфейса в среде Solaris затруднен.

* Разрабатываемое программное обеспечение должно быть скомпилировано и запускаться на нескольких платформах, включая Solaris или Linux.


== Каковы принципы работы удаленной разработки

IDE предоставляет возможности для управления удаленными узлами. Можно настроить удаленный узел для создания, запуска и отладки проектов на C, C++ и Fortran. Удаленный узел должен удовлетворять следующим условиям.

* Удаленной операционной системой должна быть Oracle Solaris или Linux.

* На удаленном узле необходимо запустить программу-демон SSH `sshd`.

* По крайней мере одна коллекция средств (GNU, Oracle Solaris Studio или Sun Studio) должна быть доступна на удаленном узле.

* У пользователя должна быть учетная запись пользователя на этом узле.

Он может управлять удаленными узлами в окне 'Службы' в IDE.

image::images/services_window.png[]

После настройки удаленного узла и подключения к нему можно создавать, запускать и отлаживать проекты так же, как это делается на локальном компьютере. Удаленные команды IDE выполняются с более высоким приоритетом по сравнению с SSH.

При использовании удаленного узла разработки и локальные, и удаленные узлы должны быть доступны для файлов проекта. Этот доступ может быть предоставлен путем совместного использования файлов или защищенного копирования файлов. Перед тем как в IDE можно будет использовать обмен файлами между локальными и удаленными системами общая файловая система или папка должна быть создана и доступна для обеих систем. Удаленные файлы доступны через SFTP или другой механизм совместного использования файлов, доступных в операционной системе, под управлением которой работает узел (например, Network File System (NFS), Samba или WebDAV).

Если совместное использование файлов не представляется возможным, можно использовать автоматическое копирование для копирования файлов на сервер с помощью SSH.


== Преимущества удаленной разработки

Удаленная разработка обеспечивает следующие преимущества.

* Можно использовать одну среду разработки для всех проектов.

* Ресурсы системы настольного компьютера используются оптимально.

* Сетевой трафик оптимизирован.

* Время отклика используемой IDE лучше.

* Можно просматривать удаленные файловые системы из IDE.

* Можно открыть окно терминала в IDE для удаленного узла.

* Можно использовать его только в среде, защищенной SSH.

 image::images/modes_diagram.png[]

В простом режиме файлы исходного кода находятся в основном на локальном компьютере. При создании проекта файлы исходного кода доставляются по требованию к удаленному узлу с помощью протокола SSH File Transfer Protocol (SFTP).

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

В полном режиме удаленного доступа файлы исходного кода находятся на удаленном узле. IDE обращается к файлам с помощью SFTP.


== Решение о выборе режима удаленной разработки

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


=== Простой режим

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

image::images/simple_mode_diagram.png[]

В этой среде простой режим обеспечивает следующие преимущества.

* Можно использовать ту же IDE для локальной и удаленной разработки.

* Можно легко переключаться между узлами и платформами в IDE.

* Можно использовать IDE в среде, которая поддерживает только SSH.

* Ваша мобильность повышается.


=== Комбинированный (общий) режим

Комбинированный или общий режим может быть оптимальным, если среда разработки похожа на показанную на следующем рисунке.

image::images/mixed_mode_diagram.png[]

Преимущества использования комбинированного режима в этой среде.

* Можно легко переключаться между узлами и платформами в IDE.

* Нет дублирования (кэширования) файлов, которое происходит в двух других режимах.

* Пропускная способность сети будет такой же высокой, какую может обеспечить ваш механизм совместного использования файлов (например, NFS, Samba или WebDAV).


=== Полный режим

Полный режим может быть оптимальным, если ваша среда разработки напоминает показанную на следующем рисунке.

image::images/full_mode_diagram.png[]

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

* Перенос с использованием перенаправления X-window или VNC практически прозрачен.

* Время отклика используемой IDE лучше.

* Вы в меньшей степени зависите от ресурсов узла разработки.

* Меньшая нагрузка на узел разработки снижает нагрузку на Oracle Solaris.

* Можно создавать новые удаленные проекты на основе удаленных двоичных файлов.


== Выбор удаленного режима разработки

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

Для каждого режима необходимо сначала настроить удаленный узел сборки, как описано в документе link:./remotedev-tutorial.html[+Учебное руководство по разработке на C/C+++]и в разделах справки по IDE.

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

Откройте окно 'Службы', разверните узел 'Узлы сборки C/C++', щелкните правой кнопкой мыши удаленный узел и выберите 'Свойства'.

image::images/host_properties_dialog.png[]


=== Простой режим

Для простого режима установите для доступа к файлам проекта режим автоматического копирования.

Можно щелкнуть правой кнопкой мыши проект, выбрать 'Установить узел сборки' и выбрать удаленный узел, настроенный на доступ к файлам проекта с помощью автоматического копирования. Затем используется простой режим удаленной разработки. При создании проекта файлы проекта будут автоматически скопированы в каталог пользователя NetBeans на удаленном узле.


=== Комбинированный режим

Для комбинированного режима следует установить доступ к файлам проекта на системном уровне обмена файлами.

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


=== Полный удаленный режим

Чтобы использовать полный удаленный режим в IDE, используйте панель инструментов 'Удаленная разработка', описанная в следующем разделе.


== Полная удаленная разработка с помощью панели инструментов

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

Панель инструментов показана на следующем рисунке.

image::images/RemoteToolbar.gif[] 

Если панель инструментов в IDE не отображается, ее отображение можно настроить, выбрав 'Вид' > 'Панели инструментов'> 'Удаленные'.

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

Используйте значки, как описано в следующей таблице.

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

Состояние подключения. Нажмите на значок, чтобы подключиться к серверу, выбранному в списке рядом со значком. Если вы уже подключены, можно нажать этот значок, чтобы отключиться от сервера.

Значок, показывающий состояние соединения, меняет цвет на зеленый при установке соединения и на красный при разрыве соединения.

 

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

Создание удаленного проекта. Щелкните значок, чтобы создать новый проект на подключенном в данный момент узле.

По умолчанию проект создается в каталоге `~/NetBeansProjects` на удаленном узле.

 

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

Открыть удаленный проект. Щелкните значок, чтобы открыть существующий проект на подключенном в данный момент узле.

Можно просмотреть проект в удаленной файловой системе.

 

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

Открыть удаленный файл. Щелкните значок, чтобы открыть файл на текущем подключенном узле.

К этому файлу можно перейти в удаленной файловой системе.

 
|===


== Кэш-память и безопасность

Чтобы обеспечить быстрый доступ к удаленным файлам, IDE использует дисковый кэш в локальной системе. Кэш находится в `_userdir_/var/cache/remote-files`, где `_userdir_` является уникальным для пользователя и его местоположение зависит от платформы, на которой запущена IDE.

См. описание `_userdir_` и местоположений для каждой платформы в link:http://wiki.netbeans.org/FaqWhatIsUserdir[+http://wiki.netbeans.org/FaqWhatIsUserdir+].

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

В полном режиме удаленного доступа, хотя файлы находятся на удаленном узле, анализ проекта выполняется на локальном компьютере. По мере обращения к файлам исходного кода для анализа они кэшируются на локальном узле в `_userdir_/var/cache/remote-files` и в конечном итоге все файлы исходного кода помещаются в кэш.

На мобильных компьютерах это может рассматриваться как угроза безопасности. Для повышения безопасности каталог кэша может быть зашифрован или может удаляться на регулярной основе.

Кэш-память, расположенная в ` ~/.netbeans/remote` на удаленном компьютере, создается при использовании простого режима, и файлы исходного кода копируются автоматически по запросу с локального компьютера на удаленный компьютер при создании проекта. Эти файлы являются такими же безопасными, как любые другие на сервере, так что это не угрожает безопасности.


== См. также

Подробнее см. в следующих местоположениях.

* Меню 'Справка' в IDE обеспечивает доступ к обширной информации об использовании IDE.

* В документе link:./remotedev-tutorial.html[+Учебный курс по удаленной разработке на C/C+++] рассказывается, как в пошаговом режиме сделать простую удаленную разработку

* link:https://netbeans.org/kb/trails/cnd.html[+Учебные карты C/C+++] содержат несколько статей и учебных руководств по разработке на C/C++ в IDE.


link:/about/contact_form.html?to=3&subject=Feedback:%20C/C++%20Remote%20Development%20Modes%20-%20NetBeans%20IDE%20Article[+Мы ждем ваших отзывов+]link:mailto:users@cnd.netbeans.org?subject=Feedback:%20C/C++%20Remote%20Development%20Modes%20-%20NetBeans%20IDE%20Article[+Отправить отзыв на эту статью+]


