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

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

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

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

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

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

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

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

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

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

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

Уважаемые читатели!

С каждым годом в мире компьютерной индустрии возрастает значимость программного обеспечения категории middleware (на русском языке принято использовать не очень удачный эквивалент "промежуточное программное обеспечение"). Существует множество продуктов этой категории, производимых крупными, средними и даже мелкими софтверными компаниями. Перспективность направления middleware демонстрирует, например, тот факт, что всемирно известная компания Borland сменила свое название на Inprice (www.inprise.com, www.inprise.ru) и объявила, что стратегией компании является обеспечение широкого диапазона средств middleware. По всей видимости, основное влияние на распространение продуктов промежуточного программного обеспечения оказывает переход к использованию многозвенных архитектур при организации информационных систем и повсеместная тенденция к интеграции с технологией Internet. В статье, обзор которой предлагается вашему вниманию, делается попытка провести некоторую классификацию технологий и продуктов, относящихся к middleware. Несмотря на некоторый перекос в сторону Web (что, естественно, отражает личные привязанности автора), на мой взгляд, статья помогает упорядочить свои представления и познакомиться с новейшими тенденциями. Если вам интересна эта тематика, рекомендую познакомиться с Web-сайтами упоминаемых в статье компаний. Многие из этих сайтов содержат очень интересную информацию.

С уважением, Сергей Кузнецов


The Middleware Muddle

DBMS OnLine, May 1998
David Ritter, the principal of WebMine, a Boston-based consulting practice focused on information and technology solutions for Internet business

В настоящее время термин "промежуточное программное обеспечение" ("middleware") относится к любому программному компоненту, который располагается между пользовательскими приложениями на персональных компьютерах и РСУБД или унаследованной системой, непосредственно управляющими необходимыми данными. Этот термин, подобно многим другим, применяется настолько широко, что теряет смысл. Для наведения какого-нибудь порядка в статье предлагается несколько более точных категорий, хотя конкретные продукты могут одновременно относиться к нескольким категориям.

Прозрачность баз данных

Если приходится иметь дело с несколькими системами баз данных, то наиболее существенным является общий интерфейс доступа к данным (API - Application Programming Interface). Наличие такого API позволяет использовать стандартные инструментальные средства и существенно упрощает процесс разработки приложения. К наиболее популярным интерфейсам относятся ODBC, OLE DB и ActiveX Data Object (ADO) компании Microsoft. Среди разработчиков, использующих язык Java, в качестве общего интерфейса доступа к базам данных принят JDBC. В мире Си++ многих привлекает DBTools++ компании RogueWave Software (www.roguewave.com).

IPC и объекты

