. Net: що це обіцяє розробникам, HTML, XML, DHTML, Інтернет-технології, статті

Вперше про ініціативу Microsoft під "непомітним" назвою. Net ми почули на початку червня цього року – одночасно з оголошенням відомого рішення американського судді Джексона, що поставив під сумнів майбутнє цієї корпорації. Проте боротьба Microsoft в суді і доля її технологій – різні речі, а ініціатива. Net, без сумніву, вплине на життя мільйонів людей, що створюють програмне забезпечення для платформ Windows. Як це часто буває з виробниками високотехнологічної продукції, Microsoft використовувала маркетинговий термін. Net для позначення відразу безлічі наборів рішень, не дуже-то схожий один на одного: сервісу аутентифікації Passport.Net, наступних версій операційної системи (Windows.Net) і офісного пакету (Office. Net), порталу для малого бізнесу bCentral.Net і багато чого-багато чого іншого. Взагалі, тепер представники Microsoft отримали можливість на запитання: "А які продукти ви робите?" коротко відповідати: "Виробляємо сімейство ПЗ. Net".


Структура. Net Framework


Для розробника цікаві три компоненти цього неосяжного сімейства: лінійка серверного ПЗ, комплект технологій для створення Web-сервісів (тобто послуг, що надаються Web-сервером по HTTP-запиту з різного роду клієнтських програм) і середовище для побудови додатків. Net Framework.


За задумом Microsoft, в них міститься усе необхідне для створення прикладного ПЗ, корпоративних інформаційних систем і Web-рішень. Більше того, розробку цих рішень можна буде вести уніфікованим чином для "різних платформ", під якими розуміються різні варіанти платформи Windows, популяція яких, як відомо, з кожним роком стає все більш численною.


Знайомі коробки


Сімейство серверного ПЗ. Net Enterprise Server складається з компонентів, що складають основу інфраструктури КІС. Велика частина вхідних в нього продуктів обговорюється в пресі вже більше року, і до того ж багато з них детально розглянуті в оглядах Тестового центру eWeek (див. www.pcweek.ru, № 39). Тому я не буду детально зупинятися на кожному, а лише перерахую головні продукти даного сімейства.


