Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

STG_E_FILENOTFOUND      (FACILITY_STORAGE)




DISP_E_EXCEPTION        (FACILITY_DISPATCH)

 

Эти и другие коды ошибок определены в файле winerror.h (в Delphi они определены в файле Windows.pas).

Для анализа и обработки значений HRSULT удобно использовать макросы, которые описаны в разделе MSDN “Using Macros for Error Handling”. Вот два наиболее «популярных» макроса:  

HRESULT hr;

SUCCEEDED(hr)– возращает 1 (true) в случае отсутствия ошибки (hr>0)

FAILED(hr) –возращает 1 (true) в случае наличия ошибки (hr<0)

 

Получение текстов сообщений об ошибках

 

Для получения текстового описания какой-либо ошибки можно путем поиска полученного значения HResult (в шестнадцатеричной системе) в файле winerror.h (на английском языке). Вот фрагмент этого файла с определением одной ошибки:

//

// MessageId: E_ACCESSDENIED

//

// MessageText:

//

// General access denied error

//

#define E_ACCESSDENIED     _HRESULT_TYPEDEF_(0x80070005L)

 

 

Другой и более удобный способ – это использование утилиты Error Lookup из Microsoft Visual Studio Tools (в MVS-2005 это команда меню ToolsèError Lookup). Единственное входное данное для нее – это код ошибки. Вот пример ее использования:

 

Еще одним способом получения текстового описания ошибки является использование функции Win32 API FormatMessage(). Так как функция FormatMessage() довольно громоздка в использовании, я написал для нее оболочку, даже две. Функция GetErrorMessage() возвращает значение типа CString, а GetErrorMessageA() – типа char * в кодировке 866, т.е. MS DOS. Эти функции я поместил в файл FmtError.h, который нужно подключить к программе:

// FmtError.h - функции возврата текстового сообщения об ошибке по ее коду

// @В.Н.Овсянник 2009

#pragma once

CString GetErrorMessage( HRESULT hr )

{

BOOL bRet;

CString s;

LPTSTR lpBuffer=NULL;

if ( SUCCEEDED(hr) ) return _T("Ошибки нет");

bRet = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |

                    FORMAT_MESSAGE_FROM_SYSTEM,

                    NULL, hr,

                    MAKELANGID(LANG_NEUTRAL,

                    SUBLANG_SYS_DEFAULT),

                    (LPTSTR) &lpBuffer, 0, NULL);

if ( !bRet ) s.Format(_T("Код ошибки %ld"), hr );

if ( lpBuffer )

{

   s = lpBuffer; LocalFree( lpBuffer );

}

return s;

}

char Buf[300];

char * GetErrorMessageA( HRESULT hr )

{

WideCharToMultiByte(866,WC_NO_BEST_FIT_CHARS,

    GetErrorMessage(hr).GetBuffer(),-1,Buf,sizeof(Buf),0,0);

return Buf;

}

 



Типы данных СОМ

Типы данных методов и свойств СОМ объектов

Методы интерфейсов, производных от IUnknown (custom interface – пользовательский интерфейс) или от IDispatch, могут иметь тип возвращаемого значения только HRESULT (другой выбрать невозможно при использовании мастера добавления метода к интерфейсу). Таким образом, возвращаемым значением может быть только код результата выполнения метода, т.е. код ошибки.

Параметры методов любых интерфейсов могут иметь любой из типов, перечисленных в табл. 1.

Таблица 1

Типы параметров методов любых интерфейсов

 

 

 

 

 

Типы значений, возвращаемых методами диспинтерфейсов (dispinterface), перечислены в табл. 2. Это же и возможные типы свойств, за исключением, естественно, типа void.

 

 

Таблица 2

Типы значений, возвращаемых методами диспинтерфейсов

 

 

 






Тип BSTR

Этот тип широко используется при работе со строками в СОМ-объектах и объявлен как указатель на символы Unicode (тип wchar_t и представляет собой символы Unicode):

typedef wchar_t WCHAR;

typedef WCHAR OLECHAR;

typedef OLECHAR *BSTR;

 

Отсюда следует, что его можно применять так же, как и другие указатели, например (в консольном приложении, в данном случае построенном без поддержки MFC, хотя это и не существенно):

#include "stdafx.h"

#include <IOStream>

#include <ConIO.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

BSTR str=_T("Const string 1");

str=_T("Const string 2");

wcout<<(wchar_t*)str<<endl;

wcout<<str<<endl;

str=new wchar_t [123000];

wcin>>str;

