(Возврат на основную страницу)
Дэйв Уилсон (Dave Wilson)
это письмо из будущего (у нас сейчас 2021 год, прошло 40 лет после выпуска IBM первого ПК). Это моя последняя попытка предотвратить ошибки в развитии компьютеров, которые подвергнут риску существование нашей цивилизации.
Но не все так ужасно, некоторые вещи можно назвать, ну… скажем, просто странными. Например, у Apple Computer по-прежнему все в порядке (но ее акционерам от этого не легче). В 2015 году компания освободилась от уплаты налогов — как религиозная организация. Власти приняли соответствующее решение, когда многие пользователи подвергли себя публичному самобичеванию, после того как Стив Джобс (Steve Jobs) не смог анонсировать ни одного мало-мальски существенного продукта на Macworld в Бостоне. Теперь евангелистов от Apple постоянно можно видеть в магазинах и в аэропортах. Этот культ притягивает наиболее симпатичных людей, поэтому они смогли довольно безболезненно влиться в общество. Остальные же просто избегают разговоров о технологиях на людях, рискуя, по меньшей мере, быть захлестнутыми потоком гневных сообщений по почте.
Билл Гейтс (Bill Gates) вот уже два года как забаррикадирован в своем огромном подземном бункере с группой истинно верующих из старого состава Microsoft Corp.
Билл Гейтс со своими миньонами в буквальном смысле ушел в подполье в 2019 г., когда Верховный суд в 1249-й раз вынес решение не в пользу компании по делу о нарушении антимонопольного закона, начатому еще в 1997 г.
Власти оставили попытки выкурить их оттуда, рассудив, что в результате штурма могут пострадать люди, формально невиновные (поскольку на самом деле обвинение против них никогда не выдвигалось).
Разные группы филантропов пытались «депрограммировать» последователей человека, однажды возглавившего Microsoft и заманившего их в бункер. Однако претенденты на роль спасателей обычно сталкивались с едкими насмешками: порабощенные культом Microsoft согласны покинуть свое убежище, лишь если филантропы смогут отгадать три загадки. Одной группе, обманом использовавшей группу программистов для Linux, это удалось. Но засевшие внутри упорно считают, что линуксоиды сжульничали, и больше не откликаются ни на какие уговоры извне.
Единственная причина, по которой они еще «не отдали концы» у себя под землей, в том, что они постоянно выпускают новые пресс-релизы. Вот, как вчера, когда было объявлено, что Microsoft очень серьезно относится к безопасности. В течение последних недель тон пресс-релизов был жалобно-однообразным: в них пользователям Windows Uber Grande предлагался пакет исправлений в обмен на ящик Malomars.
Однако проблема, связанная с установленной Microsoft системой лицензирования, все еще не решена.
Несколько лет назад компания прекратила продавать лицензии, введя вместо этого подписку. Пользователи постоянно платили сборы, как за кабельное ТВ, и должны были использовать ОС и софт от Microsoft, например Office.
В результате, когда Microsoft принимала решение о выпуске очередного обновления, то все обновляли свое ПО как по команде, поскольку в конечном счете компания просто перекрывала доступ к старому ПО. И недалек был тот день, когда на всех компьютерах оказались бы совершенно одинаковые программы.
У такого положения было несколько огромных преимуществ. Компьютеры стали намного проще и надежнее, поскольку гибкость им теперь была ни к чему. Проблемы, связанные с технической поддержкой и интероперабельностью, практически исчезли. Вся бытовая техника, от микроволновки до холодильника, работала в основном под управлением урезанной версии ОС от Microsoft.
Но, поскольку теперь абсолютно все — даже моя эле-ктробритва — работает под одной и той же ОС, возникла угроза: ведь если кто-то найдет «дыру» в системе безопасности, то наши компьютеры могут «вырубиться»… ВСЕ компьютеры в мире!
Однако кое-где теперь дают электричество лишь на пару часов в сутки. Водить машины стало небезопасно, поскольку светофорам перестали верить. Время от времени толпы людей с факелами вламываются в дома, где живут специалисты по высоким технологиям и… в общем, теперь у нас не хватает людей, которые еще могут хоть что-то починить.
Сейчас мы на краю такой же катастрофы, как Великая эпидемия ожога кукурузы 2012 года. Тогда все возделывали генетически идентичную кукурузу, дававшую потрясающие урожаи. Но теперь новая болезнь, сначала поразившая небольшое поле в Айове, уничтожила всю кукурузу в мире, поскольку не оказалось ни одного устойчивого растения. Боже мой, чего бы я не отдал за пакетик кукурузных хлопьев!..
Кент Тегельс (Kent Tegels)
Предполагается, что Вам знакомы следующие методики и технологии:
· l создание и использование страниц ASP (Active Server Pages);
· l создание и использование документов на языке XML, схем, таблиц стилей и транс формаций;
· l создание и использование хранимых процедур; если Вы не знакомы с этим процессом, изучите книгу «Beginning SQL Server 2000 Programming» издательства Wrox Press (http://www.wrox.com/Books/Book_Details.asp?isbn=1861005237) или статью «Creating a stored procedure» из MSDN Library (http://msdn.microsoft.com/ library/enus/vdbref/html/dvhowcreatingstoredprocedure.asp).
В моей работе есть один забавный аспект — постоянная необходимость применения творческого подхода при решении разного рода проблем. Недавно я делал приложение, состоящее из распределенных компонентов. Мне было известно, что данные, с которыми я работал, были организованы как с помощью реляционной, так и иерархической структуры. Также было известно, что в настоящее время разрабатывается ряд приложений, которые станут потребителями этих данных. В рамках традиционного подхода я использовал для получения доступа к данным хранимые процедуры, возвращающие несколько объектов ADO (ActiveX Data Objects) Recordset, которые загружались в объекты COM+. Все шло замечательно, пока в один прекрасный день не стало ясно, что, затратив лишь немного усилий на планирование и обучение, можно ускорить разработку и снизить ее трудоемкость, если сделать данные доступными в формате XML (eXtensible Markup Language). Еще несколько недель назад во время посещения одного из мероприятий Microsoft Developers’ Network я предположил, что новые функции поддержки XML из SQL Server 2000 позволят существенно сократить затраты труда на разработку и размер кода для доступа к данным.
В этой статье приводится описание решения на основе вездесущей БД Northwind Traders, с помощью которого Вы сможете сделать нечто подобное для себя. Отделу сбыта и маркетинга компании Northwind нужна возможность запроса через интрасеть заказов, по которым покупателю уже отгружен товар. Эта возможность должна быть доступна в системе оплаты на местах. Кроме того, многочисленным покупателям и выездным представителям Northwind требуется доступ к этой информации через Интернет. И конечно же, парни из отдела сбыта пообещали покупателям, что они смогут загружать эти сведения «прямо к себе на компьютер».
В решении, которое я собираюсь здесь описать, задействованы:
· способность SQL Server 2000 возвращать ре зультаты запроса в виде правильно сформиро ванных документов XML с синтаксически вер ной (Valid) схемой
· способность объекта Record осуществлять вы борку документа XML напрямую из SQL Server 2000 подобно результату запроса;
· способность синтаксического анализатора XML, разработанного Microsoft, применять таблицы стилей к хранящемуся в памяти документу XML;
· страницы ASP (Active Server Pages), возвраща ющие документ XML или результаты его транс формации через поток HTTP.
Но зачем нужно это все? Главная причина такова: если кто-то выполняет полезную работу по структурированию возвращаемого документа XML, то усилия, необходимые для доставки документа многочисленным адресатам (которым он, вероятно, нужен для самых разных целей), можно свести к обеспечению верного определения необходимых трансформаций и безошибочной работы «сетевого канала». При этом не надо разрабатывать альтернативную стратегию организации доступа к данным или их доставки каждому потребителю. Побочное преимущество этого подхода — возможность использования результирующих данных в формате XML. Это может означать, что обещание отдела сбыта на самом деле выполнимо!
Задачу всех задействованных в этой работе методик можно свести к получению рациональной схемы документа-источника данных, которая позволяет разрабатывать хранимые процедуры, возвращающие действительные результаты в формате XML, создавать таблицы стилей для корректного преобразования данных и построения «насоса данных» ASP (ASP «data pump»). Мы рассмотрим каждый из этих вопросов, но основное внимание мы уделим разработке хранимых процедур.
Роджер Дженнингс (Roger Jennings)
Связывание расширяет набор источников данных, с которыми может работать SQL Server, дополняя его Active Directory,Jet и даже папками Exchange Web.
В SQL Server 7.0 функциональность удаленного сервера, которую поддерживали более ранние версии этой программы, заменили связанные (с помощью компонентов доступа OLE DB) серверы. В прошлом для межсерверного взаимодействия использовались вызовы удаленных процедур. Однако, судя по весьма скудным (если не считать ссылки на Web-узел Microsoft) результатам, которые возвращают поисковые машины в ответ на запрос «linked server», предмет статьи почти не попадал в поле зрения авторов сценариев и программ на Visual Basic.
Вам понадобится:
• SQL Server 7.0 или 2000 (Standard edition или MSDE edition);
• Windows 2000 или NT 4.0 (SP5+) Server;
• Internet Information Server 5.0;
• Internet Explorer 5.0 или выше;
• Index Server 2.0;
• Exchange 2000;
• Microsoft Data Access Components 2.6;
• Visual Basic 6.0.
Связанные серверы (linked servers) — важный и гибкий инструмент для централизованного управления данными из гетерогенных источников, поскольку список компонентов доступа Microsoft OLE DB постоянно растет: в Exchange 2000 и SQL Server, работающих под управлением Windows 2000, их 13 или даже больше. Связанные серверы позволяют выполнять запросы к Active Directory (LDAP) и БД Microsoft Jet, каталогам Index Server 2 и Web-папкам Exchange 2000, а также создавать представления на основе этих источников данных (рис. 1). Связанная БД Oracle или другая БД с архитектурой клиент — сервер позволяет использовать в Access Data Projects (ADP) из Access 2000 не только SQL Server, но и другие источники данных.
Можно создавать соединения между любыми из этих нетрадиционных источников данных, а также с таблицам SQL Server и другими разделяемыми БД или БД с архитектурой клиент-сервер. Я помогу Вам поближе познакомиться с хранимыми процедурами SQL Server, предназначенными для работы со связанными серверами (см. «Хранимые процедуры упрощают связывание серверов») и синтаксисом запросов, специфичным для конкретного компонента доступа. Освоив это, Вы не встретите затруднений при дальнейшей работе со связанными серверами.
Можно добавлять связанные серверы с помощью Query Analyzer или Enterprise Manager (в SQL Server 7.0 или 2000), чтобы поэкспериментировать с распределенными запросами к комбинированным наборам локальных и удаленных (связанных) серверов. Вероятно, программистам на VB будут более интересны примеры кода для манипулирования связанными серверами, исполнения распределенных запросов, создания представлений на основе нетрадиционных источников данных и тестирования производительности, в которых используются ADO (ActiveX Data Objects), а не команды языка Transact-SQL. Чтобы ускорить создание и тестирование связанных источников данных SQL Server, Jet, LDAP, Exchange и Index Server 2.0, я написал проект-пример LinkSvr.vbp (его можно найти в прилагаемом к статье архиве). Работая над этим примером, я также смог испытать новый объект ADODB.Stream из ADO 2.6 и новые свойства объекта ADODB.Command при чтении-записи данных SQL Server 2000 и сохранении запросов в формате XML. Во время программирования и тестирования примера LinkSvr.vbp я открыл ряд важных хитростей и обнаружил некоторые проблемы с производительно-стью. Я расскажу о них и покажу, как они влияют на использование распределенных запросов в рабочих приложениях.
Основная задача формулируется так: нужен простой подход, в котором связанные серверы используются для создания обновляемых представлений SQL Server, делающих БД Jet 4.0 доступными через обычные клиентские интерфейсы DAO (Data Access Objects), ADP и клиенты VB 6.0 на основе SQL Server одновременно.
Если приложения Access нельзя перенести на SQL Server, но при этом нужно перейти на ADP и создавать соединения между таблицами Jet и SQL Server (или то и другое одновременно), выход — в связывании таблиц Jet с SQL Server. Другой распространенный мотив применения связанных таблиц Jet — получение возможности использования в SQL Server 2000 запросов по HTTP к связанным источникам данных Jet .