Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Концепции INTERNET и INTRANET для создания корпоративных приложений в архитектуре клиент- сервер

Инструментарий компании Borland

Александр Сергеев, Демоцентр клиент-серверных технологий


1. Архитектура клиент-сервер, традиционные решения

Традиционная архитектура "клиент-сервер" подразумевает, что логика приложения делится на две части по месту исполнения, соответственно клиент и сервер. В файл-серверной архитектуре сервер использовался только как большой винчестер, как место хранения всех данных. Ответственность за правильное оперирование данными возлагалась на клиента.

На рисунке 1 мы видим традиционное решение в архитектуре файл-сервер. Недостатки очевидны: удаленный разделяемый винчестер предполагает меньшую надежность данных, большой сетевой траффик.
На рисунке 2 мы видим традиционное решение в архитектуре клиент-сервер. Клиентские приложения обращаются к серверу БД (например, InterBase, Oracle, Informix, Sybase, MS SQL через родные линки или другие (уже через ODBC)). Логика клиентского приложения может быть написана на Paradox, dBase, Delphi или С/С++. Cледует еще раз отметить, что при этом все взаимодействие с БД ведется через родные линки компаний-производителей, инкапсулированные механизмом IDAPI - универсальным механизмом доступа к данным, который предлагает компания Borland. При этом клиентское приложение может напрямую запрашивать у сервера данные и оперирует понятиями запросов, транзакций и таблиц. Только в Delphi 2.0 появилась возможность работы не напрямую, а через монитор транзакций (Taxedo, Encina - см. Рисунок 3).

2. Архитектура клиент-сервер и интернетовские решения.

Преимущества и недостатки архитектуры клиент- сервер

Под лозунгом "Upsizing application" компания Borland выпустила серию инструментов разработчика, которые с успехом применялись и применяются при разработке клиент-серверных проектов. Это прежде всего 16-разрядный Delphi 1.0, доступный на рынке уже в течение года, вышедший с 1 марта 1996 года Delphi 2.0 для Win 95/NT, Paradox 5.0, выходящий с декабря 1995 года Paradox 7, Visual dBase 5.5, C++ 4.5 c BDE 2.5 и выходящий с конца марта C++ 5.0 с BDE 3.0 для Windows 95/NT. При помощи этих инструментов можно разрабатывать локальные приложения для баз данных, а затем легко мигрировать в архитектуру клиент-сервер.
Если в локальных приложениях эти инструменты напрямую работают с данными, то в архитектуре клиент-сервер данные с сервера доступны посредством запросов к серверу, а SQL-сервер занимается поиском и поддержанием целостности данных. По сравнению с файл-серверной архитектурой мы имеем реальные преимущества - более низкий сетевой трафик и большая надежность хранения данных. Кроме того, при разработке информационной системы в архитектуре клиент-сервер немаловажное значение имеет доступность CASE-средств, облегчающих проектирование сложной системы.
Однако, как только мы задумываемся о создании клиент-серверной системы на более чем 100-200 клиентских мест, сразу возникают дополнительные сложности. Во-первых, стоимость коннекта - стоимость клиентской лицензии для SQL-сервера в среднем достаточно высока и при умножении ее на соответствующее количество возникает пугающая цифра. Во-вторых, даже если отбросить в сторону финансовые соображения, существуют и дополнительные сложности. На каждый клиентский коннект сервер должен выделять значительное количество памяти на аппаратуре серверной машины, в зависимости от типа SQL-сервера это количество разное, однако общая тенденция очевидна. Вероятность того, что в действующей системе потребуется доступ к данным с клиентских станций разных типов и моделей, достаточно высока - в большой корпоративной или мешкорпоративной системе мы имеем зоопарк различной техники - от терминалов и 286 моделей до серьезных UNIX-станций. В большой информационной системе, как правило, наблюдается и разнобой физической реализации коммуникаций - от модемных соединений 2400 бод до оптоволокна c FDDI. Как быть, и реально ли в таких условиях говорить о приемлемом клиент- серверном решении задачи построения информационной системы?