Самим новим серед них є BizTalk Server 2000 – набір ПЗ, покликаного виконати роль "клею" при інтеграції додатків, що входять в інформаційні системи компаній. Він складається з двох основних механізмів – Orchestration Engine, відповідального за координацію виконання бізнес-процесів, які зачіпають різні серверні компоненти (COM-об'єкти, Microsoft Message Queuing – MSMQ, Web-сервіси і т. п.), і Messaging Engine, що забезпечує пересилку і перетворення XML-документів, а також з ряду програм для конфігурації і настройки.


Інші пакети – це нові версії відомих рішень Microsoft: СУБД SQL Server 2000, поштова система Exchange Server 2000, набір технологій для побудови вузлів електронної комерції Commerce Server 2000, брандмауер і сервер кешування Web-сторінок Internet Security and Acceleration Server 2000.


Крім того, під новим "прапором" випускаються: Host Integration Server 2000, що представляє з себе набір ПЗ для взаємодії з успадкованими платформами (терміналами 3270, 5270, моніторами транзакцій CICS і т. п.); Mobile Information Server 2001, відповідальний за взаємодію з мобільними пристроями; і Application Center 2000 – комплект програм для конфігурування, моніторингу та управління серверами, входять у кластери, керованими ПО балансування навантаження Microsoft Network Load Balancing і Component Load Balancing.


Найбільш важлива властивість серверної частини. Net – відносна доступність. Всі основні її компоненти існують принаймні у вигляді бета-версій і з'являться в комерційному варіанті в кінці цього – початку наступного року.


Web-сервіси: слово від Microsoft








SOAP-запит і ..  
Content-Type: text/xml; charset=”utf-8″
Content-Length: 300
SOAPAction:
<SOAP-ENV: Envelope xmlns: SOAP-ENV = "http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV: encodingStyle = "http://schemas.xmlsoap.org/soap/encoding">
<Body>
<GetValue xmlns: m = "<A HREF="http://www.aaa.ru/bbb"> www.aaa.ru / bbb </ A>">
<Input>12345</Input>
</m:GetValue>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
.. SOAP-відповідь
HTTP/1.1 200 OK
Content-Type: text/xml; charset=”utf-8″
Content-Length

Другий блок ініціативи. Net цілком спирається на технологію SOAP (Simple Object Access Protocol) – "протокол простого доступу до об'єктів", який, як пожартував Девід Чапел *, не є протоколом, не дуже-то простий, а також має досить опосередковане відношення до об'єктів. Дана технологія визначає спосіб виклику віддалених процедур і функцій за допомогою XML-повідомлень.


SOAP працює з будь-якими платформами, будь-якими мовами програмування і не вимагає використання об'єктної моделі. Все відбувається приблизно так: програма, яка бажає виконати будь-яку процедуру на віддаленому сервері, посилає йому XML-документ, що містить інформацію про ім'я викликається функції та значення її параметрів, а потім отримує інший XML-документ, що містить результат роботи цього віддаленого методу. В якості транспортного механізму для обміну цими повідомленнями використовується протокол HTTP або система керування чергами MSMQ.


Microsoft збирається доповнити SOAP двома новими технологіями: SOAP Contract Language (SCL) і DISCO. Перша дозволяє описувати на XML інтерфейси Web-служб, а друга визначає формат документів і алгоритм (Тобто послідовність HTTP-запросов/ответов) отримання інформації у вигляді SCL-тексту про наявні на сервері службах та їх характеристики. Разом вони дозволяють віддаленого додатком опитати сервер і дізнатися, які, власне, функції він може виконувати і як з ними потрібно працювати.


Є ще й третє рішення: WSDL (Web-services Description Language). Це – XML-формат для опису мережних сервісів як набору базових точок (портів), які обмінюються документо-або процедурно-орієнтованими повідомленнями. Інакше кажучи, WSDL описує сервіс як якийсь "чорний ящик", до якого приходять документи одного типу, а йдуть іншого.


На відміну від SOAP, який можна використовувати вже зараз (з сайту Microsoft можна завантажити SOAP Toolkit) і який проходить стандартизацію в консорціумі W3C, дата появи інших технологій неясна – поки вони існують тільки у вигляді попередньої специфікації.


. Net Framework – Java від Microsoft?


Microsoft – майстер підхоплювати чужі ідеї, використовувати їх у своїх продуктах і ставати лідером. Так було з віконним графічним інтерфейсом, офісними пакетами і т. п. Фундаментальні ідеї, закладені в цих рішеннях, були реалізовані задовго до появи на світло продуктів редмондского гіганта, а результат (у вигляді розподілу часток ринку) вам добре відомий. І коли чуєш о. Net Framework, знову виникає відчуття дежавю: десь ми це вже бачили. Джерелом натхнення Microsoft на цей раз виявилася платформа Java компанії Sun Microsystems. Насправді відмінності звичайно ж є, і пов'язані вони головним чином з тим, що. Net буде підтримувати не один, а безліч мов програмування. Ну і, природно, тільки одне сімейство ОС – Windows.


Структурно. Net Framework складається з трьох базових компонентів: середовища виконання Common Language Runtime (CLR), бібліотеки стандартних класів і набору технологій ASP + для побудови Web-орієнтованих додатків.


CLR – основний компонент. Net Framework, в функції якого входить підтримка виконання. Net-додатків. Справа в тому, що подібні програми будуть поставлятися не у вигляді "рідного" для цільової платформи коду, а у вигляді байт-коду, написаного на спеціальній мові Microsoft Intermediate Language (MSIL). Програми або їх компоненти, скомпільовані в цей код, та й сам код Microsoft називає "керованими" (managed).


Структура збірки


Однак, на відміну від платформи Java, в CLR не буде інтерпретатора. Його місце займе JIT-компілятор, що транслює кожен метод з MSIL в "рідній" код безпосередньо перед тим, як запустити його виконання. Передбачено також варіант, коли вся програма перед запуском транслюється цілком.


CLR містить механізми управління подіями, збірки сміття, перевірки безпеки коду, засоби налагодження й профілювання. Вона також забезпечує підтримку багатопоточності і виклику віддалених процедур (використовується спеціальний протокол. Net, протокол SOAP або можливості DCOM / COM). Наведений список до болю схожий на перелік завдань віртуальної машини Java (Java Virtual Machine, JVM), і це зрозуміло: придумати щось кардинально нове в цій області складно. Всі базові ідеї були висловлені років тридцять-сорок тому.


Assembly: кінець DLL-"кошмару"


Складові. Net-програм, до числа яких відносяться динамічно зв'язуються бібліотеки (DLL), що виконуються (EXE) модулі, допоміжні файли даних, будуть збиратися в пакети абсолютно нового типу – так звані "збірки" (assembly). У кожній збірці буде присутній маніфест-файл та інші метадані, що описують її зміст. Інсталяція такого пакета здійснюється простим копіюванням його в потрібний каталог (дуже все це змахує на Jar-файли в Java).


Assembly визначає простір імен для містяться в ній класів, тим самим ліквідовуючи проблеми, пов'язані з установкою на комп'ютери DLL різних версій, що належать різним додаткам або їх модифікацій.


В. Net передбачені два типи збірок – приватні (private) і загальнодоступні (shared). Приватні збірки використовуються тільки одним додатком, іменуються звичайної текстової рядком (скажімо, "DLL1"), і контроль за їх версіями цілком покладається на автора програми.


Загальнодоступні ж збірки можуть використовуватися різними додатками, а іменуються вони спеціальним (у термінології Microsoft – "сильним") ім'ям, що складається з текстового рядка і відкритого ключа видавця. Це ім'я унікально, тому що унікальний відкритий ключ. У цьому випадку контроль за версіями пакетів CLR бере на себе.


Тому на одній і тій же машині можуть знаходитися різні версії однієї і тієї ж збірки. Більше того, одним системним процесом подібні версії можуть використовуватися одночасно. Проте розробникам все одно доведеться бути дуже уважними – наприклад, не допускати ситуації, щоб дві DLL різних версій записували дані в один файл, але в різних форматах.


Окрім вирішення проблем DLL, складання дозволять підвищити безпеку роботи додатків, оскільки вони будуть виконуватися в своєрідних "пісочницях". Адміністратори зможуть детально визначати, що має право робити та чи інша збірка, грунтуючись на таких характеристиках, як її ім'я, ім'я видавця, сайт або зона безпеки, з яких вона завантажена, її URL і т. п. Наприклад, складання можна заборонити запис і зчитування файлів з якогось каталогу, доступ до змінних середовища, системного реєстру, використання ГІП чи якихось його окремих компонентів (скажімо, діалогу відкриття файлів).


Взагалі, всі керовані програми виконуються в спеціальних "доменах" (application domain), що обмежують доступ до пам'яті, що гарантують ізоляцію помилок і безпеку виконання коду. При цьому один додаток може мати кілька доменів.


Відповідно до твердження документації Microsoft, при використанні доменів ресурси витрачаються більш економно, ніж при використанні механізму процесів ОС.


Нові мови


CLR вирішує ще одну фундаментальну задачу, згадану вище, – визначає загальний для всіх мов програмування набір типів даних і механізм успадкування класів. Природно, мова йде лише про тих мовах, які сумісні с. Net.








Приклад програми на C #: інтерфейс і клас  
public interface ICalc {
int add( int x, int y );
int substr( int x, int y );
}

public class CalcTool: ICalc {


public int add( int x, int y )
{
return x+y;
}


public int substr( int x, int y )
{
return x-y;
}


У Visual Studio.Net будуть підтримуватися чотири мови: Visual Basic.Net, C # (читається як "сішарп"), Сі + + і Jscript. Впадає в око відсутність Java (тут коментарі не потрібні) і пакету InterDev (Його можливості будуть доступні у кожному з інструментів, але про це – трохи пізніше). Інші вендори обіцяють забезпечити підтримку Perl, Python, Кобол, Паскаля, Оберона, Смоллтока і т. п.


Всі ці мови отримають у спадок від CLR однакову семантику (аналогічну тій, що має зараз Java), але будуть відрізнятися синтаксисом. Скажімо, C # являтиме собою мову з семантикою CLR і синтаксисом Сі. При цьому в ньому не буде таких звичних для Сі речей, як препроцесор і include-файли.


Єдність семантики. Net-мов означає, що всі вони будуть об'єктно-орієнтованими (ГО), володіти засобами організації багатопотокових обчислень, управління винятковими ситуаціями, вбудованою підтримкою інтерфейсів, властивостей, подій і т. п.


Важливо, що похідний "керований" клас може успадковувати властивості від класу написаного на абсолютно іншій мові програмування. Приміром, батьківським класом C #-класу може служити клас написаний на VB. Єдине обмеження тут таке ж, як в Javа, – спадкування допускається тільки від одного "батька". Як і в Java, число реалізованих в класі інтерфейсів може бути будь-яким.


Серед інших, повноцінним ГО-мовою стане і Visual Basic: в ньому з'являться механізм наслідування з можливістю перевизначення методів у похідних класах, семантика для "реалізації" інтерфейсів, механізм виняткових ситуацій – і всі інші можливості, перераховані вище. Це і добре, і погано: VB стане могутніше, але розробникам доведеться більше часу витрачати на технічні деталі програмування. Чи компенсує економія від запровадження нововведень збільшення витрат на боротьбу з цими деталями – питання, що залишається відкритим.


Однозначно позитивним моментом є уніфікація всіх різновидів VB. Зокрема, VBScript перестане існувати як окрема технологія: VB буде єдиним.


Що стосується Сі + +, то в ньому з'являться спеціальні розширення для створення "керованих" додатків, в тому числі ключові слова __gc (цей префікс перед визначенням класу означає, що він є "керованим"), __interface, __event, __property. Visual C + + залишиться єдиним інструментом розробки в Visual Studio, що зберігає можливість генерувати "рідний" код. У програмістів буде також можливість "змішувати" в рамках однієї програми керовані класи, компільовані в MSIL, і звичайні Сі + +-класи, компільовані в "рідний" код.


Однак незважаючи на те, що Сі + + зберігається, Microsoft буде підштовхувати програмістів до переходу на нову мову C #, а Сі + + застосовувати лише для створення серверних додатків, що вимагають підвищеної продуктивності, таких, як СУБД.


Об'єднана бібліотека класів


Тим, хто знайомий з Java Development Kit, не здасться дивним ідея Microsoft створити нову ієрархічну бібліотеку системних класів. Аналогія між двома розробками простежується і в деталях.


У просторі імен System визначаються всі основні типи даних, такі, як Object, Int16, Int32, Uint32, Uint64, Single, Double, Decimal, Boolean, Byte, Char, String, Array, Class, Interface і пр.


Інші простори імен включають:



З системних варто відзначити ще дві бібліотеки – System.Reflection, що дозволяє досліджувати метадані збірок і пізнавати властивості знаходяться в них методів і класів, і System.Runtime, що містить класи для взаємодії з COM (подбібліотека InteropService), сериализации керованих компонентів (подбібліотека Seiralization), а також для доступу до об'єктів в інших процесах і на інших машинах (подбібліотека Remoting).


Доступ до джерел даних


В. Net по-новому організований доступ до даних. Це завдання вирішує технологія ADO + (бібліотека System.Data.ADO), що забезпечує інтерфейс для доступу до "керованим провайдерам даних". Подібні провайдери, в свою чергу, можуть бути "рідними" для СУБД (Microsoft вже випустила SDK для їх створення і провайдери для SQL Server) або працювати через OLE DB, а отже, і ODBC. Поставляється також провайдер для доступу з ADO + і старою технологією доступу до БД – ADO.


ASP +: Робота Web-додатки


Іншим нововведенням в ADO + є нова структура DataSet, що заміщає RecordSet з ADO. Вона має ряд корисних властивостей.


Зокрема, DataSet "єднана від СУБД", тобто кешує результати відповіді на запит до СУБД. Вона містить також не тільки дані, отримані в ході поточного запиту, а й дані, які можуть бути отримані при інших, близьких запитах. Крім цього DataSet здатна одночасно зберігати дані з різних джерел, зокрема більше однієї таблиці та / або XML-документа. І нарешті, вона підтримує механізм збереження свого стану, серіалізуя його у форматі XML.


ASP+


Якщо раніше для побудови Web-додатків на платформі Microsoft використовувалися технології ASP (Active Server Pages), то тепер їм на зміну приходить ASP +.


Програми ASP + складаються з двох типів об'єктів: тих, що генерують HTML-інтерфейс (вони аналогічні звичайним ASP-сторінок і поміщаються у файли з розширенням aspx) і тих, які виконують виключно службові завдання (їх розширення – asmx). Об'єкти останнього типу можуть бути використані для побудови Web-сервісів.


Для створення всіх об'єктів можна використовувати будь-який з мов. Net, хоча за замовчуванням застосовується VB. Зауважимо, що. Net допускає поділ опису класу і використовує його HTML-сторінки. Наприклад, в ній можна написати: що означає, що тіло класу MyClass знаходиться у файлі class1.cs.


Крім файлів зазначених типів додаток ASP + може включати складання, конфігураційні файли і т. п. Усі дані та об'єкти програми повинні перебувати в одному каталозі, при цьому інсталяція здійснюється простим копіюванням файлів – не потрібно ні внесення змін до реєстру, ні перезапуску Web-сервера.


Виконуються програми ASP + також більш надійно, ніж програми ASP. По-перше, для кожного з них створюється спеціальний віртуальний домен. По-друге, є можливість зберігати їх стан в спеціальному сховище.


Завдяки цьому процес може продовжити роботу з того місця, де його застав збій Internet Information Server (IIS) або навіть апаратний збій, якщо сервер входить в кластер. Більш того, подібний механізм спрощує балансування навантаження, оскільки стан процесу доступне всім машинам серверної ферми.


ASP +: Робота Web-сервісу


В якості сховища станів може виступати або один з комп'ютерів ферми, що розміщує дані про процеси в своєму ОЗУ, або виділена машина з SQL Server. Нагадаю, що в рамках звичайної технології ASP стан процесу доступно тільки на одному комп'ютері і втрачається при збої.


Web-інтерфейси доповнюють Web-сервіси


Для створення додатків ASP + використовується бібліотека System.Web, що містить класи для Web-аутентифікації, отримання інформації про Web-сервісах, доступу до Web-сервісів за допомогою протоколу SOAP, а також побудови Web-інтерфейсів.


Для вирішення останнього завдання застосовується бібліотека System.Web.UI, що містить набір базових елементів Web-ГІП. Розробники зможуть конструювати Web-інтерфейси, просто перетягуючи компоненти з палітри на розроблювану форму.


Подібні елементи управління здатні визначати в процесі виконання їх на IIS-сервер, з яким браузером їм належить працювати і генерувати відповідний HTML-код. Наприклад, вони можуть сформувати сторінку у форматі HTML 3.2 для простих браузерів, що функціонують на мобільних пристроях або DHTML-код для Internet Explorer. Крім того, ці елементи можуть автоматично зберігати на сервері введені в них призначені для користувача дані. При повторному відображенні елемента (наприклад, після збою і відновлення сесії) дані пересилаються назад в браузер користувача.


Що стосується Web-сервісів, то реалізує їх код поміщається у файли з розширенням asmx. Створити їх дуже просто: досить визначити в класі public-метод з атрибутом Web Method, і сервіс буде доступний через протокол SOAP або команди GET і POST протоколу HTTP.


На закінчення варто сказати і про декілька інших властивостях ASP +. Так, в. Net вбудовані засоби кешування запитів. Скажімо, якщо ASP +-сторінка містить директиву, то результат її обробки буде поміщений в кеш на 30 секунд. Якщо вміст сторінок змінюється не дуже часто, то це підвищує продуктивність роботи системи.


Працює


Одним з головних перешкод на шляху. Net стануть накладаються нею обмеження на використання старих технологій. Код старих програм нелегко буде перенести в. Net – для цього буде потрібно не просто їх перекомпіляція, а корінна переробка.


Мало того що пішли в минуле милі серцю програміста на Visual Basic оператори Set і Let, список переданих в VB-підпрограми параметрів доведеться укладати в круглі дужки, не будуть підтримуватися привласнюються за замовчуванням значення властивостей, а аргументи (за замовчуванням) будуть передаватися за значенням. До того ж змінився API.


З іншого боку, Microsoft зробила багато, щоб пом'якшити проблему переходу. Так, інсталяція ASP + не порушить роботи звичайних ASP-сторінок, а сумісність з успадкованими додатками буде підтримуватися на рівні COM: до цих компонентів можна звертатися з будь-яких. Net-додатків і навіть створювати керовані класи, успадковують властивості цих об'єктів. Виклик. Net-компонентів з COM-об'єктів також буде підтримуватися.


Взагалі кажучи, з появою. Net Framework технологія COM нікуди не зникне і навіть отримає подальший розвиток в Windows.Net (див. полеміку Microsoft з Gartner Group на www. Microsoft.com / net), але всі сучасні Складність роботи з нею (включаючи взаємодію з системним реєстром) будуть маскуватися.


Попереду – багато роботи


За оцінкою експертів, під. Net дійсно необхідно переробити всього лише близько 2% наявних додатків. Однак найближчим п'ятиріччя все нові корпоративні розробки для Windows йтимуть на основі цієї технології.


Стимули до переходу на. Net величезні. Навіть тієї частини описаного вище набору технологічних рішень, яка була реалізована в Java, достатньо, щоб до цієї кардинально новій платформі Sun потягнулися мільйони розробників. Ясно, що потенціал технології, що дає те ж саме, але без кардинальної зміни звичних мов програмування, інструментів розробки і платформи, просто колосальний.


І все ж на закінчення хотілося б підлити ложку дьогтю. Microsoft заманює рішеннями, поява яких відбудеться у віддаленому майбутньому – адже з усіх компонентів. Net Framework існує поки тільки . Net Framework SDK, та й то у вигляді версії Technical Preview. Microsoft обіцяє випустити цю технологію в найближчі роки, але слід враховувати її великий досвід у частині затримки випуску своїх продуктів. Java ж існує вже зараз.


У світі бізнесу важливо не те, хто висловив ідею, а те, хто зробив усе правильно і вчасно. Хоча що таке "правильно" і коли наступає це "вчасно", зазвичай з'ясовується тільки заднім числом.


* Девід Чапел (David Chappel) – один з провідних незалежних експертів за технологіями Microsft. Глава консалтингової компанії Chappel & Associates. У вересні московське представництво Microsoft організувало семінар для розробників, на якому він прочитав багатогодинну лекцію на тему Windows DNA і. Net. Матеріали цієї лекції використані в даній статті.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*