В CORBA объекты функционируют на сервере, тогда как на клиенте находится только соответствующая заглушка (
В среде веб-сервисов вопрос с «нерадивым программистом» решили радикально – отменой самой возможности написать такой код. Несмотря на то что в 80 % случаев имевшаяся автоматическая загрузка была уместной и здорово сокращала программу.
Как уберечь кукурузу от насекомых-вредителей? Очень просто: выкосить её всю, к чертям. Вредители придут, а кушать нечего.
Возвращаемые веб-службами объекты не связаны с серверными за их отсутствием. Потому что у серверной части приложения нет состояния и, соответственно, не может быть никаких объектов в принципе. Обмен сообщениями происходит как и в обычной веб-среде: запрос – ответ без поддержки сессии. Общеупотребительная практика – использование DTO для передачи состояния объектов от клиента к серверу и обратно. Но DTO не содержит никаких ссылок на другие объекты, кроме вложенных. Его структура состоит из полей скалярных типов, разрешённых стандартом, вложенных объектов и массивов. Соответственно, вы не можете прозрачным образом динамически подгрузить недостающий объект, для чего придётся явным образом вызывать службу.
Прозрачная загрузка объектов в клиентском CORBA-приложении
BookGroup group = catalog.getBookCategory("Программирование");
Book[] books = group.getItems(); // один вызов сервера
foreach(Book book in books)
{
ShowInfo(book.Name +": ");
ShowInfo(book.getPopularity(). getVotesCount()); // два вызова
}
Работа клиентского приложения с DTO в среде веб-служб
BookGroupServiceClient groupClient = new BookGroupServiceClient(url1);
BookGroupDTO group = groupClient.GetBookCategory("Программирование");
BookServiceClient bookClient = new BookServiceClient(url2);
BookDTO[] books = bookClient.GetByGroupId(group.Id);
foreach(BookDTO book in books)
{
PopularityServiceClient popularityClient = new PopularityServiceClient(url3);
PopularityDTO popularity = popularityClient.GetByBookId(book.Id);
int votesCount = popularityClient.GetVotesCount(popularity.Id);
ShowInfo(book.Name +": ");
ShowInfo(votesCount);
}
Сила CORBA проявляется в том, что технология может работать и как в приведённых примерах, то есть с реализацией элементов полноценного многопоточного сервера приложений, и аналогично веб-службам, обрабатывая в сервисах объявленные в интерфейсах структуры, напоминающие DTO.
Вне контекста «автоматизированного бардака»[85] современные заявления о том, что СОА не оправдала возложенных на неё надежд, свидетельствуют о том, что и выбранная для неё модель веб-служб не стала решением проблем взаимодействия приложений в корпоративной среде. Ожидает ли нас новое пришествие CORBA в виде облегчённой её версии – покажет время. Поищите в Интернете по ключевым словам Web ORB – обнаружите немало интересного.
Прогресс неотвратим
Войны не будет, но будет такая борьба за мир,
что камня на камне не останется!
Вы думаете, что большие ЭВМ вымерли или вымирают? Попытаюсь вас если не разубедить, то хотя бы проинформировать.