Windows服务承载WCF

时间:2014-07-09 19:06:07   收藏:0   阅读:214

Source文件

-------------------------

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 
  6 using System.ComponentModel;
  7 using System.ServiceModel;
  8 using System.ServiceProcess;
  9 using System.Configuration;
 10 using System.Configuration.Install;
 11 
 12 namespace Microsoft.ServiceModel.Samples
 13 {
 14     // Define a service contract.
 15     [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
 16     public interface ICalculator
 17     {
 18         [OperationContract]
 19         double Add(double n1, double n2);
 20         [OperationContract]
 21         double Subtract(double n1, double n2);
 22         [OperationContract]
 23         double Multiply(double n1, double n2);
 24         [OperationContract]
 25         double Divide(double n1, double n2);
 26     }
 27 
 28     // Implement the ICalculator service contract in a service class.
 29     public class CalculatorService : ICalculator
 30     {
 31         // Implement the ICalculator methods.
 32         public double Add(double n1, double n2)
 33         {
 34             double result = n1 + n2;
 35             return result;
 36         }
 37 
 38         public double Subtract(double n1, double n2)
 39         {
 40             double result = n1 - n2;
 41             return result;
 42         }
 43 
 44         public double Multiply(double n1, double n2)
 45         {
 46             double result = n1 * n2;
 47             return result;
 48         }
 49 
 50         public double Divide(double n1, double n2)
 51         {
 52             double result = n1 / n2;
 53             return result;
 54         }
 55     }
 56 
 57     public class CalculatorWindowsService : ServiceBase
 58     {
 59         public ServiceHost serviceHost = null;
 60         public CalculatorWindowsService()
 61         {
 62             // Name the Windows Service
 63             ServiceName = "WCFWindowsServiceSample";
 64         }
 65 
 66         public static void Main()
 67         {
 68             ServiceBase.Run(new CalculatorWindowsService());
 69         }
 70 
 71         // Start the Windows service.
 72         protected override void OnStart(string[] args)
 73         {
 74             if (serviceHost != null)
 75             {
 76                 serviceHost.Close();
 77             }
 78 
 79             // Create a ServiceHost for the CalculatorService type and
 80             // provide the base address.
 81             serviceHost = new ServiceHost(typeof(CalculatorService));
 82 
 83             // Open the ServiceHostBase to create listeners and start
 84             // listening for messages.
 85             serviceHost.Open();
 86         }
 87 
 88         protected override void OnStop()
 89         {
 90             if (serviceHost != null)
 91             {
 92                 serviceHost.Close();
 93                 serviceHost = null;
 94             }
 95         }
 96     }
 97 
 98     // Provide the ProjectInstaller class which allows
 99     // the service to be installed by the Installutil.exe tool
100     [RunInstaller(true)]
101     public class ProjectInstaller : Installer
102     {
103         private ServiceProcessInstaller process;
104         private ServiceInstaller service;
105 
106         public ProjectInstaller()
107         {
108             process = new ServiceProcessInstaller();
109             process.Account = ServiceAccount.LocalSystem;
110             service = new ServiceInstaller();
111             service.ServiceName = "WCFWindowsServiceSample";
112             Installers.Add(process);
113             Installers.Add(service);
114         }
115     }
116 }

 

app.config

-----------------------------

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="CalculatorServiceBehavior" name="Microsoft.ServiceModel.Samples.CalculatorService">
        <endpoint address="http://localhost:8000/ServiceModelSamples/service"
          behaviorConfiguration="NewBehavior0" binding="wsHttpBinding"
          contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <endpoint address="http://localhost:8000/ServiceModelSamples/service/mex"
          binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/ServiceModelSamples/service" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="NewBehavior0" />
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="CalculatorServiceBehavior">
          <serviceMetadata httpGetEnabled="true" httpGetUrl="http://localhost:8000/Sample"
            httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

 

Windows服务承载WCF,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!