Интеграция j2ee и .NET решений

pic

Давайте попробуем взглянуть на текущее состояние софт-решений. С одной стороны, мы имеем большой «парк» софта, написанного на Java, с другой стороны — решения, базирующиеся на технологии Microsoft и Borland.
Лично я бы не стал делить по принципу: мир серверных решений принадлежит Java, а клиентские делят все остальные.
На текущий момент имеются две платформы, способные конкурировать друг с другом на рынке промышленных систем. Это J2EE и .NET. У обоих платформ есть свои плюсы и минусы, но мы поговорим о том, как заставить работать их вместе …
Для начала ответим на вопрос: «А зачем вообще это нужно?»

Во-первых, существует уже большое количество работающих систем, с которыми не хочется расставаться.
Во-вторых, разрабатывая новые системы, требуется интегрировать их с уже существующими.
Отвечать на вопрос: «А почему не переписать всю систему заново?» — нет необходимости. Любой финансовый директор выставит нас за дверь с подобной идеей.
Перечислим проблемы, с которыми нам придется столкнуться:

• Java и .NET — продукты разных компаний. Каждая компания тянет одеяло на себя, тем самым не объединяя технологии, а пытаясь вытеснить друг друга.
• Есть отличия в архитектуре систем. И, как правило, если программист знаком с одной технологией, то он и слышать не хочет ни о чем другом.
• Есть отличия в библиотеках и типах данных.
• Ну а процесс установки и сопровождение это, вообще, головная боль всех разработчиков. А если у нас не одна платформа, а целых две?

Теперь перечислим некоторые выгоды от интеграции:

• Легкое отображение информации в Windows интерфейсе из Java-систем. Windows на текущий момент — самая «дружелюбная» операционная система. Кстати, с богатыми возможностями, что бы о ней ни говорили.
• Ничего не мешает разрабатывать новые системы на платформе .NET, полностью совмещенными с системами на платформе Java.
• Использование той платформы, которая лучше справится с задачей. И не думать о том, как мы все это объединим.
• Плюс к этому все, что было сделано до нас, послужит еще не один год. Накопленный опыт и знания — это самое ценное, что у нас есть!

pic

Какой директор не хочет на экране своего монитора увидеть график продажи товаров за последний год, да еще и с по всем магазинам? А это утопия, господа, если у этого директора 16 магазинов, 4 склада и везде полный «зоопарк» с программным обеспечением. Кстати, это типичная ситуация на текущий момент!
Так что же мы можем найти, чтобы мечты пользователей сбылись?
Для начала выработать концепцию: правила, по которым будут общаться наши платформы.

В 80% случаев решение будет таковым:

• Для тех систем, где нужен «продвинутый» пользовательский интерфейс, применяем .NET как клиентскую платформу. Этого же клиента учим понимать бизнес-объекты Java-сервера (бизнес-объект это что-то, чем оперирует система, например: заказ, товар, поставщик и тому подобное).
• Если нужно обмениваться данными между системами без участия клиента (пользователя), мы будем интегрировать их бизнес-логику на серверах.

pic
pic

Есть, конечно, частные случаи, когда такой подход не подойдет, но это скорее исключение, чем правило.
Пример: система на Java обнаружила, что на складе закончился какой-то товар. Ей было «сказано», что если это случится, то заказать этот товар у поставщика. Что система в точности и делает, взаимодействуя с системой на .NET платформе, с которой работает поставщик.
Эти два способа проиллюстрированы на приведенной схеме:

Так что же мы получили, следуя этим рекомендациям?
1. Когда нам нужны какие-то данные с сервера, нам не нужно описывать их заново в своей программе. Мы просто берем их с сервера и делаем с ними, что хотим!
2. У нас появляется API, при помощи которого любой программист без труда сможет подключиться к системе и получить ту информацию, которая ему нужна. К тому же мы решаем и проблему документирования.
3. Не нужно менять структуру Базы Данных, а это всегда очень «муторное» занятие.
4. Мы сможем масштабировать систему практически до бесконечной производительности.

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

Java Native Interface (JNI)
+ Unmanaged Calls

Самый простой из перечисленных методов. Мы создаем общую DLL-библиотеку. И используем ее как из Java при помощи JNI, так и из .NET вызовами через API операционной системы.

Преимущества:

• Поскольку используется единая библиотека, то мы полностью контролируем бизнес-логику.
• Высокое быстродействие, так как выполнение происходит на уровне API операционной системы.
• Идеальный вариант для маленьких приложений.
• Для работы необходимо просто скопировать файлы.

Недостатки:

• Работает только под Windows.
• Проблемы с многопоточностью.
• Ограниченная область применения.

Java/COM/.NET

В качестве переходника используется технология COM (DCOM). Платформа .NET имеет встроенные механизмы для взаимодействия и интеграции с COM — COM Interop. Для Java необходимо использовать переходник Java-COM Bridge.

Преимущества:

• Объектный подход к интеграции.
• Возможность распределенного взаимодействия на базе DCOM (Distributed COM).
• Имеются готовые решения сторонних поставщиков.

Недостатки:

• Проблемы с развертыванием и администрированием COM/DCOM.
• Зависимость от стороннего поставщика в случае выбора стороннего продукта.
• Направленность на одностороннюю интеграцию, к .NET или COM из Java.

Готовые решения:
JIntegra —

CORBA

Использование технологии CORBA как инфраструктуры для интеграции обоих платформ.

Преимущества:

