Single PerlResponseHander for Web Application

--bcaec52154fdddf1db04a85f28dd
Content-Type: text/plain; charset=ISO-8859-1

Hi,

I am new to mod_perl and would like to get some suggestion on my current
application design.

Following is the design:

Single PerlResponseHandler for my application, all requests will be
submitted to this handler, the handler will then dispatch the request to
appropriate sub-handlers based on the URI path.
Note: My path and handler mapping will be stored in a configuration file.

My configuration will look as follows -

<Location /app>
SetHandler modperl
PerlResponseHandler MyPackage::MyHandler
PerlAuthenHandler MyPackage::MyAuthHandler
</Location>


Psudocode in MyPackage::MyHandler:

------------------------------------

sub handler {
.....
.....

//Get the handler based on path
$sub_handler = getHandler($uripath) //e.g. /app/users
$sub_handler->handle($r, $session);
}

Please let me know of your views. I am not planning to use Catalyst or
existing frameworks as of now. I also thought of using Apache2::Dispatch,
but i believe it requires that each path has its own handler configured in
httpd.conf file (please correct me if I am wrong)

Thanks,
Jerry

--bcaec52154fdddf1db04a85f28dd
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi,<br><br>I am new to mod_perl and=A0 would like to get some suggestion on=
my current application design. <br><br>Following is the design:<br><br>Sin=
gle PerlResponseHandler for my application, all requests will be submitted =
to this handler, the handler will then dispatch the request to appropriate =
sub-handlers based on the URI path. <br>
Note: My path and handler mapping will be stored in a configuration file. <=
br>
<br>My configuration will look as follows - <br><br><Location /app><b=
r>=A0=A0=A0 SetHandler modperl<br>=A0=A0=A0 PerlResponseHandler MyPackage::=
MyHandler<br>=A0=A0=A0 PerlAuthenHandler MyPackage::MyAuthHandler<br></L=
ocation><br>
<br><br>Psudocode in MyPackage::MyHandler:<br><br>-------------------------=
-----------<br><br>sub handler {<br>=A0=A0=A0 .....<br>=A0=A0=A0 .....<br><=
br>=A0=A0=A0 //Get the handler based on path <br>=A0=A0=A0 $sub_handler =3D=
getHandler($uripath) //e.g. /app/users<br>
=A0=A0=A0 $sub_handler->handle($r, $session);<br>}<br><br>Please let me =
know of your views. I am not planning to use Catalyst or existing framework=
s as of now. I also thought of using Apache2::Dispatch, but i believe it re=
quires that each path has its own handler configured in httpd.conf file (pl=
ease correct me if I am wrong)<br>
<br>Thanks,<br>Jerry<br>

