| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Java и .Net - способность к взаимодействию через CORBA
Новый продукт снимает головную боль при организации объектных
запросов между
Java
и .Net
Резюме
С тех пор, как потребность в взаимодействии между
Java
и .Net
стала общей проблемой крупных организаций,
CORBA
не часто использовалась для постройки моста
между этими двумя мирами. Нехватка коммерчески доступного
CORBA
продукта для .Net
требовала высоких инвестиций в эту технологию, что вело к
существенным финансовым и временным расходам. Начиная с выпуска
MiddCor
компанией
Middsol
в прошлом году, этот барьер исчез. В данной статье исследуются
фундаментальные понятия использования
CORBA
в гетерогенной окружающей среде, состоящей из
Java
и .Net
и демонстрируется простая реализация объектных запросов между
Java
и .Net.
Многие корпораций требуют от сегодняшних гетерогенных окружающих
программных сред обеспечения взаимодействия между платформами,
простирающиеся за пределы свободного сцепления, обеспеченного
Web-службами.
CORBA,
как альтернатива, доступен на стороне
Java,
но до недавнего времени отсутствовал объектный брокер для .Net,
написанный на
C#,
или Visual
Basic
.Net.
С выпуском
MiddCor
стала доступной полная
CORBA-инфраструктура
для Java
и .Net
и проблема такой интеграции фактически исчезла.
Hello
CORBA
– аппликация
В этой статье Вы узнаете как написать простую
CORBA
программу типа "Hello
World",
в которой клиент вызывает сервер и передает параметр
sendMsg
типа
String.
Сервер пишет
"Hello
" +
sendMsg
на экране монитора и возвращает строку
"Good
Bye
Winter"
клиенту, а тот выдает возвращенную строку также на экране монитора.
Программный код сервера для
hello
примера прилагается к тестовой версии
MiddCor.
Вы можете быстро стартовать сервер даже после модификации типовых
исходных файлов.
Чтобы создать эту аппликацию Вам необходимо три продукта:
Подготовка
IDL
IDL
(interface
definition
language)
определяет именное пространство, названия классов и методов для
интерфейсов запроса.
Его конструкции напоминают явские интерфейсы.
IDL
типовой аппликации довольно прост:
module HelloCorba
Секция
module
определяет пространство имен. Мы создадим это пространство в файле
IOR
(interoperable
object
reference)
так, чтобы клиент мог его использовать и чтобы мог найти службу
ссылок. В
C#
коде сервера в секцию
namespace
будет включена имплементация Вашего класса.
interface
- название типа серверного объекта. Для фактической имплементации по
общепринятому соглашению используется суффикс
Impl.
Kласс
Greetings
имеет открытую функцию
hello(),
которая ожидает строку в качестве параметра и возвращает также
строку. Заметьте, что в примере используется только тип данных
IDL
string.
Сохраните файл в директории по вашего выбору и назовите его
hello.idl.
Подготовка сервера
Запустите
MiddCor-IDL-компилятор,
MiddCorIdl.exe:
>
middcoridl
hello.idl
Он создаст один
C#
файл под именем
hello.cs.
Этот файл содержит стаб клиента и код скелетона сервера для класса
Greetings.
Фактический класс выполнения
GreetingsImpl
получен из скелетонного класса
GreetingsPOA
(генерирован из
CORBA
класса серванта). Код стаба клиента не
используется, поскольку наш клиент будет ява-программой.
Осталось лишь закодировать классы
GreetingsImpl
и
Server.
Последний обеспечит процесс выполнения для
ORB
и создаст серверный объект.
Сначала, сделаем доступными классы в именных просранствах
System
и
Middsol.
System
включает классы для всех типов данных и требуется для каждой .Net
программы:
using
System;
В
HelloCorba
namespace
реализуем два класса, описанные выше.
GreetingsImpl
- класс, выставленный через
CORBA.
Он получен из
GreetingsPOA
и содержит простую логику типовой аппликации (Примечание:
a_
приставка - соглашение, используемое
Middsol,
чтобы сделать код более удобочитаемым и используется для параметров
аргумента. Вы можете называть параметры, как Вам нравиться.):
namespace HelloCorba
Метод
main()
класса
Server
инициализирует
ORB,
находит
root POA (Portable Object Adapter),
активизирует
POA
менеджера,
и
создает
файл
IOR
для
клиента.
Затем запускает
ORB,
а в случае ошибки избавляется от его:
class Server
Наш свежеинициализированный
ORB
держит
rootPOA
процесс в состоянии ожидания. Мы должны
получить ссылку на него, чтобы его активизировать.
resolve_initial_references
возвращает ссылку на объект типа
CORBA.Object,
который должен быть преобразован в
PortableServer.POA:
Middsol.PortableServer.POA oRootPOA =
Следующим шагом создаем объект типа
GreetingsImpl,
к которому будет обращаться клиент с запросами:
GreetingsImpl
oGreetings
=
new
GreetingsImpl();
Теперь соединим имплементацию серванта с
POA,
получим ссылку на
CORBA
объект и запишем ее в
IOR
файл:
Middsol.CORBA.Object obj = oRootPOA.servant_to_reference( oGreetings
);
Остальная часть работы на сервере тривиальна – запускайте
ORB
и сообщите пользователю, что он стартован, а в случае ошибки
разрушьте его:
Запомните этот код в файле
helloSrv.cs,
откомпилируйте и запустите полученную программу (не забудьте
включить
hello.cs
в Ваш
Visual
Studio
проект). Должно появиться
DOS
окно и показаться сообщение "Server
is
running
...". Наш сервер теперь ждет запросов.
Подготовка клиента
Явский код клиента еще более прост. Чтобы совсем ничего не мешало
выбросим и обработки исключений.
Для начала создайте копию файла
hello.idl
и запусите
Java
IDL
компилятор
idlj.
Опция
-f
client
избавит от ненужного нам кода скелетона:
idlj
-f
client
hello.idl
Компилятор
IDL
создаст поддиректорий
HelloCorba
по названию модуля, а в нем пять исходных файлов. Их назначение
опустим – посмотрите сами. Откомпилируйте произведенный код и
создайте
jar
файл:
javac
HelloCorba*.java
Теперь всё готово для кодировки клиента. Создайте
java
файл в директории, где уже находится файл
HelloCorba.jar.
Сначала импортируем необходимые
java
классы:
import HelloCorba.*;
Затем выполнение класса
GreetingsClient.
Он содержит только
main()
метод:
public class GreetingsClient
Первая строка инициализирует
ORB,
аналогично C#
классу
Server,
описанному ранее:
ORB orb = ORB.init(args, null);
Теперь клиент читает
IOR
файл, созданный сервером. Если клиент
стартует на другом компъютере, то и
IOR
файл должен находиться там же:
FileReader fr = new
Используя
метод
ORB
string_to_object,
IOR
может быть преобразован в объектную ссылку:
org.omg.CORBA.Object obj = orb.string_to_object(ior);
Полученная ссылка должна быть конвертированна в тип
Greetings:
Greetings proxy = GreetingsHelper.narrow(obj);
Теперь можно благополучно вызвать удаленный объект и выдать
полученное сообщение на консоле:
String msg = proxy.hello("Spring");
Откомпилируйте и запустите клиента:
javac
GreetingsClient.java
В окне DOS’а
должна появиться строка "Server
says:
Good
Bye
Winter".
В это же самое время, строка "Client
says:
Hello
Spring"
должна появиться в
окне сервера.
Вместо
IOR
можно использовать службу наименований (naming
service),
например orbd или
tnameserv,
прилагаемые к
Java
SDK.
Заключение
Этот проект демонстрирует, что
CORBA
- мощное средство взаимодействия между .Net
и Java.
CORBA
сложна и за день стать мастером нельзя, но с использованием
CORBA
.Net
и с минимальными знаниями можно приступать к
работе, поскольку большинство сложностей похоронено в недрах
ORB.
Рубрика: .NET Framework
HTML 5: пять вещей вызывающих особый интер....
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.
Подробнее... |
Рубрика: Html
| Добавлено: 22.12.2008
asp.net: ListView с разных сторон.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Создание кросс-таб отчета в Stimulsoft Rep....
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|