MessageBoxW(0,(wchar_t*)str,_T("Зри!"),0);

delete [] str;

str=_T("Константа 3");

MessageBoxW(0,str,_T("Зри!"),0);

_getch();

return 0;

}

 

Как «обычно», с символами кириллицы в консольном приложении будут проблемы и надо выполнять их преобразование в ANSI-символы (см. подраздел «Русификация приложений»). Вместе с тем, в приложениях с графическим интерфейсом этих проблем не будет. Текст «Константа 3» функция MessageBoxW() выведет корректно.

В приложениях, являющихся СОМ-серверами, при работе с типом BSTR следует использовать для выделения и освобождения памяти функции SysAllocString() и SysFreeString() вместо привычных операций new и delete.

 

 

Тип VARIANT

 

Структурный тип VARIANT широко используется для описания и передачи параметров методов интерфейса IDispatch и методов интерфейсов, являющихся производными от IDispatch. Значениями этого типа могут быть самые разные типы данных: от беззнакового однобайтового целого до указателей на указатели на интерфейсы и массивов. Таким образом,  VARIANT представляет собой своего рода универсальный тип, используемый, в частности, для совместимости с программным кодом на языке Visual Basic.

Описание типа VARIANT приведено в файле oaidl.h в следующем виде:

typedef struct tagVARIANT VARIANT;

struct tagVARIANT 

{

union

{

struct __tagVARIANT

  {

     VARTYPE vt;

     WORD wReserved1;

     WORD wReserved2;

     WORD wReserved3;

     union

    {

LONGLONG                  llval;                 // VT_I8

LONG                              lVal;                 // VT_I4

BYTE                   bVal;                // VT_UI1

SHORT                iVal;               // VT_I2

FLOAT                fltVal;               // VT_R4

DOUBLE             dblVal;             // VT_R8

VARIANT_BOOL boolVal;           // VT_BOOL

              _VARIANT_BOOL bool;

              SCODE                scode;               // VT_ERROR

              CY                        cyVal;               // VT_CY

              DATE                               date;                 // VT_DATE

              BSTR               bstrVal;            // VT_BSTR

              IUnknown            * punkVal;        // VT_UNKNOWN

 

              IDispatch              * pdispVal;           //VT_DISPATCH

              SAFEARRAY     * parray;              //VT_ARRAY|*

              BYTE                   * pbVal;                //VT_BYREF|VT_UI1

              SHORT                * piVal;                 //VT_BYREF|VT_I2

              LONG                                          * plVal;     //VT_BYREF|VT_I4

              LONGLONG                  *pllVal;                 //VT_BYREF|VT_I8

              FLOAT                *pfltVal;               //VT_BYREF|VT_R4

              DOUBLE             *pdblVal;             //VT_BYREF|VT_R8

              VARIANT_BOOL *pboolVal;            //VT_BYREF|VT_BOOL

              _VARIANT_BOOL *pbool;

              SCODE                *pscode;                //VT_BYREF|VT_ERROR

              CY                        *pcyVal;               //VT_BYREF|VT_CY

              DATE                               *pdate;                  //VT_BYREF|VT_DATE

              BSTR                    *pbstrVal;            //VT_BYREF|VT_BSTR

              IUnknown            **ppunkVal;        //VT_BYREF|VT_UNKNOWN

              IDispatch              **ppdispVal;        //VT_BYREF|VT_DISPATCH

              SAFEARRAY     **pparray;           //VT_ARRAY|*

              VARIANT           *pvarVal;             //VT_BYREF|VT_VARIANT

              PVOID                 *byref;                  //GenericByRef

              CHAR                              cVal;                 //VT_I1

              USHORT             uiVal;                    //VT_UI2

              ULONG               ulVal;                    //VT_UI4

              ULONGLONG   ullVal;                               //VT_UI8

              INT                       intVal;                   //VT_INT

              UINT                    uintVal;                //VT_UINT

              DECIMAL           *pdecVal              //VT_BYREF|VT_DECIMAL

              CHAR                              *pcVal;                 //VT_BYREF|VT_I1

              USHORT             *puiVal;                //VT_BYREF|VT_UI2

              ULONG               *pulVal;                //VT_BYREF|VT_UI4

              ULONGLONG   *pullVal;               //VT_BYREF|VT_UI8

              INT                       *pintVal;              //VT_BYREF|VT_INT

              UINT                    *puintVal;            //VT_BYREF|VT_UINT

              struct__tagBRECORD

              {

                     PVOID                 pvRecord;

                     IRecordInfo         *pRecInfo;

              }__VARIANT_NAME_4;

}__VARIANT_NAME_3;

   }__VARIANT_NAME_2;

