(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Учебный пример: Простой сервис DataSnap XE - калькулятор

Vsevolod Leonov

Учебный пример: Простой сервис DataSnap XE - калькулятор

Abstract: В этой статье рассматривается создание простого сервиса Delphi XE на примере "калькулятора", которые реализует базовые функции арифметических вычислений. Этот пошаговый учебный пример очень прост, поэтому даже начинающие программисты Delphi смогут его воспроизвести. Целью этого учебного примера является знакомство с процессом создания клиентов и серверов DataSnap. Наш простой "калькулятор в виде сервиса" подразумевает клиентское и серверное приложение. Обе программы - Delphi VCL Forms Win32, а для связи используется протокол TCP/IP. Надеемся, вам понравится!

    Создаем простое серверное приложение

Первым шагом является создание нового серверного приложения DataSnap с использованием мастера "DataSnap Server".

Запустите Delphi XE.

Выберите в главном меню "File -> New -> Other", а затем в диалоге "New Items" щелкните два раза на иконке "DataSnap Server" в категории "Delphi Projects -> DataSnap Server".

На первой странице оставьте по-умолчанию опцию "Project type" как "VCL Forms Application".

Click to see full-sized image

На второй странице мастера также оставьте уже выбранные опции. Далее мы заменим демонстрационные методы (Sample Methods) сервера нашими вариантами.

Click to see full-sized image

На третьем изображении мы оставим значение по-умолчанию "211" для номера порта TCP/IP. Старайтесь всегда проводить проверку доступности порта путем нажатия на кнопку "Test Port".

Click to see full-sized imageНа последней странице мы собираемся также воспользоваться опцией по-умолчанию для выбора базового класса как "TComponent", от которого будет производиться наш класс, реализующий методы сервера.

Нажмите на кнопку "Finish", а мастер создаст новый проект с тремя модулями.

Сохраните весь проект выбором "File -> Save All".

Создайте новую папку для всех файлов для данного учебного примера "C:\DataSnapLabs\SimpleCalc\".

Сохраните главную форму приложения как "FormServerUnit", а для остальных имен воспользуйтесь стандартными названиями - "ServerContainerUnit1" и "ServerMethodsUnit1" - и сохраните проект как "SimpleCalcServer".

На этой стадии в окне Delphi Project Manager вы видите следующую картину:

Откройте модуль "ServerMethodsUnit1.pas" и реализуйте функциональность простого сервиса, выполняющего арифметические действия. Замените демонстрационные методы, добавленные мастером ("EchoString" и "ReverseString"), на нужные нам варианты "Add" ("сложить"), "Subtract" ("вычесть"), "Multiply" ("умножить") и "Divide" ("разделить").

Исходный код для модуля "ServerMethodsUnit1" должен выглядеть следующим образом:

unit ServerMethodsUnit1;
 
interface
 
uses
  Classes;
 
type
{$METHODINFO ON}
  TServerMethods1 = class(TComponent)
  private
    { Private declarations }
  public
    function Add(a, b: double): double;
    function Subtract(a, b: double): double;
    function Multiply(a, b: double): double;
    function Divide(a, b: double): double;
  end;
{$METHODINFO OFF}
 
implementation
 
{ TServerMethods1 }
 
function TServerMethods1.Add(a, b: double): double;
begin
  Result := a + b;
end;
 
function TServerMethods1.Subtract(a, b: double): double;
begin
  Result := a - b;
end;
 
function TServerMethods1.Multiply(a, b: double): double;
begin
  Result := a * b;
end;
 
function TServerMethods1.Divide(a, b: double): double;
begin
  Result := a / b;
end;
 
end.

Листинг 1: ServerMethodsUnit1.pas.

Вы полностью реализовали наш сервер. Для того чтобы реализовать клиентское приложение, сервер должен быть запущен.

Выберите "Run -> Run Without Debugging" для запуска сервера (вне отладчика) и минимизируйте его окно.

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

    Создаем простое клиентское приложение

Кликните правой кнопкой мыши на project group внутри Project Manager и выберите "Add New Project".

В диалоге "New Items" выберите "VCL Forms Application" из категории "Delphi Projects".

Нажмите "OK". К существующей project group должен добавиться новый проект.

Выполните сохранение нового проекта "File -> Save All".

Выберите папку, которую вы создали для сохранения файлов проекта сервера, и сохраните туда главную форму клиентского приложения как "FormClientUnit", сам проект как "SimpleCalcClient", а всю project group как "SimpleCalcGrp".

Теперь окно Project Manager должно выглядеть как:

Проверьте, что проект клиентского приложения активен, затем выберите "File -> New -> Other", а в появившемся диалоге "New Items" выберите "DataSnap Client Module".

Как и в прошлый раз, пожалуйста, сохраните все опции по умолчанию во время работы с мастером.

Click to see full-sized image

На первой странице оставьте "DataSnap server location" как "Local server".

Click to see full-sized image

Наш сервер DataSnap является "stand alone" (независимое отдельное приложение), поэтому просто нажмите "Next".

Click to see full-sized image

Мы согласились использовать "TCP/IP" в качестве протокола, поэтому сохраним выбранную опцию.

Click to see full-sized image

Нажмите на "Test Connection", чтобы проверить, действительно ли сервер "слушает" порт 211, а затем нажмем "Finish".

Мастер добавить два модуля к нашему клиентскому приложению "ClientClassesUnit1" и "ClientModuleUnit1".

Последней задачей в этом учебном примере является реализация интерфейса клиентского приложения.

Начнем с того, что добавим ссылку на модуль "ClientModuleUnit1" в раздел uses главного модуля формы клиента. Активируем данный модуль в редакторе и выбираем в меню "File -> Use Unit".

Теперь в коде формы клиента нужно правильно использовать методы, экспонируемые (предлагаемые) через свойство "ClientModule1.ServerMethods1Client". Эти методы имеют те же имена и сигнатуры, как и методы, реализованные на сервере.

Ниже показана реализация главной формы клиентского приложения.

unit FormClientUnit;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm3 = class(TForm)
    EditA: TEdit;
    ButtonAdd: TButton;
    EditB: TEdit;
    ButtonSub: TButton;
    ButtonMult: TButton;
    ButtonDiv: TButton;
    LabelResult: TLabel;
    procedure ButtonAddClick(Sender: TObject);
    procedure ButtonSubClick(Sender: TObject);
    procedure ButtonMultClick(Sender: TObject);
    procedure ButtonDivClick(Sender: TObject);
  private
    { Private declarations }
  public
    function GetA: double;
    function GetB: double;
    procedure ShowResult(aValue: double);
  end;
 
var
  Form3: TForm3;
 
implementation
 
uses ClientModuleUnit1;
 
{$R *.dfm}
 
function TForm3.GetA: double;
begin
  Result := StrToFloat(EditA.Text);
end;
 
function TForm3.GetB: double;
begin
  Result := StrToFloat(EditB.Text)
end;
 
procedure TForm3.ShowResult(aValue: double);
begin
  LabelResult.Caption := FloatToStr(aValue);
end;
 
procedure TForm3.ButtonDivClick(Sender: TObject);
begin
  ShowResult(ClientModule1.ServerMethods1Client.Divide(GetA, GetB));
end;
 
procedure TForm3.ButtonMultClick(Sender: TObject);
begin
  ShowResult(ClientModule1.ServerMethods1Client.Multiply(GetA, GetB));
end;
 
procedure TForm3.ButtonSubClick(Sender: TObject);
begin
  ShowResult(ClientModule1.ServerMethods1Client.Subtract(GetA, GetB));
end;
 
procedure TForm3.ButtonAddClick(Sender: TObject);
begin
  ShowResult(ClientModule1.ServerMethods1Client.Add(GetA, GetB));
end;
 
end.

Листинг 2: Реализация главной формы клиента.

Окончательно моя форма выглядит следующим образом:

Наверное, вам не нужно рассказывать, как воспроизвести ее!

Теперь вы видите, как просто создавать сервера и клиенты DataSnap и использованием Delphi XEJ

    Итог

В этом учебном примере мы использовали Delphi XE для построения простого сервиса DataSnap XE в виде калькулятора, который на уровне реализации представляет собой приложения Win32, при обмене данными между которыми используется протокол TCP/IP.

Весь исходный код данного учебного примера доступен по адресу http://cc.embarcadero.com/Item/28184

Видеоролик, демонстрирующий реализацию этого примера, можно найти здесь (http://www.youtube.com/watch?v=Qm__RdmIWSg).

Подробное описание возможностей технологии Delphi находится по адресу http://www.embarcadero.com/products/delphi



 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Embarcadero »
Написать редактору 
 Рекомендовать » Дата публикации: 12.05.2011 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
ABBYY Lingvo x6 Английская Профессиональная версия
Антивирус ESET NOD32 SMALL Business Pack newsale for 5 user. Электронный ключ
ABBYY FineReader 14 Standard Full
Microsoft SQL Server Standard Edition 2017 Sngl OLP 1License NoLevel
SmartBear AQtime Pro - Node-Locked License (Includes 1 Year Maintenance)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
eManual - электронные книги и техническая документация
Мир OLAP и Business Intelligence: новости, статьи, обзоры
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Пишу программы на заказ профессионально (2382)
Пишу программы на заказ на языках Pascal (численные методы, списки, деревья, прерывания) под...
 
Пишу программы на заказ для студентов (192)
Пишу для студентов на с, с++, паскаль в средах ms visual studio, qt, builder, borland c, delphi....
 
Excell не печатает :-( (2)
Почему то Excell не печатает страницы в альбомной ориентаций, то есть страница в аольбомной...
 
Пишу программы на заказ (1)
Пишу на языках C#, VB.NET, VBA с использованием WPF, WCF, SQL.
 
Программист для удалённой работы (ASP.NET MVC, C#, MSSQL, AJAX) (2)
предлагаю услуги по разработке web-приложений с использованием таких технологий, как: ASP.NET...
 
 
 



    
rambler's top100 Rambler's Top100