使用MONO移植ASP.NET 编写的Window服务到Linux

目的:使用mono ASP.NET 编写的Window 服务移植到Linux 下运行

使用的软件:mono2.0, Linux Red hat

步骤:

1、Window下编写一个Remoting服务端作为Window服务。包括
  RemoteServer.exe(服务运行文件)
RemoteServer.exe.config(配置文件)
将这两个文件放到Linux系统的一个目录下,本例放在/home/RemoteTest/RemoteServer

ContractedBlock.gif ExpandedBlockStart.gif sjhService服务脚本
 1 
 2 #!/bin/bash
 3 #
 4 #  sjhService  :  service for example
 5 #
 6 #  chkconfig: 2345 97 92
 7 #  description: for test.
 8 #  processname: sjhService
 9 #
10 /etc/rc.d/init.d/functions
11 
12 SERVICE_NAME=sjhService
13 SERVICE_PATH=/home/RemoteTest/RemoteServer
14 SERVICE_ASSEMBLY=${SERVICE_PATH}/RemoteServer.exe
15 SERVICE_LCK=/var/run/${SERVICE_NAME}.pid
16 
17 start() {
18     echo -$"Starting $SERVICE_NAME:"
19     daemon mono-service2 -l:$SERVICE_LCK $SERVICE_ASSEMBLY
20     RETVAL=$?
21     echo
22     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SERVICE_NAME    
23     return $RETVAL;
24 }
25 
26 stop () {
27     echo -$"Shutting down Mono Service $SERVICE_NAME:" 
28         test -f $SERVICE_LCK && kill `cat $SERVICE_LCK`
29     
30     RETVAL=$?
31     if [ $RETVAL -eq 0 ]; then        
32         echo "Success stop";
33     else        
34         echo "Error stop";
35     fi;
36 }
37 
38 status() {
39         echo -"Checking for Mono Service $SERVICE_NAME:"
40         test -f $SERVICE_LCK
41     RETVAL=$?    
42     return $RETVAL;
43 }
44 
45 pause() {
46         echo "Pausing Mono Service $SERVICE_NAME:"
47         test -f $SERVICE_LCK && kill -USR1 `cat $SERVICE_LCK`
48         RETVAL=$?    
49     return $RETVAL;
50 }
51 
52 cd $SERVICE_PATH
53 case "$1" in
54     start) 
55         start;
56         RETVAL=$?;
57         ;;
58     stop)
59         stop;
60         RETVAL=$?;
61         ;;
62        pause)
63             pause;
64             RETVAL=$?
65             ;;    
66     condrestart)        
67           stop;
68           start;
69           RETVAL=$?;        
70         ;;
71     restart|reload)
72         stop;
73         start;
74         RETVAL=$?;
75         ;;
76     status)
77         status;
78         RETVAL=$?;
79         ;;
80     *)
81         echo $"$SERVICE_NAME: Usage: < start | stop | pause | restart | reload | status >"
82         ;;
83 esac;
84 
85 exit $RETVAL;
86 

2、 编写Linux服务脚本sjhServer,将脚本放在 /etc/rc.d/init.d目录下

3、 建立符号链接。建立相应运行级别的脚本符号链接,本例中是2345级,使用命令
cd /etc/rc.d/rc2.d    (相应地建立第3级的链接,cdrc3.d目录下)
ln –s /etc/rc.d/init.d/sjhServer S97sjhServer

4、 启动服务。使用命令:
service sjhService start

5、 本例中有一个客户端程序RemoteClient.exe用做侦听。运行RemoteClient.exe,返回运行结果说明服务已经在运行,如果客户端出现目标机器积极拒绝说明服务没有启动

6、停止服务,使用命令:

service sjhService stop

到此ASP.NET的服务移植到Linux就算完成,和其它Linux的系统服务一样,操作方法都一样。

 

存在的几个疑点:

一、3点建立符号链接时,只建立了S的链接,没有建立K的链接。还有启动和停止服务的顺序的定义有什么规则,是否对其它服务有顺序上的依赖。

二、服务的暂停不起作用,Remoting这个服务是否没有这个概念。其它类型服务有待测试。

转载于:https://www.cnblogs.com/sjhrun2001/archive/2009/03/10/1408264.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值