[ Pobierz całość w formacie PDF ]
.Jest tu jednak pewna ró¿nica — nie jest konieczne tworzenie mapy COM,bowiem aplikacja klienta nie bêdzie tworzyæ egzemplarzy obiektu COM; z tegosamego powodu nieistotny jest CLSID tego¿ obiektu, dlatego te¿ zamiast niegou¿yliœmy zerowego identyfikatora CLSID_NULL.Maj¹c ju¿ zdefiniowan¹ klasê TZodiacCustomSink nale¿y teraz zrobiæ z nieju¿ytek w projekcie aplikacji–klienta.Podobnie jak w przypadku klasyTZodiacSink nale¿y najpierw dodaæ odpowiednie pole do formularza g³Ã³wnego:private:…TZodiacCustomSink FZodiacCustomSink;Nastêpnie nale¿y zdefiniowaæ metodê formularza obs³uguj¹c¹ zdarzenieOnDetailedZodiacSignReady:void __fastcall TMainForm::OnDetailedZodiacSignReady(TDetailedZodiacSign& DetailedSign){memLog->Lines->Add(_T("Zodiac detailed information (ASYNCHRONOUS):"));memLog->Lines->Add(_T(" Sign = ") + AnsiString(DetailedSign.Sign));memLog->Lines->Add(_T(" House = ") + IntToStr(DetailedSign.House));memLog->Lines->Add(_T(" Type = ") + AnsiString(DetailedSign.Element));memLog->Lines->Add(_T(" Planet = ") + AnsiString(DetailedSign.Planet));memLog->Lines->Add(_T(" Details = ") + AnsiString(DetailedSign.Details));memLog->Lines->Add(_T(" Tip = ") + AnsiString(DetailedSign.Advice));memLog->Lines->Add(_T(""));}po czym zwi¹zaæ tê metodê z odpowiednim zdarzeniem klasy wskazywanej przez poleFZodiacCustomSink oraz zapewniæ automatyczne po³¹czenie z serwerem, dopisuj¹cdo funkcji zdarzeniowej TMainForm::FormCreate nastêpuj¹c¹ sekwencjêinstrukcji:FZodiacCustomSink.OnDetailedZodiacSign = OnDetailedZodiacSignReady;FZodiacCustomSink.Connect(FZodiac);Na tym ostatecznie zakoñczyliœmy budowê aplikacji klienta — i jednoczeœnieprezentacjê projektów ilustruj¹cych podstawowe elementy technologii COM.Literatura zalecanaCzytelnikom zainteresowanym szczegó³ami technologii COM i jej zwi¹zkami zC++Builderem autorzy wydania oryginalnego polecaj¹ nastêpuj¹ce pozycje:Na temat programowania w C++Builderze:Kent Reisdorph i in.„C++Builder 4 Unleashed”, wyd.Sams Publishing 1999,ISBN 0–672–31510–6Na temat technologii COM/COM+:Dale Rogerson „Inside COM”, wyd.Microsoft Press 1997,ISBN 1–57231–349–8Guy Eddon, Henry Eddon „Inside Distributed COM”, wyd.Microsoft Press 1998,ISBN 1–57231–849–XDavid S.Platt „Understanding COM+”, wyd.Microsoft Press 1999,ISBN 0–7356–0666–8Ash Rofail, Yasser Shohoud „Mastering COM and COM+”, wyd.Sybex Inc.,ISBN 0–7821–2384–8Na temat szczegó³Ã³w biblioteki ATL:Brent Rector, Chris Sells „ATL Internals”, wyd.Addison Wesley 1999,ISBN 0–201–69589–8O ciekawych zagadnieniach pokrewnych:Eric Harmon „Delphi COM Programming”, wyd.Macmillan Technical Publishing2000,ISBN 1–57870–221–6Zasoby internetowe:nntp://forums.inprise.com/borland.public.cppbuilder.activexhttp://community.borland.com/cpphttp://www.cetus.links.org/oo_ole.htmlhttp://www.techvanguards.comhttp://msdn.microsoft.comByæ mo¿e HELION bêdzie chcia³ zweryfikowaæ tê listê lub coœ do niej dodaæ.PodsumowanieTechnologia COM nie stanowi zamkniêtej ca³oœci.Tworzenie komponentów COM napotrzeby np.przetwarzania du¿ych baz danych, sterowania urz¹dzeniami itp.staje siê czynnoœci¹ w miarê nieskomplikowan¹ dopiero wówczas, gdy potraktujesiê narzêdzie projektowe (C++Builder) jako ca³oœæ, nie zaœ tylko pod k¹tem jegowspó³pracy z mechanizmami COM.W niniejszym rozdziale zaprezentowaliœmy wykorzystanie elementów COM na gruncieC++Buildera, tworz¹c dwie wspó³pracuj¹ce ze sob¹ aplikacje — serwer i klient.Œledz¹c proces budowy obydwu projektów przedstawiliœmy jego najwa¿niejszeelementy — interfejsy, bibliotekê typu oraz bibliotekê szablonów ATL; kilkas³Ã³w poœwiêciliœmy tak¿e procesowi transpozycji danych (ang.marshaling) i jegokluczowym elementom — proxy i stub’owi.Omówiliœmy tak¿e obs³ugê zdarzeñserwera w ramach ujœcia zdarzeñ klienta oraz transformacjê tych zdarzeñ nazdarzenia VCL.W nastêpnym rozdziale, poœwiêconym rozproszonym aplikacjom COM, zajmiemy siêproblemem skalowania serwerów i klientów COM w kontekœcie architekturysieciowej
[ Pobierz całość w formacie PDF ]