--bcaec52154fdddf1db04a85f28dd--
Jerry Pereira [ Di, 19 Juli 2011 00:02 ] [ ID #2062178 ]

Re: Single PerlResponseHander for Web Application

On Mon, Jul 18, 2011 at 6:02 PM, Jerry Pereira <online.jerry [at] gmail.com> wrote:
> Single PerlResponseHandler for my application, all requests will be
> submitted to this handler, the handler will then dispatch the request to
> appropriate sub-handlers based on the URI path.

Sounds like Apache2::Dispatch to me.

> I also thought of using Apache2::Dispatch,
> but i believe it requires that each path has its own handler configured in
> httpd.conf file (please correct me if I am wrong)

You're confused about this one. Eliminating the need to add each
class to httpd.conf is the main reason that Dispatch exists.

- Perrin
Perrin Harkins [ Di, 19 Juli 2011 00:27 ] [ ID #2062226 ]

Re: Single PerlResponseHander for Web Application

On 18 Jul 2011, at 23:02, Jerry Pereira wrote:

> Please let me know of your views. I am not planning to use Catalyst or =
existing frameworks as of now.

Any reason? There are lightweight ones that play well with modern =
approaches
to plugins and multi-server environments.=
Dave Hodgkinson [ Di, 19 Juli 2011 11:55 ] [ ID #2062227 ]

Re: Single PerlResponseHander for Web Application

--bcaec5215ab74c7d2704a86efc2f
Content-Type: text/plain; charset=ISO-8859-1

I agree, but isn't the Handler tightly coupled to the URI? rather if i can
configure the mapping of URI and sub-handlers in a different configuration
file or database, it will be easier to handle URI changes.


On Mon, Jul 18, 2011 at 3:27 PM, Perrin Harkins <perrin [at] elem.com> wrote:

> On Mon, Jul 18, 2011 at 6:02 PM, Jerry Pereira <online.jerry [at] gmail.com>
> wrote:
> > Single PerlResponseHandler for my application, all requests will be
> > submitted to this handler, the handler will then dispatch the request to
> > appropriate sub-handlers based on the URI path.
>
> Sounds like Apache2::Dispatch to me.
>
> > I also thought of using Apache2::Dispatch,
> > but i believe it requires that each path has its own handler configured
> in
> > httpd.conf file (please correct me if I am wrong)
>
> You're confused about this one. Eliminating the need to add each
> class to httpd.conf is the main reason that Dispatch exists.
>
> - Perrin
>



--
Your clothes may be the latest in style but you aint completely dressed
until you wear a smile!
Keep smiling : )

--bcaec5215ab74c7d2704a86efc2f
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

I agree, but isn't the Handler tightly coupled to the URI? rather if i =
can configure the mapping of URI and sub-handlers in a different configurat=
ion file or database, it will be easier to handle URI changes.<br><br><br>
<div class=3D"gmail_quote">On Mon, Jul 18, 2011 at 3:27 PM, Perrin Harkins =
<span dir=3D"ltr"><<a href=3D"mailto:perrin [at] elem.com">perrin [at] elem.com</a=
>></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 =
0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class=3D"im">On Mon, Jul 18, 2011 at 6:02 PM, Jerry Pereira <<a hre=
f=3D"mailto:online.jerry [at] gmail.com">online.jerry [at] gmail.com</a>> wrote:<b=
r>
> Single PerlResponseHandler for my application, all requests will be<br=
>
> submitted to this handler, the handler will then dispatch the request =
to<br>
> appropriate sub-handlers based on the URI path.<br>
<br>
</div>Sounds like Apache2::Dispatch to me.<br>
<div class=3D"im"><br>
> I also thought of using Apache2::Dispatch,<br>
> but i believe it requires that each path has its own handler configure=
d in<br>
> httpd.conf file (please correct me if I am wrong)<br>
<br>
</div>You're confused about this one. =A0Eliminating the need to add ea=
ch<br>
class to httpd.conf is the main reason that Dispatch exists.<br>
<font color=3D"#888888"><br>
- Perrin<br>
</font></blockquote></div><br><br clear=3D"all"><br>-- <br>Your clothes may=
be the latest in style but you aint completely dressed until you wear a sm=
ile!<br>Keep smiling : )<br>

--bcaec5215ab74c7d2704a86efc2f--
Jerry Pereira [ Di, 19 Juli 2011 18:55 ] [ ID #2062228 ]

Re: Single PerlResponseHander for Web Application

On Tue, Jul 19, 2011 at 12:55 PM, Jerry Pereira <online.jerry [at] gmail.com> wrote:
> I agree, but isn't the Handler tightly coupled to the URI?

Yes.

> rather if i can
> configure the mapping of URI and sub-handlers in a different configuration
> file or database, it will be easier to handle URI changes.

I don't see any advantage to doing it in a different config file or
database over just putting it in httpd.conf. Are you thinking you
would avoid restarts? You'd probably want to restart anyway when you
deploy new code.

- Perrin
Perrin Harkins [ Di, 19 Juli 2011 19:46 ] [ ID #2062229 ]

Re: Single PerlResponseHander for Web Application

On Tue, Jul 19, 2011 at 2:02 PM, Jerry Pereira <online.jerry [at] gmail.com> wrote:
> Thats right, i was thinking of avoiding restarts and having single place for
> mapping URIs to classes.

You can get that to some degree if you use Apache2::Reload and avoid
doing anything too strange in your code. The thing is, your best
defense against memory bloat is copy-on-write, and that will get
crushed if you do a lot of reloading code without a restart. Maybe
not an issue for you, depending on how big your site is.

- Perrin
Perrin Harkins [ Di, 19 Juli 2011 21:21 ] [ ID #2062230 ]
Webserver » gmane.comp.apache.mod-perl » Single PerlResponseHander for Web Application

Vorheriges Thema: cleanup handler - is it "free" time?
Nächstes Thema: Apache2::SizeLimit and x64_86