В.В. Кулямин - Технологии программирования. Компонентный подход (1133554), страница 57
Текст из файла (страница 57)
CultureInfo,System.Globalization. NumberFormatInfo иSystem.Globalization. DateTimeFormatInfo.Аналогичную роль в C# играют классыпространства имен System.Globalization —RegionInfo и CultureInfo.Для хранения наборов объектов вместе с иханалогами для нескольких культуриспользуются объекты классаSystem.Resources.ResourceSet.Работа с различными кодировками текстаорганизуется при помощи классов пространстваимен System.Text.В C# работа с регулярными выражениямиможет быть организована при помощи классовпространства именSystem.Text.RegularExpressions в сборкеSystem.Аналогичные функции выполняют классыпространства имен System.Threading,расположенные как в сборке mscorlib, так и вSystem.207события, затворы (latches), блокировки типа«много читателей-один писатель» и пр.Пакет java.util.concurrent.atomic содержитклассы, реализующие гарантированноатомарные действия с данными различныхтипов.Пакет java.io содержит класс File,представляющий файлы и операции над ними, атакже большое количество подклассовабстрактных классов Reader и InputStream,предназначенных для потокового ввода данных,и Writer и OutputStream, предназначенных дляпотокового вывода данных.Пакет java.nio содержат классы дляорганизации более эффективного асинхронноговвода-вывода.Аналогичные классы содержатся впространстве имен System.IO.Аналоги классов из java.nio находятся впространстве именSystem.Runtime.Remoting.Channels в сборкахmscorlib и System.Runtime.Remoting.Классы и интерфейсы, лежащие в основеКлассы и интерфейсы, лежащие в основекомпонентной модели графических элементовкомпонентной модели JavaBeans, находятся вуправления .NET, находятся в пространствепакете java.beans.На основе этой модели реализованы библиотеки имен System.ComponentModel.элементов управления графическогоЭти классы, в основном, расположены в сборкепользовательского интерфейса (graphical userSystem.interface, GUI) Java.Библиотека элементов GUI находится вОдна из этих библиотек (самая старая и непространстве имен System.Windows.Forms вочень эффективная) размещается в пакетерамках сборки System.Windows.Forms.java.awt.Библиотека классов общего назначения дляДругая, более новая и демонстрирующаяработы с графикой находится в пространствебольшую производительность — в пакетеSystem.Drawing в сборке System.Drawing.javax.swing.Одной из наиболее эффективных библиотекграфических элементов управления на Java наданный момент считается библиотека SWT(Standard Widget Toolkit [15]), на основекоторой разрабатывается расширяемая средаразработки приложений Eclipse [16].Интерфейсы и классы для разработки сетевогоАналогичные классы и интерфейсы находятся вПО и организации связи между приложениями, пространствах имен System.Net иработающими на разных машинах, находятся вSystem.Runtime.Remoting в рамках сборокпакетах java.net, javax.net, java.rmi,mscorlib и System.javax.rmi.Аналогичные классы и интерфейсы находятся вПакеты java.security, javax.crypto ипространстве имен System.Security в сборкахjavax.security определяют основныеmscorlib, System и System.Security.интерфейсы и классы для поддержкиобеспечения безопасных соединений,шифрования, использования различныхпротоколов безопасности и различных моделейуправления ключами и сертификатами.Аналогичные библиотеки в .NET находятся вПакеты java.sql и javax.sql содержатпространстве имен System.Data в сборкеосновные интерфейсы и классы дляорганизации работы с базами данных,System.Data.208образующие так называемый интерфейс связи сбазами данных JDBC (Java DataBaseConnectivity).Пакет javax.naming содержит стандартныйинтерфейс служб директорий, называемый JNDI(Java Naming and Directory Interface) (см.следующие лекции).Определенные там интерфейсы являютсяосновой ADO.NET.Интерфейс и реализация аналогичной службыдиректорий ActiveDirectory on Microsoftнаходятся в пространстве именSystem.DirectoryServices в сборкахSystem.DirectoryServices иSystem.DirectoryServices.Protocols.Литература к Лекции 11[1] J.
Gosling, B. Joy, G. Steele, and G. Bracha. Java Language Specification, 3-rd edition. AddisonWesley Professional, 2005.Доступна как http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf.[2] C# Language Specification. Working Draft 2.7. ECMA, June 2004.Доступна как http://download.microsoft.com/download/8/1/6/81682478-4018-48fe-9e5ef87a44af3db9/standard.pdf.[3] C# Langauge Specification 2.0, March 2005 Draft.Доступна как http://download.microsoft.com/download/8/1/6/81682478-4018-48fe-9e5ef87a44af3db9/CSharp%202.0%20Specification.doс.[4] Б.
Лисков, Дж. Гатег. Использование абстракций и спецификаций при разработкепрограмм. М.: Мир, 1989.[5] Б. Майер. Объектно-ориентированное программирование. Концепции разработки. М.:Русская редакция, 2004.[6] Документация по JNI http://java.sun.com/j2se/1.5.0/docs/guide/jni/index.html.[7] S. Liang. Java Native Interface: Programmer’s Guide and Specification. Addison-WesleyProfessional, 1999.[8] Страница технологии JavaBeans http://java.sun.com/products/javabeans/index.jsp.[9] JavaBeans Specification 1.01. Доступна через страницуhttp://java.sun.com/products/javabeans/docs/spec.html.[10] Документация по библиотекам J2SE http://java.sun.com/j2se/1.5.0/docs/api/index.html.[11] Страница разработчиков .NET http://www.msdn.microsoft.com/netframework/.[12] Страница библиотеки Jakarta Commons http://jakarta.apache.org/commons/index.html.[13] Страница Apache Jakarta Project http://jakarta.apache.org/.[14] Страница библиотеки Joda http://www.joda.org/.[15] Страница библиотеки SWT http://www.eclipse.org/swt/.[16] Страница проекта Eclipse http://www.eclipse.org/.209Лекция 12.
Компонентные технологии и разработкараспределенного ПОАннотацияРассматриваются основные понятия компонентных технологий разработки ПО и понятиекомпонента. Рассказывается об общих принципах разработки распределенного ПО и оборганизации взаимодействия его компонентов в рамках удаленного вызова процедур итранзакций.Ключевые словаПрограммный компонент, интерфейс, программный контракт, компонентная модель,компонентная среда, базовые службы компонентной среды, распределенное ПО, прозрачность,открытость, масштабируемость, безопасность, синхронное и асинхронное взаимодействие,удаленный вызов процедур, транзакция.Текст лекцииОсновные понятия компонентных технологийПонятие программного компонента (software component) является одним из ключевых всовременной инженерии ПО.
Этим термином обозначают несколько различных вещей, часто неуточняя подразумеваемого в каждом конкретном случае смысла.• Если речь идет об архитектуре ПО (или ведет ее архитектор ПО), под компонентом имеетсяв виду то же, что часто называется программным модулем. Это достаточно произвольный иабстрактный элемент структуры системы, определенным образом выделенный средиокружения, решающий некоторые подзадачи в рамках общих задач системы ивзаимодействующий с окружением через определенный интерфейс. В этом курсе для этогопонятия употребляется термин архитектурный компонент или компонент архитектуры.• На диаграммах компонентов в языке UML часто изображаются компоненты, являющиесяединицами сборки и конфигурационного управления, — файлы с кодом на каком-то языке,бинарные файлы, какие-либо документы, входящие в состав системы.
Иногда там жепоявляются компоненты, представляющие собой единицы развертывания системы, — этокомпоненты уже в третьем, следующем смысле.• Компоненты развертывания являются блоками, из которых строится компонентноепрограммное обеспечение. Эти же компоненты имеются в виду, когда говорят окомпонентных технологиях, компонентной или компонентно-ориентированной (componentbased) разработке ПО, компонентах JavaBeans, EJB, CORBA, ActiveX, VBA, COM, DCOM,.Net, Web-службы (web services), а также о компонентном подходе, упоминаемом вназвании данного курса. Согласно [1], такой компонент представляет собой структурнуюединицу программной системы, обладающую четко определенным интерфейсом, которыйполностью описывает ее зависимости от окружения.
Такой компонент может бытьнезависимо поставлен или не поставлен, добавлен в состав некоторой системы или удалениз нее, в том числе, может включаться в состав систем других поставщиков.Различие между этими понятиями, хотя и достаточно тонкое, все же может привести ксерьезному непониманию текста или собеседника в некоторых ситуациях.В определении архитектурного компонента или модуля делается акцент на выделениеструктурных элементов системы в целом и декомпозицию решаемых ею задач на более мелкиеподзадачи. Представление такого компонента в виде единиц хранения информации (файлов, базданных и пр.) не имеет никакого значения. Его интерфейс хотя и определен, может быть уточнен ирасширен в процессе разработки.Понятие компонента сборки и конфигурационного управления связано со структурнымиэлементами системы, с которыми приходится иметь дело инструментам, осуществляющим сборкуи конфигурационное управление, а также людям, работающим с этими инструментами. Для этих210видов компонентов интерфейсы взаимодействия с другими такими же элементами системы могутбыть не определены.В данной лекции и в большинстве следующих мы будем иметь дело с компонентами в третьемсмысле.
Это понятие имеет несколько аспектов.• Компонент в этом смысле — выделенная структурная единица с четко определенныминтерфейсом. Он имеет более строгие требования к четкости определения интерфейса, чемархитектурный компонент. Абсолютно все его зависимости от окружения должны бытьописаны в рамках этого интерфейса. Один компонент может также иметь несколькоинтерфейсов, играя несколько разных ролей в системе.При описании интерфейса компонента важна не только сигнатура операций, которыеможно выполнять с его помощью.
Становится важным и то, какие другие компоненты онможет задействовать при работе, а также каким ограничениям должны удовлетворятьвходные данные операций и какие свойства выполняются для результатов их работы.Эти ограничения являются так называемым интерфейсным контрактом илипрограммным контрактом компонента. Интерфейс компонента включает наборопераций, которые можно вызвать у любого компонента, реализующего данный интерфейс,и набор операций, которые этот компонент может вызвать в ответ у других компонентов.Интерфейсный контракт для каждой операции самого компонента (или используемой им)определяет предусловие и постусловие ее вызова. Предусловие операции должно бытьвыполнено при ее вызове, иначе корректность результатов не гарантируется.