  DECIMALdecVal;

}__VARIANT_NAME_1;

};

 

Значение, хранящееся в поле vt, указывает на тип данных, хранящихся в варианте (табл. 3).

Таблица 3

Трактовка значений поля vt типа VARIANT

Значение Описание
VT_EMPTY Никакое значение не задано. Не передавайте это значение в качестве необязательного фактического параметра метода. Вместо этого передайте значение DISP_E_PARAMNOTFOUND типа VT_ERROR
VT_EMPTY | VT_BYREF Недопустимая комбинация
VT_UI1 Беззнаковый 1-байтный символ, хранящийся в bVal
VT_UI1 | VT_BYREF Ссылка на беззнаковый 1-байтный символ. Указатель на это значение – pbVal
VT_UI2 Безнаковое 2-байтовое целое число, хранящееся в uiVal
VT_UI2 | VT_BYREF A reference to an unsigned 2-byte integer was passed. A pointer to the value is in puiVal.
VT_UI4 An unsigned 4-byte integer value is stored in ulVal.
VT_UI4 | VT_BYREF A reference to an unsigned 4-byte integer was passed. A pointer to the value is in pulVal.
VT_UI8 An unsigned 8-byte integer value is stored in ullVal.
VT_UI8 | VT_BYREF A reference to an unsigned 8-byte integer was passed. A pointer to the value is in pullVal.
VT_UINT An unsigned integer value is stored in uintVal.
VT_UINT | VT_BYREF A reference to an unsigned integer value was passed. A pointer to the value is in puintVal.
VT_INT An integer value is stored in intVal.
VT_INT | VT_BYREF A reference to an integer value was passed. A pointer to the value is in pintVal.
VT_I1 A 1-byte character value is stored in cVal.
VT_I1 | VT_BYREF A reference to a 1-byte character was passed. A pointer the value is in pcVal.
VT_I2 A 2-byte integer value is stored in iVal.
VT_I2 | VT_BYREF A reference to a 2-byte integer was passed. A pointer to the value is in piVal.
VT_I4 A 4-byte integer value is stored in lVal.
VT_I4 | VT_BYREF A reference to a 4-byte integer was passed. A pointer to the value is in plVal.
VT_I8 A 8-byte integer value is stored in llVal.
VT_I4 | VT_BYREF A reference to a 8-byte integer was passed. A pointer to the value is in pllVal.
VT_R4 An IEEE 4-byte real value is stored in fltVal.
VT_R4 | VT_BYREF A reference to an IEEE 4-byte real value was passed. A pointer to the value is in pfltVal.
VT_R8 An 8-byte IEEE real value is stored in dblVal.
VT_R8 | VT_BYREF A reference to an 8-byte IEEE real value was passed. A pointer to its value is in pdblVal.
VT_CY A currency value was specified. A currency number is stored as 64-bit (8-byte), two's complement integer, scaled by 10,000 to give a fixed-point number with 15 digits to the left of the decimal point and 4 digits to the right. The value is in cyVal.
VT_CY | VT_BYREF A reference to a currency value was passed. A pointer to the value is in pcyVal.
VT_BSTR A string was passed; it is stored in bstrVal. This pointer must be obtained and freed by the BSTR functions, which are described in Conversion and Manipulation Functions.
VT_BSTR | VT_BYREF A reference to a string was passed. A BSTR* that points to a BSTR is in pbstrVal. The referenced pointer must be obtained or freed by the BSTR functions.
VT_DECIMAL Decimal variables are stored as 96-bit (12-byte) unsigned integers scaled by a variable power of 10. VT_DECIMAL uses the entire 16 bytes of the Variant.
VT_DECIMAL | VT_BYREF A reference to a decimal value was passed. A pointer to the value is in pdecVal.
VT_NULL A propagating null value was specified. (This should not be confused with the null pointer.) The null value is used for tri-state logic, as with SQL.
VT_NULL | VT_BYREF Not valid.
VT_ERROR An SCODE was specified. The type of the error is specified in scodee. Generally, operations on error values should raise an exception or propagate the error to the return value, as appropriate.
VT_ERROR | VT_BYREF A reference to an SCODE was passed. A pointer to the value is in pscode.
VT_BOOL A 16 bit Boolean (True/False) value was specified. A value of 0xFFFF (all bits 1) indicates True; a value of 0 (all bits 0) indicates False. No other values are valid.
VT_BOOL | VT_BYREF A reference to a Boolean value. A pointer to the Boolean value is in pbool.
VT_DATE A value denoting a date and time was specified. Dates are represented as double-precision numbers, where midnight, January 1, 1900 is 2.0, January 2, 1900 is 3.0, and so on. The value is passed in date. This is the same numbering system used by most spreadsheet programs, although some specify incorrectly that February 29, 1900 existed, and thus set January 1, 1900 to 1.0. The date can be converted to and from an MS-DOS representation using VariantTimeToDosDateTime, which is discussed in Conversion and Manipulation Functions.
VT_DATE | VT_BYREF A reference to a date was passed. A pointer to the value is in pdate.
VT_DISPATCH A pointer to an object was specified. The pointer is in pdispVal. This object is known only to implement IDispatch. The object can be queried as to whether it supports any other desired interface by calling QueryInterface on the object. Objects that do not implement IDispatch should be passed using VT_UNKNOWN.
VT_DISPATCH | VT_BYREF A pointer to a pointer to an object was specified. The pointer to the object is stored in the location referred to by ppdispVal.
VT_VARIANT Invalid. VARIANTARGs must be passed by reference.
VT_VARIANT | VT_BYREF A pointer to another VARIANTARG is passed in pvarVal. This referenced VARIANTARG, pvarVal, cannot be another VT_VARIANT|VT_BYREF. This value can be used to support languages that allow functions to change the types of variables passed by reference.
VT_UNKNOWN A pointer to an object that implements the IUnknown interface is passed in punkVal.
VT_UNKNOWN | VT_BYREF A pointer to the IUnknown interface is passed in ppunkVal. The pointer to the interface is stored in the location referred to by ppunkVal.
VT_ARRAY | <anything> An array of data type <anything> was passed. (VT_EMPTY and VT_NULL are invalid types to combine with VT_ARRAY.) The pointer in pparray points to an array descriptor, which describes the dimensions, size, and in-memory location of the array. The array descriptor is never accessed directly, but instead is read and modified using the functions described in Conversion and Manipulation Functions.

 