INTERNET и INTRANET

О применении технологий Internet для построения корпоративных информационных систем заговорили уже давно. Заманчиво было бы использовать опыт надежного и удобного соединения разнородных вычислительных ресурсов в единую систему, уже обкатанный в Internet, для решения внутрикорпоративных задач. Основные проблемы, которые встречаются на этом пути - это отсутствие стабильных стандартов, что характерно для бурно развивающегося рынка.
Давайте посмотрим, какими возможностями обладает разработчик при использовании технологий Internet в проекте закрытой корпоративной сети.

  • TCP/IP
Первое и самое главное - сетевой протокол ТСP/IP фактически реализован для любых типов сетей. Любая аппаратурная экзотика поддерживает этот протокол.
  • коннект
Коннект клиентского броузера к WEB-серверу осуществляется исключительно легко. Многие проблемы, которые были в прежней архитектуре клиент-сервер, когда клиентское приложение напрямую осуществляет доступ к SQL-серверу, снимаются при использовании технологии Internet. На сервере требуется меньше памяти, логика коннекта позволяет "удерживать" коннект даже при физическом обрыве линии. Поскольку взаимодействие интернетовских броузеров с хостом отлаживалось в самых разных условиях, по-разному передаются различные куски информации. Так например, в расчете на медленное соединение вначале клиенту передается текстовая информация, и только потом докачиваются графические или другие большие двоичные объекты. Пользователь модемной линии может не дожидаться докачки всего изображения и принять решение о переходе к новой странице информации.
  • данные: файлы, текст, ссылки, изображение, 3D, звук
Понимание того, что ограниченность типов данных является препятствием к широкому применению классических реляционных СУБД, привела к расширению типов данных, используемых современными SQL-серверами. Например, InterBase может оперировать расширенным типом данных BLOb - большими двоичными объектами. А броузеры Internet могут воспринимать текстовую информацию, ссылки на ресурсы (URL), изображение, звук, оперировать присоединенными файлами.
  • отработанный механизм маршрутизации и логики коннекта
Надежность механизмов маршрутизации Internet позволяет строить сколь угодно сложную и разветвленную сеть.
  • меры безопасности
Хотя внутрикорпоративная сеть может быть отключена от внешней Internet, меры безопасности, предпринимаемые разработчиками, могут оказаться нелишними в реальной ситуации. Методы кодирования открытым ключом и передача по сети от сервера до клиентского броузера только зашифрованного сообщения позволяют владельцам и пользователям важной информации избежать лишних неприятностей. В России существуют стандарты на передачу шифрованных данных, а несложность включения соответствующих методик и алгоритмов при разработке имеющимися инструментами позволяют легко реализовывать хорошо защищенные системы.
  • многоплатформенность
В свое время Internet так или иначе справился с этой проблемой. И в настоящее время мы можем пользоваться результатами: стандартные броузеры реализованы для всех мало-мальски значимых платформ, новые стандарты (например, язык Java) также ориентированы на применение на всем разнообразии используемой техники и операционных сред.
  • текущая ситуация
Мы только что обсудили преимущества интернетовской технологии для реализации внтрикорпоративной системы, и что же, какова ситуация в настоящий момент, насколько приемлемым кажется использование этой технологий для менеджеров информационных сетей больших корпораций? Завставляет задуматься тот факт, что, по утверждениям экспертов, соотношение пользователей внутрикорпоративных сетей к пользователям Internet - 5:1.
  • отсутствие стандартов
И все-таки, следует подчеркнуть, что бурное развитие Internet, подобно бурному росту юноши- акселерата, результатом своим имеет множество проблем. Трудности роста - скажут многие. Разработчику большой системы приходится иметь дело со множеством неустоявшихся стандартов, или, что очень опасно для будущего системы - со стандартом де-факто, пока еще не принятым, но уже достаточно распространенным. При оценке возможной стоимости системы следует учитывать это обстоятельство. Так родителям подростка разумно планировать будущие затраты на покупку новой одежды взамен той, что станет мала через полгода-год.

