Page 2 of 2 FirstFirst 1 2
Results 16 to 19 of 19

Thread: type definitie na implementation

  1. #16
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Rest is toch geen protocol, maar een set regels voor stateless servers?

  2. #17
    Ik zei ook niet dat REST een protocol is. Maar zoveel verschil is er nou ook weer niet tussen een protocol en een set regels. Volgens mij is dat eigenlijk ongeveer de definitie van protocol.
    1+1=b

  3. #18
    John Kuiper
    Join Date
    Apr 2007
    Location
    Almere
    Posts
    8,747
    @Goleztrol

    De daadwerkelijke melding van mijn programma is:
    Project krserver.exe raised exception class ERemotableException with message 'Procedure 'PutCertificate' not present'.
    Maar ik heb even verder gekeken. Het blijkt dat in de eerste krce.com een aanpassing is gemaakt en heb ik dus verkeerde info gegeven.

    De link, die jij mij heb gegeven komt overeen met mijn GetGovernmentExporterPorts functie. Het resultaat wat terug gegeeven moest worden had ik veranderd naar 'GovernmentExporterPortsImpl'. Echter kan ik bij interfaces niet de functie declareren, omdat 'GovernmentExporterPortsImpl' nog niet bekend is. Het rare is ook dat 'Result := (RIO as GovernmentExporterPortsImpl);' niet werd geaccepteerd door de compiler.

    @algemeen

    Bij initialization is het volgende aangepast:
    Delphi Code:
    1. initialization
    2.   { GovernmentExporterPorts }
    3.   InvRegistry.RegisterInterface(TypeInfo(GovernmentExporterPorts), 'http://webservices.client.florecom.org/Government/PortDefinitions', '');
    4.   //aanpassing
    5.   InvRegistry.RegisterAllSOAPActions(TypeInfo(GovernmentExporterPorts), '|[url]http://webservices.client.florecom.org/Government/exporter/PutCertificate_315||http://webservices.client.florecom.org/Government/exporter/GetCertificateStatus_301|http://webservices.client.florecom.org/Government/exporter/GetCertificateDocument_302');[/url]
    6.   InvRegistry.RegisterInvokeOptions(TypeInfo(GovernmentExporterPorts), ioDocument);
    7.   InvRegistry.RegisterInvokeOptions(TypeInfo(GovernmentExporterPorts), ioLiteral);
    8.  
    9.   { GovernmentExporterPorts - Server implementation class }
    10.   //aanpassing
    11.   //InvRegistry.RegisterInvokableClass(GovernmentExporterPortsImpl);
    12.   RegisterTypeProc0;
    13.   RegisterTypeProc1;
    14.   RegisterTypeProc2;
    15.   RegisterTypeProc3;
    16.   RegisterTypeProc4;
    17.   RegisterTypeProc5;
    18.   RegisterTypeProc6;
    19.   RegisterTypeProc7;
    20.   RegisterTypeProc8;
    Hier wordt 'GovernmentExporterPortsImpl' buiten spel gezet. De class definitie alsmede de functies/procedures uit de unit gehaald.
    Nu kan ik compileren en het programma starten. de request wordt verstuurd en krijg netjes een response terug.

    De aanpassingen na de 'initialization' zorgen voor dat in code keihard wordt gezocht in de juiste SOAP request. Dat heeft als nadeel dat een nieuw request ook handmatig moet worden toegevoegd.
    Omdat ik met de huidige WSDLImporter al eerder problemen heb gehad met de krce WSDL import, heeft Embarcadero mij een import unit geleverd met die aanpassing.

    Het werkt nu. Maar ik ben toch echt benieuwd hoe ik die 'GovernmentExporterPortsImpl' kan aanroepen.
    Delphi is great. Lazarus is more powerfull

  4. #19
    Het rare is ook dat 'Result := (RIO as GovernmentExporterPortsImpl);' niet werd geaccepteerd door de compiler.
    Waarom is dat raar? Het is een interface. Die hoeft überhaupt niet door GovernmentExporterPortsImpl geïmplementeerd te worden. GovernmentExporterPortsImpl is gewoon een implementatie. Het idee van deze opzet is dan ook dat heel je applicatie niet eens hoeft te weten dat GovernmentExporterPortsImpl bestaat. Je applicatie gebruikt uitsluitend de interface.

    De vraag is natuurlijk of dat helemaal handig is, want het liefst zou je wel de mogelijkheid willen hebben om een subclass te kunnen maken, en die registreren i.p.v. de standaard-implementatie. Maar het obsessief afschermen van code is helaas iets dat Embarcadero nog steeds niet is afgeleerd. Hoe dan ook, dat is dus alleen belangrijk als je daadwerkelijk de implementatie wilt kunnen aanpassen/overriden.
    Last edited by GolezTrol; 14-May-19 at 12:41.
    1+1=b

Page 2 of 2 FirstFirst 1 2

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •