2017-10-18 134 views
0

總之,我正在尋找最好的方法來在.Net框架應用程序(例如Windows窗體)中提供REST或SOAP API服務器 - 在某些情況下沒有管理權限C#中的HttpListener和Griffin.WebServer的替代品

當前在可能的便攜式csharp應用程序中提供基於Web的REST或SOAP API的最佳方式是什麼? 基本上我需要一些支持基本http標準的開箱即用(例如期望:100-繼續和其他),同時能夠instanciate我的csharp程序的類直接(perfomrance和易用性的原因)。

微軟的方式是使用IIS和可能的ASP或去httplistener。 IIS永遠不能以便攜方式運行,並且需要大量基於安裝過程/系統管理的工作。另一方面,httlistener甚至不是一個web服務器,我需要自己實現所有的標準web服務器命令。

我四處尋找這個話題,因爲多年以來,一個例子是這個問題[老問題] Alternative to HttpListener?

不幸的是這一個鏈接到一個停產項目。

任何想法?

[編輯]這個問題不僅針對C#,還針對.NET Framework 2-4.5。結果應該可用於例如Windows窗體,Windows服務和命令行應用程序。

目前我正在使用基於HTTPListener的骨架Web服務器,因此我需要實現所有請求的解析,對答案進行格式化並對我自己的特殊http命令作出反應(這似乎是一個永無止境的任務): https://www.codeproject.com/Articles/17071/Sample-HTTP-Server-Skeleton-in-C

+1

這是一個購物問題,使用谷歌來找到點擊。 「.net嵌入式Web服務器」顯示Nancy,NHttp,Kayak,EmbedIO。 Node.js是大狗,所以你也想谷歌「node.js .net集成」。 Out pops edge.js –

+0

請確保您在賞金結束前將其寫爲答案;-) – Harry

+1

REST和SOAP是完全不同的野獸。 REST是......幾乎沒有,所以HttpListener應該足夠了。全面的SOAP(和WSDL)非常複雜和老式。所以這兩個要求在某種程度上是矛盾的。 HttpListener不需要管理員權限,只要你做了暴露你的機器的事情。例如,你想打開你的服務器到外面,還是隻是本地主機(https://stackoverflow.com/questions/223063/how-can-i-create-an-httplistener-class-on-a -random-port-in-c /)?如果你想要比本地主機多,你仍然需要打開防火牆 –

回答

1

你應該可以使用.NET Core做你想做的事。您可以非常容易地使用獨立於IIS的獨立API來構建自託管API。教程應該很容易找到,here是微軟的一個例子。

+0

謝謝!我查閱了.NET Core,但我不確定它是否可以與.NET框架結合。我需要一個很好的.net框架的解決方案。 – Harry

1

由於ilikesleeping建議您使用DOTNET核心,但也有在做它作爲服務工作的併發症。

我建議您使用Microsoft OWIN框架。這是建立平靜應用程序的簡單而直接的方式。它可以像控制檯或服務一樣正常工作,當然在Console mkode中,您可以根據需要顯示一個表單。

以下是一些獲得kickstarted的鏈接: https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api | https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/getting-started-with-owin-and-katana | https://blog.decayingcode.com/post/Creating-a-Self-Hosted-OWIN-Application/ | https://weblogs.asp.net/fredriknormen/creating-a-simple-rest-like-service-with-owin-open-web-server-interface

編輯: ...這裏有一個關於如何有超過OWIN承載SOAP端點的中間件的話題:Any way to get OWIN to host a SOAP service?

0

我這個問題的作者。只是想讓未來的讀者明白我在這裏學到了什麼:

這個問題最有趣的是它是一個「購物」的問題。被接受的答案不能基於事實,而只能基於主觀感受。大多數建議的方法都碰到了描述的用例。

這就是爲什麼有些用戶不想寫答案,而是將他們的建議放在評論中的原因。奇怪,但這是如何工作。我們只是喜歡科學正確的答案!

順便說一下,這是我的第一個「賞金」問題。自從大約3周以來,我一直是SO用戶。 (被動多年,像大多數人一樣)