WCF - Self Hosting

Qui, il servizio WCF è ospitato in un'applicazione console. Di seguito è riportato il processo con passaggi adeguati in modo sequenziale che spiega l'intero processo.

Step 1- Per prima cosa, creiamo il contratto di servizio e la sua implementazione. Creare un'applicazione console e denominarla come MyCalculatorService. Questo è un semplice servizio per restituire l'aggiunta di due numeri.

Step 2- Ora, fai clic con il pulsante destro del mouse su Riferimenti in Esplora soluzioni e fai clic su Aggiungi riferimenti. Si apre la seguente finestra; aggiungere il riferimento System.ServiceModel al progetto.

Step 3- Creare un'interfaccia ISimpleCalculator, aggiungere gli attributi ServiceContract e OperationContract alla classe e alla funzione come mostrato di seguito. Saprai di più su questi contratti nella sessione successiva. Questi contratti esporranno il metodo al mondo esterno per l'utilizzo di questo servizio.

Step 4 - Il codice dietro questo file è il seguente -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;

namespace MyCalculatorWCFService {
   [ServiceContract()]
   Public interface ISimpleCalculator {
      [OperationContract()]
      int Add(int num1, int num2);
   }
}

Step 5 - MyCalculatorService è la classe di implementazione per l'interfaccia IMyCalculatorService come mostrato di seguito.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MyCalculatorWCFService {
   Class SimpleCalculator : ISimpleCalculator {
      Public int Add(int num1, int num2) {
         return num1 + num2;
      }
   }
}

Step 6- Ora siamo pronti con il servizio. Andiamo per implementare il processo di hosting. Crea una nuova applicazione console e chiamala "MyCalculatorWCFServiceHost".

Step 7 - Aggiungi il riferimento di system.servicemodel e il progetto MyCalculatorWCFService.

Il codice alla base di questo è il seguente:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyCalculatorWCFService;
using System.ServiceModel;
using System.ServiceModel.Description;

namespace MyCalculatorWCFServiceHost {
   class Program {
      static void Main(string[] args) {
         //Create a URI to serve as the base address
         UrihttpUrl = newUri("http://localhost:8090/MyCalculatorWCFService/SimpleCalculator");
         
         //Create ServiceHost
         ServiceHost host = newServiceHost(typeof(MyCalculatorWCFService.ISimpleCalculator), httpUrl);
         
         //Add a service endpoint
         host.AddServiceEndpoint(typeof(MyCalculatorWCFService.ISimpleCal culator), newWSHttpBinding(), "");
         
         //Enable metadata exchange
         ServiceMetadataBehaviorsmb = newServiceMetadataBehavior();
         smb.HttpGetEnabled = true;
         host.Description.Behaviors.Add(smb);

         //Start the Service
         host.Open();
         Console.WriteLine("Service is host at " + DateTime.Now.ToString());
         Console.WriteLine("Host is running... Press  key to stop");
         Console.ReadLine();
      }
   }
}