В файле Oleauto.h приведены прототипы функций, предназначенных для выполнения различных манипуляций над данными типа VARIANT, например, преобразования типа. К сожалению, в MSDN нет описания этих функций (по крайней мере я их не смог найти). Вместе с тем в MSDN имеются примеры работы с типом VARIANT, в частности, очень полезный пример (проект) Variantuse. 

 

int main()

{

// Create a table and add a few rows to it.

DatabaseClass *db = new DatabaseClass();

db->CreateAndPopulateTable();

 

BSTR bstr1 = SysAllocString(L"This is a BSTR in a VARIANT.");

VARIANT v1;

v1.vt = VT_BSTR;

v1.bstrVal = bstr1;

db->AddRow(&v1);

 

int i = 42;

VARIANT v2;

v2.vt = VT_I4;

v2.lVal = i;

db->AddRow(&v2);

 

// Now retrieve the rows and display their contents.

VARIANT values[MAXCOLS];

int len = db->GetValuesForColumn(L"ObjectCol", values, MAXCOLS);

for (int i = 0; i < len; i++)

{

  switch (values[i].vt)

  {

  case VT_BSTR: wcout << L"ObjectCol: " << values[i].bstrVal << endl;

                           break;

  case VT_I4:    cout << "ObjectCol: " << values[i].lVal << endl;

                           break;

  default:          break;

  }

 

}

SysFreeString(bstr1);

delete db;

return 0;

}

 



Приложения

Словарь терминов

ActiveForm – активные формы, которые представляют собой композицию элементов управления ActiveX. Реализуются в виде динамически связываемых библиотек DLL, но файлы имеют расширение .ocx, а не .dll.

ADO (ActiveX Data Objects – объекты данных ActiveX) – набор компонент и технология, используемая для доступа к БД, поддерживающим спецификацию OLE DB

 

ADO.NET Entity Framework (EF) — объектно-ориентированная технология доступа к данным, является object-relational mapping (ORM) решением для .NET Framework от Microsoft. Предоставляет возможность взаимодействия с объектами как посредством LINQ в виде LINQ to Entities, так и с использованием Entity SQL. Для облегчения построения web-решений используется как ADO.NET Data Services (Astoria), так и связка из Windows Communication Foundation и Windows Presentation Foundation, позволяющая строить многоуровневые приложения, реализуя один из шаблонов проектирования MVC, MVP или MVVM.

 