INTRANET: информационная система

  • клиент-сервер.... или... ?
Мы составили себе определенное впечатление об INTRANET, как о системе, каждый клиент доступается к данным Web-сервера посредством своего броузера. Но является ли такая архитектура архитектурой клиент-сервер? Ведь в классическом понимании на клиентское приложение возлагаются некие дополнительные задачи - дополнительная логика. Позволяет ли стандартный броузер решать такие задачи?
Если иметь в виду широко распространенный броузер Netscape, то почти ничего , за исключением простейших диалогов и просматривания данных, такой клиент делать не может. Это и заставляет такого клиента называть "слабым" (thin client), поскольку в большинстве случаев использование броузера мало чем по возможностям отличается от применения терминала со своей (достаточно мощной) системой команд.
  • логика на сервере
Слабость клиента заставляет размещать логику приложения на сервере; фактически, для реализации не только системы подачи информации (или рекламного гипертекстового сервера) требуется существенно дописывать функционирование стандартного Web-сервера, превращая (или дополняя) его в application server.
  • логика на клиенте
И все-таки, существует заметная тенденция по превращению "слабого" клиента в клиента, оснащенного возможностями исполнения логики приложения. Для этого должен был бы использоваться некий универсальный язык программирования, обладающий достаточно противоречивыми характеристиками. С одной стороны, этот язык должен был бы функционировать на большинстве используемых платформ, то есть быть легко переносимым с платформы на платформу, с другой стороны, должен быть достаточно выразительным, чтобы с его помощью можно было легко строить достаточно сложные приложения.
Сейчас пока трудно предсказать, какой язык сможет разрешить все противоречивые требования к нему, однако, наиболее перспективным кандидатом на роль интернетовского эсперанто является язык Java, разработанный компанией Sun Microsystems.
  • N-tier ?
Возможность исполнения логики приложения c использованием одного и того же языка как на клиенте, так и на сервере, позволяет использовать единый цикл разработки как для сервера, так и для клиента. Быть может, суждено сбыться мечтам разработчиков о прозрачном перемещении логики приложения с клиента на сервер... или даже серверы? Возможно, наиболее элегантным решением задачи построения сложной корпоративной системы в будущем станет реализация ее в виде цепочки серверов приложений, причем в момент разработки логика приложения может свободно мигрировать, обеспечивая максимальную производительность и ясность всей системы.
  • связь с БД
Мы не обсудили еще один очень важный аспект построения сложной системы - это сложность поддержания данных в целостном и структурированном виде для систем Intranet. Наиболее распространенная технология, когда данные представлены в виде гипертекстовых страниц, связанных перекрестными ссылками, не слишком применима для корпораций, имеющих дело с потоком часто обновляемой и меняющейся информации. Технология реляционных баз данных доказала свою применимость для таких случаев. Поэтому весьма важно знать о совместимости подхода Internet к использованию SQL-сервера в качестве хранилища информации. В прессе уже звучали заявления различных ведущих компаний о решении тем или иным способом этой проблемы.
  • формирование страниц "на лету"
Фактически основным требованием является обеспечить Web-сервером формирование гипертекстовых страничек для клиентского броузера, исходя из результатов запроса к SQL-серверу и шаблона такой странички.
О создании инструментов создания таких систем объявили практически все ведущие компании: Oracle, Informix, Sybase, Borland, Microsoft, IBM..., но, раз уж статья посвящена технологиям компании Borland, остановимся на особенностях решений компании Borland.
  • Visual dBase Internet Tools
