1. Wybierz File New Application. Pojawi się nowa aplikacja w Delphi.



Podobne dokumenty
Serwery Statefull i Stateless

Hello World w MIDAS. 1) Wybierz File New Application. Główna forma naszej aplikacji i projektu zostanie stworzona.

Przesyłanie Pakietów Danych i TCP/IP

Zaawansowane aplikacje internetowe - laboratorium

Podstawy MIDAS. Właściwość PacketRecords

KROK 17 i 18. Cel: Tworzymy oddzielne okno - O autorze. 1. Otwórz swój program. 2. Skompiluj i sprawdź, czy działa prawidłowo.

16) Wprowadzenie do raportowania Rave

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Problemy techniczne SQL Server. Zarządzanie bazami danych na serwerze SQL

Programowanie Obiektowe GUI

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk

Delphi podstawy programowania. Środowisko Delphi

Problemy techniczne SQL Server. Zarządzanie bazami danych na serwerze SQL

Pamiętałeś o kopiowaniu i zapisywaniu swojego programu do kolejnych folderów? Jeżeli tak, to:

Laboratorium 9 (Więcej Aktywności, w Androidzie)

Wprowadzenie do systemu Delphi

Tworzenie okna dialogowego w edytorze raportu SigmaNEST. część 1

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

Jak napisaś edytor tekstowy w Delphi (wersja Delphi 2009)

Jak skonfigurować bezpieczną sieć bezprzewodową w oparciu o serwer RADIUS i urządzenia ZyXEL wspierające standard 802.1x?

Aplikacje WWW - laboratorium

Laboratorium 8 ( Android -pierwsza aplikacja)

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

BACKUP BAZ DANYCH FIREBIRD

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

FAQ: /PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

Skopiuj plik do katalogu macierzystego serwera Apache (C:/xampp/htdocs). Uruchom przeglądarkę i wpisz w polu adresowym następujący ciąg:

Gdy z poziomu programu Delphi otworzysz folder pierwszy program, zauważysz tylko dwa pliki [rys.1]:

Aplikacje internetowe i rozproszone - laboratorium

Aplikacje internetowe i rozproszone - laboratorium

Projektowanie aplikacji internetowych laboratorium

Laboratorium - Poznawanie FTP

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

1. Przekrój poprzeczny tranzystora nmos. Uzupełnij rysunek odpowiednimi nazwami domieszek (n lub p). S G D

AZACO Eksporter. Instrukcja konfiguracji oraz automatycznego eksportu danych. Przygotowanie środowiska...2. Konfiguracja zadań eksportu danych...

5.2. Pierwsze kroki z bazami danych

Zaawansowane aplikacje internetowe

Enterprise JavaBeans (EJB)

Synchronizator plików (SSC) - dokumentacja

Tworzenie własnych komponentów

Microsoft.NET: Warstwa dostępu do danych (DAL) w aplikacjach ASP.NET Web Forms

Dokumentacja instalacji aktualizacji systemu GRANIT wydanej w postaci HotFix a

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski SYSTEMY SCADA

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

System Obsługi Zleceń

Opis przykładowego programu realizującego komunikację z systemem epuap wykorzystując interfejs komunikacyjny "doręczyciel"

Problemy techniczne SQL Server

INSTRUKCJA KONFIGURACJI KLIENTA POCZTOWEGO

Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:

Problemy techniczne SQL Server

Lekcja 1: Origin GUI GUI to Graficzny interfejs użytkownika (ang. GraphicalUserInterface) często nazywany też środowiskiem graficznym

Instrukcja instalacji programu SYSTEmSM

Wybieramy File->New->Project Wybieramy aplikację MFC->MFC Application jak na rysunku poniżej:

Laboratorium Ericsson HIS NAE SR-16

Tworzenie wersji demonstracyjnych enova365 na potrzeby prezentacji u Klienta

Konfiguracja współpracy urządzeń mobilnych (bonowników).

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Dokumentacja systemu NTP rekrut. Autor: Sławomir Miller

Instrukcja laboratoryjna cz.6

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Aktywności są związane z ekranem i definiują jego wygląd. Dzieje się to poprzez podpięcie do aktywności odpowiedniego widoku.

Aplikacje WWW - laboratorium

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

1.Wstęp. 2.Generowanie systemu w EDK

Instalacja NOD32 Remote Administrator

5.6.2 Laboratorium: Punkty przywracania

Projekt e-deklaracje 2

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych

Instrukcja instalacji programu SPSS Statistics 21

Pobieranie edytora CodeLite

Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych

Programy LeftHand - Obsługa plików JPK. Luty 2017

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS

Instrukcja aktualizacji programu Integra 7

Instalacja i obsługa aplikacji MAC Diagnoza EP w celu wykonania Diagnozy rozszerzonej

Aplikacje RMI Lab4

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. asix. Aktualizacja pakietu asix 4 do wersji 5 lub 6. Pomoc techniczna

