日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nancy之基于Self Hosting的补充小Demo

發布時間:2025/3/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nancy之基于Self Hosting的补充小Demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
原文:Nancy之基于Self Hosting的補充小Demo

前面把Hosting Nancy with ASP.NET、Self Hosting Nancy和Hosting Nancy with OWIN

以demo的形式簡單描述了一下。

這篇是為Self Hosting Nancy、和Owin 下面的Self Hosting作個補充。

首先是Self Hosting Nancy的補充:

這里主要是介紹一下Topshelf

官網:http://topshelf-project.com/

GitHub地址:https://github.com/Topshelf/Topshelf

Topshelf是一個開源的跨平臺的宿主服務框架,支持Windows和Mono,待會我們就把Demo放Linux去試試。

有一千多顆心!不過這個貌似是老外用的比較多一點,中文的資料挺少的。

順便看看它的 readme.md

"Topshelf is a framework for hosting services written using the .NET framework. The creation of services is simplified,

allowing developers to create a simple console application that can be installed as a service using Topshelf. The reason

for this is simple: It is far easier to debug a console application than a service. And once the application is tested and

ready for production, Topshelf makes it easy to install the application as a service."

簡單的概括就是:簡單、一個控制臺應用程序就可以當作是服務來用。

?

廢話不多說,直接看看它是如何搭配Nancy來用的

一、新建一個控制臺應用程序

通過NuGet添加TopShelf的引用

目前它的最新版本是3.3.1。

當然也少不了添加Nancy和Nancy.Hosting.Self的引用

到這里,基本工作已經完成了。

二、打開Program.cs,開始Coding

1 class Program 2 { 3 static void Main(string[] args) 4 { 5 HostFactory.Run(x => 6 { 7 x.Service<NancySelfHost>(s => 8 { 9 s.ConstructUsing(name => new NancySelfHost()); 10 s.WhenStarted(tc => tc.Start()); 11 s.WhenStopped(tc => tc.Stop()); 12 }); 13 x.RunAsLocalSystem(); 14 x.SetDescription("Sample Topshelf Host"); 15 x.SetDisplayName("Catcher Wong"); 16 x.SetServiceName("Nancy的Host"); 17 }); 18 } 19 }

x.Service<NancySelfHost>是告訴TopShelf,服務類型是NancySelfHost

s.ConstructUsing(name => new NancySelfHost()) 是告訴Topshelf如何創建這類服務,最直接的就是實例化,當然也可以用IoC來依賴注入

s.WhenStarted和WhenStopped應該比較明顯了,開始和停止

x.RunAsLocalSystem()表明用本地系統賬號來運行

這里還有其他的RunAsxxx列出給大家參考

名稱 說明
RunAsPrompt當安裝了服務時,安裝程序將提示輸入用戶名/密碼組合用于啟動該服務。
RunAsLocalService使用本地服務帳戶運行
RunAsNetworkService使用 NETWORK_SERVICE 內置帳戶運行

看了大致的解析,知道還需要自己定義一個服務類型NancySelfHost

1 public class NancySelfHost 2 { 3 private NancyHost _nancyHost; 4 5 public void Start() 6 { 7 const string uriStr = "http://localhost:8888/topshelf-nancy/"; 8 _nancyHost = new NancyHost(new Uri(uriStr)); 9 _nancyHost.Start(); 10 try 11 { 12 System.Diagnostics.Process.Start(uriStr); 13 } 14 catch (Exception) 15 { 16 } 17 18 Console.WriteLine("監聽ing - " + uriStr); 19 } 20 21 public void Stop() 22 { 23 _nancyHost.Stop(); 24 Console.WriteLine("下次再見!"); 25 } 26 }

里面的內容應該都比較熟悉了,就包含了開始和停止的方法,不再一一解釋了。

三、編寫我們的Modules

老規矩:Modules文件夾、HomeModule.cs

1 public class HomeModule:NancyModule 2 { 3 public HomeModule() 4 { 5 Get["/"] = _ => "TopShelf by Catcher Wong"; 6 } 7 }

四、運行調試一番,看看效果如何

這里需要強調一點:需要用管理員的身份才能正常運行,否則會出現如下錯誤

前面的Nancy之基于Nancy.Hosting.Self也是如此,但是忘記說明,在此深表歉意!!

下面是運行效果:

正是我們所期待的。

然后再看看命令行窗口,會發現這些提示和我們在Program.cs設置的是相關的。設置的語句就是

x.SetXXXX()

五、還是老規矩,放linux下試試

將bin目錄下的文件上傳到 /var/www/topshelf/

然后執行 mono TopShelfDemo.exe 即可

下面看看效果:

貌似提示相比windows多了一些東西,不過不影響我們的正常運行。

不知道各位是否發現這跟前面講的Nancy之基于Nancy.Hosting.Self的小Demo十分相似!!!

就連后面要講的基于Owin的Self Hosting也很相似,都是僅多了相應的操作方法!

好了,Topshelf就講到這里了,不再進一步深入探討了,如果您有更好的建議可以私聊我。O(∩_∩)O

?

下面簡單講講基于Owin的Self Hosting

前面也提到了,"Self Hosting" 這一類都是大同小異,十分相似。

下面就直接進入正題

一、創建控制臺應用程序

二、添加相關的引用

直接通過Package Manager Console來添加

  Install-Package Nancy.Owin?

  Install-Package Microsoft.Owin.Hosting

  Install-Package Microsoft.Owin.Host.HttpListener

三、新建一個OWIN Startup class

我們在添加的Startup.cs中的Configuration中添加一下app.UseNancy(),將Nancy交由Owin去處理!

1 public class Startup 2 { 3 public void Configuration(IAppBuilder app) 4 { 5 app.UseNancy(); 6 } 7 }

四、打開Program.cs,編寫代碼

記得要添加Microsoft.Owin.Hosting的引用

1 class Program 2 { 3 static void Main(string[] args) 4 { 5 var url = "http://localhost:9000/"; 6 using (WebApp.Start<Startup>(url)) 7 { 8 Console.WriteLine("{0} 正在運行",url); 9 System.Diagnostics.Process.Start(url); 10 Console.Read(); 11 } 12 } 13 }

?WebApp是Microsoft.Owin.Hosting下面的一個類,WebApp.Start<Startup>(url)可理解為根據我們指定的url去啟動網站(從名字也能知道個大概)。

具體的可以參考msdn的介紹:

https://msdn.microsoft.com/en-us/library/microsoft.owin.hosting.webapp(v=vs.111).aspx

五、編寫Modules

老規矩,Modules文件夾,HomeModule.cs

1 public class HomeModule : NancyModule 2 { 3 public HomeModule() 4 { 5 Get["/"] = _ => "Owin Self Hosting Demo"; 6 } 7 }

我們這里也只是輸出一下文字!

六、運行試試

正是我們所期待的結果!是不是很簡單呢!O(∩_∩)O

?

好了,關于Nancy Hosting的Demo暫時告一段落了,謝謝各位的支持!

后面會繼續深入學習Nancy,分享學習過程中的一些細節和心得體會。O(∩_∩)O

?

總結

以上是生活随笔為你收集整理的Nancy之基于Self Hosting的补充小Demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。