Реализовать логику Web-сервера можно по-разному, и один из новых инструментов компании Borland предназначен для значительного количества приверженцев Visual dBase. Visual dBase Internet Tools позволяет реализовывать, с одной стороны, как клиентское приложение, получающее доступ к Internet, так и серверную логику для Web-сервера, работающего под управлением Windows NT.
  • Delphi components
Такой расширяемый инструмент, как Delphi, естественно не мог остаться без внимания как Borland, так и третьих фирм, специализирующихся на написании компонент. Сейчас существует уже целый спектр работоспособных решений для Delphi, от компонент для создания собственных броузеров до компонент, позволяющих создавать application server в многоярусной (N-Tier) архитектуре информационной системы Internet/Intranet.
  • Paradox & CGI
Для разработчиков, выбравших своим инструментом Paradox, также существуют расширения, позволяющие рассматривать Paradox как инструмент для создания как логики клиента, так и логики сервера.
  • InterBase InterClient
Планируется выпуск специального дополнительного линка для SQL-сервера компании Borland, позволяющего обращаться за данными к серверу непосредственно из интернетовского клиента.
В недалеком будущем предполагается предоставить разработчикам исполнение определяемых пользователем функций InterBase, изготовленных на языке Java. До сих пор возможно было использование таких функций, изготовленных при помощи компилятора С и линкуемых непосредственно к ядру InterBase.
  • NEXUS
В ближайшее время планируется выпуск сервера приложений, где возможно будет размещать бизнес-правила системы. При этом клиентское приложение может абстрагироваться от того, где и в каком виде лежат данные. Nexus позволит объединять данные с нескольких серверов БД, возможно, находящихся на физически разных серверах.
  • JAVA и LATTE
Что же такого привлекательного имеется в новом языке программирования Java?
Java - это язык, во многом похожий на C++, однако имеющий несколько весьма неожиданных черт. Строгая типизация, как в языке Паскаль, отсутствие множественного наследования и строгое определение интерфейса объектов, поддержка многопотоковости на уровне языка, ввод-вывод в парадигме сокетов - вот основные особенности Java. При загрузке броузером приложения (applet - буквально "приложеньица") на языке Java происходит его верификация интерпретатором Java, а затем и исполнение. Такой способ исполнения позволяет избежать заражения системы вирусом.
Базовый интерпретатор Java занимает совсем немного места - для Windows 95 он составляет всего 145 Кб - поэтому перенос всей системы для новой операционной и аппаратной платформы не составляет труда, и это чувствуется - все новые и новые компании объявляют о своей поддержке этого языка.

Borland Latte

В ноябре 1995 года компания Borland объявила о начале работ над новым инструментом для разработчиков приложений Internet и БД - Borland Latte. Под общим названием скрывается несколько инструментальных средств, облегчающих разработку информационных систем в концепции Intranet.

  • AppAccelerator или "Just in-time compiling"
Итак, в соответствии с новой концепцией, клиентское приложение не хранится на винчестере клиентской станции, как это обычно было в классической архитектуре "клиент-сервер". Логика приложения хранится в application server (а им может выступать и Web-сервер) в виде множества "приложеньиц" - applets, и динамически подгружается по мере необходимости на клиентскую станцию. Этот процесс происходит достаточно быстро даже в случае медленного модемного соединения - обычный размер applet не превышает нескольких десятков килобайт.
История движется по спирали... Как это все похоже на концепцию бездисковых рабочих станций в файл-серверной архитектуре! Только в данном случае в роли аппаратного загрузчика выступает стандартный (или не очень стандартный) интернетовский броузер.
Компания Borland, предполагая, что большую часть таких станций составят рабочие места под Windows 95 и Windows NT, рассчитывает в ближайшее время выпустить продукт под названием AppAccelerator, реализующий концепцию "just in-time compiling" - компиляция на ходу. Этот инструмент позволяет исполнять Java-приложение не при помощи интерпретатора, а в компилированном виде, причем компиляция происходит в момент загрузки applet. Компиляция позволяет на порядок ускорить выполнение Java-приложений.
  • IDE
