WebService without IIS but WCF

Webservice with WCF as Standalone

Mittwoch 21 Juli 2010 at 8:54 pm. Stichwörter: , ,

Letztens wollt ich mal wieder ein wenig WebService mit C# testen. Naja, eigentlich einen WebService mit Silverlight nutzen.

Jedenfalls war klar, der Webservice soll nicht auf dem IIS laufen.
Mit WCF soll sowas recht einfach herzustellen sein.
Und es ist so einfach.

Hier noch schnell Webseiten die ich in Anspruch nahm:

Die Verwendung des WebService in einem Client lasse ich hier mal weg.

Der WebService soll als normale Console Application gestartet werden können bzw. direkt aus der IDE heraus. Er läuft also nicht auf dem IIS und auch nicht als Windows Service.

IHelloService.cs

Das ist das Interface des WebService. Wie leicht zu sehen, übernommen von gängigen Beispielen ;)

 

using System.ServiceModel;

namespace ClassLibrary1.Service
{
    [ServiceContract]
    public interface IHelloService
    {
        [OperationContract]
        string Hello();

        [OperationContract]
        double CalcAdd(double a, double b);
    }
}

 

HelloService.cs

Und hier die Web Service Implementierung.

  

namespace ClassLibrary1.Service
{
    public class HelloService : IHelloService
    {
        public string Hello()
        {
            return "Servus";
        }

        public double CalcAdd(double a, double b)
        {
            return a + b;
        }
    }
}

ServiceCreator.cs

In diesem Fall ist der Web Service in einer Library DLL ausgelagert.
Ich hatte dazu noch eine kleine GUI App erstellt zum Starten/Stoppen usw.
Jedenfalls lässt sich mit diesem Code eine Service per WCF erstellen/starten und stoppen. 

using ClassLibrary1.Service;
using System.ServiceModel;
using System;
using System.ServiceModel.Description;

namespace ClassLibrary1
{
    /// <summary>
    ///
    /// Allow access Port to access this Service
    /// http://blogs.msdn.com/paulwh/archive/2007/05/04/addressaccessdeniedexception-http-could-not-register-url-http-8080.aspx
    ///
    /// Access WSDL of this application.
    /// http://localhost:9090/HelloService/?WSDL
    /// </summary>
    public class ServiceCreator
    {
        private ServiceHost host = null;

        private Uri baseAddress = new Uri(@"http://localhost:9090/HelloService/");

        public ServiceCreator()
        {
            Init();
            Start();
        }

        private void Init()
        {
            host = new ServiceHost(typeof(HelloService), baseAddress);

            // Enable Mex
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            host.Description.Behaviors.Add(smb);

        }

        public void Start()
        {
            if (host == null)
            {
                Init();
            }
            host.Open();
        }

        public void Stop()
        {
            if (host != null)
            {
                host.Close();
                host = null;
            }
        }
    }
}

 

 

Kein Kommentar



Emoticons
To prevent automated commentspam we require you to answer this silly question

Auf dieser Seite werden die Kommentare moderiert.
Das bedeutet, dass die Kommentare erst dann veröffentlicht werden, wenn sie freigeschaltet wurden.

Persönliche Informationen speichern?
Benachrichtigen
E-Mail Adresse nicht anzeigen
Hinweis: Alle HTML-Tags außer <b> und <i> werden aus Deinem Kommentar entfernt. URLs oder Mailadressen werden automatisch umgewandelt.