[Mono-list] Service or daemon with Mono?

Amc Gmail amc1999 at gmail.com
Tue Jul 14 16:24:45 EDT 2009

Hmmm... hard to say, i did remoting part 4+ years ago :) in .net 1.1 era :)
It sees to be I am not doing anything special, but keep in mind i am using mode="SingleCall"

Here is more details:

                <wellknown type="Rmt.RmtBridge, Rmt" objectUri="Rmt" 
                <channel ref="tcp" name="RmtChannel" port="12345">

And all remoting types/methods are in one class:

namespace Rmt {
    public class RmtBridge : MarshalByRefObject {...}

Service has multiple threads and some of them are control threads which i am using to kill real worker threads if they are hang. Control thread code look like:

        public override void ControlThreadLoop() {

            // Configure remoting
            bool isInitOk = InitRemoting();
            if (IsStop()) return;   // exit signaled
            if (!isInitOk) {
                // Fail to init remoting - log exception and continue 
                ..... error EventLog here...

            while (!IsStop()) {
                    .... create worker thread and monitor it health ....

        // Try to configure remoting, return true on success
        private bool InitRemoting() {
            for (int j = 0; !IsStop() && j < INIT_ATTEMPT_COUNT; j++) {
                try {
                        AppDomain.CurrentDomain.FriendlyName + ".config"
                    return true;    // success
                catch(Exception e) {
                    ..... warning EventLog here...

                // sleep before next attempt

            return false;   // not initialized

sorry for that long e-mail, hope it helps (not sure about that, but trying my best :)
-- amc

----- Original Message -----
From: "Danny" <dgortonii at gmail.com>
To: "Amc Gmail" <amc1999 at gmail.com>
Cc: "jos_" <junk at sonhult.se>, mono-list at lists.ximian.com
Sent: Tuesday, July 14, 2009 3:47:17 PM GMT -05:00 US/Canada Eastern
Subject: Re: [Mono-list] Service or daemon with Mono?

I'd like to second that.  I use the same techniques with good results. 
However, *occasionally* I have problems with my remoting listener 
holding open the TCP socket after shutdown (in which I unregister the 
marshalled object(s)).

If you don't mind me asking, do you do anything specific or special to 
clean up your remoting channel?

Amc Gmail wrote:
> We don't have any problems with .NET service running under Mono. 
> It's based on ServiceBase, uses EventLog and .NET Remoting without any problems.
> All you need to do is to create init.d script to start/stop mono-service during startup/shutdown
> -- amc
> ----- Original Message -----
> From: "jos_" <junk at sonhult.se>
> To: mono-list at lists.ximian.com
> Sent: Tuesday, July 14, 2009 8:45:07 AM GMT -05:00 US/Canada Eastern
> Subject: [Mono-list]  Service or daemon with Mono?
> Hello,
> What is the recommended way to write a service-like software in Mono?
> My first guess would be to use the normal class ServiceBase existing in Mono
> (and .NET of course). But there seems to be little information on how this
> works with Mono, and from what I've read it is not considered stable (?).
> 1. Is it better to just create a normal app, turn on automatic login and run
> it at login?
> 2. Is it possible to create a daemon using Mono?
> 3. Is there any documentation on how to "install" the "service" if developed
> in Mono using ServiceBase (or any other method)?
> In short: I'm looking for a way to build the Linux equivalent for a service
> using Mono, and install it on a Linux-dist =)
> Thanks in advance!
> / Jonas

More information about the Mono-list mailing list