[Lazarus] New application type: HTTP standalone server

ABorka fpc-devel at aborka.com
Fri Jun 3 20:24:27 CEST 2011


>>>>>> On 6/2/2011 10:46, Leonardo M. Ramé wrote:
>>>>>>> Michael, I added a webmodule to testhttp and got two problems.
>>>>>>>
>>>>>>> 1 - Could not determine HTTP module for request "". Even if I
>>>>>>> call it
>>>>>>> the same way as I use with fpCGI and fpEmbWeb.
>>>>>>
>>>>>> This error usually happens when the project main program does not
>>>>>> have
>>>>>> the webmodule unit in it's uses statement.
>>>>>
>>>>> I managed to reproduce the error; The error is only apparent if there
>>>>> are
>>>>> multiple modules registered. I committed a fix in 17647.
>>>>>
>>>>> This raises the question again of the FPWeb behaviour for
>>>>>
>>>>> http://somehost/path
>>>>>
>>>>> Now, 'Path' is interpreted as the name of the action for the default
>>>>> module.
>>>>>
>>>>> For an embedded server, this is not logical. This should be the module
>>>>> name, not the action name.
>>>>>
>>>>> Michael.
>>>>
>>>> I disagree. The vast majority of web applications do not need multiple
>>>> web
>>>> modules (usually the default module is used), but they use multiple
>>>> actions.
>>>> Therefore, action names should have priority over module names if only
>>>> one of
>>>> them is passed.
>>>
>>> Hm. My experience is very different:
>>> I didn't make a web application yet that had a single module.
>>> All had at least 3 or 4... And they're all in production.
>>>
>>> Except some demo applications for FPC, they usually have 1 :-)
>>>
>>> Maybe we should introduce 'TWebHandler.PreferModuleName : Boolean',
>>> which
>>> is
>>> False by default.
>>
>> And you do not specify the actions in the URLs when multiple web modules
>> are in your application? I think actions are always specified when web
>> modules are in the calling URL. But it is not true the other way around.
>
> Well, I never use actions. I always use the OnRequest handler of the module
> itself.
>
> Michael.

Heh, then we use fpweb differently (as I am sure other people prefer 
doing it in many additional ways).  :)
I use one single web module with dozens of actions compared to multiple 
web modules with a single request handler that sorts out things. Much 
simpler and shorter calling URLs needed this way (an important thing 
when encrypting the action name and request Query parameters), and for 
me this way gives a nice organized source code in the web module, as all 
functions are nicely separated into action event handlers.
I am sure there are many perfectly good ways - other that the two of us 
are using - to use fpweb.

In my humble opinion, if someone uses Web Actions (and they are there 
and highly visible in the object inspector - not like web modules -, as 
well as Delphi-converts most probably know about them already) then 
Actions have higher priority than web modules in the calling URLs. 
Logically, - as a design paradigm - a web application has more actions 
than web modules (not that I can really put a definition on why and when 
multiple web modules would be needed...).
However, if someone is not using Web Actions at all, then this is not 
true in the case they use multiple web modules.

But, since your suggestion to add a TWebHandler.PreferModuleName 
(Default is False) - or similar - would not break any current projects, 
it would be an easy addition for the above cases.

I also have a question: Could you please list the function of the 
multiple web modules in your web applications? I never really saw a good 
use for multiple web modules, but they were implemented more than 10 
years ago in Delphi already too, so there must be a reason for that.

AB





More information about the Lazarus mailing list