ASP – Microsoft® Active Server Pages. ASP представляет собой серверную среду выполнения сценариев, которая может быть использована для создания интерактивных Web-страниц и разработки полновесных Web-приложений. Когда сервер получает ASP-файл, он строит Web-страницу на основе содержащихся в нем сценариев и отправляет ее браузеру. ASP-файлы могут содержать как HTML-код, так и вызовы компонентов COM, которые в свою очередь могут осуществлять связь с БД или выполнять другие операции. 

ATL – ActiveX Template Library. Библиотека активных шаблонов ActiveX Microsoft, предназначенная для облегчения процесса создания компактных клиент-серверных приложений, использующих COM и ActiveX. Используется при разработке приложений в Microsoft Visual C++.

Automation controller (синоним – ActiveX client) – контроллер автоматизации в COM-технологиях. Это клиентское приложение по отношению к серверу автоматизации Automation server, называемому также "объектом автоматизации" или "программируемым компонентом". Язык Visual Basic является типичным примером контролера автоматизации, как утверждается в MSDN.

Automation – автоматизация. Основанная на COM технология, которая предоставляет возможность взаимодействия компонентов ActiveX без использования таблиц виртуальных методов (vtable), т.е. вызов методов интерфейсов осуществляется без использования их имен, по "номерам" ID. Прежде называлась OLE Automation.

Automation object – экземпляр класса, который предоставляет свои методы и свойства клиентским приложениям посредством интерфейсов автоматизации (Automation interfaces). См. также dispinterface.

CGI (Common Gateway Interface – общий шлюзовой интерфейс) – интерфейс прикладного программирования, используемый в Internet. CGI - не язык программирования, а спецификация, определяющая взаимодействие внешней программы создания динамических WWW-документов и HTTP-сервера. CGI-программы создаются на многих языках программирования: Си, Perl, Visual Basic и др. Основной недостаток CGI - необходимость обмена данными между клиентом и сервером, что может вызвать большие временные задержки. Первоначально CGI был разработан NCSA

CLX – cross-platform component library (Delphi 6.0)

COM (Component Object Model) – модель компонентных объектов Microsoft. Стандартный механизм, включающий интерфейсы, с помощью которых одни объекты предоставляют свои сервисы другим. Является основой многих объектных технологий, в том числе OLE и ActiveX. Другие переводы: многокомпонентная модель объектов.

Containment – включение (в технологиях на основе COM - механизм многократного использования при наследовании одним объектом методов другого объекта посредством простого вызова, в отличие от агрегации aggregation).

CORBA (Common Object Request Broker Architecture) – технология (спецификация) построения распределенных объектных приложений, предложенная фирмой IBM и разработанная группой компаний OMG. Клиенты взаимодействуют с сервером, используя объекты и интерфейсы. Благодаря тому, что программное ядро CORBA разработано для всех основных аппаратных и программных платформ, эта технология позволяет разрабатывать действительно гетерогенные системы, использующие преимущества каждой платформы.

DCE (Distributed Computing Environment) – среда распределенных вычислений (группа функций независимого от платформ промежуточного обеспечения компании Open Software Foundation для организации совместной работы распределенных программ, в частности, функции обслуживания распределенных файлов, присвоения имен, контроля за временем, обслуживания потоков, дистанционного вызова процедур и обеспечения безопасности). См. также раздел OSF Standards for RPC в MSDN.

DCOM (Distributed Component Object Model) – распределенная модель компонентных объектов. Расширение модели COM фирмы Microsoft, ориентированное на поддержку и интеграцию распределенных объектных приложений, функци­они­рующих в сети.

DDE (Dynamic Data Exchange) – динамический обмен данными. Способ обмена данными между приложениями, который был введен в первых версиях Windows.

Dispinterface – диспетчерский интерфейс (диспинтерфейс). Осуществляет доступ к сервисам COM-объектов в Automation технологиях.

Heterogeneous system – гетерогенная система, т.е. система, построенная из разнородных элементов. Например, это может быть компьютерная сеть, составленная из компьютеров разных типов. Другой пример – запись (record) можно в принципе считать гетерогенным массивом.

H/PC – карманный компьютер (hand-held PC).

IDL (Interface Definition Language) – язык описания интерфейсов (используется в COM-технологиях для спецификации интерфейсов объектов COM).

In-place activation (активизация на месте) – способ редактирования внедренного документа с запуском приложения непосредственно из контейнера (в OLE технологии). См. также антоним – visual editing.

LINQ (Language Integrated Query) — проект Microsoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы .NET Framework. Ранее был реализован в языках C# и Visual Basic .NET. Множество концепций, которые вводит LINQ, изначально опробовали в исследовательском проекте Microsoft Cω.