• Промышленный подход, основанный на промышленных стандартах.
• Большая универсальность и большой набор сервисов, предоставляемый технологией.
• Поддержка технологии CORBA крупными софтверными компаниями.
• Поддержка и развитие со стороны Open Source проектов.

Недостатки:

• Сложность развертывания и сопровождения.
• Сложность реализации из-за большой универсальности.
• Не поддерживается Microsoft’ом как главным поставщиком операционных систем для Desktop-приложений.
• Покупка J2EE Сервера Приложений.

Готовые решения:
IIOP.NET Open Source-проект
Borland Janeva

.NET Remoting
Реализация технологии .NET Remoting на платформе Java.

Преимущества:

• Простота реализации при наличии инфраструктуры.
• Фактически все сводится к правилам сериализации и десериализации типов данных.

Недостатки:

• Зависимость от стороннего поставщика в случае выбора стороннего продукта.

• Технология .NET Remoting не является промышленным стандартом.

Готовые решения:
JaNET
JNBridgePro

Web Services

Реализация взаимодействия на основе технологий Web Services. Использование стандартов и протоколов: SOAP, WSDL, UDDI, HTTP, XML.
SOAP — протокол вызова удаленных процедур и сериализаии бизнес-объектов.
WSDL — стандарт описания Web-Service’ов.
UDDI — реестра доступных Web-Service’ов.
HTTP — транспортный протокол.
XML — язык описания данных.

Преимущества:

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

Недостатки:

• Использование протокола HTTP, соответственно низкая производительность.
• Проблемы с реализацией сессионных механизмов.
• Фактическое наличие нескольких разновидностей стандарта из-за несогласованной custom’изации каждым поставщиком.

Messaging Queuing Components

Интеграция платформ происходит посредством введения промежуточного слоя Менеджера Сообщений. На текущий момент на рынке представлено два промышленных и активно рекламируемых программных продукта данного класса. Это Microsoft Message Queue Server и IBM MQ Series Server.

Преимущества:

• Взаимодействие происходит на уровне сообщений, которыми обмениваются системы.
• Ассинхронная и гарантированная доставка сообщений.
• Необходимо специфицировать только формат представления бизнес-объектов.

Недостатки:

• Ориентация на Off-line-системы.
• Отсутствие API для MSMQ из Java.
• Сложность администрирования MQ-систем при межсерверном взаимодействии.

Готовые решения:
IBM MQSeries .NET API
FioranoMQ

Информация о продуктах

IIOP.NET

Разработчик: ELCA Informatique SA (Open Source проект)
Web-сайт: http://iiop-net.sourceforge.net
Категория: Интеграция Java/.NET на основе технологии CORBA.

Основные характеристики:

• Поддерживает как взаимодействие от .NET к Java, так и от Java к .NET.
• Имеет встроенный CLS to IDL-генератор.
• Имеет компилятор IDL для CLS.
• Позволяет программам .NET взаимодействовать с Java CORBA-объектами.
• Позволяет программам .NET вызывать методы EJB.
• Позволяет программам .NET работать по протоколу RMI.
• Поддерживает основные севера приложений (Jboss, BEA WebLogic, IBM WebSphere).

Borland Janeva

Разработчик: Borland
Web-сайт: http://www.borland.com/janeva/
Категория: Интеграция Java/.NET на основе технологии CORBA.

Основные характеристики:

• Встроенные компиляторы IDL-to-C# и Java-to-C#.
• Поддержка на уровне средств разработки (Plug-ins для MS Visual Studio .NET и Borland C# Builder X).
• Текущая реализация ORB совместима с VisiBroker 5.2.
• Совместим с сервером приложений Borland Enterprise Application Server 5.2 или выше.

pic
pic

Ja.NET

Разработчик: INTRINSYC
Web-сайт: http://j-integra.intrinsyc.com/ja.net/info
Категория: Интеграция Java/.NET на основе .NET Remoting.
Основные характеристики:

• Основан на реализации стандартных механизмов .NET Remoting в Java.
• Поддерживается как SOAP, так и бинарный протокол .NET Remoting.
• Обеспечивает двустороннюю интеграцию приложений.
• Позволяет вести разработку на UNIX-системах.
• Имеет собственные графические утилиты для разработки.
• Позволяет использовать Java Messaging Service из .NET приложений.

JNBridgePro

Разработчик: JNBridge
Web-сайт: http://www.jnbridge.net
Категория: Интеграция Java/.NET на основе .NET Remoting.

Основные характеристики:

• Доступ к объектам Java из .NET как к локальным объектам.
• Передача объектов как по ссылке, так и по значению.
• Доступ к сервисам J2EE (EJB, JMS и др) из .NET-клиента.
• Предлагает много сценариев интеграции.
• Поддерживает транзакции на уровне бизнес-методов.
• Реализован как SOAP, так и бинарный протокол.

FioranoMQ
Разработчик: Fiorano Software, Inc
Web-сайт: http://www.fiorano.com/products/fmq/overview.htm
Категория: Интеграция Java/.NET на основе Messaging Services.

Основные характеристики:

• Реализует Bridge для MSMQ.
• Требует Microsoft JVM для запуска MSMQ Bridge.
• Поддерживает JMS-интерфейс.
• Обеспечивает HTTP-туннелирование для доступа к очереди.
• Имеет встроенные средства для администрирования очередей.
• Имеет средства для интеграции с другими серверами очередей (например, MQSeries).

Выводы

Имеющиеся на текущий момент средства позволяют очень быстро и, главное, удобно «соединить» две совершенно разные платформы. Будем надеяться, что данный материал сломал стереотип «нестыковки» этих технологий.

Orphus system