2014-07-10 9 views
8

Gibt es eine Möglichkeit, den WCF-Dienst unter Linux zu hosten. Ich las über Wein, aber ich sah kein Beispiel für das Hosting WCF-Service mit ihm.Hosten von WCF-Dienst unter Linux

S.S: Ich habe mono und mod_mono versucht, aber ohne Erfolg.

+1

"ohne Erfolg" ist keine richtige Art, Ihr Problem im Stackoverflow zu beschreiben, bitte erklären Sie die Probleme, die Sie hatten, als Sie mono- und mod_mono ausprobierten. – knocte

+0

Wine kann Ihnen nicht helfen, da die Windows-Version von WCF häufig an IIS angehängt ist, was unmöglich über Wine portiert werden kann. Sehen Sie sich die Antwort von @ Thinkster an und passen Sie Ihre WCF an den einfachsten und unterstützten Modus an, den Mono unterstützen kann. Dann können Sie es unter Linux hosten. Natürlich wird empfohlen, zu ASP.NET Web API zu wechseln, wenn Sie erstklassige Unterstützung wünschen. –

Antwort

13

Sie können es Host in einer Stand-alone-Konsolenanwendung wie folgt:

using System; 
using System.ServiceModel; 
using Service; 

namespace Host 
{ 
    class MainClass 
    { 
     public static void Main (string[] args) 
     { 
      Console.WriteLine ("WCF Host!"); 
      var binding = new BasicHttpBinding(); 
      var address = new Uri ("http://localhost:8080"); 
      var host = new ServiceHost (typeof(GreeterWcfService)); 
      host.AddServiceEndpoint (
       typeof(IGreeterWcfService), binding, address); 
      host.Open(); 

      Console.WriteLine ("Type [CR] to stop..."); 
      Console.ReadLine(); 
      host.Close(); 
     } 
    } 
} 

Wo GreeterWcfService der WCF-Dienst-Klasse selbst ist und IGreeterWcfService sind der Servicevertrag.

Full working example solution in GitHub - mit separaten Projekten für den Service, das Hosting und einen Client. Hör zu.

1

Es ist möglich, aber Sie sollten sich auf diesen Link beziehen, um den aktuellen Status und bekannte Probleme zu verstehen - http://www.mono-project.com/docs/web/wcf/. Es ist jetzt begrenzt. Für z. Wenn Sie WSHttpBinding verwenden möchten, wird dies derzeit nicht unterstützt.