С выходом в марте новой версии Borland C++ 5.0, в которую входит в качестве дополнения поставка интегрированной среды разработки приложений на Java (Borland Latte), разработчики смогут ознакомиться с новым для себя инструментом, и оценить в очередной раз качество решений Borland.
  • Debugger
C января 1996 года можно получить с Web-сервера www.borland.com freeware-версию отладчика Java, разработанного в Borland на языке Java.
  • Component Architecture
Но самое интересное ожидается в конце 1996 года. По моему мнению именно компонентная архитектура Delphi привнесла решающий вклад в успех продукта. Компания Borland предполагает повторить успех для среды разработки на языке Java - проектирование приложений при помощи компонент ожидает в будущем и этот продукт.
  • Server&AppServer execution
Latte позволит разрабатывать приложения, исполняемые как на клиенте, так и на сервере. Или в любом месте многозвенной цепочки N-Tier - системы.

InterBase, NEXUS & Java

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

  • InterBase: 4.1-4.5 -> replication. Возможности репликации в SQL-сервере InterBase 4.5.
  • InterBase InterClient. Возможность удаленного доступа к таблицам InterBase через новый протокол доступа.
  • InterBase: NS API, CGI. Интерфейс InterBase с наиболее распространенными стандартами Web-серверов.
  • InterBase: UDF on Java. Возможность разработки и выполнения функций, линкуемых к ядру сервера, написанных на языке Java.
  • NEXUS: application server. Появление сервера приложений в многозвенной N-Tier системе.
  • NEXUS: business rules. Определение бизнес-правил на сервере приложений.
  • NEXUS: several SQL-servers. Сервер приложений может работать с несколькими источниками данных.
  • 3-Tier -> N-Tier. Естественное преобразование архитектуры клиент-сервер в N-Tier архитектуру.