Протоколы и продукты этой категории облегчают межпроцессные взаимодействия (IPC - InterProcess Communications) и распределение объектов. Они выполняют роль клея, позволяющего соединить многозвенные приложения. В большинстве продуктов более высокого уровня, которые обсуждаются ниже, используется один или несколько таких протоколов. Ключевыми категориями являются следующие:

  • Вызовы удаленных процедур (RPC - Remote Procedure Call) и соответствующий Java-эквивалент, вызовы удаленных методов (RMI - Remote Method Invocation. Эти протоколы позволяют приложению вызывать функции и передавать параметры, минуя границы процессов и машин. Более распространены синхронные механизмы, т.е. каждая операция должны закончиться до начала следующей. Такие сервисы обеспечиваются операционной системой или языковой средой разработки. Обычно RPC базируются на инфрастуктуре распределенной вычислительной среды (DCE - Distributed Computing Environment).
  • Системы передачи сообщений. В отличие от RPC такие системы, как правило, бывают асинхронными. Запросы сервисов ставятся в очередь и обрабатываются в соответствии с приоритетами и доступностью ресурсов. Возвращаемые ответы содержат информацию об успешном или неуспешном выполнении операции. Средства этой категории часто используются в приложениях, связанных с организацией потоков работ (workflow) и управлением процессами, а также в сильно распределенных приложениях с медленными и ненадежными соединениями.
  • Распределенные объектные системы. Объектные системы обеспечивают средства размещения и взаимодействия объектов в распределенной среде. Объекты идентифицируются именами или сервисами, а также поддерживаемыми ими интерфейсами. Реализация объекта и платформа, на которой он выполняется, прозрачны для клиента.

В последней из перечисленных областей бушует война. При поверхостном взгляде видно сражение технологий Distributed COM и ActiveX компании Microsoft с технологиями CORBA и IIOP (Internet InterORB Protocol) консорциума OMG и JavaBeans. При более глубоком рассмотрении эта битва отражает борьбу между открытостью, зрелостью и масштабируемостью ОС UNIX и возрастающей силой Microsoft NT. Итеропетабельность между этими стандартами достигается медленно.

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

Мониторы управления транзакциями

Интенсивное совместное использование ресурсов приводит к возникновению узкого места, затрудняющего выполнение работ. Многие ранние попытки использования архитектуры "клиент-сервер" в масштабах предприятия провалились в результате неадекватного управления ресурсом баз данных. Ранние эксперименты по использованию РСУБД для управления динамическим содержимым Web-страниц постигла та же судьба и по тем же причинам. Во многих случаях проблема не была связана с реальной обработкой операторов SQL. Неприятности возникали по причине отсутствия должного управления соединениями с базами данных и применения неэффективных методов хэширования.

Начиная с CICS (Customer Information Control System) компании IBM, созданной в начале 1970-х, был разработан ряд систем для управления ресурсом баз данных и транзакциями. Успех этих продуктов демонстрируется тем, что лучшие 20 результатов, полученных на тестовом наборе TPC-C (измеренных в числе транзакций в минуту 2 февраля 1998 г.), получены с примением технологии промежуточного программного обеспечения баз данных. При отборе на основе параметра цена/производительность в 18 из лучших 20 результатов использовались мониторы транзакций.

TP-мониторы получили развитие по следующим причинам:

  • Во многих организациях используется более чем одна система баз данных, и требуется возможность выполнять транзакции, пересекающие границы этих систем.
  • Многие системы баз данных требуют наличия отдельного процесса операционной системы для каждого подключенного пользователя. Для приложений с сотнями пользователей не хватает мощности даже самых крупных компьютеров.
  • Установление соединения с базой данных часто происходит медленно. Если много пользователей часто подключается и отключается, производительность системы серьезно деградирует.
Эти проблемы решаются в TP-мониторах следующим образом:
  • Обеспечивается одновременная связь с набором различных систем баз данных.
  • Поддерживается двухфазный протокол фиксации, гарантирующий завершение транзакций над несколькими базами данных.
  • Пользовательские запросы обрабатываются с использованием легковесных нитей (threads) операционной системы, а не полновесных процессов. Это позволяет TP-мониторам использовать возможности SMP-систем (SMP - Symmetric MultiProcessor), таких как Sun Enterprise, Digital Alpha и Compaq Proliant.
  • Поддерживается постоянный пул подключений к базам данных, и эти подключения разделяются между пользователями. В большинстве приложений каждый пользователь реально обращается к базе данных только часть общего времени. Часто сотни "одновременно работающих" пользователей могут быть эффективно обслужены за счет наличия одной трети или даже одной десятой от числа подключений к базе данных, требуемых для прямого доступа.
  • Долговременное сохранение разделяемых подключений к базе данных существенно уменьшает трафик подключений.
  • Обеспечивается балансировка нагрузки путем планирования использования разделяемых ресурсов и направления запросов к наименее загруженным серверам. Мониторы могут также обнаруживать и обрабатывать ситуации, когда сервер или другой ресурс выходит из строя и нуждается в перезапуске.
  • Запросы обрабатываются асинхронно с распределением нескольких запросов к одному и тому же серверу между разными подключениями к базе данных (так называемый "конвейерный" параллелизм).
  • Запросы заспределяются между несколькими серверами баз данных (так называемый "развернутый" параллелизм).
  • Для координации операций разделенных и распределенных приложений поддерживается одноранговая связь с другими мониторами обработки транзакций.

Появление TP-мониторов породило ряд интересных вопросов по поводу лицензирования продуктов управления базами данных. Большинство поставщиков, включая Oracle, Sybase и Informix, лицензирует свои продукты на основе числа подключений. Чем больше допускается одновременных подключений к базе данных, тем больше нужно платить. Но при использовании TP-монитора много пользователей может совместно использовать небольшое число подключений. Значит ли это, что можно купить лицензию на РСУБД по дешевке? Вероятно, нет, поскольку теперь основные поставщики принимают это во внимание и требуют платы на основе числа реальных пользовательских подключений, независимо от того, используется ли промежуточное программное обеспечение.

Это противоречие особенно неприятно для Web-приложений, с которыми часто работают миллионы пользователей. Во многих случаях взаимодействие этих пользователей с базой данных очень ограничено. Например, Web-сайт, в котором база данных используется только для регистрации пользователей, может нуждаться в пуле из десяти подключений для обслуживания всех возможных пользователей. Однако поставщик РСУБД скорее всего потребует приобретения лицензии для поддержки неограниченного числа пользователей. Для UNIX-систем стоимость таких лицензий может доходить до сотен тысяч долларов. Такая ценовая политика стимулирует перенос Web-приложений на Windows NT, и в ближайшие месяцы и годы это будет сильно влиять на выбор платформы поставщиками РСУБД.

На арене открытых систем в категории TP-мониторов лидирует Tuxedo компании BEA Systems. Вышедший из компании Novell в феврале 1996 г., этот надежный и зрелый продукт использовался примерно в 80% упоминавшихся выше результатах TPC-C. В 1997 г. продукт стал победителем конкурса журнала DBMS Readers' Choice на лучший монитор транзакций. Среди других продуктов этой категории следующие:

  • Encina компании Transarc (победитель конкурса DBMS 1996 г.)
  • Продукты семейства Transaction Server компании IBM (включая CICS и Encina)
  • ACMSxp компании Digital
  • Top End компании NCR (распространяемый компаний Entersoft)
  • Trnasaction Server компании Microsoft.

Интеграция объектов

Некоторые мониторы транзакций могут эффективно работать с объектами. В этом отношении выделяется Microsoft Transaction Server (MTS). Продукт строго интегрирован с DCOM. По-существу, любой объект ActiveX может управляться и кэшироваться с помощью MTS. Это позволяет более просто осуществлять разделение объектов, поскольку существующие компоненты, построенные с помощью Visual Basic, Си++ или J++, могут быть легко приспособлены для управления сервером. MTS сохраняет "жизнеспособность" объектов для их повторного использования, устраняя потребность в постоянном создании объектов при запросе сервиса. По очевидным причинам MTS тесно привязан к Windows NT, но надежность и низкая стоимость продукта делают его очень привлекательным. Компания Microsoft проделала отличную работу по интеграции Java и ActiveX - можно использовать все Java-объекты. Это облегчает интеграцию MTS в многоплатформенные среды.

В мире UNIX спецификация OMG Object Transaction Server (OTS) направлена на унификацию функций TP-мониторов при использовании брокеров объектных заявок. Это расширение протокола CORBA нашло отражение в спецификации Java Transaction Service компании JavaSoft. Коммерческий дебют этой спецификации состоялся в феврале с выпуском компанией Sybase продукта Jaguar Component Transaction Server.

Другим влиятельным стандартом, который необходимо учитывать при оценке TP-мониторов и серверов приложений, является Transation Architecture (XA), спецификация, разработанная компанией The Open Group. XA определяет интерфейс между менеджером транзакций и используемыми им ресурсами, такими как системы баз данных и коммуникационные каналы. Большинство UNIX-ориентированных TP-мониторов и систем баз данных поддерживает этот стандарт. Поддержка на платформах Windows NT отстает, но MTS развивается в этом направлении.

Нужно также принимать во внимание коммуникационный протокол, используемый сервером приложений. Серверы, которые тесно привязаны к RPC (или DCOM в случае MTS), могут быть ограничены синхронной природой работы. Продукты, позволяющие использовать очереди сообщений, часто обладают большей гибкостью, особенно в случае ориентации на широкомасштабные сети. Например, в мониторе Encina может использоваться промежуточное программное обеспечение MQSeries компании IBM. Компания Microsoft намерена интегрировать MTS и Message Queuing Server в будущих версиях.

Серверы приложений

Являясь эффективными средствами для построения масштабных приложений категории OLTP (OnLine Transaction Processing), TP-мониторы обычно не обеспечивают следующие возможности:

  • Хранение логики приложений и управление ею
  • Размещение и создание экземпляров объектов
  • Кэширование объектов и отслеживание их времени жизни

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

Сервер приложений поддерживает определение логики приложений. Для этих целей некоторые серверы обеспечивают собственные средства разработки и языки. Другие полагаются на объектные стандарты, такие как CORBA, COM или JavaBeans. Почти во всех случаях требуется инкапсуляция логики приложения в одном или нескольких объектах. Возможности этих объектов доступны через их методы, которые могут быть вызваны напрямую из кода приложения или из других объектов.

Гибкость современных РСУБД делает соблазнительным поместить существенную часть логики приложения прямо в базу данных в виде хранимых процедур. Если не принимать во внимание ссылочные и другие ограничения целостности, это, вообще говоря, плохая идея. Для большинства приложений пропускная способность сервера баз данных является наиболее ценным ресурсом. Если сервер выполняет специфичную для приложения задачу для одного пользователя, пожирающего этот ресурс, то он не в состоянии обслуживать потребности всех других пользователей. Лучше разделить эту работу таким образом, чтобы аппаратные ресурсы могли быть сосредоточены на выполнении наиболее требуемых действий.

До последнего времени большинство серверов приложений было тесно связано с платформами разработки корпоративных приложений. Хорошим примером являются продукты компании Forte Software. Линия продуктов этой компании включает средства разработки GUI (Graphical User Interface), компоненты связи с базами данных и средства распространения. Все они выстроены вокруг надежного сервера приложений. Проектировщик создает приложение так, как если бы оно должно было выполняться на одной машине, а затем использует средства разделения, чтобы поделить работу между клиентом и серверами приложений. В продуктах семейства Vision компании Unify Corp. также используется эта модель.

До конца 1995 г. этот класс корпоративных инструментальных средств переднего края составлял достаточно хорошо понимаемую и устоявшуюся категорию. И тогда пришло время Web.

Простые Web-серверы уже не так уж и просты

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

Определение платформы Web-сервера существенно изменилось за последние 18 месяцев. Это связано с быстрым развитием Web-технологии как основы информационных и коммерческих платформ. Анализ инвестиций в intranets показывает, что удалось сэкономить многие миллионы долларов, особенно в областях продаж и поддержки заказчиков. Многие бизнесмены ожидают, что Web-коммерция позволит существенно увеличить общий объем продаж. Например, президент компании Cisco Systems Джон Чамберс (John Chambers) утверждает, что применение Internet-коммерции и intranet-систем позволяет его компании каждый год экономить более 250 миллионов долларов. Через Web осуществляется около 40% продаж с ожидаемым объемом в 1998 г. в 3 миллиарда долларов. Компания SAP AG организовала совместное предприятие с компанией Intel с целью переноса корпоративных приложений в среду Web.

Технически развитие Web-технологии облегчается наличием стандартов, таких как HTTP, SSL и Java. Эти стандарты воплощаются в Web-сервере, который служит центральной точкой для интеграции новых инструментальных средств и технологий. В приводимая ниже таблица иллюстрирует развитие функциональных возможностей Web.

Особенности Web-платформВозможности
Common Gateway Interface (CGI) Запросы целиком обрабатываются в отдельных процессах сервера; медленное и трудное программирование; отсутствует встроенная поддержка баз данных
Скриптовые среды первого поколения: Netscape LiveWire; Microsoft Active Server Pages (ASP); Apache with Java Servlets; GoldFusion; WebObjects Интеграция с HTML позволяет динамически расширять Web-страницы; разработка убыстряется благодаря возможности создания скриптов высокого уровня на JavaScript, VB Script и Java; имеются некоторые проблемы с эффективностью выполнения скриптов; обеспечивается некоторая поддержка объектов и баз данных; очень ограниченная безопасность.
Прикладные среды второго поколения: LiveWire plus LiveConnect and Borland/Visigenic ORB; ASP plus ADO and MTS; Apache with CORBA and JavaBeans; SilverStream 1.0; Progress Software WebSpeed Более развитая поддержка объектов; интеграция Java и CORBA; поддержка пулов подключений к базам данных; улучшенная производительность за счет кэширования и прекомпиляции; улучшенная безопасность за счет использования 40-битового SSL.
Корпоративные и коммерческие среды третьего поколения: Netscape with Kiva Application Server and Actra commerce servers; Microsoft Site Server 3.0 with Active User Object; MTS 2.0 and Merchant Server; Open Market LiveCommerce and Transact Усложненное пулирование ресурсов баз данных и кэширование объектов; интеграция с серверами знаний; расширения в сторону более вертикальных прикладных областей, таких как регистрация и профилирование пользователей; развитые функции категорий пользователь-бизнес и бизнес-бизнес; интеграция с платежными системами; более развитая безопасность с использование 64-битового SSL и цифровых сертификатов

Продукты в таблице приведены только в качестве примера. Число поставщиков и инструментальных средств, допускающих использование Web в качестве платформы приложений, возрастает с каждым днем, и существующие продукты непрерывно улучшаются. Параллельно с этим совершенствуются и Web-клиенты. При использовании на стороне клиента JavaScript, среды выполнения Java, динамического HTML и ActiveX Web-приложения больше не ограничены примитивным пользовательским интерфейсом.

Ключевые игроки в этой новой области приходят на рынок с разных сторон. Поставщики РСУБД предлагают серверы приложений, центром которых являются базы данных, например, Oracle Web Application Server и Sybase Jaguar CTS. Из мира Internet и электронной коммерции приходят серверы, ориентированные на интеграцию с Web-серверами, EDI (Electronic Data Interchange) и электронными платежными системами. К числу лидирующих продуктов относятся Kiva (недавно приобретен компанией Netscape), InterWorld Commerce Exchange, Dynamo компании Art Technology Group и EPIC компании Novera Software Inc..

Некоторые поставщики следуют примеру компании Forte Software, хотя ни один новый продукт не обеспечивает подобного уровня поддержки разделения приложений. Стараясь предоставить законченное и полностью интегрированное решение, поставщики обеспечивают собственные средства разработки и технологии. Например, в продукте WebSpeed компании Progress Software поддерживаются транзакционные сервисы, тесная интеграция с базами данных Progress, собственный скриптовый язык и т.д. Возможно использования языка Java для разработки компонентов приложения и обеспечивается доступ к любой ODBC-совместимой базе данных.

В продукте SilverStream компании SilverStream Software Inc. предлагается отличный набор инструментальных средств проектирования и разработки пользовательских интерфейсов, объектов и баз данных. В новую среду удачно внедрена основа PowerBuilder - Data Window. В качестве языка скриптов используется Java. Сервер приложений управляет выполнением агентов, которые могут запускаться при обновлении базы данных, по времени или по запросу из кода приложения.

Светлые и темные стороны

Во всех этих продуктах очевидным победителем является Java. Везде обеспечивается совместимость с Java на некотором уровне. Многие продукты, такие как Dynamo и Novera EPIC, базируются на Java с самого начала. Как уже отмечалось, даже Microsoft обеспечивает хорошую поддержку Java. Java является лучшим языком разработки многоплатформенных приложений, дающим возможность повторного использования и эффективного выполнения компонентов в клиентских и серверных звеньях приложения. Реализации Java быстро приобретают зрелость, а ранние проблемы эффективности решаются за счет улучшенных сред выполнения Java-программ и более быстрых процессоров.

Beans по отношению к Java играют ту же роль, что ActiveX по отношению к COM. Beans обеспечивают компонентную модель, включая обработку событий. До недавнего времени JavaBeans наиболее активно использовались для упаковки визуальных компонентов клиентских приложений. Новым шагом на пути становления Java корпоративным стандартом явился выпуск компанией JavaSoft продукта Enterprise JavaBeans (EJB). Это расширение сосредоточено на специализированных невизуальных Beans для сервера. Среда выполнения EJB обеспечивает поддержку пула нитей и неявное управление транзакциями. Многие поставщики TP-мониторов и серверов приложений собираются поддерживать эту компонентную модель. Некоторые из них будут иметь готовые продукты к моменту завершения выработки спецификации EJB.

Каковы отрицательные аспекты использования Web в качестве звена архитектуры корпоративного приложения? Вот некоторые из них:

  • Протокол HTTP идеально подходит для приложений "клиент-сервер". Это протокол без запоминания состояния, поэтому не требуется постоянное подключение к серверу. С другой стороны, информация о состоянии должна включаться в каждый запрос, что вызывает падение эффективности.
  • Бешеные темпы разработки приводят к появлению ненадежных выпусков продуктов с сомнительным качеством.
  • Надежность и эффективность выполнения JavaScript и Java в Web-браузерах все еще недостаточны. Это побуждает поставщиков Web-серверов приложений, таких как SilverStream, предлагать специальные клиенские среды выполнения приложений. Это решение разумно, но противоречит одному из основных обещаний Web-технологии - не заставлять инсталировать специальное программное обеспечение на стороне клиента.
  • Динамический HTML (DHTML) и библиотеки Java-классов для разработки пользовательских интерфейсов еще не стандартизованы. Если для приложения требуются развитые интерфейсные средства, придется ограничиться использованием некоторой конкретной версии браузера.
  • Внутри Web-браузера загруженный Java-код без разрешения пользователя не может писать на диски и производить другие потенциально разрушительные действия.

Выбор оружия

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

Для большинства ресурсоемких приложений выделенные мониторы транзакций обеспечивают наивысшую эффективность. Для приложений с более сложными правилами и логикой отличной основой являются серверы приложений общего назначения. В любом случае большая часть новой технологии связана со стандартами Web. Разработка в среде Java открывает широкий выбор возможностей для разделения и распространения приложений. В мире UNIX имеется широкий набор продуктов, основанных на CORBA и Java. Для Windows NT доминирует Microsoft MTS. Выбор поставщика, продукты которого строго соответствуют стандартам и открытой архитектуре, является лучшей гарантией в наше время быстрых перемен.

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

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

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

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

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

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

Бесплатный конструктор сайтов и Landing Page

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

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

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

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

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

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

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

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