LINQ выпущен вместе с Visual Studio 2008 в конце ноября 2007 года. Для быстрого создания и отладки запросов LINQ существует специализированная утилита LINQPad.

 

MAPI – Messaging Application Programming Interface. Интерфейс прикладного программирования [для] электронной почты (корпорации Microsoft).

Marshaling – маршалинг, маршализация. Механизм, который позволяет клиенту получить доступ к объекту, находящемуся в другом процессе или на другом компьютере (невидимо для клиента). В технологии ORPC – процесс упаковки запроса, включая параметры, в стандартный формат, пригодный для передачи по сети.

MIDAS (Multitier Distributed Applications Services) – набор сервисов для многозвенных распределенных приложений. Многозвенное приложение – это распределенная система удаленного доступа к данным, которая состоит минимум из трех логических уровней. Технология MIDAS позволяет обрабатывать данные, расположенные на разных машинах. Она также поддерживает Internet-приложения, взаимодействует с технологиями CORBA, COM и MTS.

MIDL (Microsoft Interface Definition Language) – Microsoft реализация и расширение языка OSF-DCE Interface Definition Language.

MTS (Microsoft Transaction Server). Это среда, которая обеспечивает управление транзакциями, безопасность и объединение ресурсов и объектов в общий фонд (pooling) для распределенных COM приложений. MTS включает в себя целую группу элементов.

MSDN (Microsoft Developer’s Network) – собрание документов компании Microsoft, содержащее сведения обо всех ее разработках.

NCSA (National Computer Security Association) – Национальная ассоциация по компьютерной безопасности (США). Независимая исследовательская организация, проверяющая и сертифицирующая антивирусные программы и Web-узлы. Переименована в ICSA.

.NET Framework — программная платформа компании Microsoft, предназначенная для создания обычных программ и веб-приложений. Главной идеей разработки .NET Framework было стремление сделать платформонезависимую виртуальную машину для выполнения одного и того же кода в различных ОС без внесения изменений на момент компиляции. Но со временем Microsoft ограничилась поддержкой только своих операционных систем Windows. Поддержкой некоторых других платформ занимаются независимые разработчики (проекты Mono, Portable.NET).

OCX (OLE Custom eXtension) – специализированные (перемещаемые) элементы управления. Это программируемые компоненты-приложения с интерфейсом на базе OLE, позволяющим легко включать их в другие приложения. С 1996 года они стали называться ActiveX.

ODBC (Open Database Connectivity interface) – открытый интерфейс взаимодействия с базами данных. Представляет собой стандартный API, разработанный Microsoft в 1991г. Позволяет приложениям, работающим под Windows или другими ОС, общаться с различными серверами реляционных баз данных. Этот интерфейс поддерживает запросы на языке SQL и базируется на спецификации Call Level Interface Specification, разработанной консорциумом SQL Access Group. ODBC как реализация – это набор библиотек (.DLL), которые служат промежуточным слоем между приложениями и БД различных типов, обеспечивая независимость приложений от конкретных БД.

OEM – изготовители оригинального оборудования (original equipment manufacturers).

OLE (Object Linking and Embedding) – связывание и внедрение объектов. До 1996 года - общее название группы объектно-ориентированных технологий Microsoft на основе COM (OLE 1, OLE 2, OLE automation, OLE Database и др.). С 1996 года после введения термина ActiveX применяется для обозначения технологий на основе COM, используемых для создания составных документов внедрением и связыванием.

OLE DB – спецификация доступа к данным (прежнее название - Nile), разработанная Microsoft. Объединяет ODBC и OLE.

OMG (Object Management Group) – рабочая группа по развитию стандартов объектно-ориентированного программирования.

OSF (Open Software Foundation) – фонд открытого ПО, консорциум OSF (независимая некоммерческая научно-исследовательская организация, занимающаяся разработкой стандартов для открытых систем). В частности, одним из ее стандартов является язык IDL.

PLINQ (Параллельный LINQ) – является параллельной реализацией LINQ to Objects. PLINQ реализует полный набор стандартных операторов запроса LINQ как методы расширения для пространства имен T:System.Linq и имеет дополнительные операторы для параллельных операций. PLINQ объединяет простоту и удобство чтения синтаксиса LINQ с мощностью параллельного программирования. Подобно коду, предназначенному для библиотеки параллельных задач, запросы PLINQ масштабируют в степень параллелизма на основе возможностей главного компьютера.