Пример: система торгов на бирже.
Вашему вниманию предлагается описание реальной системы, реализованной с использованием части новых технологий. Эта система представляет собой модель биржи ценных бумаг, где брокерское место может работать как интернетовское удаленное клиентское место или как клиентское место в локальной сети. Каждый клиент может работать с данными при помощи стандартного броузера Netscape или при помощи эмулятора терминала (правда, в этом случае он будет вынужден покупать и продавать акции вслепую - история торгов, характеристики компаний представляются в виде графиков - в текстовом терминале такие возможности отсутствуют.
Архитектура системы - слабый клиент, Web-сервер, сервер приложений, InterBase 4.0 для AIX - стандартное решение для Intranet. Вся система может работать как в Internet, так и в закрытой внутренней сети. Производительность системы удивила даже разработчиков - никто не ожидал таких результатов, имея опыт разработки клиент-серверных систем. Безопасность - в модели реализовано кодирование передаваемых данных алгоритмом RSA, который всегда можно поменять на другой; данные передаются по сети в зашифрованном виде. Количество одновременно работающих клиентов может достигать, в зависимости от типа аппаратуры до нескольких тысяч подключений одновременно. Место администратора торгов сделано по классической клиент- серверной схеме, минуя многозвенную цепочку. Клиентское место администратора разработано на Delphi, сервер приложений представляет из себя расширение Web-сервера, написанное на C и комплект UDF для InterBase, написанный также на С. Разработка заняла 2 месяца.
Почему InterBase.
Естественный вопрос, который может возникнуть у специалистов, почему выбран InterBase в качестве основы для такой разработки. Ведь в последнее время появилось достаточно много Web- расширений известнейших SQL-серверов - например, Oracle, Sybase, Informix и др. Фактически, причин было несколько:
  • перспективность работы в этом направлении. Как уже рассказывалось выше, Borland предприняло ряд шагов по обеспечению разработчиков в Intranet инструментарием, применение которого кажется нам целесообразным.
  • многоплатформенность InterBase. InterBase реализован для более чем 20 платформ, список этот постоянно расширяется, поэтому разработчики не скованы необходимостью использования платформы прототипа системы.
  • беспрецедентная открытость InterBase, как инструмента. Именно возможность подключения функций, написанных на С разработчиками, позволяет обеспечить высокую производительность системы в целом.
  • самонастраиваемость сервера.
Технические особенности InterBase 4.0.
Вкратце перечислим основные особенности InterBase 4.0:
  • многоплатформенность: - NetWare, Windows NT, SCO UNIX, AIX, IRIX, Solaris, HP/UX, open VMS, NextStep и др. (более 20 платформ)
  • архитектура множественных поколений записи - возможность безблокировочной работы и быстрого восстановления после сбоев.
  • Возможность работы с "моментальным снимком" базы и поддержка DSS.
  • триггеры и хранимые процедуры
  • декларативная ссылочная целостность
  • поддержка online complex processing
  • соответствие стандарту SQL89 и драфт-стандарту SQL III
  • определяемые пользователем функции
  • сигнализаторы событий
  • поддержка 2 Phase Commit
  • поддержка больших двоичных объектов и массивов (размерность - до16)
  • интеграция с широко распространенными инструментами разработчика - Delphi, Paradox, BC++, Visual dBase, CASE-средства третьих фирм.
Инициативы Borland в отношении Internet
Процитируем несколько строчек из пресс-релиза компании Borland:
Borland объявила две фазы реализации решений для Internet.
Первая из них, по словам Пола Гросса, вице-президента компании, заключается в расширении уже существующих продуктов Borland дополнительными Internet-инструментами. В ближайших планах реализации такого подхода компании - обеспечение поддержки разработки Java-приложений в Borland C++ 5.0 и выпуск Visual dBase Internet Tools.
Вторая фаза, как было описано Гроссом, состоит в предоставлении заказчикам Intranet-решений - внутрикорпоративных сетевых систем на базе стандартов и средств Internet.
" Ядро технологий Delphi, которые позволили достичь огромного успеха на рынке рабочих групп, также обеспечит наш успех и на рынке Intranet-инструментов", отмечает Пол Гросс. "Мы убеждены, что Java, как стандарт программирования для Internet, в сочетании с новейшими инструментальными технологиями, представленными в Delphi, станет платформой для распределенных вычислений в Intranet."
Borland отмечает, что Borland C++ 5.0, планируемый к выпуску в конце этого квартала, включает средства разработки и отладки Java-приложений. Среда разработки предоставляет первый графический отладчик для Java, позволяющий разработчикам находить и исправлять ошибки в приложениях, написанных на языке Java. Компания, также, объявила о планах и продемонстрировала "just-in-time" компилятор (транслятор в машинный код) под названием AppAccelerator, позволяющий увеличить производительность существующих Java- приложений в 5-10 раз. Application Accelerator планируется к выпуску в составе Borland C++ Development Suite 5.0 в конце этого квартала.
Отладчик и AppAccelerator являются первыми компонентами, которые, в дальнейшем, будут интегрированы в единый инструмент визуальной разработки форм в стиле Delphi для языка Java. В ноябре 1995 года Borland анонсировала такой продукт под кодовым названием Latte.
Borland официально объявила о планах создания InterBase InterClient - расширении InterBase, поддерживающем Java. Этот инструмент принесет большой выигрыш корпоративным пользователям InterBase. В дальнейшем, Borland также планирует предложить сервер приложений под кодовым названием "Nexus" для удаленного доступа к базам данных на основе Java. Это позволит Intranet-разработчикам получить действительно трехуровневое (three-tier) окружение со всеми преимуществами много-платформенности и соответствующих стандартов протоколов.
С 9 февраля до 31 марта 1996 года разработчики могут свободно получить предварительную версию графического отладчика Borland для Java-приложений через Web-сервер компании - www.borland.com.

[Назад] [Содержание] [Вперед]
Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...