[OGo-MacOSX] How can I have the application running in the background without using the windows server

Marcus Müller macosx@opengroupware.org
Tue, 4 Apr 2006 01:19:17 +0200


--Apple-Mail-13-442916834
Content-Transfer-Encoding: 7bit
Content-Type: text/plain;
	charset=US-ASCII;
	delsp=yes;
	format=flowed


On 03.04.2006, at 19:55, Helge Hess wrote:

> Yup, this is messy. Just define a proper object which is your XML- 
> RPC API and attach that to the application object. Actually it  
> might even be possible to use "RPC2" as a key for that object, like:
>
>   categories = {
>     SoApplication = {
>       slots = {
>         RPC2 = {
>           defaultAccess = allow;
>           protectedBy   = "<public>";
>           valueClass    = ZNeKAPI;

Is this some future extension - or is this already possible? This is  
some very cool idea for providing "aliases" ...

>   classes = {
>     ZNeKAPI = {
>       methods = {
>>         "system.listMethods" = {
>>           protectedBy = "View";
>>           actionClass = "BMSOPEAction";
>>           actionName  = "listSystemMethods";
>>           arguments   = { positionalKeys = ( ); };

Is this correct? You provide some value class which itself doesn't  
implement anything as it's defining methods which get redirected to  
the BMSOPEAction class. Or did you skip (overlook) that part of the  
definition and meant something different?

> Might work, didn't try.
>
>> I see. This really offers quite some flexibility, although I can't  
>> think of a situation where this might be very useful.
>
> Hu? This allows you to properly package your API. Like
>
>   events
>     addEvent
>     deleteEvent
>   tasks
>     addTask
>     deleteTask
>
> Obviously you don't want to put your whole XML-RPC API in just a  
> single object/class.

Sure, of course not. It already works by mapping methods to action  
classes, just as in the example given above.

Packaging everything depending on URLs is cool, but not very  
intuitive to use in other client side implementations. In python's  
xmlrpclib module, you need different server objects for different  
URLs. It's thus not very "handy" to access such an API ... like it or  
not, but XML-RPC works with these crude package-prefixed method names.

But don't get me wrong - I like both ideas, it's just that I -  
personally - wouldn't use the URL approach for XML-RPC, nor would I  
endorse it.


> A bit more obscure is the ability to address individual objects  
> with XML-RPC. But still quite cool IMHO.

What do you mean?

Cheers,

   Marcus

-- 
Marcus Mueller  .  .  .  crack-admin/coder ;-)
Mulle kybernetiK  .  http://www.mulle-kybernetik.com
Current projects: http://www.mulle-kybernetik.com/znek/



--Apple-Mail-13-442916834
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=ISO-8859-1

<HTML><BODY style=3D"word-wrap: break-word; -khtml-nbsp-mode: space; =
-khtml-line-break: after-white-space; "><BR><DIV><DIV>On 03.04.2006, at =
19:55, Helge Hess wrote:</DIV><BR =
class=3D"Apple-interchange-newline"><BLOCKQUOTE type=3D"cite"><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; ">Yup, this is messy. Just define a proper object =
which is your XML-RPC API and attach that to the application object. =
Actually it might even be possible to use "RPC2" as a key for that =
object, like:</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =
</SPAN>categories =3D {</DIV><DIV style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 </SPAN>SoApplication =3D =
{</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: =
0px; margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =A0 =A0=
 </SPAN>slots =3D {</DIV><DIV style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 =A0 =A0 </SPAN>RPC2 =3D =
{</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: =
0px; margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =A0 =A0=
 =A0 =A0 </SPAN>defaultAccess =3D allow;</DIV><DIV style=3D"margin-top: =
0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 =A0 =A0 =A0 </SPAN>protectedBy =
<SPAN class=3D"Apple-converted-space">=A0 </SPAN>=3D =
"&lt;public&gt;";</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 =A0 =A0 =A0 =
</SPAN>valueClass<SPAN class=3D"Apple-converted-space">=A0 =A0 </SPAN>=3D =
ZNeKAPI;</DIV></BLOCKQUOTE><DIV><BR =
class=3D"khtml-block-placeholder"></DIV>Is this some future extension - =
or is this already possible? This is some very cool idea for providing =
"aliases" ...</DIV><DIV><BR><BLOCKQUOTE type=3D"cite"><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0=A0</SPAN>cla=
sses =3D {</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 </SPAN>ZNeKAPI =3D {</DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =A0 =A0 =
</SPAN>methods =3D {</DIV> <BLOCKQUOTE type=3D"cite"><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =A0 =A0 =A0 =
</SPAN>"system.listMethods" =3D {</DIV><DIV style=3D"margin-top: 0px; =
margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 =A0 =A0 =A0 </SPAN>protectedBy =3D=
 "View";</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 =A0 =A0 =A0 </SPAN>actionClass =3D=
 "BMSOPEAction";</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 =A0 =A0 =A0 =
</SPAN>actionName<SPAN class=3D"Apple-converted-space">=A0 </SPAN>=3D =
"listSystemMethods";</DIV><DIV style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 =A0 =A0 =A0 </SPAN>arguments =
<SPAN class=3D"Apple-converted-space">=A0 </SPAN>=3D { positionalKeys =3D =
( ); };</DIV></BLOCKQUOTE></BLOCKQUOTE><DIV><BR =
class=3D"khtml-block-placeholder"></DIV>Is this correct? You provide =
some value class which itself doesn't implement anything as it's =
defining methods which get redirected to the BMSOPEAction class. Or did =
you skip (overlook) that part of the definition and meant something =
different?</DIV><DIV><BR><BLOCKQUOTE type=3D"cite"><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; ">Might work, didn't try.</DIV><DIV style=3D"margin-top:=
 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; =
min-height: 14px; "><BR></DIV> <BLOCKQUOTE type=3D"cite"><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; ">I see. This really offers quite some flexibility, =
although I can't think of a situation where this might be very =
useful.</DIV> </BLOCKQUOTE><DIV style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; =
"><BR></DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; ">Hu? This allows you to properly =
package your API. Like</DIV><DIV style=3D"margin-top: 0px; margin-right: =
0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; =
"><BR></DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 </SPAN>events</DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =A0 =
</SPAN>addEvent</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 </SPAN>deleteEvent</DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =
</SPAN>tasks</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; "><SPAN =
class=3D"Apple-converted-space">=A0 =A0 </SPAN>addTask</DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; "><SPAN class=3D"Apple-converted-space">=A0 =A0 =
</SPAN>deleteTask</DIV><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV =
style=3D"margin-top: 0px; margin-right: 0px; margin-bottom: 0px; =
margin-left: 0px; ">Obviously you don't want to put your whole XML-RPC =
API in just a single object/class.</DIV></BLOCKQUOTE><DIV><BR =
class=3D"khtml-block-placeholder"></DIV>Sure, of course not. It already =
works by mapping methods to action classes, just as in the example given =
above.</DIV><DIV><BR =
class=3D"khtml-block-placeholder"></DIV><DIV>Packaging everything =
depending on URLs is cool, but not very intuitive to use in other client =
side implementations. In python's xmlrpclib module, you need different =
server objects for different URLs. It's thus not very "handy" to access =
such an API ... like it or not, but XML-RPC works with these crude =
package-prefixed method names.</DIV><DIV><BR =
class=3D"khtml-block-placeholder"></DIV><DIV>But don't get me wrong - I =
like both ideas, it's just that I - personally - wouldn't use the URL =
approach for XML-RPC, nor would I endorse it.</DIV><DIV><BR =
class=3D"khtml-block-placeholder"></DIV><DIV><BR =
class=3D"khtml-block-placeholder"></DIV><DIV><BLOCKQUOTE =
type=3D"cite"><DIV style=3D"margin-top: 0px; margin-right: 0px; =
margin-bottom: 0px; margin-left: 0px; ">A bit more obscure is the =
ability to address individual objects with XML-RPC. But still quite cool =
IMHO.</DIV></BLOCKQUOTE><DIV><BR =
class=3D"khtml-block-placeholder"></DIV>What do you mean?</DIV><BR><DIV> =
<SPAN class=3D"Apple-style-span" style=3D"border-collapse: separate; =
border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant: normal; font-weight: =
normal; letter-spacing: normal; line-height: normal; text-align: auto; =
-khtml-text-decorations-in-effect: none; text-indent: 0px; =
-apple-text-size-adjust: auto; text-transform: none; orphans: 2; =
white-space: normal; widows: 2; word-spacing: 0px; "><SPAN =
class=3D"Apple-style-span" style=3D"border-collapse: separate; =
border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; =
font-size: 12px; font-style: normal; font-variant: normal; font-weight: =
normal; letter-spacing: normal; line-height: normal; text-align: auto; =
-khtml-text-decorations-in-effect: none; text-indent: 0px; =
-apple-text-size-adjust: auto; text-transform: none; orphans: 2; =
white-space: normal; widows: 2; word-spacing: 0px; "><P style=3D"margin: =
0.0px 0.0px 0.0px 0.0px"><FONT face=3D"Helvetica" size=3D"3" =
style=3D"font: 12.0px Helvetica">Cheers,</FONT></P><P style=3D"margin: =
0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: =
14.0px"><BR></P><P style=3D"margin: 0.0px 0.0px 0.0px 0.0px"><FONT =
face=3D"Helvetica" size=3D"3" style=3D"font: 12.0px Helvetica"><SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>Marcus</FONT></P><P =
style=3D"margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; =
min-height: 14.0px"><BR></P><P style=3D"margin: 0.0px 0.0px 0.0px =
0.0px"><FONT face=3D"Helvetica" size=3D"3" style=3D"font: 12.0px =
Helvetica">--<SPAN class=3D"Apple-converted-space">=A0</SPAN></FONT></P><P=
 style=3D"margin: 0.0px 0.0px 0.0px 0.0px"><FONT face=3D"Helvetica" =
size=3D"3" style=3D"font: 12.0px Helvetica">Marcus Mueller<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>.<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>.<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>.<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>crack-admin/coder =
;-)</FONT></P><P style=3D"margin: 0.0px 0.0px 0.0px 0.0px"><FONT =
face=3D"Helvetica" size=3D"3" style=3D"font: 12.0px Helvetica">Mulle =
kybernetiK<SPAN class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN>.<SPAN =
class=3D"Apple-converted-space">=A0<SPAN =
class=3D"Apple-converted-space">=A0</SPAN></SPAN><A =
href=3D"http://www.mulle-kybernetik.com">http://www.mulle-kybernetik.com</=
A></FONT></P><P style=3D"margin: 0.0px 0.0px 0.0px 0.0px"><FONT =
face=3D"Helvetica" size=3D"3" style=3D"font: 12.0px Helvetica">Current =
projects:=A0<A =
href=3D"http://www.mulle-kybernetik.com/znek/">http://www.mulle-kybernetik=
.com/znek/</A></FONT></P><BR =
class=3D"Apple-interchange-newline"></SPAN></SPAN> =
</DIV><BR></BODY></HTML>=

--Apple-Mail-13-442916834--