Во многих сценариях PLINQ может значительно увеличить скорость запросов LINQ to Objects, более эффективно используя все доступные ядра на главном компьютере. Повышенная производительность увеличивает вычислительную мощностью на рабочем столе.

P/PC – ручной компьютер (palm-size – размером с ладонь). Еще меньше, чем карманный H/PC. Полностью управляется пером и не имеет клавиатуры.

 

Proxy ("заместитель") – это COM-объект внутри клиентского процесса, предоставляющий клиенту те же интерфейсы, что и объект в локальном сервере, с которым клиент пытается работать. Функцией заместителя является получение вызова от клиентского процесса, его упаковка и отправка в процесс сервера (с помощью механизма RPC). В локальном сервере упакованный вызов передается специализированному объекту – "заглушке" (stub), который распаковывает вызов и передает его требуемому объекту COM. Результат вызова передается клиенту в обратном порядке.

RPC (Remote Procedure Call) – удаленный вызов процедуры. Это средство передачи сообщений, которое позволяет распределенному приложению вызывать сервис различных компьютеров в сети. Применяется в распределенных объектных технологиях, таких как DCOM, CORBA, Java RMI.

Silverlight — это программная платформа, включающая в себя модуль для браузера, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видео ролики, что характерно для RIA (Rich Internet application). Версия 2.0 добавила поддержку для языков .NET и интеграцию с IDE.

Silverlight реализована для ОС Windows 2000[3], Windows XP, Windows Server 2003, Windows Vista, Windows 7, Windows 8, Mac OS X 10.4, Mac OS X 10.5, Mac OS X 10.6 и браузеров Internet Explorer, Opera, Mozilla Firefox, Safari, Google Chrome. Silverlight включена в Windows Phone 7, а в будущем также планируется поддержка мобильных устройств, начиная с Windows Mobile 6 и Symbian (Series 60), и, возможно, других платформ.

Stub – "заглушка". См. proxy.

SSL (Secure Sockets Layer) – слой защищенных сокетов. Протокол, гарантирующий безопасную передачу данных по сети; комбинирует криптографическую систему с открытым ключом и блочное шифрование данных.

TAPI – Telephony Application Programming Interface. Интерфейс прикладного программирования (API), используемый программами для передачи данных, факсов и голосовых сообщений (такими программами как НуperTerminal, Dial-up Networking, Phone Dialer и другими коммуникационными приложениями Windows NT).

TLB (Type library, type library file) – библиотека типов. Составной документ OLE, содержащий стандартные описания типов данных, модулей и интерфейсов объектов OLE, используемый другими приложениями для получения информации об OLE-сервере (OLE server). Имеет обычно расширение .TLB и не является текстовым файлом. Просмотреть имеющиеся в системе библиотеки типов можно с помощью программы OLE View из Microsoft Visual Studio Tools. Конкретное описание каждой библиотеки можно получить с помощью этой же программы, выбрав тему меню Object=>View для предварительно выбранной библиотеки. Microsoft Word имеет библиотеку .olb.

 

TPL (Библиотека параллельных задач) – представляет собой набор открытых типов и API-интерфейсов в пространствах имен System.Threading и System.Threading.Tasks в .NET Framework 4. Цель TPL — повышение производительности труда разработчиков за счет упрощения процедуры добавления параллелизма в приложения. TPL динамически масштабирует степень параллелизма для наиболее эффективного использования всех доступных процессоров. Кроме того, в библиотеке параллельных задач осуществляется секционирование работы, планирование потоков в пуле ThreadPool, поддержка отмены, управление состоянием и выполняются другие низкоуровневые задачи. Используя библиотеку параллельных задач, можно повысить производительность кода, сосредоточившись на работе, для которой предназначена программа.

Начиная с .NET Framework 4 библиотека параллельных задач является предпочтительным способом создания многопоточного и параллельного кода. Однако не всякий код подходит для параллелизации; например, если цикл за каждую итерацию выполняет небольшой объем работ или выполняется для небольшого числа итераций, из-за дополнительной нагрузки, которую параллелизация оказывает на систему, код может выполняться медленнее. Кроме того, параллелизация, как и любой многопоточный код, усложняет выполнение программы. Хотя библиотека параллельных задач упрощает многопоточные сценарии, рекомендуется иметь базовое понимание понятий потоков, например блокировки, взаимоблокировки и состояния гонки, чтобы эффективно использовать библиотеку параллельных задач. Дополнительные сведения об основных принципах параллельных вычислений см. в Центре разработчиков компьютеров параллельной обработки данных на сайте MSDN.

