Исследование возможностей обмена данными между приложениями

      Комментарии к записи Исследование возможностей обмена данными между приложениями отключены

Требуется проиллюстрировать все возможности обмена данными между приложениями, реализуемые с использованием сообщения Windows WM_COPYDATA и почтовых ящиков MailSlot. Например, это может быть передача массива данных, структур, объектов, графических изображений. Выполнить сравнительный анализ этого метода обмена данными с использованием буфера обмена Windows.

Отличительной особенностью этого задания является также необходимость разработки подробной инструкции для программистов по использованию этих механизмов для обмена данными различных типов между приложениями.

Исследование эффективности многопоточных приложений

Требуется исследовать возможность повышения производительности приложения, предназначенного для решения некоторой конкретной задачи. Например, в качестве такой задачи можно рассмотреть поиск некоторой подстроки текста в файлах. В качестве возможного пути решения этой задачи имело бы смысл хронометрировать затраты времени в однопоточном приложении, определить «узкие» места и распараллелить их выполнение по разным потокам. Сокращения времени работы приложения можно было бы добиться за счет того, что в моменты простоя приложения из-за ожидания завершения операции обмена данными с диском можно было бы заниматься поиском текста в уже открытом файле.

Это задание имеет, в первую очередь, исследовательский уклон и при его выполнении можно применять любые средства, которые могут помочь сокращению времени работы приложения. Надо также не упускать из виду и то соображение, что приложение, по возможности, не должно быть пожирателем системных ресурсов, в том числе, например, могло бы работать и в фоновом режиме по желанию пользователя.

Препроцессор для обработки исходных текстов программ

Назначение препроцессора: выполнение черновой работы по структурированию и комментированию программы, а также некоторая оптимизация кода программы.

Функции препроцессора:

  • структурирование программы, управляемое параметрами (выделение отступами тел структурных операторов, выделение лексем программы с использованием регистров символов и т.д.);
  • выполнение подготовительных операций по комментированию программы (вставка в необходимых местах пустых скобок комментариев, комментирование концов больших структурных операторов и т.д.);
  • поиск и удаление неиспользуемого кода, описаний и данных (с запросом на выполнение операции);
  • оптимизация кода (исправление типичных ошибок, поиск неэффективного кода, поиск копий фрагментов кода с целью оформления его в виде подпрограмм, оптимизация параметров подпрограмм).

Препроцессор можно оформить как сервер, которому передается на обработку выделенный фрагмент программы, в том числе программа целиком. Более простой путь активизации препроцессора – прямой вызов на выполнение с передачей ему исходного текста программы через буфер обмена. Самый простой путь – прямой вызов сервера с последующей загрузкой файла.

Каталог-сервис

ПП должна предоставлять возможность просмотра содержимого выбранного диска или каталога в виде дерева и его сохранения в формате rtf-файла. ПП должна предоставлять следующие услуги:

  • включение в дерево полной или частичной информации о файле (имя, тип, размер и т.д.);
  • подсчет размера каждого каталога;
  • выбор параметров шрифтов, используемых для отображения имен каталогов и файлов, а также дополнительной информации. Другими словами, пользователю должна быть предоставлена возможность форматирования результирующего документа;
  • контроль целостности каталога или диска путем чтения всех файлов.

Каждая из перечисленных возможностей ПП должна выбираться пользователем.

Для использования компонента RichEdit в своем приложении необходимо самостоятельно загрузить библиотеку Riched32.dll в InitInstance():

BOOL CTestApp::InitInstance()

{

HMODULE hmod = LoadLibrary(Riched32.dll); //Загружаем

if(hmod == NULL){

AfxMessageBox(RichEdit пахать не будет);

return false;

}

CTestDlg dlg;

m_pMainWnd = &dlg;

int nResponse = dlg.DoModal(); // в TestDlg нарисован RichEdit

FreeLibrary(hmod); //Выгружаем

return false;

}

См. также проект Reitp.dsp в примерах MSDN.

Операции над файлами (копирование, удаление и пр.) можно выполнять с помощью функции SHFileOperation().

Сложность обмена данными между двумя базами на примере Rozetka.UA