Laboratorium 15: Bazy Danych Tworzenie bazy danych i programowanie elementów nawigacyjnych aplikacji stworzonej przy pomocy technologii dbexpress

2. Podstawy narzędzia Application Builder, budowa strony, kreatory aplikacji

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

2. Podstawy narzędzia Application Builder, budowa strony, kreatory aplikacji

Instrukcja instalacji Control Expert 3.0

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Modelowanie obiektowe - Ćw. 1.

NetDrive czyli jak w prosty sposób zarządzać zawartością FTP

Zastanawiałeś się może, dlaczego Twój współpracownik,

Symfonia Produkcja Instrukcja instalacji. Wersja 2013

Galileo v10 pierwszy program

Jak zainstalować i skonfigurować komunikator MIRANDA, aby wyglądał i funkcjonował jak Gadu Gadu Tutorial by t800.

Dokumentacja techniczna

Kostki OLAP i język MDX

Przykład rozwiązywania problemu w programie DSS1OPT

Komunikatory typu TCP/IP lab2. Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Konfiguracja zapory ogniowej w trybie standardowym na module SCALANCE S623

Transkrypt:

DCOM Aplikacje serwera i klienta DCOM, które zamierzamy stworzyć są podobne do tych zrobionych w ćwiczeniu dotyczącym TCP/IP. Aplikacja serwera będzie jedno wątkowa, a co za tym idzie będzie mogła obsłużyć jednego klienta jednocześnie. Serwer TCP/IP pozwalał na kilka jednoczesnych połączeń klientów i używał jednego połączenia z bazą danych by wygenerować pakiet danych. Klienci serwera DCOM będą również dzielili między sobą pojedyncze połączenie z bazą. 1. Wybierz File New Application. Pojawi się nowa aplikacja w Delphi. 2. Wybierz Choose File New Multi-tier Remote Data Module i kreator Remote Data Module Wizard pojawi się na ekranie. Wpisz Class Name w okno dialogowe jak pokazano poniżej i przyciśnij przycisk OK. 3. Zapisz wszystkie pliki do katalogu który wybrałeś pod nazwami: Unit1.pas (Form1), Unit2.pas (MyServer) i DCOMServer.dpr (DCOMServer). 4. Upuść komponent TDatabase na MyServer i ustaw jego właściwości w ten sam sposób jak zrobiliśmy to w aplikacji przykładowej Hello World. Ustaw właściwość Database1.HandleShared na True. 5. Upuść TQuery na MyServer i skojaż ten komponent z Database1. Ustaw jej właściwość SQL na SELECT * FROM department. 6. Upuść komponent Tprovider na MyServer i ustaw jego właściwość DataSet na Query1. 7. Kliknij na MyServer i wybierz komendę Edit Add to interface.

8. W dialogu Add to interface wpisz deklaracje metody GetDepartments Ta metoda będzie robiła to samo co zamieszczona w aplikacji przykładowej TCP/IP doręczała pakiet danych od Proiver1 w aplikacji serwera do ClientDataSet1 w aplikacji klienta. Wciśnij przycisk OK, gdy skończysz pisać tą deklaracje. W tle środowisko Delphi stworzyło czwarty plik, DCOMServer.tlb i dodało go do projektu. Jest to binarna biblioteka która zawiera definicje co nasz serwer udostępnia innym aplikacją. Deklaracja metody GetDepartments została napisana jako biblioteka powiązana z interfejsem IMyServer. Nazwa interfejsu jest bardzo podobna do nazwy naszego remote data module. To nie przypadek. Implementacja jako pusta metoda została dodana do kodu TmyServer w Unit2. Delphi domyślił się, że klasa TMyServer implementuje interfejs IMyServer. Gdy klient pobiera referencje do interfejsu IMyServer oraz wywołuje GetDepartments, wtedy metoda TMyServer.GetDepartments zostanie wykonana i zwrócony zostanie pakiet danych do pamięci aplikacji klienta. 9. Wybierz View Type Library, rozwiń ImyServer w drzewie po lewej Type Library Editor kliknij ImyServer, a następnie na przycisk New Method Metod pasku narzędziowym edytora. Zmień nazwe nowej metody na ApplyDepartmentUpdates i wybierz zakładkę Parameters po prawej stronie okienka edytora. Wypełnij parametry wartościami jak na poniższym rysunku.

10. Wybierz File Save all. Nowy unit DCOMServer_TLB.pas zostanie dodany do projektu. Zawiera on deklaracje Pascal-a, opisujące binarną zawartość biblioteki typów. Gdy masz troszkę czasu możesz w tym pliku znaleźć również deklaracje IMyServer i IMyServerDisp. Każdy interfejs musi być zaimplementowany w jednej lub wielu coclass. Jedna coclass może implementować kilka interfejsów DCOM. W naszym przypadku TmyServer jest implementacją coclass. Delphi generuje DCOMServer_TLB.pas za każdym razem ja zmieni się zawartość biblioteki typów. Nigdy nie należy próbować modyfikować tego pliku, ponieważ wpisany kod może być zmieniony bez ostrzeżenia. Ten plik może być użyty w innych aplikacjach by umożliwić dostęp do funkcji udostępnianych na serwerze. Implementacja w bibliotece typów interfejsów TmyServer w Unit2 wiąże ten plik w jego sekcji interface. Oto część kodu z pliku biblioteki typów deklarująca interfejs IMyServer.