Transaction – транзакция. Это группа операторов SQL, которые должны быть все выполнены успешно. Если эти операторы выполнены, то изменения БД фиксируются; в противном случае эти операции отвергаются. Транзакции являются способом сохранения целостности данных при одновременной работе с сервером нескольких клиентов.

 

Visual editing (визуальное редактирование) – способ редактирования внедренного документа в отдельном окне с последующим сохранением изменений в документе-контейнере (в OLE технологии). См. также антоним in-place activation.

Windows CE – компактная версия Windows, предназначенная в первую очередь для использования изготовителями оригинального оборудования (OEM), а также в карманных (P/PC) и ручных (H/PC – еще меньше) компьютерах. Версия 2.0 выпущена в 1997г. Она уже поддерживает цвет, технологии COM и ActiveX, а также виртуальную машину Java. В отличие от других версий поддерживает множество встраиваемых 32-х разрядных процессоров (а не только Intel и Alpha, как Windows NT).

Widget – элемент управления окном, например бегунок или экранная кнопка. Термин Widget является аббревиатурой от слов window и gadget (приспособление)

WCS (Windows CardSpace) — ныне отмененное клиентское ПО с патентованной технологией единого входа от Microsoft. WCS — это способ идентификации пользователей при перемещении между ресурсами Интернета без необходимости повторного ввода имен и паролей.

В отличие от ранее используемых технологий унифицированной идентификации (например, Microsoft Passport) WCS управляет непосредственно пользователями и приложениями, с которыми устанавливается контакт (а не из централизованного ресурса). Можно применять разные схемы и уровни сложности для идентификации при доступе на Web-форумы и для банковских операций.

15 февраля 2011 корпорация Майкрософт объявила об отмене Windows CardSpace 2.0 и о работе над замещающим ПО U-Prove.

WCF (Windows Communication Foundation) — программный фреймворк, используемый для обмена данными между приложениями, входящий в состав .NET Framework. До своего выпуска в декабре 2006 года в составе .NET Framework 3.0, WCF был известен под кодовым именем Indigo.

WCF делает возможным построение безопасных и надёжных транзакционных систем через упрощённую унифицированную программную модель межплатформенного взаимодействия. Комбинируя функциональность существующих технологий .NET по разработке распределённых приложений (ASP.NET XML Web Services — ASMX, WSE 3.0, .NET Remoting, .NET Enterprise Services и System.Messaging), WCF предоставляет единую инфраструктуру разработки, при умелом применении повышающую производительность и снижающую затраты на создание безопасных, надёжных и транзакционных Web-служб нового поколения. Заложенные в неё принципы интероперабельности позволяют организовать работу с другими платформами, для чего используются технологии взаимодействия платформ, например WSIT, разрабатываемые на базе открытого исходного кода.

WF (Windows Workflow Foundation) – представляет собой технологию компании Microsoft для определения, выполнения и управления рабочими процессами (англ. workflow). Данная технология входит в состав .NET Framework 3.0, который изначально установлен в Windows Vista и может быть установлен в Windows 2003 Server и Windows XP SP2. WF ориентирована на визуальное программирование и использует декларативную модель программирования.

При помощи WF могут быть описаны три типа процессов:

§ последовательный процесс (Sequential Workflow) — переход от одного шага в другой без возвратов обратно;

§ конечный автомат (State-Machine Workflow) — переход из одного состояния в другое, возможны и произвольные возвраты в предыдущие состояния;

§ процесс, управляемый правилами (Rules-driven Workflow) — частный случай последовательного процесса, в котором переход на следующий шаг определяется набором правил.

 

WPF (Windows Presentation Foundation) ― это система следующего поколения (за .NET FrameWork – Windows Forms) для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем. С помощью WPF можно создавать широкий спектр как автономных, так и размещенных в браузере приложений. В основе WPF лежит векторная система визуализации, не зависящая от разрешения и созданная с расчетом на возможности современного графического оборудования. WPF расширяет базовую систему полным набором функций разработки приложений, в том числе языком XAML (Extensible Application Markup Language), элементами управления, привязкой данных, макетом, двухмерной- и трехмерной-графикой, анимацией, стилями, шаблонами, документами, мультимедиа, текстом и оформлением. WPF входит в состав Microsoft .NET Framework (начиная с версии 3.0) и позволяет создавать приложения, включающие другие элементы библиотеки классов .NET Framework. (http://msdn.microsoft.com/ru-ru/library/aa970268.aspx )

 

 










Последнее изменение этой страницы: 2018-04-12; просмотров: 420.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...