В практической работе приходится проводить импорт данных в "1С:Предприятие" из различных внешних приложений, обслуживающих базы данных. Встроенный язык программы "1С:Предприятие" и стандартизированные методы построения баз данных позволяют создавать универсальные обработки по импорту данных из внешних источников. Написание универсальной обработки, зачастую, - это сложный, но и достаточно увлекательный процесс. Сложным я могу назвать его потому, что на этапе разработки нужно заранее предусмотреть все возможные варианты импортирования и обработки данных. А увлекательным процесс написания универсальных обработок по импорту данных в 1С мне видится потому, что постоянно ощущаешь огромные выгоды от использования обработки в последующей работе.
Файловая система
Для начала давайте посмотрим, как проводится работа с файловой системой из программы 1С:Предприятие.
Импорт данных в 1С из MS Excel
Программу Microsoft Excel сегодня можно называть стандартом работы с электронными таблицами. Именно поэтому довольно часто приходится встречаться с ситуациями, когда массивы данных хранятся именно в файлах формата MS Excel. Для того, чтобы умело импортировать данные из файлов формата MS Excel в базу данных 1С:Предприятия, вы можете воспользоваться следующими примерами.
Импорт данных в 1С из текстового файла.
Основными преимуществами текстовых файлов являются их маленький размер и простота хранения данных внутри файла. Пожалуй, именно поэтому многие данные до сего дня передаются посредством текстовых файлов. Учитывая существующую потребность, вам могут потребоваться умения в импортировании данных в 1С из текстового файла. И нижеприведённые примеры помогут вам в приобретении необходимых знаний.
Самым распространённым случаем передачи данных текстовым файлом является способ выгрузки данных из системы Клиент-Банк. В примере, приведённом ниже, вы можете увидеть, каким образом производится загрузка данных о банковских операциях в 1С из текстового файла, в который предварительно выгружены данные из системы Банк-Клиент.
Импорт данных из файла формата DBF
Старый добрый формат dBase по-прежнему используется для хранения массивов данных. Чего уж говорить, если обычная версия 1С:Предприятия (не SQL) сама хранит базы данных в файлах с расширением DBF? Формат файлов DBF, на мой взгляд, очень удобен для передачи данных в базу 1С, поскольку преимуществами файла формата dBase являются маленький размер и матричная система хранения данных.
Программист 1С может встретиться с необходимостью импортировать данные в 1С из файла DBF, в который экспортированы данные о банковских операциях из системы Банк-Клиент. В нижеприведённом примере вы можете увидеть пример обработки файла DBF, из которого в 1С импортируется банковская выписка.
Импорт данных из файла формата XML
С недавних пор набирает популярность новый формат передачи многомерных массивов данных, который носит название eXtensible Markup Language или XML. Возможности нового языка разметки, используемого для хранения данных, огромны настолько, что его стали использовать даже для. передачи данных в программу 1С:Предприятие. Поэтому современный специалист по платформе 1С обязан уметь импортировать данные в 1С из файла, имеющего формат XML.
//процедура формирует печатную таблицу с данными, содержащимися в файле формата XML
Процедура Сформировать()
Перем Файл,Каталог;
Если ФС.ВыбратьФайл(0,Файл,Каталог,"Открытие документа XML","Документы XML|*.xml")=0 Тогда
Возврат;
КонецЕсли;
//таблица
Т=СоздатьОбъект("Таблица");
Т.ИсходнаяТаблица("");
Т.ВывестиСекцию("Шапка");
//документ
Анализатор=СоздатьОбъект("AddIn.XMLParser");
Д=Анализатор.СоздатьДокумент();
Д.Загрузить(Каталог+Файл);
//узлы
Узел=Д.ВыбратьУзел("Данные");
Для i=1 По Узел.КоличествоПодчиненных() Цикл
ТекУзел=Узел.ПолучитьПодчиненныйПоНомеру(i);
Состояние(ТекУзел.Текст);
//строка
тЭлемент=ТекУзел.Наименование;
тЗначение=ТекУзел.Значение;
Т.ВывестиСекцию("Строка");
КонецЦикла;
//таблица
Т.Опции(1,1,1,0);
Т.ПовторятьПриПечатиСтроки(1,1);
Т.ТолькоПросмотр(1);
Т.Показать("XML");
КонецПроцедуры
Ну вот собственно и все. Надеюсь данная статья оказалась вам полезна.
В статье продемонстрированы программные методы экспортирования данных из программы "1С:Предприятие 7.7".
Экспорт данных из 1С в Текстовой файл TXT, CSV
Экспорт данных из 1С в файл dBase формата DBF
Экспорт данных из 1С на лист MS Excel
Управление MS Word из 1С
Методы работы с MS Word через OLE активно использованы в конфигурации "Договоры". Для определения числового кода текстовых констант MS Word использована обработка "Константы VBA".
В этой статье описываются полезные функции и процедуры, помогающие эффективно работать с различными типами данных в системе "1С:Предприятие 7.7".
Форматирование данных в 1С
Список значений в 1С
Таблица значений в 1С
Таблица или печатная форма в 1С
Периоды и даты в 1С
Календари и праздники в 1С
[pagebreak]
Справочники в 1С
Документы в 1С
Предопределённые функции и процедуры в 1С
Налоговый учёт и первое событие в 1С
Резюме
В статье описаны функции и процедуры, используемые в программе "1С:Предприятие 7.7" для работы со справочниками, документами, списками значений, таблицами значений и с прочими агрегатными типами данных. Образцы практического применения описанных средств Вы сможете найти в статьях "Отчёты для 1С" и "Обработки для 1С".
С появлением компьютеров и специальных программ (графических редакторов), с помощью которых можно обрабатывать и создавать изображения, кажется, что каждый может научиться с легкостью делать качественные рисунки, однако, это не так. Графические редакторы – инструмент сложный, чтобы хорошо его освоить, уйдет много времени, кроме того, они сами по себе не создают за вас изображения. Чтобы сделать рисунок, вам нужны минимальные художественные знания, т.е. вы должны представлять, что такое перспектива, светотень, как создавать иллюзию объема и т.д.
Первые шаги - компьютерная графика и графические редакторы.
С появлением компьютеров и специальных программ (графических редакторов), с помощью которых можно обрабатывать и создавать изображения, кажется, что каждый может научиться с легкостью делать качественные рисунки, однако, это не так. Графические редакторы – инструмент сложный, чтобы хорошо его освоить, уйдет много времени, кроме того, они сами по себе не создают за вас изображения. Чтобы сделать рисунок, вам нужны минимальные художественные знания, т.е. вы должны представлять, что такое перспектива, светотень, как создавать иллюзию объема и т.д.
О том, как научиться работать с графическими редакторами и о художественных средствах мы поговорим в других статьях. А эта будет посвящена обзору графических редакторов, какие они бывают, чем отличаются, а также другим вопросам, связанным с ними и обработкой изображений в компьютере.
Обычно, когда мы создаем оформление нашего сайта, то используем уже готовые изображения: фотографии, картины, рисунки, текстуры. А если воспользоваться графическим редактором то можно из нескольких разных фотографий создать необычный коллаж, который потом сможем использовать при оформлении нашего сайта.
Из данного примера видно как из одной фотографии и фрагмента картины художника-фантаста можно получить третье, совершенно отличное от двух предыдущих, изображение дамы-воительницы. Изображения, которые можно использовать для создания чего-то своего нового, есть в Интернете, на дисках в компьютерных магазинах, а также можно отсканировать свои фотографии, рисунки и использовать их.
Какие бывают графические редакторы, и как представляется графика в компьютере.
Графические редакторы, бывают двух типов: растровые и векторные, по тому, как они представляют объекты (изображения). Растровые редакторы представляют изображение в виде множества точек, это хорошо видно, если мы увеличим фотографию нашей дамы-воительницы, посмотрите, как выглядит ее глаз при многократном увеличении:
Минимальная неделимая точка в растровом изображении называется пиксель. Все изображения, которые вводятся в компьютер при помощи сканирования – растровые.
Самый популярный растровый графический редактор - Adobe Photoshop. Этот редактор многофункционален и по этому используется во всех дизайнерских студиях и конторах. Если кто-то захочет посвятить себя профессиям рекламный или веб-дизайн, то знание Adobe Photoshop просто необходимо. Для начинающих и любителей можно посоветовать для начала следующие растровые графические редакторы: Image Styler или Live Motion. Векторные графические редакторы представляют изображение в виде отрезков прямых, векторов. Вектор – направленный отрезок, то есть отрезок, у которого указаны начало (называемое также точкой приложения вектора) и конец. Для наглядности, посмотрим при большом приближении меч, в руке у дамы, который нарисован в векторном редакторе:
Изображения, сделанные в векторных редакторах, можно открыть и в растровом редакторе, в этом случае, оно будет восприниматься, как растровое. А вот растровое изображение, открытое в векторном редакторе, не станет само по себе векторным, придется его либо обрисовывать самим, чтобы получить нормальное векторное изображение, либо перевести в кривые при помощи специальных программ (например, Stream Line).
Один из популярных векторных графических редакторов Adobe Illustrator. Многофункционален. Используется во многих дизайнерских студиях и конторах. Программа конкурент - CorelDraw.
Пожалуй, и все, на этом наша статья закончена. Теперь можно смело приступать к изучению работы с графическими редакторами, в этом вам помогут статьи на нашем сайте, также вы можете изучить статьи по этой теме на других сайтах. И все-таки лучше всего приобрести в магазине не только диск с программой, но и книгу с упражнениями, выполняя которые, будет легче освоить графические редакторы.
Прародителем сети интернет была сеть ARPANET. Первоначально её разработка финансировалась Управлением перспективного планирования (Advanced Research Projects Agency, или ARPA). Проект стартовал осенью 1968 года и уже в сентябре 1969 года в опытную эксплуатацию был запущен первый участок сети ARPANET.
Сеть ARPANET долгое время являлась тестовым полигоном для исследования сетей с коммутацией пакетов. Однако кроме исследовательских, ARPANET служила и чисто практическим целям. Ученые нескольких университетов, а также сотрудники некоторых военных и государственных исследовательских институтов регулярно её использовали для обмена файлами и сообщениями электронной почты, а так же для работы на удалённых компьютерах. В 1975 году управление сетью было выведено из под контроля ARPA и поручено управлению связи Министерства обороны США. Для военных данная сеть представляла большой интерес, так как позволяла сохранять её работоспособность даже при уничтожении её части, например, при ядерном ударе.
В 1983 году Министерство обороны разделило ARPANET на две связанные сети. При этом за сетью ARPANET были сохранены её исследовательские функции, а для военных целей была сформирована новая сеть, которую назвали MILNET. Физически сеть ARPANET состояла приблизительно из 50 миникомпьютеров типа С30 и С300, выпущенных фирмой BBN Corporation. Они назывались узлами коммутации пакетов и были разбросаны по территории материковой части США и Западной Европы. Сеть MILNET состояла приблизительно из 160 узлов, причём 34 из них были расположены в Европе, а 18 в Тихом Океане и в Азиатско-Тихоокеанском регионе. Сами узлы коммутации пакетов нельзя было использовать для решения вычислительных задач общего плана.
Понимая, что в ближайшем будущем очень важным моментом в научных исследованиях будет процесс обмена данными, Национальный научный фонд (NFS) в 1987 году основал отделение сетевых и коммуникацинных исследований и инфраструктуры. В его задачи входило обеспеченье современными сетевыми коммуникационными средствами учёных и инженеров США. И хотя отделение фонда NFS финансировало основные исследовательские программы в области сетевых коммуникаций, сферой его основных интересов было расширение Internet.
Сеть NSFNET строилась в несколько этапов и быстро преобретала популярность не только в научно-исследовательских кругах, но и в коммерческой среде. К 1991 году фонд NFS и другие государственные учреждения США поняли, что масштабы Internet вышли далеко за отведённые её на этапе разработки рамки университетской и научной сети. К Internet стало подключаться множество организаций, разбросанных по всему Земному шару. Трафик в магистральном канале NSFNET вырос почти до миллиарда пакетов в день, и его пропускной способности 1.5 Мбит/с на отдельных участках стало уже не хватать. Поэтому правительство США начало проводить политику приватизации и коммерческого использования Internet. Фонд NFS принял решение предать магистральную сеть на попечение закрытой акционерной компании и оплачивать доступ к ней для государственных научных и исследовательских организаций.
Семейство TCP/IP
Познакомившись с историей, давайте подробнее рассмотрим, что собой представляют протоколы TCP/IP. TCP/IP - это семейство сетевых протоколов, ориентированных на совместную работу. В состав семейства входит несколько компонентов:
IP (Internet Protocol - межсетевой протокол) - обеспечивает транспортировку пакетов данных с одного компьютера на другой;
ICMP (Internet Control Message Protocol - протокол управляющих сообщений в сети Internet) - отвечает за различные виды низкоуровневой поддержки протокола IP, включая сообщения об ошибках, вспомогательные маршрутизирующие запросы и подтверждения о получении сообщений;
ARP (Address Resolution Protocol - протокол преобразования адресов) - выполняет трансляцию IP-адресов в аппаратные MAC-адреса;
UDP (User Datagram Protocol - протокол передачи дейтаграмм пользователя) и TCP (Transmission Control Protocol - протокол управления передачей) - обеспечивают доставку данных конкретным приложениям на указанном компьютере. Протокол UDP реализует передачу отдельных сообщений без подтверждения доставки, тогда как TCP гарантирует надёжный полнодуплексный канал связи между процессами на двух разных компьютерах с возможностью управления потоком и контроля ошибок.
Протокол представляет собой набор правил, использующихся для при обмене данными между двумя компьютерами. В нём оговариваются формат блоков сообщений, описывается реакция компьютера на получение определённого типа сообщения и указываются способы обработки ошибок и других необычных ситуаций. И что самое важное, благодаря протоколам, мы можем описать процесс обмена данными между компьютерами, не привязываясь к какой-то определённой комьютерной платформе или сетевому оборудованию конкретного производителя.
Сокрытие низкоуровневых особенностей процесса передачи данных способствует повышению производительности труда разработчиков. Во-первых, поскольку программистам приходится иметь дело с протоколами, относящимися к достаточно высокому уровню абстракции, им не нужно держать в голове (и даже изучать!) технические подробности испольуемого аппаратного обеспечения. Во-вторых, поскольку программы разрабатываются на основе модели, относящейся к высокому уровню абстракции, который не зависит от конкретной архитектуры компьютера или типа сетевого оборудования, в них не нужно вносить никаких изменений при переходе на другой тип оборудования или изменений конфигурации сети.
Замечание Говорить о том, что ARP входит в состав семейства протоколов TCP/IP не совсем корректно. Однако это неотъемлемая часть стека протоколов в сетях Ethernet. Для того чтобы отправить данные по сети, IP-адрес хоста должен быть преобразован в физический адрес машины получателя (уникальный адрес сетевой платы). Протокол ARP как раз и предназначен для такой цели.
Самым фундаментальным протоколом Интернета является протокол IP (от англ. Internet Protocol), обеспечивающий передачу данных между двумя удаленными компьютерами. Протокол IP является достаточно простым, и обеспечивает адресацию в сети. В ранних сетях адреса в сети были уникальные целые цифры, сейчас сеть построена по иерархическому принципу.
Стек протоколов TCP/IP имеет четыре основных уровня, поэтому часто говорят, что TCP/IP — это четырехуровневый стек протоколов. Внизу стека расположен интерфейсный уровень, посредством которого происходит связь с аппаратурой. За ним следует уровень IP, поверх которого построены транспортные протоколы TCP и UDP. На вершине стека находится уровень приложений, таких как ftp, telnet и т. д. Как мы уже говорили, IP — это простой протокол, не требующий установления соединения. При отсылке пакета данных, IP, как и все протоколы без соединения, послав пакет, тут же "забывает" о нем. При приеме пакетов с верхних уровней стека, этот протокол обертывает их в IP-пакет и передает необходимому аппаратному обеспечению для отправки в сеть. Однако именно в такой простоте и заключается основное достоинство протокола IP. Дело в том, что поскольку IP является простым протоколом, он никак не связан со структурой физической среды, по которым передаются данные. Для протокола IP главное, что эта физическая среда в принципе способна к передаче пакетов. Поэтому IP работает как в локальных, так и в глобальных сетях, как в синхронном, так и в асинхронном режиме передачи данных, как в обычных линиях связи, так и беспроводных и т. д. А поскольку протокол IP является фундаментом четырехуровнего сте-ка протоколов, то все семейство протоколов TCP/IP также может функционировать в любой сети с любым режимом передачи пакетов.
На сетевом уровне в семействе протоколов TCP/IP предусмотрено два обширных класса служб, которые используются во всех приложениях.
Служба доставки пакетов, не требующая установки соединения.
Надёжная потоковая транспортная служба.
Различие между службами, требующими установления надёжного соединения и службами, не требующими этого, является одним из самых основных вопросов сетевого программирования. Первое, на что следует обратить внимание, это то, что когда мы говорим об установлении соединения, то имеется в виду не соединение между компьютерами посредством физического носителя, а о способе передачи данных по этому носителю. Основное различие состоит в том, что службы, в которых устанавливается надёжное соединение, сохраняют информацию о состоянии и таким образом отслеживают информацию о передаваемых пакетах. В службах же, не требующих надёжного соединения, пакеты передаются независимо друг от друга.
Данные передаются по сети в форме пакетов, имеющих максимальный размер, определяемый ограничениями канального уровня. Каждый пакет состоит из заголовка и полезного содержимого (сообщения). Заголовок включает сведения о том, откуда прибыл пакет и куда он направляется. Заголовок, кроме того, может содержать контрольную сумму, информацию, характерную для конкретного протокола, и другие инструкции, касающиеся обработки пакета. Полезное содержимое – это данные, подлежащие пересылке.
Имя базового блока передачи данных зависит от уровня протокола. На канальном уровне это кадр или фрейм, в протоколе IP – пакет, а в протоколе TCP – сегмент. Когда пакет передаётся вниз по стеку протоколов, готовясь к отправке, каждый протокол добавляет в него свой собственный заголовок. Законченный пакет одного протокола становится полезным содержимым пакета, генерируемого следующим протоколом.
Определение
Пакеты, которые посылаются протоколом, не требующим соединения, называются дейтаграммами.
Каждая дейтаграмма является уникальной в том смысле, что никак не зависит от других. Как правило, при работе с протоколами без установления соединения, диалог между клиентом и сервером предельно прост: клиент посылает одиночный запрос, а сервер на него отвечает. При этом каждый новый запрос — это новая транзакция, т. е. инициируемые клиентом запросы никак не связаны друг с другом с точки зрения протокола. Протоколы без установления соединения ненадежны в том смысле, что нет никаких гарантий, что отправленный пакет будет доставлен по месту назначения.
Протоколами, требующие установления логического соединения, сохраняют информацию о состоянии, что позволяет обеспечивать надежную доставку пересылаемых данных. Когда говорится о сохранении состояния, имеется ввиду то, что между отправителем и получателем происходит обмен информацией о ходе выполнения передачи данных. К примеру, отправитель, посылая данные, сохраняет информацию о том, какие данные он послал. После этого в течении определенного времени он ожидает информацию от получателя о доставке этих данных, и, если такая информация не поступает, данные пересылаются повторно.
Работа протокола с установлением соединения включает в себя три основные фазы:
установление соединения;
обмен данными;
разрыв соединения.
Передача всех данных при работе с таким протоколом, в отличие от протокола без установления соединения, происходит за одну транзакцию, т. е. в фазе обмена данными не происходит обмена адресами между отправителем и получателем, поскольку эта информация передается на этапе установки соединения. Возвращаясь к телефонной аналогии, можно сказать, что нам в этом случае нет необходимости для того, чтобы сказать собеседнику очередное слово, вновь набирать его номер и устанавливать соединение. Заметим, что приводимая аналогия имеет одну неточность. Дело в том, что при телефонном разговоре все же устанавливается физическое соединение. Когда же мы говорим о соединении с точки зрения протоколов, то это соединение, скорее, умозрительное. К примеру, если вдруг при телефонном разговоре, неожиданно сломается телефонный аппарат вашего собеседника, вы тут же узнаете об этом, поскольку разговор незамедлительно прервется. А вот если происходит обмен данными между двумя хостами и один из них вдруг аварийно остановится, то для его "хоста-собеседника" соединение по прежнему будет существовать, поскольку для него не произошло ничего такого, что сделало бы недействительной хранящуюся у него информацию о состоянии.
В этом смысле работу с протоколом, требующим установления логического соединения можно сравнить с телефонным разговором. Когда мы звоним по телефону, мы сначала набираем номер (установление соединения), затем разговариваем (обмен данными) и по окончании разговора вешаем трубки (разрыв соединения).
Протокол без установления соединения обычно сравниваю с почтовой открыткой. Каждая открытка представляет собой самостоятельную единицу (пакет информации или дейтаграмму), которая обрабатывается в почтовом отделении независимо от других открыток. При этом на почте не отслеживается состояние переписки между двумя респондентами и, как правило, нет никакой гарантии, что ваша открытка попадет к адресату. Если на открытке указан неправильный адрес, она никогда не дойдет до получателя, и не возвратиться обратно к отправителю. А если вы захотите отправить вашему собеседнику новую порцию информации, то это уже будет другая транзакция, поскольку нужно будет писать новую открытку, указывать на ней адрес и т. д.
Как видим, у протоколов без установления соединения существует много недостатков и может возникнуть вопрос о надобности таких протоколов. Однако, использование проколов без установления логического соединения все-таки оправдано. Как правило, при помощи таких протоколов организуется связь одного хоста со многими другими, в то время как при использовании протоколов с установлением соединения связь организуется между парой хостов (по одному соединению на каждую пару). Важный момент заключается в том, что протоколы без установления логического соединения являются фундаментом, на котором строятся более сложные протоколы. К примеру, протокол TCP построен на базе протокола IP.
Протоколы транспортного уровня
Протоколами транспортного уровня в четырехуровневом стеке протоколов являются протоколы TCP и UDP.
Давайте рассмотрим, каким образом функционирует протокол TCP. Дело в том, что поскольку TCP-пакеты, иначе называемые сегментами, посылаются при помощи протокола IP, у TCP нет никакой информации о состоянии этих пакетов. Поэтому для того, чтобы хранить информацию о состоянии, TCP к базовому протоколу IP добавляет три параметра.
Во-первых, добавляется сегмент контрольной суммы содержащихся в пакете данных, что позволяет убедиться в том, что в принципе все данные дошли до получателя и не повредились во время транспортировки.
Во-вторых, к каждому передаваемому байту приписывается порядковый номер, что необходимо для определения того, совпадает ли порядок прибытия данных с порядком их отправки. И даже в том случае, если данные пришли не в том порядке, в котором были отправлены, наличие порядковых номеров позволит получателю правильно составить из этих данных исходное сообщение.
В-третьих, базовый протокол IP дополняется также механизмами подтверждения получения данных и повторной отправки, на тот случай, если данные не были доставлены.
Если с первыми двумя параметрами все более-менее понятно, то механизм подтверждения/повторной отправки достаточно сложен и его мы рассмотрим подробнее в другой раз.
Конечно же вы попадали в такую ситуацию, когда приложение, разработанное вами ранее, могло быть снова использовано в рамках другого проекта. Вначале вы конечно же подумали, что это не создаст никаких проблем. Всего-то необходимо скопировать код из одного каталога в другой! Со временем вы осознали, что проекты могут различаться между собой различными параметрами, пусть даже самыми незначительными. Например, это может быть e-mail адрес на который отсылаются сообщения. В таком случае вам ничего не остается, как открыть множество файлов в редакторе и изменить их содержимое, вставляя нужный e-mail при помощи функции найти/заменить. Эта статья расскажет вам о том, как можно избавить себя от подобной работы, а так же порекомендует ряд дополнительных средств для создания и чтения конфигурационных файлов.
Повторное использование кода
Компьютер был изобретен для того, чтобы избавить человека от лишней работы. Развитие компьютерных технологий привело к тому, что человек стал стремиться все меньше времени проводить за компьютером. Допустим, вы программист. Не будь компьютера, вы бы остались без работы. Но в то же время вы стараетесь с помощью компьютера упростить свою ежедневную работы, с этой целью вы используете, например, функцию автозавершения кода в редакторе. Мы хотим подвести вас к той мысли, что код созданный вами, должен быть организован так, чтобы работы по его модификации были сведены к минимуму. Чаще всего это удается, когда вы создаете код, автоматизирующий рутинные операции, такие как создание и прорисовка формы, а так же отправка e-mail. Однако не стоит забывать, что функции для выполнения рутинных операций никогда не бывают на 100% идентичными в различных приложениях. Один формуляр не похож на другой, а сообщения электронной почты предназначены разным адресатам. Однако логика на уровне приложения остается прежней, функции различаются между собой только некоторыми параметрами. Таким образом, вы должны ясно представлять свою цель – разработать код, параметры которого можно было бы определять извне.
Модульная организация
Для решения этой задачи, планируя структуру приложения, вы должны позаботиться о модульности. То есть вам необходимо поместить часто используемые функции или классы в отдельный файл, который будет подключаться через require_once. В этом случае файлы приложения не будут наполнены избыточным кодом. Допустим, вы часто осуществляете запись в лог-файл. В таком случае было бы неплохо код, выполняющий эту операцию, заключить в рамки класса или функции. Будет еще лучше, если вы воспользуетесь уже готовым классом, взятым из какой-нибудь библиотеки исходных кодов, например PEAR.
Параметры процедурального кода
После того, как вы проанализировали код, выделили повторяющиеся фрагменты, распределили их по классам и функциям, необходимо подумать о выделении необходимых параметров, значения которых будут устанавливаться извне. Если речь идет о процедуральном коде, самым простым решением является использование глобальных переменных, которые необходимо определить в отдельном файле. Это позволит в дальнейшем без проблем изменять их значения.
Листинг 1 демонстрирует функцию, которая занимается отправкой e-mail. В ее теле содержится только одна php-функция - mail(). Таким образом, мы избавляемся от необходимости каждый раз указывать получателя при отправке сообщения. Следующая переменная, которую мы определяем, обозначает префикс, предшествующий теме сообщения. Конфигурационный файл, подключаемый через require_once, мог бы выглядеть следующим образом.
Listing 1
Есть способ лучше
Даже если рассмотренный выше способ и является действенным, однако это не самое лучшее решение. По мере того как код вашего приложения будет усложняться, вырастет и число опций, тогда могут возникнуть следующие проблемы:
Глобальные переменные, которые мы используем, могут породить конфликты в пространстве имен.
В том случае, если конфигурационные файлы редактируются не программистом, а дилетантом, в системе могут возникнуть синтаксические ошибки, например из-за незакрытых кавычек.
Для того, чтобы получить доступ к различным переменным, необходимо обращаться к массиву $_GLOBALS.
Вместо php-модулей существуют другие форматы, которые могут быть легко поняты и изменены дилетантами, а так же php-скриптами. Мы имеем в виду два формата: этого широко используемые операционной системой Windows ini-файлы, а так же формат XML.
PHP уже содержит функцию parse_ini_file(), которая без проблем читает ini-файлы. Такой файл имеет очень простую структуру. Каждой опции может быть присвоено только одно значение, а в качестве оператора присваивания используется знак равенства. Конфигурационный файл из предыдущего примера выглядел бы следующим образом в ini-формате.
После считывания ini-файла, имя которого передается в качестве параметра функции parse_ini_file(), мы получаем ассоциативный массив, имеющий вид:
В листинге 2 находится функция отправки почты, основанная на ini-файлах:
Listing 2
Если вы уже прочитали документацию по функции parse_ini_file(), вы кончено же заметили, что она может принимать и второй параметр. Он необходим, если вы хотите разделить ini-файл на несколько разделов или секций. Предположим, вам необходимо сохранить несколько настроек электронной почты. Тогда ini-файл будет выглядеть следующим образом:
"
Если вы при вызове parse_ini_file() передаете true в качестве второго параметра, в этом случае php будет искать в файле секции, а затем вернет многомерный массив, в котором каждой секции (errors и contact) будет соответствовать определенный набор значений:
Особые значения в ini-файлах
При использовании ini-файлов вы должны иметь в виду, что некоторые особые значения могут быть представлены строками. Допустим, вы определяете значение опции как true или yes (без кавычек), в таком случае они автоматически конвертируются в число 1, а false или no – в пустую строку. К сожалению, при этом не генерируется никакой ошибки. Поэтому не пытайтесь использовать no для сокращенного обозначения Норвегии.
Listing 3
Безопасность
Вы должны понимать то, что если конфигурационный файл используется для хранения важных данных, например паролей, необходимо позаботиться о том, чтобы содержимое такого файла не попало в web-браузер. Простейший выход из положения заключается в том, чтобы хранить конфигурационные файлы вне корневой директории сайта, например здесь: /etc/myApp/config
Если этого сделать нельзя, в таком случае можно изменить расширение файла. Для конфигурационного файла в формате модуля php необходимо всегда выбирать расширение .php. В этом случае сервер проанализирует php-файл, а пользователь увидит пустую страницу. С ini-файлами такое не пройдет, однако сервер Apache предоставляет возможность защитить данные. Просто поместите в каталог, где хранятся ini файл с именем .htaccess В него нужно поместить следующие строки:
Теперь сервер перестанет выдавать файлы с расширением ini, а опции приложения будут скрыты от пользователей.
Другие средства
Кончено же вы не являетесь единственным разработчиком, который сталкивается с проблемой обеспечения гибкости настроек веб-приложения. Поэтому некоторые программисты уже разработали библиотеки классов, которые переводят работу с конфигурационными файлами на абстрактный уровень, а так же упрощают запись и чтение различных форматов конфигурационных файлов.
PEAR::Config
Одним из классов, который может пригодится при чтении и записи конфигурационных файлов является PEAR::Config [3]. Как и все классы PEAR, PEAR::Config инсталлируется при помощи PEAR-Installer по команде
Этот класс является многоформатным, поскольку работает с конфигурационными файлами в форматах XMIL, ini, Apach-Style (гибрид XML и ini), а также php-массивами. Достоинством данного класса является то, что API для взаимодействия со всеми форматами одинаков. Т.е. логика работы с конфигурационными файлами в формате XML ничем не отличается от логики работы с ini-файлами. Вследствие этого необходимо, чтобы все форматы имели одинаковую структуру. Конфигурационные файлы, с которыми работает PEAR::Config, состоят, как и ini-файлы из секций.
Изменим снова наш пример. Сначала мы создаем объект Config, а затем вызываем его метод parseConfig(). Поскольку метод позволяет считывать различные форматы файлов, при вызове его необходимо передавать параметр, уточняющий формат. Для конфигурационных файлов в формате ini в качестве такого параметра используется строка iniFile. После считывания файла, мы не получаем опции в виде массива, вместо этого создается объект-контейнер, который дает доступ ко всем настройкам. Хотя во многих случаях бывает желательно получить опции в форме массива. Для этого используется метод toArray(). Листинг 4 демонстрирует считывание ini-файла:
Listing 4
С первого взгляда это может показаться несколько запутанным. Однако преимущество данного подхода заключается в том, что один и тот же метод используется для чтения всех форматов файлов, поддерживаемых PEAR::Config. Измененные опции могут быть также сохранены в любом формате:
Листинг 5 содержит код, где серия опций помещается в массив, который затем сохраняется в формате XML. Если вы хотите побольше узнать о PEAR::Config необходимую информацию вы сможете найти в документации по PEAR[5] или в DevShed-Tutorial [6].
Listing 5
patConfiguration
Альтернативным классом для работы с конфигурационными файлами является patConfiguration[7], однако он предназначен исключительно для работы с файлами в формате XML. После скачивания архива, его необходимо распаковать. Сам класс находится в директории include. patConfiguration предварительно определяет Tag-Set, который затем наполняется данными. К тому же этот класс предоставляет возможность указать тип опции: целое число, число с плавающей точкой, булевское значение. Типичный конфигурационный файл, созданный patConfiguration, имеет следующую структуру:
После создания объекта класса, может быть вызван метод parseConfigFile(). Доступ к опциям осуществляется через getConfigValue(). В качестве параметра этот метод может принимать путь к нужной опции. Вернемся к нашему примеру. Допустим, мы хотим получить e-mail адрес, на который высылается сообщение об ошибке. В этом случае используется путь errors.email. Если путь не указан, тогда все параметры передаются в массив. Листинг 6 демонстрирует код, который можно использовать для считывания файлов.
patConfiguration 2.0.0
В данный момент многоформатная версия patConfiguration находится в стадии разработки. Возможно, при публикации статьи эта версия уже станет доступной. Впрочем, самую новую версию для разработчиков вы можете скачать с сайта snaps.php-tools.net/downloaden.
В этом примере вы уже заметили, что внутри тега указывается тип значения. Названия типов идентичны тем, что используются в php-функции settype(). Если тип не указан, тогда значение интерпретируется как строка. Для часто используемых опций можно определить отдельный тег.
Наряду с функцией getConfigValue, существует функция setConfigValue(), с помощью которой можно изменить значение опции. Затем конфигурационный файл может быть заново записан с помощью writeConfigFile() (см листинг 7).
patConfiguration предлагает также серию дополнительных возможностей. Например, наряду с тегами, существует возможность определять атрибуты и пространства имен (Namespace), а к тегу можно привязать внешний файл, таким образом, опции будут распределены по нескольким файлам. Кроме этого patConfiguration включает систему кэширования, благодаря которой пропадает необходимость в многократном считывании конфигурационного файла.
Дополнительную информацию вы сможете найти на PHP Application Tools-Homepage и в patConfiguration-Tutorial на DevShed [8].
Listing 7
Заключение
Забота о гибкости настроек приложения может сберечь много времени, особенно если его компоненты предполагается использовать в других проектах. Вы потратите еще меньше времени, если доверите работу с конфигурационными файлами одному из готовых классов. Выбор между PEAR::Config и patConfiguration зависит от задачи. Преимуществом PEAR::Config является поддержка различных форматов конфигурационных файлов, в то время как patConfiguration прекрасно работает с XML, так же предоставляет ряд дополнительных возможностей. Однако с появлением версии 2.0.0 этот пакет будет иметь одинаковый API для считывания ini и wddx файлов. PHP-массив поддерживаются уже в текущей версии.
В этой статье я попытаюсь дать оценку быстродействию файловых систем, используемых в операционных системах WindowsNT/2000. Статья не содержит графиков и результатов тестирований, так как эти результаты слишком сильно зависят от случая, методик тестирования и конкретных систем, и не имеют почти никакой связи с реальным положением дел. В этом материале я вместо этого постараюсь описать общие тенденции и соображения, связанные с производительностью файловых систем. Прочитав данный материал, вы получите информацию для размышлений и сможете сами сделать выводы, понять, какая система будет быстрее в ваших условиях, и почему. Возможно, некоторые факты помогут вам также оптимизировать быстродействие своей машины с точки зрения файловых систем, подскажут какие-то решения, которые приведут к повышению скорости работы всего компьютера.
В данном обзоре упоминаются три системы - FAT (далее FAT16), FAT32 и NTFS, так как основной вопрос, стоящий перед пользователями Windows2000 - это выбор между этими вариантами. Я приношу извинение пользователям других файловых систем, но проблема выбора между двумя, внешне совершенно равнозначными, вариантами со всей остротой стоит сейчас только в среде Windows2000. Я надеюсь, всё же, что изложенные соображения покажутся вам любопытными, и вы сможете сделать какие-то выводы и о тех системах, с которыми вам приходится работать.
Данная статья состоит из множества разделов, каждый из которых посвящен какому-то одному вопросу быстродействия. Многие из этих разделов в определенных местах тесно переплетаются между собой. Тем не менее, чтобы не превращать статью в кашу, в соответствующем разделе я буду писать только о том, что имеет отношение к обсуждаемый в данный момент теме, и ни о чем более. Если вы не нашли каких-то важных фактов в тексте - не спешите удивляться: скорее всего, вы встретите их позже. Прошу вас также не делать никаких поспешных выводов о недостатках и преимуществах той или иной системы, так как противоречий и подводных камней в этих рассуждениях очень и очень много. В конце я попытаюсь собрать воедино всё, что можно сказать о быстродействии систем в реальных условиях.
Теория
Самое фундаментальное свойство любой файловой системы, влияющее на быстродействие всех дисковых операций - структура организации и хранения информации, т.е. то, как, собственно, устроена сама файловая система. Первый раздел - попытка анализа именно этого аспекта работы, т.е. физической работы со структурами и данными файловой системы. Теоретические рассуждения, в принципе, могут быть пропущены - те, кто интересуется лишь чисто практическими аспектами быстродействия файловых систем, могут обратиться сразу ко второй части статьи.
Для начала хотелось бы заметить, что любая файловая система так или иначе хранит файлы. Доступ к данным файлов - основная и неотъемлемая часть работы с файловой системой, и поэтому прежде всего нужно сказать пару слов об этом. Любая файловая система хранит данные файлов в неких объемах - секторах, которые используются аппаратурой и драйвером как самая маленькая единица полезной информации диска. Размер сектора в подавляющем числе современных систем составляет 512 байт, и все файловые системы просто читают эту информацию и передают её без какой либо обработки приложениям. Есть ли тут какие-то исключения? Практически нет. Если файл хранится в сжатом или закодированном виде - как это возможно, к примеру, в системе NTFS - то, конечно, на восстановление или расшифровку информации тратится время и ресурсы процессора. В остальных случаях чтение и запись самих данных файла осуществляется с одинаковой скоростью, какую файловую систему вы не использовали бы.
Обратим внимание на основные процессы, осуществляемые системой для доступа к файлам:
Поиск данных файла
Выяснение того, в каких областях диска хранится тот или иной фрагмент файла - процесс, который имеет принципиально разное воплощение в различных файловых системах. Имейте в виду, что это лишь поиск информации о местоположении файла - доступ к самим данным, фрагментированы они или нет, здесь уже не рассматривается, так как этот процесс совершенно одинаков для всех систем. Речь идет о тех "лишних" действиях, которые приходится выполнять системе перед доступом к реальным данным файлов.
На что влияет этот параметр: на скорость навигации по файлу (доступ к произвольному фрагменту файла). Любая работа с большими файлами данных и документов, если их размер - несколько мегабайт и более. Этот параметр показывает, насколько сильно сама файловая система страдает от фрагментации файлов.
NTFS способна обеспечить быстрый поиск фрагментов, поскольку вся информация хранится в нескольких очень компактных записях (типичный размер - несколько килобайт). Если файл очень сильно фрагментирован (содержит большое число фрагментов) - NTFS придется использовать много записей, что часто заставит хранить их в разных местах. Лишние движения головок при поиске этих данных, в таком случае, приведут к сильному замедлению процесса поиска данных о местоположении файла.
FAT32, из-за большой области самой таблицы размещения будет испытывать огромные трудности, если фрагменты файла разбросаны по всему диску. Дело в том, что FAT (File Allocation Table, таблица размещения файлов) представляет собой мини-образ диска, куда включен каждый его кластер. Для доступа к фрагменту файла в системе FAT16 и FAT32 приходится обращаться к соответствующей частичке FAT. Если файл, к примеру, расположен в трех фрагментах - в начале диска, в середине, и в конце - то в системе FAT нам придется обратиться к фрагменту FAT также в его начале, в середине и в конце. В системе FAT16, где максимальный размер области FAT составляет 128 Кбайт, это не составит проблемы - вся область FAT просто хранится в памяти, или же считывается с диска целиком за один проход и буферизируется. FAT32 же, напротив, имеет типичный размер области FAT порядка сотен килобайт, а на больших дисках - даже несколько мегабайт. Если файл расположен в разных частях диска - это вынуждает систему совершать движения головок винчестера столько раз, сколько групп фрагментов в разных областях имеет файл, а это очень и очень сильно замедляет процесс поиска фрагментов файла.
Вывод: Абсолютный лидер - FAT16, он никогда не заставит систему делать лишние дисковые операции для данной цели. Затем идет NTFS - эта система также не требует чтения лишней информации, по крайней мере, до того момента, пока файл имеет разумное число фрагментов. FAT32 испытывает огромные трудности, вплоть до чтения лишних сотен килобайт из области FAT, если файл разбросан разным областям диска. Работа с внушительными по размеру файлами на FAT32 в любом случае сопряжена с огромными трудностями - понять, в каком месте на диске расположен тот или иной фрагмент файла, можно лишь изучив всю последовательность кластеров файла с самого начала, обрабатывая за один раз один кластер (через каждые 4 Кбайт файла в типичной системе). Стоит отметить, что если файл фрагментирован, но лежит компактной кучей фрагментов - FAT32 всё же не испытывает больших трудностей, так как физический доступ к области FAT будет также компактен и буферизован.
Поиск свободного места
Данная операция производится в том случае, если файл нужно создать с нуля или скопировать на диск. Поиск места под физические данные файла зависит от того, как хранится информация о занятых участках диска.
На что влияет этот параметр: на скорость создания файлов, особенно больших. Сохранение или создание в реальном времени больших мультимедийных файлов (.wav, к примеру), копирование больших объемов информации, т.д. Этот параметр показывает, насколько быстро система сможет найти место для записи на диск новых данных, и какие операции ей придется для этого проделать.
Для определения того, свободен ли данный кластер или нет, системы на основе FAT должны просмотреть одну запись FAT, соответствующую этому кластеру. Размер одной записи FAT16 составляет 16 бит, одной записи FAT32 - 32 бита. Для поиска свободного места на диске может потребоваться просмотреть почти всего FAT - это 128 Кбайт (максимум) для FAT16 и до нескольких мегабайт (!) - в FAT32. Для того, чтобы не превращать поиск свободного места в катастрофу (для FAT32), операционной системе приходится идти на различные ухищрения.
NTFS имеет битовую карту свободного места, одному кластеру соответствует 1 бит. Для поиска свободного места на диске приходится оценивать объемы в десятки раз меньшие, чем в системах FAT и FAT32.
Вывод: NTFS имеет наиболее эффективную систему нахождения свободного места. Стоит отметить, что действовать "в лоб" на FAT16 или FAT32 очень медленно, поэтому для нахождения свободного места в этих системах применяются различные методы оптимизации, в результате чего и там достигается приемлемая скорость. (Одно можно сказать наверняка - поиск свободного места при работе в DOS на FAT32 - катастрофический по скорости процесс, поскольку никакая оптимизация невозможна без поддержки хоть сколь серьезной операционной системы).
Работа с каталогами и файлами
Каждая файловая система выполняет элементарные операции с файлами - доступ, удаление, создание, перемещение и т.д. Скорость работы этих операций зависит от принципов организации хранения данных об отдельных файлах и от устройства структур каталогов.
На что влияет этот параметр: на скорость осуществления любых операций с файлом, в том числе - на скорость любой операции доступа к файлу, особенно - в каталогах с большим числом файлов (тысячи).
FAT16 и FAT32 имеют очень компактные каталоги, размер каждой записи которых предельно мал. Более того, из-за сложившейся исторически системы хранения длинных имен файлов (более 11 символов), в каталогах систем FAT используется не очень эффективная и на первый взгляд неудачная, но зато очень экономная структура хранения этих самих длинных имен файлов. Работа с каталогами FAT производится достаточно быстро, так как в подавляющем числе случаев каталог (файл данных каталога) не фрагментирован и находится на диске в одном месте.
Единственная проблема, которая может существенно понизить скорость работы каталогов FAT - большое количество файлов в одном каталоге (порядка тысячи или более). Система хранения данных - линейный массив - не позволяет организовать эффективный поиск файлов в таком каталоге, и для нахождения данного файла приходится перебирать большой объем данных (в среднем - половину файла каталога).
NTFS использует гораздо более эффективный способ адресации - бинарное дерево, о принципе работы которого можно прочесть в другой статье (Файловая система NTFS). Эта организация позволяет эффективно работать с каталогами любого размера - каталогам NTFS не страшно увеличение количества файлов в одном каталоге и до десятков тысяч.
Стоит заметить, однако, что сам каталог NTFS представляет собой гораздо менее компактную структуру, нежели каталог FAT - это связано с гораздо большим (в несколько раз) размером одной записи каталога. Данное обстоятельство приводит к тому, что каталоги на томе NTFS в подавляющем числе случаев сильно фрагментированы. Размер типичного каталога на FAT-е укладывается в один кластер, тогда как сотня файлов (и даже меньше) в каталоге на NTFS уже приводит к размеру файла каталога, превышающему типичный размер одного кластера. Это, в свою очередь, почти гарантирует фрагментацию файла каталога, что, к сожалению, довольно часто сводит на нет все преимущества гораздо более эффективной организации самих данных.
Вывод: структура каталогов на NTFS теоретически гораздо эффективнее, но при размере каталога в несколько сотен файлов это практически не имеет значения. Фрагментация каталогов NTFS, однако, уверенно наступает уже при таком размере каталога. Для малых и средних каталогов NTFS, как это не печально, имеет на практике меньшее быстродействие.
Преимущества каталогов NTFS становятся реальными и неоспоримыми только в том случае, если в одно каталоге присутствуют тысячи файлов - в этом случае быстродействие компенсирует фрагментированность самого каталога и трудности с физическим обращением к данным (в первый раз - далее каталог кэшируется). Напряженная работа с каталогами, содержащими порядка тысячи и более файлов, проходит на NTFS буквально в несколько раз быстрее, а иногда выигрыш в скорости по сравнению с FAT и FAT32 достигает десятков раз.
Практика
К сожалению, как это часто бывает во всевозможных компьютерных вопросах, практика не очень хорошо согласуется с теорией. NTFS, имеющая, казалось бы, очевидные преимущества в структуре, показывает не настолько уж фантастические результаты, как можно было бы ожидать. Какие еще соображения влияют на быстродействие файловой системы? Каждый из рассматриваемых далее вопросов вносит свой вклад в итоговое быстродействие. Помните, однако, что реальное быстродействие - результат действия сразу всех факторов, поэтому и в этой части статьи не стоит делать поспешных выводов.
Объем оперативной памяти (кэширование)
Очень многие данные современных файловых систем кэшируются или буферизируются в памяти компьютера, что позволяет избежать лишних операций физического чтения данных с диска. Для нормальной (высокопроизводительной) работы системы в кэше приходится хранить следующие типы информации:
Данные о физическом местоположении всех открытых файлов. Это, прежде всего, позволит обращаться к системным файлам и библиотекам, доступ к которым идет буквально постоянно, без чтения служебной (не относящейся к самим файлам) информации с диска. Это же относится к тем файлам, которые исполняются в данный момент - т.е. к выполняемым модулям (.exe и .dll) активных процессов в системе. В эту категорию попадают также файлы системы, с которыми производится работа (прежде всего реестр и виртуальная память, различные .ini файлы, а также файлы документов и приложений).
Наиболее часто используемые каталоги. К таковым можно отнести рабочий стол, меню "пуск", системные каталоги, каталоги кэша интернета, и т.п.
Данные о свободном месте диска - т.е. та информация, которая позволит найти место для сохранения на диск новых данных.
В случае, если этот базовый объем информации не будет доступен прямо в оперативной памяти, системе придется совершать множество ненужных операций еще до того, как она начнет работу с реальными данными. Что входит в эти объемы в разных файловых системах? Или, вопрос в более практической плоскости - каким объемом свободной оперативной памяти надо располагать, чтобы эффективно работать с той или иной файловой системой?
FAT16 имеет очень мало данных, отвечающих за организацию файловой системы. Из служебных областей можно выделить только саму область FAT, которая не может превышать 128 Кбайт (!) - эта область отвечает и за поиск фрагментов файлов, и за поиск свободного места на томе. Каталоги системы FAT также очень компактны. Общий объем памяти, необходимый для предельно эффективной работы с FAT-ом, может колебаться от сотни килобайт и до мегабайта-другого - при условии огромного числа и размера каталогов, с которыми ведется работа.
FAT32 отличается от FAT16 лишь тем, что сама область FAT может иметь более внушительные размеры. На томах порядка 5 - 10 Гбайт область FAT может занимать объем в несколько Мбайт, и это уже очень внушительный объем, надежно кэшировать который не представляется возможным. Тем не менее, область FAT, а вернее те фрагменты, которые отвечают за местоположение рабочих файлов, в подавляющем большинстве систем находятся в памяти машины - на это расходуется порядка нескольких Мбайт оперативной памяти.
NTFS, к сожалению, имеет гораздо большие требования к памяти, необходимой для работы системы. Прежде всего, кэширование сильно затрудняет большие размеры каталогов. Размер одних только каталогов, с которыми активно ведет работу система, может запросто доходить до нескольких Мбайт и даже десятков Мбайт! Добавьте к этому необходимость кэшировать карту свободного места тома (сотни Кбайт) и записи MFT для файлов, с которыми осуществляется работа (в типичной системе - по 1 Кбайт на каждый файл). К счастью, NTFS имеет удачную систему хранения данных, которая не приводит к увеличению каких-либо фиксированных областей при увеличении объема диска. Количество данных, с которым оперирует система на основе NTFS, практически не зависит от объема тома, и основной вклад в объемы данных, которые необходимо кэшировать, вносят каталоги. Тем не менее, уже этого вполне достаточно для того, чтобы только минимальный объем данных, необходимых для кэширования базовых областей NTFS, доходил до 5 - 8 Мбайт.
[pagebreak]
К сожалению, можно с уверенностью сказать: NTFS теряет огромное количество своего теоретического быстродействия из-за недостаточного кэширования. На системах, имеющих менее 64 Мбайт памяти, NTFS просто не может оказаться быстрее FAT16 или FAT32. Единственное исключение из этого правила - диски FAT32, имеющие объем десятки Гбайт (я бы лично серьезно опасался дисков FAT32 объемом свыше, скажем, 30 Гбайт). В остальных же случаях - системы с менее чем 64 мегабайтами памяти просто обязаны работать с FAT32 быстрее.
Типичный в настоящее время объем памяти в 64 Мбайта, к сожалению, также не дает возможности организовать эффективную работу с NTFS. На малых и средних дисках (до 10 Гбайт) в типичных системах FAT32 будет работать, пожалуй, немного быстрее. Единственное, что можно сказать по поводу быстродействия систем с таким объемом оперативной памяти - системы, работающие с FAT32, будут гораздо сильнее страдать от фрагментации, чем системы на NTFS. Но если хотя бы изредка дефрагментировать диски, то FAT32, с точки зрения быстродействия, является предпочтительным вариантом. Многие люди, тем не менее, выбирают в таких системах NTFS - просто из-за того, что это даст некоторые довольно важные преимущества, тогда как типичная потеря быстродействия не очень велика.
Системы с более чем 64 Мбайтами, а особенно - со 128 Мбайт и более памяти, смогут уверенно кэшировать абсолютно всё, что необходимо для работы систем, и вот на таких компьютерах NTFS, скорее всего, покажет более высокое быстродействие из-за более продуманной организации данных. В наше время этим показателям соответствует практически любой компьютер.
Быстродействие накопителя
Влияют ли физические параметры жесткого диска на быстродействие файловой системы? Да, хоть и не сильно, но влияют. Можно выделить следующие параметры физической дисковой системы, которые по-разному влияют на разные типы файловых систем:
Время случайного доступа (random seek time). К сожалению, для доступа к системным областям на типичном диске более сложной файловой системы (NTFS) приходится совершать, в среднем, больше движений головками диска, чем в более простых системах (FAT16 и FAT32). Гораздо большая фрагментация каталогов, возможность фрагментации системных областей - всё это делает диски NTFS гораздо более чувствительными к скорости считывания произвольных (случайных) областей диска. По этой причине использовать NTFS на медленных (старых) дисках не рекомендуется, так как высокое (худшее) время поиска дорожки дает еще один плюс в пользу систем FAT.
Наличие Bus Mastering. Bus Mastering - специальный режим работы драйвера и контроллера, при использовании которого обмен с диском производится без участия процессора. Стоит отметить, что система запаздывающего кэширования NTFS сможет действовать гораздо более эффективно при наличии Bus Mastering, т.к. NTFS производит отложенную запись гораздо большего числа данных. Системы без Bus Mastering в настоящее время встречаются достаточно редко (обычно это накопители или контроллеры, работающие в режиме PIO3 или PIO4), и если вы работаете с таким диском - то, скорее всего, NTFS потеряет еще пару очков быстродействия, особенно при операциях модификации каталогов (например, активная работа в интернете - работа с кэшем интернета).
Кэширование как чтения, так и записи на уровне жестких дисков (объем буфера HDD - от 128 Кбайт до 1-2 Мбайт в современных дорогих дисках) - фактор, который будет более полезен системам на основе FAT. NTFS из соображений надежности хранения информации осуществляет модификацию системных областей с флагом "не кэшировать запись", поэтому быстродействие системы NTFS слабо зависит от возможности кэширования самого HDD. Системы FAT, напротив, получат некоторый плюс от кэширования записи на физическом уровне. Стоит отметить, что, вообще говоря, всерьез принимать в расчет размер буфера HDD при оценке быстродействия тех или иных файловых систем не стоит.
Подводя краткий итог влиянию быстродействия диска и контроллера на быстродействия системы в целом, можно сказать так: NTFS страдает от медленных дисков гораздо сильнее, чем FAT.
Размер кластера
Хотелось бы сказать пару слов о размере кластера - тот параметр, который в файловых системах FAT32 и NTFS можно задавать при форматировании практически произвольно. Прежде всего, надо сказать, что больший размер кластера - это практически всегда большее быстродействие. Размер кластера на томе NTFS, однако, имеет меньшее влияние на быстродействие, чем размер кластера для системы FAT32.
Типичный размер кластера для NTFS - 4 Кбайта. Стоит отметить, что при большем размере кластера отключается встроенная в файловую систему возможность сжатия индивидуальных файлов, а также перестает работать стандартный API дефрагментации - т.е. подавляющее число дефрагментаторов, в том числе встроенный в Windows 2000, будут неспособны дефрагментировать этот диск. SpeedDisk, впрочем, сможет - он работает без использования данного API. Оптимальным с точки зрения быстродействия, по крайней мере, для средних и больших файлов, считается (самой Microsoft) размер 16 Кбайт. Увеличивать размер далее неразумно из-за слишком больших расходов на неэффективность хранения данных и из-за мизерного дальнейшего увеличения быстродействия. Если вы хотите повысить быстродействие NTFS ценой потери возможности сжатия - задумайтесь о форматировании диска с размером кластера, большим чем 4 Кбайта. Но имейте в виду, что это даст довольно скромный прирост быстродействия, который часто не стоит даже уменьшения эффективности размещения файлов на диске.
Быстродействие системы FAT32, напротив, можно довольно существенно повысить, увеличив размер кластера. Если в NTFS размер кластера почти не влияет на размер и характер данных системных областей, то в системе FAT увеличивая кластер в два раза, мы сокращаем область FAT в те же два раза. Вспомните, что в типичной системе FAT32 эта очень важная для быстродействия область занимает несколько Мбайт. Сокращение области FAT в несколько раз даст заметное увеличение быстродействия, так как объем системных данных файловой системы сильно сократиться - уменьшается и время, затрачиваемое на чтение данных о расположении файлов, и объем оперативной памяти, необходимый для буферизирования этой информации. Типичный объем кластера для систем FAT32 составляет тоже 4 Кбайт, и увеличение его до 8 или даже до 16 Кбайт - особенно для больших (десяток и более гигабайт) дисков - достаточно разумный шаг.
Другие соображения
NTFS является достаточно сложной системой, поэтому, в отличие от FAT16 и FAT32, имеются и другие факторы, которые могут привести к существенному замедлению работы NTFS:
Диск NTFS был получен преобразованием раздела FAT16 или FAT32 (команда convert). Данная процедура в большинстве случаев представляет собой тяжелый случай для быстродействия, так как структура служебных областей NTFS, скорее всего, получится очень фрагментированной. Если есть возможность - избегайте преобразования других систем в NTFS, так как это приведет к созданию очень неудачного диска, которому не поможет даже типичный (неспециализированный) дефрагментатор, типа Diskeeper-а или встроенного в Windows 2000.
Активная работа с диском, заполненным более чем на 80% - 90%, представляет собой катастрофический для быстродействия NTFS случай, так как фрагментация файлов и, самое главное, служебных областей, будет расти фантастически быстро. Если ваш диск используется в таком режиме - FAT32 будет более удачным выбором при любых других условиях.
Выводы
В данной заключительной части "одной строчкой" собраны ключевые особенности быстродействия этих трех файловых систем.
FAT - плюсы:
Для эффективной работы требуется немного оперативной памяти.
Быстрая работа с малыми и средними каталогами.
Диск совершает в среднем меньшее количество движений головок (в сравнении с NTFS).
Эффективная работа на медленных дисках.
FAT - минусы:
Катастрофическая потеря быстродействия с увеличением фрагментации, особенно для больших дисков (только FAT32).
Сложности с произвольным доступом к большим (скажем, 10% и более от размера диска) файлам.
Очень медленная работа с каталогами, содержащими большое количество файлов.
NTFS - плюсы:
Фрагментация файлов не имеет практически никаких последствий для самой файловой системы - работа фрагментированной системы ухудшается только с точки зрения доступа к самим данным файлов.
Сложность структуры каталогов и число файлов в одном каталоге также не чинит особых препятствий быстродействию.
Быстрый доступ к произвольному фрагменту файла (например, редактирование больших .wav файлов).
Очень быстрый доступ к маленьким файлам (несколько сотен байт) - весь файл находится в том же месте, где и системные данные (запись MFT).
NTFS - минусы:
Существенные требования к памяти системы (64 Мбайт - абсолютный минимум, лучше - больше).
Медленные диски и контроллеры без Bus Mastering сильно снижают быстродействие NTFS.
Работа с каталогами средних размеров затруднена тем, что они почти всегда фрагментированы.
Диск, долго работающий в заполненном на 80% - 90% состоянии, будет показывать крайне низкое быстродействие.
Хотелось бы еще раз подчеркнуть, что на практике основной фактор, от которого зависит быстродействие файловой системы - это, как ни странно, объем памяти машины. Системы с памятью 64-96 Мбайт - некий рубеж, на котором быстродействие NTFS и FAT32 примерно эквивалентно. Обратите внимание также на сложность организации данных на вашей машине. Если вы не используете ничего, кроме простейших приложений и самой операционной системы - может случиться так, что FAT32 сможет показать более высокое быстродействие и на машинах с большим количеством памяти.
NTFS - система, которая закладывалась на будущее, и это будущее для большинства реальных применений сегодняшнего дня еще, к сожалению, видимо не наступило. На данный момент NTFS обеспечивает стабильное и равнодушное к целому ряду факторов, но, пожалуй, всё же невысокое - на типичной "игровой" домашней системе - быстродействие. Основное преимущество NTFS с точки зрения быстродействия заключается в том, что этой системе безразличны такие параметры, как сложность каталогов (число файлов в одном каталоге), размер диска, фрагментация и т.д. В системах FAT же, напротив, каждый из этих факторов приведет к существенному снижению скорости работы.
Только в сложных высокопроизводительных системах - например, на графических станциях или просто на серьезных офисных компьютерах с тысячами документов, или, тем более, на файл-серверах - преимущества структуры NTFS смогут дать реальный выигрыш быстродействия, который порой заметен невооруженным глазом. Пользователям, не имеющим большие диски, забитые информацией, и не пользующимся сложными программами, не стоит ждать от NTFS чудес скорости - с точки зрения быстродействия на простых домашних системах гораздо лучше покажет себя FAT32.
В состав библиотеки MFC входит ряд классов, представляющих стандартные диалоговые панели. Эти классы позволяют легко реализовать такие часто используемые операции, как открытие и сохранение файла, выбор цвета, выбор шрифта и т.д. Все эти классы наследуются от CCommonDialog, который в свою очередь является производным по отношению к базовому классу CDialog.
Приведем классы стандартных диалоговых панелей и их назначение:
CColorDialog - Панель для выбора цвета
CFileDialog - Панель выбора файлов для открытия и сохранения на диске
CFindReplaceDialog - Панель для выполнения операции поиска и замены
CFontDialog - Панель для выбора шрифта
CPrintDialog - Панель для вывода документа на печать
CPageSetupDialog - Панель выбора формата документа
COleDialog - Панель для управления технологией OLE
Классы, управляющие стандартными диалоговыми панелями, определены в файле afxdlgs.h. Поэтому при использовании этих классов в приложении необходимо включить этот файл в исходный текст при помощи директивы #include.
Панель выбора цвета (класс CColorDialog)
Чтобы отобразить на экране стандартную диалоговую панель выбора цвета, надо создать объект класса CColorDialog, а затем вызвать метод DoModal. При создании объекта класса СColorDialog используется следующий конструктор:
Все параметры конструктора необязательны, однако в некоторых случаях использование этих параметров может помочь.
Первый параметр clrInit позволяет указать цвет, выбранный по умолчанию сразу после открытия диалоговой панели. Если параметр не будет указан, в качестве цвета, выбранного по умолчанию, будет использоваться черный цвет.
Параметр dwFlags содержит набор флагов, управляющих диалоговой панелью выбора цвета. При помощи него блокировать или разрешать работу некоторых элементов управления диалоговой панели выбора цвета. Если при создании объекта класса CColorDialog не указать параметр dwFlags, тем не менее можно выполнить настройку диалоговой панели, обратившись непосредственно к элементу m_cc данного класса. Параметр dwFlags, указанный в конструкторе, используется для инициализации m_cc. Изменения в элемент m_cc должны быть внесены до того, как панель будет отображаться на экране.
Последний параметр pParentWnd можно использовать, чтобы указать родительское окно диалоговой панели.
Методы класса CСolorDialog
Чтобы вывести диалоговую панель выбора цвета на экран, необходимо использовать метод DoModal. После отображения панели на экране пользователь может выбрать из нее цвет и нажать кнопки OK или Cancel для подтверждения выбора цвета или отказа от него. Когда диалоговая панель закрывается, метод DoModal возвращается значения IDOK и IDCANCEL, в зависимости от того, какую кнопку нажал пользователь:
На экране появится стандартная диалоговая панель выбора цвета Color. В верхней половине диалоговой панели расположены 48 прямоугольников, имеющих различные цвета. Они представляют так называемые основные цвета (Basic colors). Можно выбрать один из этих цветов и нажать кнопку OK. После того, как диалоговая панель закрыта (метод DoModal завершил свою работу), можно воспользоваться методами класса CColorDialog, чтобы узнать цвета, выбранные пользователем.
Для определения цвета, выбранного пользователем, можно обратиться к методу GetColor класса CColorDialog. Данный метод возвращает значение COLORREF, соответствующее выбранному цвету.
Если пользователю недостаточно основных цветов, представленных в диалоговой панели Color, он может выбрать до 16 дополнительных цветов. Для этого он должен нажать кнопку DefineCustom Colors. Диалоговая панель изменит свой внешний вид - появятся дополнительные органы управления, позволяющие выбрать любой из 16 777 216 цветов. Когда цвет выбран, нужно нажать кнопку Add Custom Colors. Выбранный цвет будет добавлен к дополнительным цветам (Custom colors) - один из свободных прямоугольников окрасится соответствующим цветом.
При помощи метода GetSavedCustomColors класса CColorDialog можно определить дополнительные цвета, выбранные пользователем в диалоговой панели Color. Этот метод возвращает указатель на массив из 16 элементов типа COLORREF. Каждый элемент массива описывает один дополнительный цвет.
Когда диалоговая панель Color отображается приложением первый раз, все прямоугольники, отображающие дополнительные цвета, имеют белый цвет. Дополнительные цвета, выбранные пользователем, сохраняются во время работы приложения. После перезапуска приложения дополнительные цвета сбрасываются.
Панель выбора файлов (класс CFileDialog)
Среди стандартных диалоговых панелей, для которых в библиотеке MFC создан специальный класс, есть панели для работы с файловой системой - Open и Save As. Диалоговая панель Open позволяет выбрать один или несколько файлов и открыть их для дальнейшего использования. Диалоговая панель Save As позволяет выбрать имя файла для записи в него документа.
Для управления диалоговыми панелями Open и Save As предназначен один класс CFileDialog. Рассмотрим конструктор класса CFileDialog более подробно:
Объекты класса CFileDialog представляют диалоговые панели Open или Save As в зависимости от параметра bOpenFileDialog. Если параметр bOpenFileDialog содержит значение TRUE, то создается объект, управляющий диалоговой панелью Open, а если FALSE - диалоговой панелью Save As.
Параметр bOpenFileDialog является единственным обязательным параметром, который необходимо указать. Остальные параметры конструктора класса CFileDialog задают различные режимы работы панели и могут не указываться.
Чтобы создать объект класса CFileDialog , представляющий диалоговую панель для открытия файлов (mFileOpen), и объект, представляющий диалоговую панель для сохранения файлов (mFileSaveAs), можно воспользоваться следующими вызовами конструктора класса:
Во многих случаях имена файлов, которые нужно открыть или закрыть, имеют определенное расширение. Параметр lpszDefExt позволяет задать расширение файлов, используемое по умолчанию. То есть, если пользователь при определении имени файла не укажет расширение, имени файла автоматически присваивается расширение, принятое по умолчанию. Если при определении свойств диалоговой панели программист присвоит параметру lpszDefExt значение NULL, то расширение файлов должно задаваться пользователем явно.
В некоторых случаях требуется, чтобы диалоговые панели отображались с уже выбранным именем файла. Чтобы указать имя файла, используемое по умолчанию, применяется параметр lpszFileName. Если параметр lpszFileName имеет значение NULL, данная возможность не реализуется.
С помощью флага dwFlags можно изменить внешний вид и некоторые другие характеристики стандартных диалоговых панелей класса CFileDialog. В него можно записать комбинацию флагов, управляющих различными характеристиками этих панелей. Например, флаг OFN_HIDEREADONLY означает, что из диалоговой панели удаляется переключатель "Read Only", а флаг OFN_OVERWRITEPROMPT (используемый для панели Save As) - что необходимо выводить диалоговую панель с предупреждением, если пользователь выбирает для сохранения имя уже существующего файла.
Диалоговые панели выбора файлов обычно имеют список так называемых фильтров, включающих названия типов файлов и расширения имен файлов данного типа. Выбрав фильтр, пользователь указывает, что он желает работать только с файлами определенного типа, имеющими соответствующее расширение. Файлы с другими расширениями в диалоговых панелях не отображаются.
Список фильтров можно указать через параметр lpszFilter. Одновременно можно указать несколько фильтров. Каждый фильтр задается двумя строками - строкой, содержащей имя фильтра, и строкой, в которой перечислены соответствующие ему расширения имен файлов. Если одному типу соответствует несколько расширений, они разделяются символом ;. Строка, содержащая имя фильтра, отделяется от строки с расширениями файлов символом |. Если используется несколько фильтров, то они также отделяются друг от друга символом |. Например, в качестве строки, задающей фильтры, можно использовать строку вида:
Диалоговые панели, представленные объектами класса CFileDialog, могут иметь или не иметь родительского окна. Чтобы указать родительское окно, нужно передать конструктору CFileDialog указатель на него через параметр pParentWnd.
Методы класса CFileDialog
Создание объекта класса CFileDialog еще не вызывает отображения соответствующей диалоговой панели. Для этого необходимо воспользоваться методом DoModal класса CFileDialog.При вызове метода DoModal для ранее созданного объекта класса CFileDialog на экране открывается соответствующая диалоговая панель. После того, как пользователь завершает работу с диалоговой панелью, метод DoModal вернет значение IDOK или IDCANCEL в случае успешного завершения и нуль - в случае возникновения ошибок:
После того, как пользователь закроет диалоговую панель и метод DoModal вернет управление, можно воспользоваться другими методами класса CFileDialog , чтобы определить имена выбранных файлов:
GetPathName - Определяет полный путь файла
GetFileName - Определяет имя выбранного файла
GetFileExt - Определяет расширение имени выбранного файла
GetFileTitle - Позволяет определить заголовок выбранного файла
GetNextPathName - Если диалоговая панель позволяет выбрать сразу несколько файлов, то этот метод можно использовать для определения полного пути следующего из выбранных файлов
GetReadOnlyPref - Позволяет узнать состояние атрибута "только для чтения" (read-only) выбранного файла
GetStartPosition - Возвращает положение первого элемента из списка имен файлов
Наиболее важный метод - GetPathName. Он получает полный путь файла, выбранного из диалоговых панелей Open или Save As. Если диалоговая панель позволяет выбрать сразу несколько файлов, тогда метод GetPathName возвращает массив строк, состоящий из нескольких строк, заканчивающихся двоичным нулем. Первая из данных строк содержит путь к каталогу, в котором расположены выбранные файлы, остальные строки содержат имена выбранных файлов. Выделение строки, содержащей путь к каталогу, проблем не вызывает, а чтобы получить имена выбранных файлов, необходимо воспользоваться методами GetStartPosition и GetNextPathName.
[pagebreak]
Метод GetStartPosition возвращает значение типа POSITION. Оно предназначено для передачи методу GetNextPathName и получения очередного имени выбранного файла. Если пользователь не выбрал ни одного файла, метод GetStartPosition возвращает значение NULL. Значение, полученное этим методом, следует записать во временную переменную типа POSITION и передать ссылку на нее методу GetNextPathName. Метод GetNextPathName вернет полный путь первого из выбранных в диалоговой панели файлов и изменит значение переменной pos, переданной методу по ссылке. Новое значение pos можно использовать для последующих вызовов метода GetNextPathName и получения путей всех остальных выбранных файлов. Когда метод GetNextPathName вернет имена всех выбранных файлов, в переменную pos записывается значение NULL.
В панелях Open и Save As имеется переключатель "ReadOnly". По умолчанию этот преключатель не отображается. Если есть необходимость воспользоваться этим переключателем, то нужно отказаться от использования флага OFN_HIDEREADONLY.
Метод GetReadOnlyPref позволяет определить положение переключателя "ReadOnly". Если переключатель включен, то метод GetReadOnlyPref возвращает ненулевое значение. В противном случае GetReadOnlyPref возвращает нуль.
Панель выбора шрифта (класс CFontDialog)
Стандартная диалоговая панель Font предназначена для выбора шрифта. Эта панель отображает список шрифтов, установленных в системе, и позволяет выбрать название шрифта, его начертание и другие параметры.
Для управления диалоговой панелью Font в библиотеку классов MFC включен класс CFontDialog. Методы этого класса можно использовать для отображения панели Font и определения характеристик шрифта, выбранного пользователем. Конструктор класса CFontDialog:
Все параметры конструктора являются необязательными. Настройка стандартной панели выбора шрифта, которая выполняется конструктором класса CFontDialog по умолчанию, удовлетворяет большинству пользователей.
Параметр lplfInitial является указателем на структуру LOGFONT, описывающую логический шрифт. Если этот параметр используется, то в диалоговой панели по умолчанию будет выбран шрифт, наиболее соответствующий шрифту, описанному в структуре LOGFONT.
Параметр dwFlags задает набор флагов, управляющий различными режимами работы панели. Например, флаг CF_EFFECTS позволяет пользователю создавать подчеркнутые и перечеркнутые буквы, определять цвет букв, а флаг CF_SCREENFONTS - разрешает выбирать только экранные шрифты.
Через параметр pdcPrinter можно передать конструктору контекст отображения принтера, шрифты которого будут представлены в диалоговой панели Font. Данный параметр используется только в том случае, если в параметре dwFlags указаны флаги CF_PRINTERFONTS или CF_BOTH.
Через параметр pParentWnd можно указать родительское окно для диалоговой панели Font.
Методы класса CFontDialog
Для отображения диалоговой панели Font предназначен виртуальный метод DoModal. Если пользователь выбрал шрифт и нажал кнопку OK, метод DoModal возвращает идентификатор IDOK, если пользователь отменил выбор шрифта, метод DoModal возвращает идентификатор IDCANCEL:
Остальные методы класса предназначены для определения характеристик выбранного пользователем шрифта.
Метод GetCurrentFont позволяет сразу определить все характеристики выбранного шрифта, записав их в структуру LOGFONT.
Остальные методы класса позволяют определить только отдельные характеристики выбранного шрифта:
GetFaceName - Возвращает имя выбранного шрифта
GetStyleName - Возвращает имя стиля выбранного шрифта
GetSize - Возвращает размер выбранного шрифта
GetColor - Возвращает цвет выбранного шрифта
GetWeight - Возвращает плотность выбранного шрифта
IsStrikeOut - Определяет, является ли шрифт выделенным перечеркнутой линией
IsUnderline - Определяет, является ли шрифт выделенным подчеркиванием
IsBold - Определяет, является ли шрифт жирным
IsItalic - Определяет, является ли шрифт наклонным
Панель для вывода документов на печать (класс CPrintDialog)
Класс CPrintDialog можно использовать для создания двух видов диалоговых панелей, предназначенных для печати документов и выбора форматов документов. Кроме класса CPrintDialog можно также использовать класс CPageSetupDialog. Он позволяет создать диалоговую панель для выбора формата документа, имеющую несколько иной вид.
В приложениях, подготовленных с использованием средств MFC AppWizard и построенные по модели документ-облик, по умолчанию встроена возможность вывода редактируемого документа на печать.
В меню File такого приложения находятся три строки (Print, Print Preview и Print Setup), которые управляют процессом печати документов, подготовленных в приложении. Чтобы распечатать документ, достаточно выбрать из меню File строку Print. На экране появится диалоговая панель Print. В ней можно выбрать печатающее устройство для печати документов (группа Name), указать, будет печататься весь документ либо его часть (группа Print range), а также сколько копий документа будет напечатано (группа Copies). Также можно настроить различные характеристики печатающего устройства, если нажать кнопку Properties в группе Printer.
Если требуется определить только печатающее устройство и формат документа, из меню File следует выбрать строку Printer Setup. В группе Printer можно указать печатающее устройство и настроить его соответствующим образом. Группа Paper задает формат бумаги и режим подачи бумаги в печатающее устройство. Группа Orientation включает только один переключатель, определяющий ориентацию бумаги. Он принимает положение Portrait для вертикальной ориентации изображения на бумаге (режим "портрет") или Landscape для горизонтальной ориентации изоборажения на бумаге (режим "ландшафт").
Строка Print Preview меню File выбирается для предварительного просмотра документа перед печатью. При этом главное окно приложения изменит свой внешний вид и можно будет просмотреть, как будет выглядеть документ после печати.
Если не требуется выполнять специфическую обработку документа перед печатью, то вряд ли понадобится самостоятельное добавление программного кода, отвечающего за процесс печати. Просто следует отметить, что процедура создания панелей, связанных с печатью документа, практически ничем не отличается от создания выше описанных стандартных диалоговых панелей.
Панель для выполнения поиска и замены (класс CFindReplaceDialog)
Класс CFindReplaceDialog предназначен для управления диалоговыми окнами Find и Replace. Диалоговая панель Find используется для поиска известных строк в документе приложения, а панель Replace позволяет замену одной строки на другую.
Важным отличием диалоговых панелей Find и Replace от других стандартных диалоговых панелей является то, что они представляют собой немодальные диалоговые панели. Поэтому процесс создания этих панелей значительно отличается от процесса создания стандартных панелей для выбора цвета, шрифта и имен файла.
Все началось до банального просто - любимый директор сказал "Хочу!". Аргументация была следующей:
* Переводится много бумаги для печати и отправки по факсу (клиентов много, потому отправленные счета сразу выбрасываются: найти нужный документ даже через день - нереально)
* Электронная почта "есть в наши дни у всех и каждого" (то, что сам директор ею не пользуется - другой вопрос :-) )
* Тратится меньше времени персонала (не нужно сидеть и ждать перед факсом, стартовать, "прошло"/"не прошло", ...)
* Легче вести учет когда и что было отправлено.
Сначала ставился вопрос отправки документов вообще - что может быть проще? Сохранить таблицу как файл MS-Excel, вызвать внешнюю программу отправки с параметрами - и все. Потом возникли сомнения:
* А вот клиенты отредактируют файл - и будут доказывать что мы такой и отправили,
* В файле передается рисунок печати - они его смогут использовать с какой-нибудь темной целью.
Сразу же было предложено отправить как рисунок, благо я знал, что это можно сделать, но как - еще не представлял. Согласие получено, и вот начались поиски соответствующих программ...
Подбор нужного инструментария
Некоторое время я стараюсь использовать бесплатные программы, а не ломать те, за которые нужно платить деньги. Так что одним из условий (не главным, но в результате выполненным почти на 100%) была бесплатность инструментария.
Понятно, что для получения рисунка на выходе нужен виртуальный принтер, на который можно печатать любой документ. Выходным форматом был выбран tiff как достаточно распространенный, предполагая что его можно будет конвертировать в любой формат, если возникнет необходимость. Были испробованы многие принтеры, встреченные в просторах Internet`а, как бесплатные, так и нет. Большинство из них умеют печатать кроме искомого tiff еще и pdf документы, но не один не удовлетворял условиям передачи в них внешних параметров (важно было указать место сохранения и возможно имя файла для уменьшения коллизий, поскольку работа происходит на сервере терминалов). В конечном итоге выбор пал на AFPL Ghostscript 8.14 for Win32 и драйвер переадресации порта принтера RedMon.
Ghost Script умеет конвертировать данные из ps, eps, pdf в разные форматы (те же ps, eps, pdf, языки принтеров вроде PCL6 от HP, и рисунки). Получать данные он может как из файла, так и из входящего потока (stdin для посвященных). RedMon умеет данные, полученные от драйвера принтера, передавать как входной поток выбранной программе. Кроме того устанавливает несколько системных переменных, одну из которых (%REDMON_USER% - имя пользователя, печатающего документ) мы будем использовать.
Итак - используемый режим связки: установка PS принтера в системе, указание ему виртуального порта RedMon, пересылка исходящего PS потока от принтера на Ghost Script, формирование tif по указанным настройкам.
Настройки для режима работы Ghost Script хранятся в файле одном для всех, потому в схему добавим еще одно звено: RedMon передает данные не Ghost Script, а скрипту WSH, а уже он откорректировав настройки под пользователя, передает дальше поток для Ghost Script. Потому еще одна программа, которая нам нужна: Windows Script 5.6 for Windows. Нужна именно версия 5.6, поскольку во встроенной в Windows 2000 версии 5.1 отсутствует необходимый метод Exec().
Еще возможно нам понадобится компонент для вывода рисунков с прозрачным фоном. Пока приходится использовать Active_BMP, упоминаемый на безвременно почившем hare.ru. Этот компонент умеет отображать прозрачными только 2-х цветные bmp (по крайней мере только с ними у меня получилось добиться прозрачности), но за неимением лучшего... :-) (Если кто знает бесплатный ActiveX компонент для отображения gif с прозрачным слоем - скажите в форум или мыло)
Собственно для отправки почты из командной строки я уже полгода пользуюсь Postie, потому искать ничего нового не пришлось.
Приступим (установка и регистрация программ)
Установка WSH проблем не вызывает (конечно, если вы не попытаетесь установить версию для 9X/NT4 на 2000/XP, как я это сделал, причем осознал это только взявшись за статью - уже месяц сервер живет в этом режиме :-) ): запуск scripten.exe (scr56en.exe), ответы на все вопросы, перезагрузка.
Установка Ghost Script не требует даже перезагрузки. Единственный момент - от пытается по умолчанию установится в каталог %SystemDrive%\gs - я его устанавливал в %SystemDrive%\Tools\gs - так мне удобнее. (ниже в скобках я буду писать свои настройки, с которыми у меня работает живая система).
Для установки RedMon нужно его распаковать в некий каталог (%SystemDrive%\Tools\RedMon) и запустить setup.exe из него. В файлах readme.txt и redmon.hlp находится подробная информация по установке и стандартной настройке redmon.
Регистрация Active_BMP осуществляется распаковкой файлов в каталог (%SystemDrive%\Tools\OLE\ActiveBMP) и запуском из этого каталога "regsvr32 Bmp_1c.ocx".
В дальнейшем каталоги с RedMon и Active_BMP нам не понадобятся, так что про них смело можно забыть (но не удалять совсем с диска :-) ).
Postie устанавливается простым извлечение его в нужный каталог (%SystemDrive%\Tools\Postie).
Теперь нам необходимо настроить принтер. Для этого из папки принтеры выбираем "Добавить". Тип принтера - локальный, отказываемся от автоматического поиска и добавляем порт: тип порта: Redirect Port, имя: RPT1. На следующем шаге выбираем модель PS-принтера (в RedMon рекомендуется Apple LaserWriter II NT или Apple Color LaserWriter 12/600 если вы хотите цветное изображение). Я использовал Apple LaserWriter II NT, т.к. мне нужно было черно-белое изображение. Сразу после этого я переименовал принтер в более соответствующее его функциям название: "Send EMail". Теперь нам необходимо настроить порт. Для этого открываем настройки принтера, ищем страницу "Порты" и жмем кнопку "Конфигурировать порт".
Дальнейшие настройки отличаются от стандартных, описанных в redmon.hlp:
* "Redirect this port to the program:"="cscript.exe" (без кавычек, естественно),
* "Arguments for this programs are:"="Наш\Скрипт\С\Полным\Путем.js" (%SystemDrive%\Tools\gs\PrnUser.js) (в кавычках, если путь содержит пробелы),
* "Output:"="Program handles output"
* "Run:"="Hidden"
* "Run as user" снята (у меня вызывало ошибку, если установлено)
* "Shut down delay:"="300"
Кнопка "Log file" нужна во время отладки всей системы отправки почты, хотя можно оставить запись лога и в рабочем режиме - все равно он перезаписывается, а не накапливается.
Соглашения о настройках
Скрипт, который мы указали в настройках порта, принимает данные с принтера и согласно настройкам, сохраненным из внешней программы (1С или другой), отправляет его по почте как рисунок (в скрипте предусмотрены проверки на корректность значений). Поскольку единственное, что мы можем получить из печатного задания - это имя пользователя (%REDMON_USER%), то с каждым пользователем мы будем работать в его каталоге, при этом одновременная печать 2-х заданий от одного пользователя невозможна. (Если вам удастся передать в скрипт другую информацию из 1С, например: уникальный идентификатор задания или имя файла - сообщите мне). У меня используется самописный компонент SysTools для получения профиля пользователя по его имени. Поскольку он еще только в альфа-версии выкладывать не буду, если кому нужен - вышлю по почте. Итак, предположим, у нас есть каталог, в котором хранятся данные пользователей (%MyProfiles%\User1, %MyProfiles%\User2, ...). К личном каталоге пользователя мы будем создавать подкаталог SendMail для отправки почты.
Временные файлы для работы мы будем хранить во временном каталоге (переменная %TEMP% для системы, поскольку запускаться скрипт будет от имени Local service).
Все остальные настройки и пути к файлам заданы в переменных вначале скрипта - их можно (и нужно) изменить для себя.
Файл, в котором 1С сохраняет настройки называется %UserProfile%\SendMail\mail.ini и имеет следующую структуру: каждая строка - поле=значение, кроме поля BODY, которое обязательно идет последним и может быть растянуто на несколько строк.
Пишем программу
В этом разделе будут показаны и пояснены тексты нескольких модулей, входящих в демонстрационную конфигурацию. Скрипт на языке JavaScript здесь описан не будет, поскольку несоответствует тематике раздела. Надеюсь - комментариев внутри скрипта будет достаточно для пожелавших разобраться в его работе.
Поскольку в 1С не предусмотрена модульная организация программ, то сложные вещи я обычно строю по такой схеме: законченная функциональность - во внешней обработке, параметры в которую передаются через СписокЗначений, и вспомагательная процедура/функция в глобальном модуле, которая этот список заполняет из параметров. Так было сделано и здесь.
Функция запроса параметров отправки почты (кому, от кого, тема и пр.) в глобальном модуле выглядит так:
[pagebreak]
В этой функции переданные параметры записываются в список значений, который передается внешней обработке ПараметрыОтправкиПочты.ert в подкаталоге ExtForms каталога базы данных. Запрос параметров имеет вид:
Возвращенные значения записываются в файл, параметры которого (путь, имя, и т.п.) заданы в конце глобального модуля.
В самой обработке ничего интересного нет: чтение параметров из списка, отображение и проверка параметров при нажатии кнопки Отправить. Если не заданы необходимые параметры (ОтКого, Кому) или адреса E-Mail указаны не правильно - будет выдано сообщение и форма не закроется.
Рассмотрим параметры вызова даной функции:
* Заголовок - заголовок формы, на рисунке - синяя надпись "Тестовый документ №3 от 30.04.04";
* Кому, ОтКого, Копия - E-mail или список E-Mail`ов (через ",");
* Тема, Сообщение - соответствующие параметры письма;
* Запретить - какие поля запрещены для редактирования (на рисунке - поле Тема);
* БезФормы - если 1: форма не отображается и при правильных параметрах письмо отправится автоматически.
Следующая функция вызывает эту и если все прошло успешно - вызывает внешнюю обработку для небольшой предподготовки таблицы при печати и отправки ее:
Здесь уже большая функциональность перенесена на обработку. Она (обработка) вообще не открывается, только выполняет некоторые действия. Рассмортим параметры:
* Таб - Значение типа "Таблица", которую и будем печатать;
* Заголовок, Кому, ОтКого, Копия, Тема, Сообщение, Запретить, БезФормы - просто передаются в функцию глПараметрыОтправкиПочты и подробно рассмотрены в ней;
* Масштаб - масштаб печати таблицы. Если не задан - автомасштаб по ширине.
В обработке всего 2 процедуры: ПроверитьПараметр для проверки корректности переданных значений и ПриОткрытии, в которой подготавливается и печатается таблица. Выглядит весь модуль обработки так:
Код: (1c)
Вот практически и все, что касается программы в 1С. Некоторые сервисные функции, которые не были описаны здесь, можно посмотреть в примере конфигурации. Таким образом ничего сложного здесь нет. Больше сложностей вызывает настройка системы для правильной работы. Выглядит отправленный документ приблизительно так:
Замечания в процессе эксплуатации
Сразу скажу - в боевом режиме система работает недолго (с 15.04.2004), но даже за это время были замечены некоторые "особенности" работы:
* Формат tiff оказался не таким уж стандартным. Потому пришлось его заменить на png. Сделать это нужно в двух местах: в суффиксе исходящего файла в скрипте (чтобы Postie правильно поставил его Content-Type:) и в настройках GS (параметр -sDEVICE=pngmono собственно и задает выходной формат файла). Можно заменить и на еще более стандартный jpeg, но при этом сильно вырастет размер файла. К сожалению gif уже не поддерживается в текущей версии GS (как я понял из документации - из-за возможных проблем с лицензированием этого формата). Можно добится поддержки gif, выдрав ее из исходников предыдущих версий и перекомпилировав текущую, но я пока этого не делал. Возникла мысль передавать в настроечном файле (%UserProfile%\SendMail\mail.ini) параметры, как отправлять изображения (jpeg, tif, png; color/mono; ...) и в скрипте динамически менять.
* PostScript шрифты, идущие в поставке GS, не так хорошо "вылизаны", как TrueType. Потому русские буквы выглядят жирнее англиских. Пока жалоб на это не было :-)
* В новой версии Postie у меня почему-то не работает ключ -bcc (ошибки не выдает, но и не отправляет по указанным адресам). Так и не разобрался - пришлось откатится на старую версию (POSTIE Version 4)
* Хотя ломать ничего и не пришлось, но все-таки мы нарушаем лицензию Postie, который "free for personal use". Может кто знает другую программу отправки почты из коммандной строки?
Благодарности
Моему любимому директору - за неуемный ум и новые интересные задания.
Вадиму Ханасюку - за неопубликованную здесь, но полезную компоненту SysInfo (получение каталога профиля пользователя по имени) и помощь в поиске нужного софта.
Всем сотрудникам, которые не мешали работать.
Когда пишут про сокетное программирование, конечно же, подразумевается TCP/IP. Вот тут мы и отступим от правил, поговорим про IPX/SPX.
А все начинается как всегда, а именно, с инициализации WINSOCK библиотеки, обработка ошибок упускается для упрощения кода:
Ну и собственно сокет, тут я дам только кусок, отличный от нормальных сокетов:
В остальном, работа с SPX идентична работе TCP сокетов, все выше написанное справедливо и для IPX сокетов, только не забудьте, что последние нельзя законнектить. Открываются они следующим образом:
Передача данных происходит следующим образом:
Дальше я дам несколько, на мой взгляд, полезных вещей при работе с данными протоколами.
Приём заголовка пакета данных
В некоторых случаях нам нужен больший контроль над IPX/SPX пакетами, и для того, чтоб наше приложение могло управлять, изменять заголовок IPX/SPX, нужно вызвать следующий код:
А вот вам и структура заголовка SPX пакета, взято из WSIPX.H
В данном режиме Windows Sockets не будут сегментировать пакеты, ограничивая их размер до максимально допустимого протоколом.
Широковещательные пакеты
Широковещательные пакеты могут быть использованы, например, в качестве средства "принюхивания" клиента к серверу, это в случае, когда мы знаем порт нужного нам сервера, но не знаем его сетевого адресса.
Установка, изменение DataStreamType в заголовке SPX пакета
Это может быть использовано в собственных целях, например, для искусственной сегментации своих данных для совместимости разных реализаций протокола. Например, некоторые реализации протокола для DOS поддерживают максимальную длину пакета в 512 байт либо принудительно ограниченную сетевыми модулями, вот они и используют DataStreamType, чтобы указать последнюю порцию данных.
Устанавливается следующим образом:
Причём данную установку надо делать перед каждым send. Работает всё ОК, когда посылаются данные ДОС клиенту, ну а при приеме пакетов WIN клиентом от ДОС клиент DataStreamType не хочет устанавливатся, т.е. мы не получим установленное значение DataStreamType ДОС клиентом. Я обошел данную проблему при помощи следующего куска кода:
Данный метод хорош еще тем, что WIN клиент может принять один пакет вместо нескольких, посланных ДОС клиентом.
Другие специфические расширения для данных протоколов, используемые getsockopt/setsockopt, можно найти в файле wsnwlink.h, но, как упоминалось выше, данные расширения - для NT-платформ и могут не работать для других реализаций данных протоколов.
Очень часто при работе с запросами приходится менять SQL этого запроса. Например, при изменении порядка сортировки или при необходимости изменения фильтра, прописанного в where. Сделать это стандартными средствами можно, но довольно муторно, т.к. весь запрос хранится в одном месте (для TQuery и её потомков это свойство Sql). При желании изменить, например, количество или порядок следования полей в order by, нужно программно найти этот order by, написать свой, вставить его вместо старого и т.д. Для меня, честно говоря, загадка, зачем борланд пошла по такому ущербному пути: стандарт ANSI SQL-92, с которым (и только с которым!) работает Bde, подразумевает достаточно жёсткий синтаксис запроса, вполне допускающий обработку на уровне отдельных секций. Сегодня я хотел бы поделиться одним из вариантов реализации потомка TQuery, в котором задачи такого класса будут решаться на лету одной строчкой кода.
Смысл очень простой. Для того, чтобы уйти от ручной обработки текста sql-запроса, надо просто разбить его на стандартные секции. И менять их по отдельности. Ведь любой select-запрос имеет достаточно строгий синтаксис, состоя из определённого количества заранее известных секций (clauses), задаваемых в строго определённой последовательности. Рассмотрим этот синтаксис поподробнее на примере СУБД Interbase:
Как видим, обязательными являются две секции: SELECT и FROM.
Ещё восемь секций опциональны. Наша задача сводится к тому, чтобы значение каждой секции устанавливать отдельно, при необходимости переоткрывая запрос. Можно было бы плясать от стандартного свойства Sql, выделять нужную секцию, менять и вставлять обратно. Но зачем это, если можно сам Sql формировать на основе заданных секций? Конечно, этот подход имеет тот минус, что накрывается прямая установка Sql одной строкой, что может быть неудобно при хранении запроса в реестре, базе и т.д., но и это, при желании, можно побороть.
В общем-то, ничего заумного, реализация до смешного проста, но при использовании в проектах позволяет сэкономить массу времени и значительно увеличить читабельность кода.
Чтобы не писать отдельное свойство на каждую секцию, задавать их будем в виде массива строк. Для работы с этим массивом нам понадобятся индексы, которые тоже лучше определить заранее:
Определим тип нашего индексированного свойства и определим сам класс:
Свойство fClauses будет содержать все секции запроса, на основе которых и будет формироваться сам запрос. Занимается этим процедура UpdateSql. Ну а методы GetClause/SetClause стандартны, и служат для установки/чтения значений отдельных секций. Поглядим на сам код:
Всё достаточно прозрачно, отмечу лишь, что метод UpdateSql добавляет в текст Sql-запроса только те секции, для которых установлено начение, и переоткрывает квери, если она была открыта на момент изменения секции. Здесь есть мелкие недоработки, например, не проверяется выход индекса за пределы допустимых значений, я просто не хотел мусорить исходный код вещами, которые очевидны и принципиально не важны. Можно было бы привести код регистрации компонента в палире дельфи, но это также тривиально. Приведу лучше исходник тестового проекта, в котором используется этот квери. В этом проекте на форме находятся компоненты DbGrid1, подключенные к источнику данных DataSource1, динамически создаётся экземпляр TDynQuery, открывающий таблицу "biolife" из DbDemos, входящую в стандартную поставку Delphi. После этого изменяется по кликанью на заголовке (Title) грида меняется сортировка таблицы:
В состав версий Windows Server 2003 Service Pack 1 (SP1) и Windows XP SP2 входит размещаемый в системе брандмауэр Windows Firewall, гораздо более эффективный, чем его предшественник, Internet Connection Firewall (ICF). В отличие от ICF, который поставлялся с Windows 2003 и XP, Windows Firewall подходит для развертывания в масштабах предприятия благодаря возможности управлять политиками брандмауэра из единого центра, нескольким интерфейсам настройки и множеству новых функций безопасности. В этой статье я расскажу о том, как лучше подойти к планированию, настройке конфигурации и применению брандмауэра на предприятии.
Подготовительный этап
Важно помнить о выбираемом по умолчанию режиме Windows Firewall. В XP SP2 брандмауэр Windows Firewall активен по умолчанию, а в Windows 2003 SP1 его стандартное состояние — выключенное, если только SP1 не развертывается на системе с запущенным ICF. В этом случае режим брандмауэра не изменяется. Если пакет SP1 размещен на установочном компакт-диске с операционной системой, то Windows Firewall всегда активизируется в режиме включения по умолчанию, когда в процессе установки происходит соединение со службой Windows Update для получения последних обновлений. Поэтому, если развернуть XP SP2, не уделяя должного внимания настройке Windows Firewall, и опрометчиво принять стандартные параметры, можно лишиться доступа к инструментарию для дистанционного управления настольными компьютером. Если администратор не готов использовать Windows Firewall или работает с брандмауэром независимого поставщика, то можно спокойно отключить Windows Firewall и развернуть SP2 без него.
Если для аутентификации пользователей применяется Active Directory (AD), а настольные компьютеры являются членами домена с соответствующими учетными записями, то самый простой способ настроить Windows Firewall — задействовать объекты групповой политики Group Policy Object (GPO). После установки XP SP2 на настольных компьютерах параметры брандмауэра настраиваются при перезагрузке машин и каждый раз при обновлении политики. Если используется продукт управления каталогами независимого поставщика или на предприятии имеются не управляемые администратором компьютеры, которые не входят в состав домена AD, то для настройки Windows Firewall вместо объектов GPO можно использовать пакетные файлы или сценарии. Настроить конфигурацию брандмауэра можно и в ходе автоматизированных или интерактивных процедур установки XP SP2.
Настройка Windows Firewall
Приступая к настройке конфигурации Windows Firewall, следует помнить об основных характеристиках брандмауэра:
* Windows Firewall не выполняет фильтрации исходящего трафика, то есть не ограничивает его. Если предприятие нуждается в фильтрации исходящего трафика, следует использовать брандмауэр независимого поставщика.
* Возможности Windows Firewall шире, чем у ICF: в Windows Firewall можно настраивать исключения, чтобы разрешить входящий трафик с учетом не только транспортного протокола (TCP или UDP) и номера порта, но и приложения (например, одноранговой программы обмена файлами).
* Можно уточнить исключения по области действия, то есть разрешить соединения от всех компьютеров, от компьютеров в указанных подсетях, только из локальной подсети или от компьютеров с определенными IP-адресами.
* Windows Firewall активизируется по умолчанию для всех сетевых соединений, но для каждого сетевого интерфейса можно настроить разные правила брандмауэра.
* Настраивать Windows Firewall может только администратор. Если управление брандмауэром централизованное (через AD или GPO), то можно лишить локальных администраторов права изменять параметры.
* С помощью Windows Firewall можно ограничить трафик IPv4 и IPv6.
* Windows Firewall располагает двумя профилями, Domain и Standard. Профиль Domain активизируется, если компьютер подключен к сети с контроллерами домена (DC), членом которого он является. Профиль Standard применяется, если компьютер подключен к другой сети, например общедоступной беспроводной сети или скоростному соединению в номере отеля. Рекомендуется настроить профили Domain и Standard для серверов и настольных компьютеров, а также для ноутбуков.
Прежде чем настраивать конфигурацию Windows Firewall, следует провести инвентаризацию приложений на рабочих станциях и серверах, которые могут организовать оконечные точки соединений; портов, используемых приложениями и операционной системой; источников трафика для каждой хост-машины с Windows Firewall. Для мобильных систем, таких как ноутбуки, в ходе инвентаризации следует учитывать различную природу сетевого трафика при подключении системы к корпоративной сети с контроллерами домена и активным профилем Domain брандмауэра Windows Firewall, в отличие от системы, подключенной к общедоступной сети с активным профилем Standard. Нужно всегда выбирать профиль Standard и разрешать только необходимый входящий трафик через брандмауэр, чтобы свести к минимуму угрозу для подключенных к сети мобильных машин.
В Windows Firewall определены четыре встроенные административные службы, представляющие типовые исключения для любой политики брандмауэра: File and Print, Remote Administration, Remote Desktop и Universal Plug and Play (UpnP). Remote Administration обеспечивает управление системой через типовые административные интерфейсы и подсистемы, такие как Windows Management Instrumentation (WMI) и вызов удаленных процедур (remote procedure call — RPC). Remote Desktop позволяет подключиться к одной системе с другой через RDP и используется при запросе на поддержку Remote Assistance. Администраторы часто применяют Remote Desktop для подключения к удаленным серверам, которыми они управляют. Протокол UpnP обеспечивает корректную работу устройств, которые обнаруживают и динамически настраивают друг друга с учетом активных приложений и служб. Типовой пример использования UpnP — взаимодействие XP с UPnP-совместимым широкополосным маршрутизатором при запуске MSN Messenger, в результате которого аудио и видеосоединения устанавливаются через встроенный брандмауэр маршрутизатора.
При настройке профилей Domain и Standard брандмауэра Windows Firewall рекомендуется задать исключения для конкретных приложений. Благодаря исключению приложение сможет установить любые нужные оконечные точки и принимать через них трафик. Существуют две веские причины, чтобы назначать исключения для приложений. Во-первых, проще определить и описать приложения, нежели отдельные используемые ими порты, особенно потому, что порты, используемые многими приложениями, документированы не полностью или назначаются динамически. Во-вторых, многие приложения, в том числе несанкционированные, используют те же порты, что и легальные приложения; указав приложения вместо портов, можно лишить неутвержденные приложения возможности установить оконечные точки соединения. Всегда, когда возможно, рекомендуется не делать исключений для профиля Standard и отклонять все входящие соединения.
Windows Firewall для серверов
Microsoft не дает специальных рекомендаций по настройке Windows Firewall для серверов. По умолчанию брандмауэр блокирован, если только пакет Windows Server 2003 SP1 не устанавливается на системе с активным ICF, однако брандмауэром можно воспользоваться для укрепления безопасности сервера Windows 2003. Применяя брандмауэр на сервере, следует помнить, что серверы по своей природе служат для размещения приложений и служб, с которыми устанавливают соединения приложения и службы на других серверах, настольных компьютерах и ноутбуках. Прежде чем активизировать Windows Firewall на сервере, следует продумать его конфигурацию.
Для некоторых серверов настроить Windows Firewall не составляет труда. Например, неуправляемому автономному Web-серверу в демилитаризованной зоне (DMZ) требуется принимать только входящие соединения через порт 80/TCP (HTTP) или 443/TCP (HTTP Secure-HTTPS), если установлен сертификат и активизирована защита SSL (Secure Sockets Layer).
На сервере с двумя или несколькими интерфейсами, из которых один интерфейс подключен к Internet, а другие — к корпоративным сетям, можно активизировать Windows Firewall, а затем отключить его на всех интерфейсах, кроме Internet, и настроить брандмауэр, разрешив только необходимые входящие соединения на интерфейсе Internet.
В простых файл- и принт-серверах корпоративной сети, входящих в состав домена, можно активизировать Windows Firewall и задействовать встроенную службу File and Printer Sharing для подключения пользователей к этим серверам. Можно также использовать Windows Firewall для защиты сервера, службы которого прослушивают известные порты, например сервера базы данных Microsoft SQL Server 2000. Для этого следует разрешить в брандмауэре трафик через соответствующие порты.
Настроить Windows Firewall на сервере можно с помощью мастера Security Configuration Wizard (SCW). SCW, факультативный компонент Windows 2003 SP1, уменьшает поверхность атаки сервера, задавая роль или роли для сервера. SCW содержит ролевую информацию для DC и других серверов инфраструктуры; он блокирует необязательные службы и ограничивает входящий трафик через Windows Firewall.
Windows Firewall не следует размещать на некоторых серверах, в том числе контроллерах домена AD и некоторых серверах приложений, которые прослушивают большой диапазон портов или используют динамические порты, таких как серверы Exchange Server 2003. В последнем случае можно развернуть Windows Firewall, если серверы и клиенты, подключенные к серверам Exchange, входят в состав домена. Брандмауэр настраивается на передачу аутентифицированного трафика IPsec в обход Windows Firewall (этот прием будет рассмотрен ниже), а клиенты настраиваются на использование IPsec.
На многих серверах, в том числе таких, на которых выполняется множество приложений и служб, необходима выборочная настройка Windows Firewall. Требуется указать порты, прослушиваемые приложениями и службами, отбросить необязательные порты и настроить Windows Firewall для необходимых портов. Определить открытые порты и прослушивающие их приложения и службы можно с помощью команды Netstat (netstat.exe), усовершенствованной в последних пакетах обновлений. Указав в командной строке
netstat -a -b
можно увидеть все открытые порты TCP (независимо от состояния) и порты UDP в системе, идентификатор процесса (PID) для каждого активного соединения (образец выходной информации приведен на экране 1). Как уже упоминалось, Windows Firewall можно настроить на разрешение входящего трафика для поименованных приложений, независимо от прослушиваемых ими портов. Единственный недостаток Netstat заключается в том, что команда выдает лишь «моментальный снимок» системы. С ее помощью нельзя идентифицировать приложения, службы и их порты, если эти приложения неактивны в момент запуска Netstat. Чтобы получить достоверную картину, можно сделать несколько снимков в разное время.
Более простая альтернатива Netstat — инструмент Port Reporter, который можно получить по адресу http://support.microsoft.com/?kbid=837243. Программа устанавливается как служба и регистрирует сетевую активность, в том числе подробные сведения об активных программах и службах, и даже учетную запись пользователя, с которой работает приложение или служба. С помощью сопутствующего инструмента Port Reporter Parser (http://www.support.microsoft.com/?kbid=884289) можно извлечь данные из журналов, генерируемых Port Reporter. Правильно настроив и запуская Port Reporter в течение определенного промежутка времени, можно идентифицировать приложения, которые открывают порты сервера и должны быть настроены в Windows Firewall по приложениям или отдельным портам. Длительность применения Port Reporter зависит от приложений и особенностей работы пользователей. Предостережение: Port Reporter может слегка снизить производительность системы, а журналы очень велики. Файлы журналов следует записывать на быстрый диск с достаточным количеством свободного места.
Рекомендуется активизировать функции протоколирования Windows Firewall после завершения настройки серверов. Можно записывать сведения об успешных и неудачных соединениях. Если после настройки и активизации Windows Firewall возникают проблемы при выполнении некоторых приложений, то с помощью информации из журналов можно определить дополнительные порты, которые следует открыть. Для настройки функций протоколирования следует открыть панель управления, запустить утилиту Windows Firewall, щелкнуть на вкладке Advanced, а затем на кнопке Settings в разделе Security Logging. Откроется диалоговое окно Log Settings (экран 2). Журнал Windows Firewall следует сохранять на быстром диске, а максимальный размер журнала должен быть достаточным для записи необходимой информации в течение длительного времени. Проверив корректность настройки Windows Firewall, можно отключить протоколирование.
Экран 2. Настройка протоколирования в Windows Firewall
Windows Firewall можно настроить и таким образом, чтобы передавать аутентифицированный трафик IPsec от доверенных машин в обход брандмауэра. В этот режим можно перевести серверы и рабочие станции, чтобы они пропускали только необходимый клиентский трафик, одновременно обеспечивая неограниченный доступ для администрирования рабочих станций и серверов.
Полная готовность
После завершения подготовки к развертыванию Windows Firewall рекомендуется активизировать брандмауэр сначала для пилотной группы пользователей. Если в процессе пробного развертывания возникнут трудности, следует активизировать режим протоколирования; в журналах содержится информация, которая поможет определить причину проблем. После устранения неполадок и успешного развертывания Windows Firewall брандмауэр станет неоценимым компонентом системы безопасности предприятия.
Развитие сети Internet обострило и в очередной раз выявило проблемы, возникающие при безопасном подключении к Internet корпоративной сети. Связано это в первую очередь с тем, что сеть Internet разрабатывалась как открытая, предназначенная для всех, система. Вопросам безопасности при проектировании стека протоколов TCP/IP, являющихся основой Internet, уделялось очень мало внимания.
Для устранения проблем, связанных с безопасностью было разработано много различных решений, самым известным и распространенным из которых является применение межсетевых экранов (firewall). Их использование - это первый шаг, который должна сделать любая организация, подключающая свою корпоративную сеть к Internet. Первый, но далеко не последний. Одним межсетевым экраном для построения надежного и защищенного соединения с Internet не обойтись. Необходимо реализовать целый ряд технических и организационных мер, чтобы обеспечить приемлемый уровень защищенности корпоративных ресурсов от несанкционированного доступа.
Межсетевые экраны реализуют механизмы контроля доступа из внешней сети к внутренней путем фильтрации всего входящего и исходящего трафика, пропуская только авторизованные данные. Все межсетевые экраны функционируют на основе информации, получаемой от различных уровней эталонной модели ISO/OSI, и чем выше уровень OSI, на основе которого построен межсетевой экран, тем выше уровень защиты, им обеспечиваемый. Существует три основных типа межсетевых экранов - пакетный фильтр (packet filtering), шлюз на сеансовом уровне (circuit-level gateway) и шлюз на прикладном уровне (application-level gateway). Очень немногие существующие межсетевые экраны могут быть однозначно отнесены к одному из названных типов. Как правило, МСЭ совмещает в себе функции двух или трех типов. Кроме того, недавно появилась новая технология построения межсетевых экранов, объединяющая в себе положительные свойства всех трех вышеназванных типов. Эта технология была названа Stateful Inspection. И в настоящий момент практически все предлагаемые на рынке межсетевые экраны анонсируются, как относящиеся к этой категории (Stateful Inspection Firewall).
На российском рынке средств защиты информации сейчас сложилась такая ситуация, что многие поставщики межсетевых экранов (МСЭ), предлагая свой продукт, утверждают, что он один решит все проблемы заказчика, обеспечив надежную защиту всех ресурсов корпоративной сети. Однако, это не так. И не потому что предлагаемый межсетевой экран не обеспечивает необходимых защитных механизмов (правильный выбор межсетевого экрана - это тема отдельной статьи), а потому что самой технологии присущи определенные недостатки.
В данной статье я не буду говорить о достоинствах названных типов межсетевых экранов (этому посвящено немало публикаций), а основное внимание уделю недостаткам, присущим всей технологии в целом.
Отсутствие защиты от авторизованных пользователей
Наиболее очевидный недостаток межсетевых экранов - невозможность защиты от пользователей, знающих идентификатор и пароль для доступа в защищаемый сегмент корпоративной сети. Межсетевой экран может ограничить доступ посторонних лиц к ресурсам, но он не может запретить авторизованному пользователю скопировать ценную информацию или изменить какие-либо параметры финансовых документов, к которым этот пользователь имеет доступ. А по статистике не менее 70% всех угроз безопасности исходит со стороны сотрудников организации. Поэтому, даже если межсетевой экран защитит от внешних нарушителей, то останутся нарушители внутренние, неподвластные МСЭ.
Для устранения этого недостатка нужны новые подходы и технологии. Например, использование систем обнаружения атак (intrusion detection systems). Данные средства, ярким примером которых является система RealSecure, обнаруживают и блокируют несанкционированную деятельность в сети независимо от того, кто ее реализует - авторизованный пользователь (в т.ч. и администратор) или злоумышленник. Такие средства могут работать как самостоятельно, так и совместно с межсетевым экраном. Например, система RealSecure обладает возможностью автоматической реконфигурации межсетевого экрана CheckPoint Firewall-1 путем изменения правил, запрещая тем самым доступ к ресурсам корпоративной сети с атакуемого узла.
Отсутствие защиты новых сетевых сервисов
Вторым недостатком межсетевых экранов можно назвать невозможность защиты новых сетевых сервисов. Как правило, МСЭ разграничивают доступ по широко распространенным протоколам, таким как HTTP, Telnet, SMTP, FTP и ряд других. Реализуется это при помощи при помощи механизма "посредников" (proxy), обеспечивающих контроль трафика, передаваемого по этим протоколам или при помощи указанных сервисов. И хотя число таких "посредников" достаточно велико (например, для МСЭ CyberGuard Firewall их реализовано более двухсот), они существуют не для всех новых протоколов и сервисов. И хотя эта проблема не столь остра (многие пользователи используют не более десятка протоколов и сервисов), иногда она создает определенные неудобства.
Многие производители межсетевых экранов пытаются решить указанную проблему, но удается это далеко не всем. Некоторые производители создают proxy для новых протоколов и сервисов, но всегда существует временной интервал от нескольких дней до нескольких месяцев между появлением протокола и соответствующего ему proxy. Другие разработчики межсетевых экранов предлагают средства для написания своих proxy (например, компания CyberGuard Corporation поставляет вместе со своим МСЭ подсистему ProxyWriter позволяющую создавать proxy для специфичных или новых протоколов и сервисов). В этом случае необходима высокая квалификация и время для написания эффективного proxy, учитывающего специфику нового сервиса и протокола. Аналогичная возможность существует и у межсетевого экрана CheckPoint Firewall-1, который включает в себя мощный язык INSPECT, позволяющий описывать различные правила фильтрации трафика.
Ограничение функциональности сетевых сервисов
Некоторые корпоративные сети используют топологию, которая трудно "уживается" с межсетевым экраном, или используют некоторые сервисы (например, NFS) таким образом, что применение МСЭ требует существенной перестройки всей сетевой инфраструктуры. В такой ситуации относительные затраты на приобретение и настройку межсетевого экрана могут быть сравнимы с ущербом, связанным с отсутствием МСЭ.
Решить данную проблему можно только путем правильного проектирования топологии сети на начальном этапе создания корпоративной информационной системы. Это позволит не только снизить последующие материальные затраты на приобретение средств защиты информации, но и эффективно встроить межсетевые экраны в существующую технологию обработки информации.
Если сеть уже спроектирована и функционирует, то, возможно, стоит подумать о применении вместо межсетевого экрана какого-либо другого решения, например, системы обнаружения атак.
Потенциальная опасность обхода межсетевого экрана
Межсетевые экраны не могут защитить ресурсы корпоративной сети в случае неконтролируемого использования в ней модемов. Доступ в сеть через модем по протоколам SLIP или PPP в обход межсетевого экрана делает сеть практически незащищенной. Достаточно распространена ситуация, когда сотрудники какой-либо организации, находясь дома, при помощи программ удаленного доступа типа pcAnywhere или по протоколу Telnet обращаются к данным или программам на своем рабочем компьютере или через него получают доступ в Internet. Говорить о безопасности в такой ситуации просто не приходится, даже в случае эффективной настройки межсетевого экрана.
Для решения этой задачи необходимо строго контролировать все имеющиеся в корпоративной сети модемы и программное обеспечение удаленного доступа. Для этих целей возможно применение как организационных, так и технических мер. Например, использование систем разграничения доступа, в т.ч. и к COM-портам (например, Secret Net) или систем анализа защищенности (например, Internet Scanner и System Scanner). Правильно разработанная политика безопасности обеспечит дополнительный уровень защиты корпоративной сети, установит ответственность за нарушение правил работы в Internet и т.п. Кроме того, должным образом сформированная политика безопасности позволит снизить вероятность несанкционированного использования модемов и иных устройств и программ для осуществления удаленного доступа.
Потенциально опасные возможности
Новые возможности, которые появились недавно, и которые облегчают жизнь пользователям Internet, разрабатывались практически без учета требований безопасности. Например, WWW, Java, ActiveX и другие сервисы, ориентированные на работу с данными. Они являются потенциально опасными, так как могут содержать в себе враждебные инструкции, нарушающие установленную политику безопасности. И если операции по протоколу HTTP могут достаточно эффективно контролироваться межсетевым экраном, то защиты от "мобильного" кода Java и ActiveX практически нет. Доступ такого кода в защищаемую сеть либо полностью разрешается, либо полностью запрещается. И, несмотря на заявления разработчиков межсетевых экранов о контроле апплетов Java, сценариев JavaScript и т.п., на самом деле враждебный код может попасть в защищаемую зону даже в случае полного их блокирования в настройках межсетевого экрана.
Защита от таких полезных, но потенциально опасных возможностей должна решаться в каждом конкретном случае по-своему. Можно проанализировать необходимость использования новой возможности и совсем отказаться от нее; а можно использовать специализированные защитные средства, например, систему SurfinShield компании Finjan или SafeGate компании Security-7 Software, обеспечивающие безопасность сети от враждебного "мобильного" кода.
Вирусы и атаки
Практически ни один межсетевой экран не имеет встроенных механизмов защиты от вирусов и, в общем случае, от атак. Как правило, эта возможность реализуется путем присоединения к МСЭ дополнительных модулей или программ третьих разработчиков (например, система антивирусной защиты ViruSafe для МСЭ CyberGuard Firewall или система обнаружения атак RealSecure для МСЭ CheckPoint Firewall-1). Использование нестандартных архиваторов или форматов передаваемых данных, а также шифрование трафика, сводит всю антивирусную защиту "на нет". Как можно защититься от вирусов или атак, если они проходят через межсетевой экран в зашифрованном виде и расшифровываются только на оконечных устройствах клиентов?
В таком случае лучше перестраховаться и запретить прохождение через межсетевой экран данных в неизвестном формате. Для контроля содержимого зашифрованных данных в настоящий момент ничего предложить нельзя. В этом случае остается надеяться, что защита от вирусов и атак осуществляется на оконечных устройствах. Например, при помощи системных агентов системы RealSecure.
Снижение производительности
Несмотря на то, что подсоединение к сетям общего пользования или выход из корпоративной сети осуществляется по низкоскоростным каналам (как правило, при помощи dialup-доступа на скорости до 56 Кбит или использование выделенных линий до 256 Кбит), встречаются варианты подключения по каналам с пропускной способностью в несколько сотен мегабит и выше (ATM, T1, E3 и т.п.). В таких случаях межсетевые экраны являются самым узким местом сети, снижая ее пропускную способность. В некоторых случаях приходится анализировать не только заголовок (как это делают пакетные фильтры), но и содержание каждого пакета ("proxy"), а это существенно снижает производительность межсетевого экрана. Для сетей с напряженным трафиком использование межсетевых экранов становится нецелесообразным.
В таких случаях на первое место надо ставить обнаружение атак и реагирование на них, а блокировать трафик необходимо только в случае возникновения непосредственной угрозы. Тем более что некоторые средства обнаружения атак (например, RealSecure) содержат возможность автоматической реконфигурации межсетевых экранов.
Компромисс между типами межсетевых экранов - более высокая гибкость в пакетных фильтрах против большей степени защищенности и отличной управляемости в шлюзах прикладного уровня. Хотя на первый взгляд кажется, что пакетные фильтры должны быть быстрее, потому что они проще и обрабатывают только заголовки пакетов, не затрагивая их содержимое, это не всегда является истиной. Многие межсетевые экраны, построенные на основе прикладного шлюза, показывают более высокие скоростные характеристики, чем маршрутизаторы, и представляют собой лучший выбор для управления доступом при Ethernet-скоростях (10 Мбит/сек).
Отсутствие контроля своей конфигурации
Даже если все описанные выше проблемы решены, остается опасность, что межсетевой экран неправильно сконфигурирован. Приходится сталкиваться с ситуацией, когда приобретается межсетевой экран, первоначальная конфигурация которого осуществляется специалистами поставщика и тем самым, как правило, обеспечивается высокий уровень защищенности корпоративных ресурсов. Однако, с течением времени, ситуация меняется, - сотрудники хотят получить доступ к новым ресурсам Internet, работать с новым сервисами (RealAudio, VDOLive и т.п.) и т.п. Таким образом, постепенно защита, реализуемая межсетевым экраном, становится дырявой как решето, и огромное число правил, добавленных администратором, сводятся к одному: "разрешено все и всем".
В этом случае помогут средства анализа защищенности. Средства анализа защищенности могут тестировать межсетевой экран как на сетевом уровне (например, подверженность атакам типа "отказ в обслуживании"), так и на уровне операционной системы (например, права доступа к конфигурационным файлам межсетевого экрана). Кроме того, при сканировании возможна реализация атак типа "подбор пароля", позволяющие обнаружить "слабые" пароли или пароли, установленные производителем по умолчанию. К средствам, проводящим такие проверки, можно отнести, например, систему Internet Scanner американской компании Internet Security Systems (ISS).
Заключение
Ознакомившись с описанными проблемами, многие могут сделать вывод, что межсетевые экраны не могут обеспечить защиту корпоративной сети от несанкционированного вмешательства. Это не так. Межсетевые экраны являются необходимым, но явно недостаточным средством обеспечения информационной безопасности. Они обеспечивают лишь первую линию обороны. Не стоит покупать межсетевой экран только потому, что он признан лучшим по результатам независимых испытаний. При выборе и приобретении межсетевых экранов необходимо тщательно все продумать и проанализировать. В некоторых случаях достаточно установить простейший пакетный фильтр, свободно распространяемый в сети Internet или поставляемый вместе с операционной системой, например squid. В других случаях межсетевой экран необходим, но применять его надо совместно с другими средствами обеспечения информационной безопасности.
Проблемы соединения волоконных световодов приобрели особую актуальность при разработке технологии их промышленного применения. Выбор способа сращивания зависит от условий применения волоконной оптики.
Очевидно, что значительные преимущества при использовании волоконно-оптических технологий в телекоммуникационной отрасли, связанные с улучшением целого ряда технико-экономических показателей (возрастанием скорости передачи информации, увеличением длины регенерационного участка, уменьшением массогабаритных характеристик кабелей, экономией цветных металлов и др.), предопределят в будущем широкое внедрение волоконной оптики при построении линий связи различных уровней. Однако необходимо было разработать методики сращивания волоконных световодов, обеспечивающие высокие качественные и вместе с тем достаточно технологичные и доступные показатели, чтобы сделать возможным применение этих световодов не только в стационарных, но и в полевых условиях.
Строительная длина волоконно-оптического кабеля на практике устанавливается, исходя из ряда факторов. Прокладка больших длин кабеля неудобна вследствие необходимости сматывания с барабана и манипуляций с кабелем как во время прокладки в полевых условиях (при пересечении других подземных коммуникаций), так и в городских условиях (при прокладке в кабельную канализацию). Прокладывая кабель с помощью кабелеукладочной техники, также возникают неудобства, связанные с манипуляциями большими длинами, если для погрузочно-разгрузочных работ приходится использовать специализированную технику. Особенно остро стоит проблема манипуляции строительными длинами с большой удельной массой при прокладке глубоководных морских кабелей и кабелей для прибрежной зоны. Из-за необходимости инсталляции кабелей максимально возможной длины для их транспортировки по суше используются спаренные железнодорожные платформы, на которых кабели выкладываются в форме "8", а не на кабельные барабаны. Таким образом кабель транспортируется по суше до погрузки на судно.
Для соединения оптических волокон разработаны два способа соединений: разъемные и неразъемные. Неразъемные соединения оптических волокон осуществляются методом сварки, методом склеивания, а также с помощью механических соединителей. Для создания разъемных соединений оптических волокон используются оптические коннекторы.
Соединения оптических волокон с помощью сварки
Соединение оптических волокон с помощью сварки является сегодня наиболее распространенным методом получения неразъемных соединений. Благодаря в достаточной мере совершенной технологии этот метод позволяет получать качественные соединения с низкими показателями вносимых потерь (порядка 0,1-0,15 дБ), что обуславливает его применение на линиях связи, где этот показатель входит в приоритетные - магистральные, зоновые и другие - высокоскоростные ВОЛС.
Сваривание оптических волокон предусматривает оплавление концов волоконных световодов путем помещения их в поле мощного источника тепловой энергии, как, например, поле электрического разряда, пламя газовой горелки, зона мощного лазерного излучения.
Каждый из перечисленных методов имеет свои достоинства и недостатки. Достоинством метода сварки с помощью лазера можно считать возможность получения чистых соединений из-за отсутствия в них сторонних примесей, и, как следствие, достаточно малых вносимых потерь (0,1 дБ и менее). Как правило, в качестве источника лазерного излучения высокой мощности (до 5 Вт) используются газовые лазеры на СО2.
К достоинствам метода сварки с помощью газовой горелки следует также отнести возможность получения соединений оптических волокон, отличающихся высокой прочностью мест сростков. В качестве источника пламени используют смесь пропана с кислородом или соединение кислорода, хлора и водорода. Этот метод распространен по большей части для сварки многомодовых оптических волокон.
Основным достоинством сварки в поле электрического разряда является быстрота и технологичность. Этот метод в настоящее время приобрел наибольшую популярность для сварки одномодовых световодов.
Аппараты для сварки оптических волокон можно классифицировать следующим образом: по способу юстировки свариваемых концов оптических волокон (в зависимости от геометрических размеров сердцевин или от потерь мощности светового сигнала, распространяющегося через место сварки); по способу проведения операций (ручные или автоматические); по типу устройства контроля (микроскоп, монитор на жидких кристаллах); по количеству оптических волокон, которые могут быть сварены одновременно (одно- и многоволоконные).
При сварке оптических волокон в поле электрического разряда можно выделить такие технологические этапы:
* подготовка торцевых поверхностей соединяемых оптических волокон;
* надевание защитной термоусаживаемой гильзы на одно из соединяемых волокон;
* установка подготовленных концов оптических волокон в направляющие системы сварочного аппарата;
* юстировка свариваемых оптических волокон;
* предварительное оплавление торцов оптических волокон (fire cleaning) с целью ликвидации микронеровностей, возникающих в
* процессе скалывания;
* непосредственное сваривание оптических волокон;
* предварительная оценка качества сварки;
* защита места сварки с помощью термоусаживаемой гильзы;
* окончательная оценка качества сварки с помощью рефлектометра.
Существует два способа юстировки. Первый базируется на выравнивании сердцевин свариваемых оптических волокон по их геометрическим размерам (Profile Alignment System PAS) с помощью боковой подсветки концов свариваемых волокон.
Второй способ основан на выравнивании сердцевин оптических волокон по принципу минимизации потерь тестового светового сигнала, распространяющегося через место сварки.
Что касается активной юстировки, то известно три метода.
Первый заключается в использовании оптического излучателя и приемника на противоположных концах оптических волокон, подлежащих сварке. Информация от приемника передается персоналу, производящему сварку.
Второй метод сводится к использованию оптического передатчика на дальнем конце и детектора в точке соединения. Тестовый оптический сигнал выводится из соединяемого оптического волокна на небольшом (примерно 0,5 м) расстоянии от места сварки на изгибе и детектируется приемником, оборудованным измерителем оптической мощности.
Третий метод реализует LID (Local Injection and Detection) - процедуру юстировки, ограниченную исключительно местом соединения. В основу этого метода положено введение тестового оптического сигнала в сердцевину одного из соединяемых оптических волокон и поиск его в сердцевине второго соединяемого волокна путем изгиба.
Метод LID является наиболее эффективным, поскольку, в отличие от метода PAS, качество сварного соединения в большей мере зависит от сварочного аппарата, а не от индивидуального мастерства персонала. В современных сварочных аппаратах для управления процессами юстировки и сварки используются микропроцессоры, с помощью которых возможна оптимизация процесса сварки для получения минимальных (менее 0,1 дБ) потерь в местах соединений оптических волокон.
В процессе оплавления оптические волокна подаются одновременно для предотвращения укорачивания одного из них в месте сварки. Операции оплавления и сваривания, как правило, выполняются автоматически. В современных автоматических сварочных аппаратах для снятия механического напряжения в точке соединения оптических волокон предусмотрен режим прогревания места стыка по окончании процесса сварки. Такой режим называется "режимом релаксации".
Цикл плавления (длительность подачи и сила тока как для предварительного оплавления, так и для сварки и релаксации) для оптических волокон различных производителей и типов различны.
Некоторые сварочные аппараты, кроме рассмотренных выше способов контроля качества места сварки, используют еще и тест на растяжение во избежание нарушения соединения во время манипуляций при выкладке сростков в кассету, а также в дальнейшем, в процессе эксплуатации. Соединенное оптическое волокно прочно закреплено в направляющих платформах (которые используются при юстировке). Под контролем микропроцессора по завершении этапа сварки эти направляющие платформы расходятся в противоположные стороны, образуя строго нормированное продольное усилие на растяжение, приложенное к месту стыка. Считается, что стык, прошедший такое тестирование, более надежен и выполнен более качественно. При невозможности получения стыка, способного пройти этот тест, но удовлетворяющего по параметрам передачи, эту опцию можно отключить.
Особо следует отметить сварку ленточных элементов (ленточных волоконно-оптических кабелей, отличающихся большим количеством оптических волокон). Эту операцию можно проводить, только применяя полностью автоматический сварочный аппарат, с помощью которого можно соединить до 12 оптических волокон приблизительно за 3 минуты, причем средний уровень потерь составит около 0,1-0,15 дБ. Однако для сваривания ленточных элементов необходим опытный, хорошо подготовленный персонал.
Во время сварки оптические волокна размещаются с соответствующим смещением от оси электродов, что обеспечивает равномерное нагревание. До начала процесса сваривания и по его завершении проверяется смещение оптических волокон, состояние торцевых поверхностей, а также деформация.
При сваривании ленточных элементов необходимо, кроме основных процессов, рассмотренных ранее, провести еще три технологические операции: устранить расхождения торцов соединяемых оптических волокон, плавление всех волокон выполнить одновременно с одинаковой температурой, в процессе предварительной оценки измерить уровень вносимых потерь рефлектометром. Если оказалось, что результаты не отвечают требованиям, процесс сварки повторяют.
Как показывает практика, предварительная оценка качества сварных соединений оптических волокон, базирующаяся на методе РАС, может содержать погрешность в диапазоне 5-1000%, поэтому окончательный вывод о качестве сварного соединения стоит делать после измерений рефлектометром.
По мере совершенствования качества сварочного оборудования и технологии сварки возрастают возможности получения сварных соединений оптических волокон высокого качества. Потери на сварных соединениях зависят от нескольких факторов: опыта персонала, геометрических погрешностей свариваемых оптических волокон, а также от материалов, из которых изготовлены волокна. Особенно часто проблемы возникают при сварке оптических волокон различных производителей. Дело в том, что оптические волокна различных производителей изготавливаются с использованием принципиально отличающихся друг от друга технологических процессов. В результате материал оптических волокон - кварцевое стекло - не является идентичным в волокнах различного происхождения, несмотря на то, что параметры оптических волокон, указанные в спецификациях фирм-производителей, отличаются незначительно.
Факторами, определяющими свойства стекла, являются технология изготовления и качество материалов. Многочисленные исследования показали, что тысячные доли процента примесей в кварцевом стекле оказывают большее влияние, чем добавки в десятки процентов тех же компонентов к многокомпонентным стеклам.
Для сварки наибольшее влияние имеют следующие характеристики: плотность, коэффициент теплового расширения, показатель преломления, вязкость и механические характеристики. Эти параметры определяют оптические потери в местах сращивания и должны приниматься во внимание при использовании оптических волокон, произведенных по различным технологиям, в пределах одного элементарного кабельного участка ВОЛС. Особое внимание следует уделять идентификации оптических волокон в кабеле по типу, производителю и технологии изготовления.
Более совершенные аппараты для сварки оптических волокон содержат программы, оптимизирующие процесс сварки для оптических волокон различных типов и различных производителей, однако на практике нередки ситуации, когда, используя стандартные программы, невозможно получить качественную сварку. В этих случаях необходимо самостоятельно корректировать параметры процесса (время и ток, подаваемый на электроды) для достижения оптимальных результатов.
[pagebreak]
Наиболее часто сварка оптических волокон различных производителей производится при оконцовке оптических волокон пигтейлами, а также при ремонтно-восстановительных работах, если эксплуатационный запас кабеля израсходован, и приобретение полностью идентичного кабеля невозможно (к примеру, по причине снятия с производства оптического волокна такого типа, который использовался первоначально) или экономически нецелесообразно.
В общем виде величина потерь в местах сварных соединений может быть представлена как суммарная величина: Dобщ = Dор + Dдм + Dую + Dнм + Dрпп, где: Dобщ - суммарная величина потерь в сварке; Dор - потери из-за осевого рассогласования модовых полей равного диаметра; Dдм - потери из-за разницы диаметров модовых полей; Dую - потери от погрешности угловой юстировки осей оптических волокон; Dнм - потери, обусловленные не-круглостью модовых полей; Dрпп - потери из-за разницы показателей преломления.
Изучение параметров и характеристик различных одномодовых оптических волокон показывает, что разброс величины диаметра модового поля для l = 1310.1330 нм или l = 1500...1550 нм может составлять от 10,5 до 21,7% (9,2 0,5 мкм). Такое рассогласование приводит к появлению потерь от 0,05 дБ до 0,25 дБ (с положительным знаком, когда излучение проходит из волокна с большим диаметром в волокно с меньшим диаметром, и отрицательным - в противоположном направлении). Эти потери будут иметь место, даже если аппарат расположит соосно два волокна с разными диаметрами сердцевин, у которых эксцентриситет пренебрежительно мал. Обычно разброс величины модового поля оптического волокна не превышает 14%, таким образом, величина этой составляющей - не более 0,1 дБ.
Составляющая Dую практически не компенсируется современным сварочным оборудованием. Установлено, что углы между осями сердцевин 0,5°; 1°; 1,5°; 2° вызывают приращение потерь соответственно в 0,08; 0,34; 0,77 и 1,5 дБ. Таким образом, благодаря надлежащей подготовке торцов соединяемых оптических волокон при скалывании можно уменьшить потери - необходимо обеспечить наименьший (не более 0,5°) угол между плоскостями торцов оптических волокон. В этом случае величина потерь не превысит 0,08 дБ.
Составляющая Dнм учитывает влияние некруглости модового поля. По приблизительным оценкам она равна 0,05 дБ.
При соединении сваркой оптических волокон, имеющих неконцентричность модового поля, часто возникает нарушение юстировки сердцевин вследствие действия сил поверхностного натяжения. Это нарушение можно минимизировать следующими способами:
* сокращение времени плавления за счет неполного сваривания оптических волокон или же сокращение длины свободного конца оптического волокна в сварочном устройстве, чтобы концы оптических волокон в процессе сварки могли перемещаться на очень малое расстояние;
* использование компенсационных программ, таких как управление смещением сердцевины с помощью метода умышленного смещения осей.
Такой режим получил название RTC (Real Time Control). В этом режиме после юстировки сердцевин свариваемых оптических волокон и проведения процедуры предварительного оплавления происходит компенсация поперечного смещения сердцевин в сторону, противоположную производной расхождения.
Сварка оптических волокон осуществляется посредством чередования коротких импульсов тока высокой интенсивности с импульсами тока низкой интенсивности (релаксационными импульсами). При этом после сваривания в электрическом поле импульса высокой интенсивности в поле релаксационного импульса происходит перемещение оптических волокон под действием поверхностного натяжения. Количество чередующихся импульсов зависит от смещения сердцевин оптических волокон, которое постоянно контролируется сварочным аппаратом; как правило, количество импульсов не превышает 2-3.
Весьма существенное влияние на общую величину потерь, если свариваются оптические волокна с разными показателями преломления (N) сердцевины, может оказать составляющая Dрпп. Эта составляющая учитывает потери мощности оптического сигнала в результате несоблюдения условия полного внутреннего отражения на месте стыка двух оптических волокон, у которых показатели преломления сердцевин имеют различия. В этом случае часть оптического сигнала проникает через оболочку волокна и рассеивается. Ситуация усугубляется многократным отражением луча от границы "сердцевина/оболочка", каждое из которых (отражений) служит источником потери мощности. На практике нередки случаи, когда даже многократные повторные сварки не позволяют добиться малой величины потерь.
Наибольший вклад в суммарную величину потерь вносят потери от погрешности угловой юстировки осей оптических волокон и потери из-за разницы показателей преломления.
Международная электротехническая комиссия предлагает в качестве типичной характеристики сварного соединения оптических волокон, полученного в полевых условиях, величину вносимых потерь, равную 0,2 дБ (IEC 1073-1). При современном развитии технологии сварки оптических волокон этот показатель вполне достижим даже тем персоналом, который не обладает значительным опытом в этой области.
Соединение оптических волокон методом склеивания
Практически одновременно с методом сварки был разработан метод склеивания оптических волокон. Для получения клеевых соединений используют совмещение и фиксацию оптических волокон: в капилляре, в трубке с прямоугольным сечением, с помощью V-образной канавки и с помощью трех стержней в качестве направляющих. Оптические волокна соединяются поодиночке.
Технология получения таких соединений состоит из следующих этапов:
* подготовка оптических волокон к соединению (очистка, снятие буферных покрытий, скалывание);
* ввод оптического волокна в капилляр;
* наполнение иммерсионной жидкостью, гелем или клеем;
* регулирование соединения, юстировка оптических волокон;
* нанесение адгезивного вещества;
* цементирование адгезивного вещества с помощью ультрафиолетового излучения.
Клей, используемый для оптических волокон, должен иметь коэффициент преломления, близкий к коэффициенту преломления волокон. Он должен обеспечивать фиксированное положение соединенных оптических волокон, защищать место сращивания от воздействий окружающей среды, гарантировать прочность сростка при воздействии нагрузок в осевом направлении. К достоинствам этого метода следует отнести оперативность и отсутствие деформации сердцевин соединяемых оптических волокон. Это способствует тому, что в области стыка - малые потери, обеспечиваются хорошие механические свойства и т.п. Однако ограниченный срок службы и нестабильность во времени, а также весьма высокая чувствительность к повышению температуры и воздействию влажности являются факторами, сдерживающими распространение этого метода получения неразъемных соединений. В настоящее время он уступил свои позиции методу соединения оптических волокон с помощью механических соединителей.
Механические соединители оптических волокон
Механические соединители оптических волокон разрабатывались как более дешевый и быстрый способ сращивания оптических волокон. Применение аппарата для сварки оптических волокон сопряжено с необходимостью соблюдения ряда условий: для работы используется помещение, параметры которого (температурный диапазон, влажность, давление, вибрации и проч.) соответствуют требованиям производителей сварочного оборудования; также необходима организация питания от сети переменного тока с достаточно жестко регламентированными параметрами. При стоимости комплекта оборудования для сварки оптических волокон, составляющей десятки тысяч долларов США, амортизационные отчисления, а также техническое обслуживание и ремонт являются довольно дорогостоящими.
Достаточно высокие требования предъявляются также к персоналу, производящему работы по сварке оптических волокон. Часто этими же лицами производится наладка и обслуживание аппаратов для сварки оптических волокон (очистка направляющих поверхностей и зажимов, замена электродов и проч.), для чего требуются специалисты с высоким уровнем квалификации.
Всех этих сложностей можно избежать, применяя механические соединители оптических волокон. Конструкция оптических соединителей относительно проста. Основными узлами являются направляющие для двух оптических волокон и устройство фиксации волокон. Внутреннее пространство заполняется тиксотропным гелем для защиты открытых участков оптических волокон от воздействия влаги. Одновременно гель обладает иммерсионными свойствами - его показатель преломления близок к показателю преломления сердцевины волокна.
Процедура монтажа оптических соединителей является частью процедуры монтажа промежуточного или оконечного устройства - кабельной муфты, бокса или стойки. Размеры и форма оптических соединителей позволяют устанавливать их в кассету муфты или бокса аналогично сросткам оптических волокон, полученных путем сварки.
Процедура монтажа включает в себя следующие технологические операции:
* разделка кабелей;
* очистка оптических волокон от гидрофобного геля (при его наличии);
* снятие буферных покрытий соединяемых оптических волокон на участках длиной, рекомендуемой производителями оптических соединителей конкретного типа;
* скалывание оптических волокон;
* проверка качества скола волокон;
* введение соединяемых волокон в отверстия с направляющими;
* позиционирование волокон в соединителе для достижения оптимальных параметров соединения;
* фиксация оптических волокон в соединителе;
* тестовые измерения соединения.
Особое место среди оптических механических соединителей занимает RMS (Rotary Mechanical Splice) как наиболее сложный среди аналогов. Процесс его монтажа наиболее трудоемок, однако он позволяет достичь наименьших потерь при соединении одномодовых волокон. В отличие от остальных соединителей, где величина потерь главным образом зависит от качества скола торцевых поверхностей оптических волокон, этот соединитель позволяет юстировать волокна простым вращением вокруг своей оси стеклянных втулок, удерживающих подготовленные оптические волокна, и добиваться наилучших результатов.
Следует отметить, что применение механических соединителей является наиболее быстрым способом соединения оптических волокон. При этом вносимое затухание практически не отличается от затухания, создаваемого сварным соединением. Достаточно устойчивое функционирование механических соединителей в процессе эксплуатации позволяет уже сегодня рекомендовать их для широкого внедрения на телекоммуникационных сетях с невысокими требованиями к качеству соединений, а также в случаях, когда использование аппарата для сварки оптических волокон технологически затруднено или вообще невозможно. В дальнейшем статистика технической эксплуатации, а также совершенствование материалов компонентов механических соединителей, вероятно, определит их более широкое применение для строительства телекоммуникационных волоконно-оптических линий различных уровней.
Обращает на себя внимание тот факт, что механические соединители оптических волокон условно допускают однократное использование, однако на практике встречаются ситуации их многократного применения. Производители гарантируют качество соединения оптических волокон при повторном монтаже соединителя не более 2-3 раз, однако при повторном наполнении внутреннего пространства иммерсионным гелем (в тех конструкциях, где это предусмотрено) такие соединители использовались многократно без ущерба для качества стыков. Некоторыми производителями механических соединителей разработаны механизмы фиксации, предусматривающие использование специального ключа для открытия фиксатора.
Сегодня использование механических соединителей наиболее удобно при проведении аварийного ремонта волоконно-оптическихлиний для технологической операции организации временной вставки.
В кабельной инфраструктуре традиционным решением по организации кабельных трасс является прокладка кабелей и проводов в системах кабельных каналов, при этом все большее внимание производители уделяют технологичности монтажа.
Ни одно современное здание нельзя представить без кабельной канализации, куда укладываются кабели для различных типов сетей (электрических, телефонных, компьютерных, телевизионных, систем оповещения, сигнализации и др.). Она должна обеспечивать простоту прокладки и обслуживания, надежную и удобную коммутацию, простое наращивание кабельных систем, их последующую модернизацию и реконфигурацию, а также обладать достаточной емкостью для размещения резервных кабельных линий. Кроме того, необходимо соответствие нормам пожарной безопасности, госстандарта, эпидемиологической службы.
Для решения этих задач разработчики совершенствуют системы укладки кабелей с использованием гофрированных и жестких труб, кабель-каналов и коробов, а первостепенными требованиями становятся удобство и быстрота монтажа СКС, электропроводки и кабеленесущих систем. Поставщики кабеленесущих систем адаптируют свои продукты к изменениям в технологиях СКС и нуждам заказчиков, пытаясь найти оптимальное соотношение между себестоимостью и качеством продукции.
Современные кабеленесущие системы позволяют быстро добавлять электроустановочные изделия и кабель, а специальные решения помогают в несколько раз ускорить монтаж силовых розеток. По данным «Остек-Ком», время монтажа кабеленесущих систем от разных поставщиков может различаться в полтора раза.
Между тем российские потребители становятся все более требовательными к качеству изделий, пожаростойкости, долговечности, а отечественные нормы пересматриваются с целью их унификации в соответствии с международными стандартами. В числе первоочередных требований к кабеленесущим системам на российском рынке в «Остек-Ком» называют невысокую стоимость (особенно для регионов) и наличие большого складского запаса, а также полноту системы — ассортимент необходимых аксессуаров для построения и монтажа кабельной трассы. Среди качественных параметров системы наиболее существенными являются удобство, надежность и быстрота организации кабельной проводки, поскольку это непосредственно отражается на экономичности решения. Как отмечают в компании ДКС, сегодня эталон кабеленесущей системы — удобный в монтаже и эксплуатации продукт, эстетичный, долговечный, соответствующий нормам пожарной и экологической безопасности. По мнению специалистов DNA Trading, легкость и быстрота монтажа кабеленесущих систем, прочность и долговечность материала, разнообразие и совместимость решений — все, что позволяет снизить стоимость и повысить надежность системы, — остаются насущными требованиями.
Многие работающие на рынке инженерных коммуникаций российские компании и системные интеграторы, занимающиеся монтажом СКС и локальных сетей, дополняют спектр предлагаемых решений в области СКС кабеленесущими и электроустановочными изделиями известных зарубежных и российских поставщиков, а также собственных производственных подразделений.
ОТ СИСТЕМЫ К СИСТЕМЕ
Скрытая проводка электрических силовых, а иногда и слаботочных систем осуществляется при помощи гофрированных труб. Они обеспечивают не только защиту от механических повреждений, проникновения влаги и возгорания, но и удобство монтажа, позволяя впоследствии проложить дополнительную проводку или заменить ее. В отличие от металлорукава, гофротруба не подвержена коррозии, не требует заземления, монтируется намного быстрее, существенно дешевле и легче. Для крепежа труб выпускается широкий ассортимент коробок и компонентов. Вместе с аксессуарами такие изделия образуют систему, куда входит все необходимое для монтажа на объектах. Цель разработки подобных систем — создание надежного комплекса для прокладки электропроводки с гарантированной экономией за счет удешевления материалов и сокращения времени монтажа, ведь, по данным ДКС, затраты на монтажные работы составляют до 70% от стоимости системы.
Гофрированная труба — массовый продукт, широко применяемый при прокладке силовой проводки и слаботочных кабелей. Трубы из ПНД «Октопус» серии 7’’ компании ДКС при сохранении прочностных и изоляционных свойств не содержат дорогостоящих добавок, препятствующих горению, и чаще всего используются при монолитном строительстве.
Для скрытой проводки внутри жилых и рабочих помещений ДКС предлагает систему «Октопус». Это гофротрубы нескольких серий, корпуса встраиваемых щитков и транзитных коробок, а также аксессуары для монтажа. Материал труб различается по цвету: в голубой окрашены полипропиленовые трубы (ПП) с повышенной эластичностью и устойчивостью к воздействию низких и высоких температур (от –40 до +100°C), в серый — негорючие трубы из поливинилхлорида (ПВХ), а в оранжевый и черный — трубы из полиэтилена низкого давления (ПНД). Компания планирует расширить спектр продукции и уже в этом году представить систему двустенных труб для прокладки кабельных трасс в грунте.
Предприятие «Экопласт» ориентируется на профессиональный рынок. Гофрированные трубы из композиций ПВХ и ПНД легкого и тяжелого типов изготавливаются на оборудовании немецких и итальянских производителей. Под системой в компании понимают весь спектр оборудования, необходимого для монтажа кабельной трассы, с дополнительными элементами. Она должна быть универсальна и обеспечивать реализацию всевозможных вариантов кабельной проводки. Системы «Экопласт» включают гофротрубы для прокладки кабелей в различных помещениях и средах, в том числе серию FL (легкая) и FH (тяжелая) с внешним диаметром от 16 до 50 мм, наружные и внутренние распределительные коробки и щитки. Они имеют степень защиты IP55 (по ГОСТ 14254/МЭК 529).
По данным статистики, до 95% пожаров происходит из-за электропроводки, поэтому особое внимание уделяется требованиям безопасности и качеству материалов. Чтобы исключить возгорание кабеля от короткого замыкания в силовой проводке и распространение пламени по трубе и кабелю, применяются самозатухающие композиции ПВХ, однако в соответствии с действующими в России нормативами при скрытой установке каналов в стенах и потолках из горючих материалов монтажники нередко вынуждены использовать металлические трубы.
Тем не менее, как отмечают в ДКС, сфера применения гофротруб очень широка: они могут использоваться при заливке в бетон или укладке под штукатурку, в конструкциях теплых полов, в длинных трассах. Гофротрубы из полиэтилена высокого давления (ПВД) прокладывают под землей и на наружных негорючих поверхностях. В тяжелом варианте (для заливки в бетон) они имеют утолщенную стенку.
Традиционное практичное решение — система гладких пластиковых жестких труб. По данным «Экопласт», фитинги (соединительные элементы) обеспечивают степень защиты от IP54 до IP65. Гладкие жесткие трубы из ПВХ широко применяются для магистральной прокладки кабеля, скрытой и открытой электропроводки в стенах жилых, административных и промышленных помещений. Такие решения тяжелее гофрированных труб на 40%, но их вес можно назвать средним, а значит, удобным для монтажа и транспортировки. Прокладка кабеля в гладкой трубе не представляет особых трудностей, времени затрачивается меньше, а негорючий материал исключает распространение пламени по трубе. Удобство и скорость монтажа системы гладких труб нашли отражение в названиях несущих систем ДКС — «ЭКСПРЕСС 4» (IP40) и «ЭКСПРЕСС 6» (IP65). В число аксессуаров входят корпуса для наружного монтажа электроустановочных изделий ВИВА от ДКС. Система гладких труб серии RIG от «Экопласт» обычно используется для электропроводки в подвалах и гаражах зданий, в промышленных цехах и на открытых площадках.
Иногда система должна быть не только прочной, но и гибкой. В этом случае используются гибкие армированные трубы из модифицированного пластиката. Трубы от «Экопласт», армированные спиралью из ПВХ, применяются для защиты кабелей машин, станков и промышленного оборудования с подвижными частями. Они устойчивы к агрессивным средам и влаге (IP64), выдерживают динамические нагрузки. ДКС выпускает гибкие армированные трубы с прочным спиралевидным каркасом, залитым пластикатом ПВХ для герметизации. В комплексе с гладкой жесткой трубой и аксессуарами для монтажа такие изделия позволяют строить информационные и силовые сети на любых сложных участках.
Гофротрубы из ПВХ, ПНД и полиэтилена высокого давления (ПВД) выпускает также завод «Рувинил». Это жесткие и гладкие трубы 16—63 мм, а также двустенные трубы (ПНД/ПВД), цвет которых указывает на область их применения (прокладка электрокабеля, системы связи и телекоммуникаций или кабельные линии общего назначения). Аналогичную продукцию производит и ряд других предприятий. Поставщики стараются учитывать требования, предъявляемые российскими компаниями к кабеленесущим системам, и стремятся быть в курсе зарубежных технологий, дабы предложить качественную продукцию с улучшенными монтажными свойствами, тем более что на их заводах установлено высокотехнологичное европейское оборудование. Освоив технологии производства пластиковых изделий, они переходят к выпуску более сложных видов продукции — системам пластиковых кабель-каналов.
КАЖДОМУ ПО ПОТРЕБНОСТЯМ
Способы прокладки кабелей в административных и офисных помещениях различны. Они могут располагаться в подвесных потолках, фальшполах или в залитых в бетон желобах и разводиться до рабочих мест с помощью лючков и мини-колонн. Однако с начала 90-х гг. на отечественном рынке наиболее широкое распространение получила открытая проводка информационных, телефонных, оптических, силовых и видеокабелей в настенных коробах, что упрощает обслуживание и реорганизацию кабельной системы.
Короб — замкнутый профиль с плоским основанием и с защелкивающейся крышкой — предназначен для монтажа на поверхность (стены, пола или потолка). Системные изделия имеют в своем составе набор совместимых аксессуаров для прокладки трасс различной сложности, включая настенные каналы (короба), соединительные и ответвительные аксессуары, элементы крепления электроустановочных изделий, телефонные и компьютерные розетки.
Кроме соответствия ГОСТам и ТУ, а также стандартам на проводку электрических силовых и слаботочных кабелей, рынок диктует и другие требования, а именно — широкий спектр аксессуаров, конкурентная цена и эстетичный вид. Дополнение системы коробов полным набором аксессуаров вкупе с продуманностью конструкции помогает быстро и легко монтировать их и прокладывать кабельные сети. Как отмечают в DNA Trading, наряду с традиционными требованиями к дизайну, долговечности самого пластика и его окраски, разнообразию типоразмеров и фитингов для всевозможных вариантов соединения, производители выпускают все более удобные и разнообразные решения. Это фитинги с изменяемым углом поворота короба и автоматическим обеспечением необходимого радиуса изгиба кабеля; короба со специальной конструкцией, чтобы кабель не приходилось фиксировать при монтаже; розетки, установку которых можно осуществить без специальных инструментов и навыков и т. д. Накладные аксессуары с защелками (без винтов) упрощают монтаж, к тому же они дешевле сборных.
Среди других требований — возможность различных соединений с переходом от короба одного сечения к другому для создания разветвленной сети, модульная конструкция в расчете на установку розеток различных типов, наличие креплений, например суппортов быстрой фиксации, простой и удобный доступ к проводке. Кабельные каналы должны быть устойчивыми к агрессивным средам и загрязнению, легко очищаться от пыли, обладать такими свойствами, как высокая гибкость и пластичность, способность выдерживать механические нагрузки, химическая стабильность в цветности, негорючесть.
Короба используют не только для подвода комбинированных сетей к рабочим местам, но и для создания магистральных каналов. Кабели прокладывают с учетом 30—50% запаса по сечению (на случай модернизации и развития кабельной системы), с соблюдением необходимого расстояния между информационной и силовой проводкой.
На российском рынке популярны пластиковые установочные короба. Этот материал отличается хорошими диэлектрическими параметрами, прочностью, химической стойкостью, а главное — ценой. При необходимости некоторые виды коробов можно окрасить. Выпускаются и цветные их модели, но стоят они значительно дороже — производители относят такие решения к категории эксклюзивных. По оценке «Экопласт» около 90% рынка составляют короба белого цвета.
[pagebreak]
Алюминиевые и стальные короба, как считают в ДКС, — специфическая продукция, применяемая там, где к электроустановке предъявляются особые требования. Они тяжелее, в три-четыре раза дороже пластиковых, их труднее монтировать. Поэтому до 90% уже установленных коробов изготовлены из композиций ПВХ с добавлением различных модификаторов. Такие системы не требуют заземления, обладают высокими электроизолирующими свойствами, малым весом и гибкостью. Вместе с тем, системным интеграторам подчас приходится сталкиваться с проектами, где требуется применение алюминиевых коробов. В «Сонет Текнолоджис» отмечают такие их качества и свойства, как пожаробезопасность, прочность и износостойкость. По мнению специалистов «Остек-Ком», спрос на подобные короба, весьма распространенные за рубежом, может вырасти, однако в DNA Trading полагают, что электропроводящие короба вряд ли составят конкуренцию пластиковым по причине дороговизны, сложности монтажа и требований к заземлению.
Сегодня на российском рынке представлено большое число популярных зарубежных марок кабельных каналов — Aesma, Efapel, GGK, Iboco, LAP, Marshall Tufflex, MITA, MK Electric, Quintela, Niedax, Rehau, Thorsman, Panduit и ряда других. Аналогичную продукцию выпускают и российские производители — ДКС, «Экопласт», «Электропласт», «Техпласт», «Рувинил» и др. Несмотря на внешнее сходство, изделия различаются стоимостью, качеством, долговечностью, удобством монтажа и эксплуатации, дизайном, разнообразием аксессуаров и типоразмеров. Экономия времени и затрат во многом зависит от применяемых технологических подходов и конструктивного исполнения продукции.
На отечественном рынке пластиковых коробов по-прежнему наиболее известна продукция французской компании Legrand. Она начала поставки этой продукции в Россию одной из первых, и ее марка стала здесь синонимом кабельного канала. Компания и сегодня предлагает одну из самых полных и удобных систем коробов DLP с широким выбором типоразмеров для монтажа СКС любой сложности, но ее продукция не относится к разряду дешевых решений, поэтому системные интеграторы и компании, специализирующиеся на проектных решениях, часто пытаются найти альтернативные продукты, оптимальные по соотношению цена/качество.
Некоторые поставщики дополняют зарубежную продукцию недорогой отечественной. Как отмечают в «Остек-Ком», изделия Thorsman и MITA способны удовлетворить любые требования, но довольно дороги, поэтому компания расширила продуктовую линейку кабель-каналами из ПВХ от «Экопласт», обладающими надлежащим качеством и привлекательной ценой. «Веритек Дистрибьюшн» и «Сонет Текнолоджис» в качестве поставщика кабельных каналов выбрали португальскую компанию Efapel, продукция которой, по их мнению, в своем ценовом сегменте выгодно отличается от конкурентов качеством пластика, большим выбором аксессуаров и полным соответствием распространенным в России стандартам. При сопоставимой с другими известными марками цене за короб, стоимость аксессуаров Efapel заметно ниже, поэтому и готовое решение оказывается дешевле. Среди наиболее интересных новинок — модульные короба Efapel серии 16 с возможностью установки модулей типа 45х45 непосредственно в короб, что помогает быстро расширять кабельные сети. Подобное удобство представляют и короба Consort от MITA, их жесткая конструкция с двойной боковой стенкой позволяет монтировать электроустановочные изделия прямо в короб, а затем устанавливать крышку нужной длины. Тем самым экономится и время, и деньги.
Серию DLP продолжает совершенствовать и Legrand. Новинка года — кабель-каналы с гибкой крышкой. Такое решение обеспечивает быстроту и удобство монтажа короба, поскольку крышку не нужно резать при обходе углов. Среди других решений, нацеленных на сокращение сроков работ, — заранее нарезанные отверстия в задней стенке, благодаря чему короб не нужно сверлить, и защелкивающиеся в кабель-канал суппорты, на которые крепятся лицевые панели и рамки. Для системы DLP разработаны розетки Mosaic с боковым подключением провода. Это экономит не только время, но и место, отведенное для прокладки кабеля. В системе INLINER от ДКС с этой целью применяют электроустановочные изделия ВИВА, где кабель присоединяется к боковой части розеток, а также «выдвинутые» наружу рамки. В результате высвобождается пространство внутри короба, что дает возможность использовать короб меньшего сечения.
В короба Legrand иногда устанавливают электротехнические изделия других производителей. Такой подход удешевляет решения, практически не ухудшая параметров качества и надежности. В частности, один из крупнейших в России производителей электроустановочных изделий компания WESSEN предлагает для установки в кабельные каналы продукцию серии Wessen45. Она состоит из универсальных модулей типоразмера 45х45 мм, включая информационные (Категории 5е), телефонные, силовые розетки, розетки для защищенного питания, одно- и двухклавишных выключателей и выключателей-переключателей (скоро к ним должны добавиться светорегуляторы). Все изделия серии монтируются в кабель-каналы с помощью суппорта. В системе INSTA от «Экопласт» применяются решения для крепления розеток евростандарта (60 мм) или модульных систем 45х45 от WESSEN, Legrand и SOLERA.
У испанской компании Quintela (входит в концерн Legrand) установочные короба EUROQUINT снабжены скобами для фиксации кабеля. От двух до четырех разделительных перегородок крепятся на рейку DIN на дне короба. Такой подход используют большинство производителей. В компании «Кросс Линк» отличительной особенностью EUROQUINT считают систему соединяемых в ряд суппортов, позволяющую организовать рабочие места на любое число пользователей. Для монтажа слаботочных розеток разных производителей предусмотрены адаптеры и переходники. В частности, как отмечают в компании «Тайле», при использовании переходников MMI и MMI/B со стандарта 47х47 на стандарт Mosaic (45х45) возможна установка в коробах Quintela любых модулей 45х45 для компьютерных и электрических розеток, что помогает подобрать экономичные варианты.
Американская компания Panduit применяет для установки коммуникационных и силовых розеток разных поставщиков лицевые панели, защелкивающиеся на основании короба или устанавливаемые на выносные коробки. Розетки могут монтироваться и непосредственно в канал. Конструкция короба обеспечивает защиту от несанкционированного доступа и возможность добавления, перемещения и замены элементов. Panduit предлагает системы кабель-каналов четырех цветов (белый, кремовый, бежевый и серый).
Специалисты DNA Trading в отношении кабельных каналов Panduit отмечают ограничение минимального радиуса изгиба кабеля, возможность использования для СКС других производителей, наличие лицевых панелей для модулей Keystone. У коробов малого сечения LD крышка соединяется с базой при помощи пластичного шарнира, поэтому при прокладке удерживаемый ею кабель не выпадает из короба, что облегчает монтаж. Panduit расширяет ассортимент принадлежностей и выпускает новые серии коробов. Среди новинок — потолочные короба. Интерес представляет и система коробов для офисных перегородок.
По мере создания все более сложных сетей, где кабеля требуется очень много, появляются короба увеличенного сечения. Если средние имеют сечение от 50х50 до 100х50 мм, то большие — от 50х170 до 50х254 мм. Quintela предлагает сдвоенные установочные каналы NETQUINT. Они изготавливаются как из ПВХ, так и из алюминия и допускают использование установочных механизмов Quintela, Legrand, BTicino и др.
Одна из новинок Efapel — расширяемые модульные короба со специальной конструкцией основания. С помощью соединителей несколько коробов стыкуется параллельно, что можно делать и при первоначальной установке, и в ходе эксплуатации в случае расширения сетей. Однако, по данным «Сонет Текнолоджис», популярность такого решения невелика, поскольку трассировка кабельного канала обычно рассчитывается с запасом.
MK Electric производит серию двухсекционных разноцветных коробов Prestige 2Com, обеспечивающих максимальную вместимость: углы фиксируют радиус изгиба кабеля, а сам короб, подобно системе Quintela, состоит из основы и двух крышек. У MK Electric имеется и серия трехсекционных коробов Prestige трех видов из ПВХ и алюминия. Legrand выпускает двухсекционные (65х195) и трехсекционные короба DLP (65x220) с гибкими крышками и внутренними разделителями по длине короба и в углах. Для удобства монтажа на коробах защелкиваются углы и отводы.
Недавно компания Trale приступила к поставкам новых кабельных каналов MK Electric, в большей степени адаптированных для нужд инсталляторов СКС и отвечающих эстетическим запросам требовательных заказчиков. Новая серия коробов Prestige Compact — усовершенствование серии Prestige Plus. Она включает в себя компактные и технологичные трехсекционные короба, специальные регулируемые углы, а монтаж кабеля упрощается благодаря использованию одинарного и двойного установочных мест без дна с двумя боковыми стенками, что позволяет обойтись без дополнительных отверстий. Специальный фиксатор дает возможность соблюсти радиус изгиба.
Гибкость и пластичность коробов из ПВХ облегчают монтаж на неровных поверхностях стен. Угловые соединения (внешние и внутренние) предусматривают различные варианты — от 60—80 до 120°. Регулируемые углы выпускают не только известные зарубежные поставщики, например Legrand и Thorsman, но и отечественные ДКС, «Экопласт» и «Рувинил». У Thorsman подобное решение предусмотрено и для коробов из алюминия.
Британская компания MITA предлагает двухсекционный короб Cableline Duo с возможностью прокладки заземления, а также парапетные короба серии CONSORT SOLO и AMBASADOR. В трехсекционном коробе SOLO съемные крышки имеются только у центральной секции, а перегородки можно снять, создав одно большое пространство. Короб изготовлен из высокопрочного пластика, углы крепятся на защелках. Декоративные короба MITA большого сечения известны на мировом рынке, однако пока мало востребованы в России из-за их высокой стоимости. В «Остек-Ком» отмечают исключительную белизну кабельных каналов MITA из ПВХ — по чистоте и устойчивости цвета эти изделия превосходят продукты многих известных марок.
MITA производит и специальные короба для оптического кабеля FOCUS с выступами на угловых соединениях для обеспечения большего радиуса изгиба кабеля. Для прокладки и распределения массивного пучка оптических кабелей разработан короб серии YS. Набор переходов, аксессуаров и фитингов обеспечивает быструю инсталляцию благодаря специальной системе соединения (clip together). В DNA Trading полагают, что спрос на короба для прокладки оптики в России будет расти. Не так давно новая серия подобных изделий появилась у Panduit, дополнившей серию FiberDuct системой FiberRunner с более широкими возможностями комплектации.
По данным «Кросс Линк», новое решение в этой области разрабатывает и Quintela.
Кабельные короба TWT из ПВХ предлагает российская компания LANMASTER. Это восемь видов коробов с сечением от 15х10 до 100х100 мм, стыкуемых друг с другом с помощью переходников. Они могут использоваться для разводки кабельных сетей по комнатам и рабочим местам или в качестве магистральных (серии больших сечений) и позиционируются как бюджетное решение с хорошим качеством. В компании считают, что эти типоразмеры практически полностью удовлетворяют требованиям рынка. Изделия других типоразмеров поставляются под заказ. В настоящее время в разработке находятся напольные и плинтусные короба, а также короба размера 100х50, повышенной прочности с возможностью установки нескольких разделительных перегородок. В ассортименте продукции TWT есть настенные розетки для установки модуля Mosaic 45x45, что позволяет использовать любые установочные изделия данного типа. Компанией рассматривается и возможность выпуска цветных коробов серого и коричневых цветов, а также расцветок «под дерево».
С зарубежными поставщиками кабель-каналов конкурируют ведущие российские производители, позиционирующие свои продукты как оптимальные по цене решения европейского качества. Например, в ДКС считают, что ее продукция не уступает решениям Legrand и Marshall Tufflex. В компании анализируют тенденции в электротехнической сфере и стараются соответствовать ожиданиям рынка.
Система INLINER от ДКС специально разработана для применения в составе СКС и позволяет монтировать телекоммуникационные розетки большинства поставщиков. Монтажные коробки устанавливаются простым защелкиванием, а далее без дополнительного крепежа в них размещают — опять-таки путем защелкивания — электроустановочные изделия. Экономия времени достигается и за счет широкого спектра аксессуаров. INLINER предусматривает перфорацию на коробе (его не нужно сверлить) и совместима с другими системами ДКС. По данным производителя, ее эксплуатационные характеристики сохраняются в течение длительного времени, а по цене она дешевле зарубежных аналогов.
В ответ на возрастающие требования рынка ДКС выпустила новую систему пластиковых коробов INLINER Front, разработанную и спроектированную с учетом пожеланий монтажников и российской специфики. Линейки продуктов компании развиваются в направлении улучшения функциональности, сервисного обслуживания, удобства использования и простоты инсталляции (в частности, за счет доработки и предложения дополнительных аксессуаров), снижения себестоимости, в том числе благодаря переводу производства большей части продукции в Россию. Сейчас компания импортирует около 20% изделий (в основном аксессуары).
«Экопласт» разрабатывает свои системные решения совместно с ведущими системными интеграторами и электромонтажными организациями, адаптируя их к условиям инсталляции слаботочной и силовой проводки. Ее серия коробов INSTA производится из российского ПВХ, а устойчивость к выцветанию обеспечивают специальные добавки, поставляемые немецкими партнерами. Кроме того, короба не подвержены горению. В «Экопласт» считают, что созданная модульная система хорошо адаптирована к требованиям российского рынка, где популярны модули 45х45, и отвечает евростандарту с посадочным местом 60 мм. Собирается она подобно конструктору, а монтаж розеток не отнимает много времени. Уже установленные розетки легко дополняются новыми или перемещаются. Система укомплектована различными аксессуарами (также российского производства), а замок позволяет многократно открывать и закрывать короб. Короб допускает размещение до трех внутренних разделителей. К концу этого года завод собирается выпустить два новых типоразмера изделий INSTA для малых офисов и муниципальных учреждений. Все компоненты систем каналов и труб «Экопласт» производятся в России.
[pagebreak]
Для открытой проводки в административных, жилых и промышленных помещениях компания выпускает систему пластиковых магистральных каналов TEC с сечением от 60х40 до 230х60 мм и повышенной ударопрочностью (8 Дж). Конструкция замка крышки выполнена в соответствии с немецким стандартом — в нахлест; фиксацию торцевых сторон обеспечивает кабельная скоба, которая одновременно служит распоркой и позволяет многократно открывать и закрывать короб без деформации крышки. Система TEC разработана для применения главным образом в промышленных помещениях или административных зданиях при прокладке кабелей на большие расстояния.
Системы кабель-каналов компании «Рувинил» белого и коричневого цвета изготавливаются на итальянском оборудовании с полным набором аксессуаров сочетаются с различными сериями розеток, устанавливаемых посредством суппорта. Компания готовится выпустить продукты новых типоразмеров. Производство кабельных каналов двух цветов наладил опытно-экспериментальный завод «Техпласт». Они изготавливается на импортном оборудовании с контролем качества; компоненты исходной смеси, кроме ПВХ, закупаются за рубежом.
МИНИ И МИКРО
Когда электропроводка и кабельная сеть уже смонтированы и нужно организовать еще одно рабочее место, подведя к нему телефонную и информационную сеть, часто используют мини- и микроканалы с откидывающейся или полностью открывающейся крышкой. Они позволяют организовать рабочие места там, куда невозможно подвести большой короб. Широкий выбор типоразмеров и полная гамма аксессуаров помогают подобрать наилучший вариант для конкретного случая. К мини-каналам (мини-коробам) обычно относят короба сечением от 8х10 до 40х60.
Интересное решение — микроканалы на самоклеющейся основе. Такую продукцию, предлагают, в частности, Quintela, MITA, MK Electric, Panduit, Aemsa, Niedax и ряд других компаний. Технологию производства мини-каналов с адгезивной пленкой 3М освоил «Экопласт». ДКС также планирует выпуск мини-каналов 10х10 с возможностью использования самоклеющейся ленты. Они легко и быстро монтируются там, где позволяет поверхность.
Мини-каналы отличаются более широким ассортиментом и могут снабжаться встроенными перегородками, однако название зависит от терминологии производителя. MITA предлагает еще и так называемые короба миди размером 50х30 и 50х50 мм. Кроме мини-коробов для телекоммуникаций и охранных сигнализаций стандартного и суперпрочного типа эта компания выпускает мини-канал-трансформер. Он поставляется в рулоне в виде плоской пластиковой ленты. Она легко прибивается или привинчивается к стене, а затем края отгибаются вверх и закрываются крышкой, образуя мини-короб.
Для компактной укладки кабельной проводки в малых сетях компания AESP предлагает в составе системы SignaMax Trunking System серию компактных односекционных коробов Mini, дополняющих полноразмерные серии Office и Solo. Розетки устанавливаются в наружные подрозетники. MK Electric выпускает мини-каналы серии Ega Mini белого и черного цветов. Электроустановочные изделия монтируются с помощью настенных подрозетников, стыкуемых с мини-коробом через адаптеры. Короба серии Ega Communication разработаны для прокладки кабелей малого диаметра (обычно для телефонии и сигнализации). Legrand выпускает мини-каналы (мини-плинтусы) трех цветов (серый, белый, коричневый); мини-плинтусы DLPlus можно монтировать на уровне пола, по стене или под потолком. Благодаря специальному держателю-мембране провод не выпадает из канала. Panduit производит три серии мини-каналов (LD, LDP и LDS) для слаботочной и силовой проводки, сопрягаемых с коробами T45, T70, TG70, Twin-70 и новой серией потолочных коробов.
Трансформируемые углы для мини-каналов Quintela дают возможность по-разному использовать один и тот же элемент. Например, L-образное соединение заменяет четыре детали, что упрощает подбор аксессуаров: путем нескольких простых манипуляций деталь собирается как элемент конструктора. По данным Quintela, такой подход сокращает время монтажа и стоимость проекта, а также позволяет решить многие проблемы несоответствия первоначального проекта с реальными задачами монтажа. Как и у большинства поставщиков, для стыковки с другими типами коробов имеются переходники и адаптеры. Возможность соединения всех серий коробов и мини-каналов INLINER предусматривает и ДКС. Система INLINER включает девять типоразмеров мини-каналов. У «Экопласт» микро- и мини-каналы для слаботочных сетей имеют отдельную или открывающуюся крышку и основу с отверстиями для крепления к стене. Недорогую серию мини-каналов выпускает предприятие «Электропласт». Это бюджетное решение для не очень сложной сети. Белые и коричневые мини-короба предлагает и «Рувинил».
КОРОБ НЕТРАДИЦИОННОЙ ОРИЕНТАЦИИ
Многие производители кабельных коробов выпускают специальные серии для жилых помещений, частных домов, школ и т. д. Они отличаются высоким качеством изготовления и привлекательным дизайном, отвечающим требованиям интерьера. Такие специализированные короба (плинтусные, карнизные, для установки на рабочий стол и проч.) нередко имеют нетрадиционную форму. Как отмечают в «Сонет Текнолоджис», «нетрадиционные» решения пользуются ограниченным спросом, но имеют свой четко выделенный сегмент. Это, например, крупные банки и офисы компаний, специализирующихся на дорогостоящих товарах и услугах, где престиж и дизайн интерьера играют большую роль.
У компании Efapel данная линейка представлена кабельным плинтусом, коробами для внутренней установки розеток, мини-каналами и напольными коробами. Разнообразные аксессуары позволяют устанавливать любые типы механизмов (розетки, выключатели и т. п. в терминологии компании). MK Electric производит короба-наличники и плинтусные короба Lincoln, а также оригинальные короба треугольного сечения Pinnacle, монтируемые в углах помещений и допускающие окрашивание. Для монтажа в качестве карниза (в стыке между стеной и потолком) MK Electric разработала серию коробов Ega Carnice, совместимых с Ega Mini и Lincoln. Похожая продукция треугольного сечения (DLP 3D 80x80) имеется и у Legrand.
Иногда заказчики предпочитают традиционному пластику короба из стали и алюминия. Они обеспечивают дополнительное экранирование, обладают высокой пожаростойкостью и могут окрашиваться. Например, Niedax выпускает такие офисные короба из стали с конца 70-х. Thorsman дополняет собственную систему пластиковых коробов металлическими (стальными и алюминиевыми) и даже деревянными. Marshall Tufflex, наряду с обширным спектром настенных, плинтусных и потолочных коробов из ПВХ, предлагает деревянные системы для организации кабельных трасс. Так, короб Real Wood Trunking способен удовлетворить самый взыскательный вкус. Он поставляется в прямоугольном (панельном) и плинтусном вариантах с совместимыми электрическими компонентами и изготавливается из дуба, бука, вишни, клена или ореха.
Требования к дизайну изделий заставляют производителей расширять спектр продукции за счет цветных изделий или коробов под окраску. Иногда кабельные каналы, короба или плинтусы выпускают в ограниченной цветовой гамме (двух-трех цветов), а под заказ производят окрашенные. По такому пути пошла компания Quintela.
При всем удобстве открытая проводка в настенных коробах не способствует уюту, поэтому в жилых помещениях нередко используются кабельные плинтусы. Они достаточно функциональны и позволяют организовать рабочие места любой сложности. Кабельный плинтус Quintela, включая цветную серию RODAQUINT для жилых помещений, снабжен перегородками, поставляется с аксессуарами и установочными коробками (такими же, как для мини-каналов). Серию кабельных плинтусов CARLTON выпускает MITA, а ее короба AMBASSADOR производятся в цветном варианте. Legrand предлагает декоративные плинтусы округлого сечения в четырех вариантах цветовой отделки. Трехсекционный короб с выносными розетками от Marshall Tufflex хорошо смотрится в городских квартирах и пригоден для прокладки телекоммуникаций и электрики внутри помещений, а короба Sovereign Plus Skirting Trunking этой же компании устанавливаются вместо плинтуса.
ДКС разработала для открытой проводки в административных и жилых зданиях систему EVOLUTION/ART, исполнение которой отличается особой эстетичностью. Она состоит из пластиковых каналов (настенных, напольных и плинтусных), соединительных и ответвительных аксессуаров, элементов крепления электроустановочных изделий, телефонных и компьютерных розеток и предлагается в трех цветовых решениях. Новую линию плинтусной системы с изменяемыми углами и модульными коробками для офисных помещений и квартир внедряет «Экопласт».
По данным «Остек-Ком», популярность приобретают напольные лючки и сервисные стойки, обладающие удобной функциональностью и привлекательным видом. Лючки и мини-колонны системы FrontLine предлагает, в частности, Thorsman, эту компанию на российском рынке представляет концерн Schneider Electric. Мини-колонны часто используются для организации рабочих мест в открытых интерьерах и больших