Poniżej jest implementacja sekcji Unit2 utworzonej w środowisku Delhi. Dwie metody naszego interfejsu wyglądają tak jak zwykle metody klasy. Na końcu pliku jest konstrukcja, która tworzy fabrykę komponentów dla implementacji coclass. Ten kod rozszerza możliwości serwera do komunikacji z nim z zewnątrz Ostatnim krokiem jest uzupełnienie dwóch pustych metod implementujących interfejs. Odległy moduł danych MyServer może wyglądać podobnie do poniższego.

Dodajmy poniższy kod do Unit2: Całkiem proste. Podczas budowy komponenty wizualne wygenerowały za nas większość kodu bez większej iteracji z naszej strony. Po prostu zadeklarowaliśmy kilka metod. W ten sposób można skoncentrować się na logice biznesowej naszej aplikacji. Czy pisaliśmy kod komunikacji? Nie, bo DCOM robi to przeźroczystym dla aplikacji. Uruchom Aplikacje a wtedy class factory stworzone na końcu Unit2 zapisze referencje do DCOMServer.MyServer w rejestrze Windows by serwer był widoczny dla innych aplikacji. Aplikacja klienta będzie podobna do tej która stworzyliśmy w przykładzie TCP/IP. 1. Wybierz File New Application. Pojawi się nowa pusta aplikacja. 2. Wybierz File New Data Module i do aplikacji zostanie dodany nowy moduł danych. 3. Zapisz wszystkie pliki do wybranego przez ciebie katalogu pod nazwami Unit1.pas (Form1), Unit2.pas (DataModule2) i Project1.dpr (Project1). 4. Upuść komponent TclientDataSet na DataModule2. 5. Umieść komponent TdataSource na DataModule2 i ustaw jego własność DataSet na ClientDataSet. 6. Dodaj referencje do biblioteki typów serwera wybierając Project Add to project i znajdując DCOMServer_TLB.pas w katalogu serwera. 7. Dodaj DCOMServer_TLB do listy unitów w clauzuli uses sekcji interface unitu Unit2. 8. Stwórz właśniwości DataModule2 jak pokazano poniżej.

9. Upuść komponent TactionList na DataModule1. Podwójne klikniecie na ActionList1 da nam Action List Editor. Stwórzmy 2 nwe akcje o nazwach Action1i Action2 nadanych domyślnie ustaw ich własność Caption odpowiednio na &Apply i &Cancel. 10. Wybierz Action1 i kliknij na zakładkę Events Object Inspektor, następnie twórz obsługę zdarzeń OnExecute i OnUpdate, jak pokazano poniżej.

11. Stwórz obsługę zdarzenia OnExecute Action2 by odwołać zmiany w danych i przypisz do obsługi jego zdarzenia OnUpdate metodę Action1Update. 12. Stwórz trzecią akcję o nazwie Action3. Ustaw właściwość Caption na Refresh i określ obsługę zdarzeń OnUpdate and OnExecute 13. Ustaw Unit2 jako główna formę naszej aplikacji klienta. 14. Upuść komponent TDBGrid, TDBNavigator i trzy komponenty Tbutton i jeden Tedit na formie Form1, rozmieść je i podczep przyciski do akcji jak pokazano poniżej. Podłącz DBGrid1 i DBNavigator1 do DataModule2.DataSource1.

15. Napisz obsługę zdarzenia OnChange dla Edit1. Aplikacja klienta jest gotowa uruchom ją i przetestuj przez chwile. Gdy napiszemy coś w linii edycyjnej na dole aplikacji, to co napisaliśmy jest wpisywane do własności DataModule2.ComputerName. Gdy przyciśniemy przycisk Refresh gdy jest uruchomiony serwer DCOM, pakiety danych są odbierane od serwera i zapisane w pamięci podręcznej ClientDataSet1. Przycisk Refresh jest dostępny gdy nie ma zmian w pakiecie danych. Gdy przyciśniemy przycisk Apply, serwer będzie uzupełniał zmiany w bazie bazując na własności Delta. Gdy tylko serwer zwróci pakiet danych error log do klienta, aplikacja serwera wyłączy się. Dla szybszego działania aplikacji serwera można uruchomić ją ręcznie z Explorera Windows. Aplikacja klienta nie przechowuje stale referencji do aplikacji serwera. Jest ona określana przez własność DataModule2.MyServer i jest zwalniana gdy kończymy aplikacje. Tym sposobem aplikacja oszczędza zasoby systemowe aplikacji serwera co zwiększa ogólną skalowalność tego rozwiązania.