Topshelf 學習 跨平台

2021-09-07 05:26:15 字數 4052 閱讀 8961

topshelf是乙個開源的跨平台的宿主服務框架,支援windows和mono,只需要幾行**就可以構建乙個很方便使用的服務宿主。

官網: 

github:

下面就開始來學習。

1.新建乙個控制台程式

2.新增引用

我們直接搜尋 topshelf log4net

或者nuget控制台:install-package topshelf.log4net

正常情況下 直接安裝topshelf 乙個就可以了。log4net只是為了更好的方便記錄日誌。

3.建立服務

先建立乙個類,繼承 servicecontrol 然後實現。

public

class

sampleservice : servicecontrol

;_timer.elapsed += (sender, eventargs) =>_log.info(datetime.now);

}public

bool

start(hostcontrol hostcontrol)

public

bool

stop(hostcontrol hostcontrol)

}

logwriter 需要using topshelf.logging;

4.呼叫

然後再main中呼叫

static

void main(string

args));}

這樣乙個簡單的服務就完成了。

log4net.config 如下:

xml version="1.0" encoding="utf-8" 

?>

<

log4net

>

<

name

="rollingfile"

type

>

<

file

value

="service.log"

/>

<

value

="true"

/>

<

lockingmodel

type

/>

<

layout

type

="log4net.layout.patternlayout"

>

<

conversionpattern

value

="%-5p %d %message%newline"

/>

layout

>

>

<

name

type

>

<

>

<

level

value

="error"

/>

<

forecolor

value

="red, highintensity"

/>

>

<

>

<

level

value

="info"

/>

<

forecolor

value

="white"

/>

>

<

>

<

level

value

="debug"

/>

<

forecolor

value

="cyan"

/>

>

<

layout

type

="log4net.layout.patternlayout"

>

<

conversionpattern

value

="%message%newline"

/>

layout

>

>

<

root

>

<

level

value

="debug"

/>

<

ref="rollingfile"

/>

<

ref/>

root

>

log4net

>

服務編寫好以後,我們可以直接安裝,安裝的命令也很簡單,直接 topshelfsample.exe install

已經成功安裝。

啟動:topshelfsample.exe start

停止:topshelfsample.exe stop

解除安裝:topshelfsample.exe uninstall

更多命令可以topshelfsample.exe help

topshelf是乙個開源的跨平台的宿主服務框架,不過本身只支援mono 命令列執行,不能使用topshelf的命令列start,stop控**務。

log4net.config

xml version="1.0" encoding="utf-8" 

?>

<

log4net

>

<

name

="rollingfile"

type

>

<

file

value

="service.log"

/>

<

value

="true"

/>

<

lockingmodel

type

/>

<

layout

type

="log4net.layout.patternlayout"

>

<

conversionpattern

value

="%-5p %d %message%newline"

/>

layout

>

>

<

root

>

<

level

value

="debug"

/>

<

ref="rollingfile"

/>

root

>

log4net

>

下面我們就來看看一下執行在linux下。

首先大家要安裝好 mono

可以參考:

測試系統版本:centos 6.4  mono 3.10.0

將程式上傳到linux 系統執行。 

檢視日誌,成功執行

跨平台開發學習筆記

以前我的開發僅僅是侷限在msvc中,當時就隱約有一種想法,想跳出這個框框,因為我感覺msvc把我限制的太死,以至於我沒了msvc,就不會怎麼程式設計了。由於在公司做平台開發專案以及自己對這種突破的渴望,在這跨平台開發方面的知識補充了不少,也認識了不少。知道msvc只是乙個整合開發環境,它用的編譯器是...

跨平台相關

二者區別 strdup是posix,strdup是windows特定。在unix上,使用的strdup。在不同作業系統的lib庫名字不同的,為了讓程式可以多平台,需要在巨集定義中判斷當前執行作業系統和編譯器的型別,動態調整。windows win32 win32 linux linux linux ...

跨平台工具

作圖 做好圖 inkspace 向量圖 inpaint 提供類似 photoshop 的基礎功能,簡單易用 imagemagick pdf 處理 1.small pdf 2.i love pdf 編輯器1.sublime text 2.typora markdown 3.texmaker latex...