Windows服务承载WCF

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

时间: 2024-11-07 11:35:07

Windows服务承载WCF的相关文章

一步一步构建服务并用Windows服务承载,以及调用

声明:试验环境,不与实际开发,勿混淆.(否则,责任自负) 第一步,构建服务. 新建 "WCF服务库项目" IBasicMath.cs代码如下(别忘了添加引用了!) 1 using System; 2 using System.Runtime.Serialization; 3 using System.ServiceModel; 4 5 namespace MathServiceLibrary 6 { 7 [ServiceContract(Namespace="www.Inte

基于Windows服务的WCF

(1)创建WCF 代码示例: [ServiceContract] public interface ILimsDBService { [OperationContract] int ExecuteSql(string strSql); [OperationContract] DataTable GetDataTable(string strSql); [OperationContract] DataSet GetDataSet(string strSql); } public class Lim

将WCF寄宿在托管的Windows服务中

在我之前的一篇博客中我介绍了如何发布WCF服务并将该服务寄宿于IIS上,今天我再来介绍一种方式,就是将WCF服务寄宿在Windows服务中,这样做有什么好处呢?当然可以省去部署IIS等一系列的问题,能够让部署更加简单,当然WCF的寄宿方式一般分为以下四种方式,针对每一种方式我来简单介绍以下: 具体的寄宿方式详细信息请参考MSDN:https://msdn.microsoft.com/zh-cn/library/ms733109(v=vs.100).aspx 一.WCF服务寄宿方式: 1):寄宿在

WCF中常见的几种Host,承载WCF服务的方法

1:写在前面 我们都知道WCF在运行的时候必须自己提供宿主来承载服务.WCF 本身没有附带宿主,而是提供了一个 ServiceHost 的类,该类允许您在自己的应用程序中host WCF 服务.然后调用 ServiceHost 的 Open 方法即可.我们知道WCF是针对SOA的一套技术.对于SOA而言,我们必须确保服务能够正常运行,平稳的运行,所以此时如何host我们的服务,用什么来Host我们的服务是很重要的,所以我们要为我们的应用程序选择一个合适的Host方式是很有必要的. 2:常见的几种

使用Topshelf 5步创建Windows 服务 z

使用Topshelf创建Windows 服务简要的介绍了创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务.Topshelf是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主. 1.Topshelf的代码托管在http://topshelf-project.c

在 IIS 中承载 WCF 服务

本主题概述了创建 Internet 信息服务 (IIS) 中承载的 Windows Communication Foundation (WCF) 服务所需的基本步骤. 本主题假设您熟悉 IIS 且了解如何使用 IIS 管理工具创建和管理 IIS 应用程序. 有关以下内容的详细信息请参阅 IIS Internet Information Services AWCF在 IIS 环境中运行的服务充分利用 IIS 功能,如进程回收. 空闲关闭. 进程状况监视和基于消息的激活. 此宿主选项要求正确配置 I

WCF初探-9:WCF服务承载 (下)

在WCF初探-8:WCF服务承载 (上)中,我们对宿主的概念.环境.特点做了文字性的介绍和概括,接下来我们将通过实例对这几种寄宿方式进行介绍.为了更好的说明各寄宿环境特点,本实例采用Http和net.tcp两种服务通讯方式,同时寄宿在不同的宿主中.程序结构如下: 服务契约的接口和实现代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Ser

如何在IIS中承载WCF NetTcpBinding 服务

这篇博客将介绍如何在IIS中承载NetTcpBinding的服务. 1. 首先准备服务代码. Contract namespace Contract { [ServiceContract] public interface ICalculate { [OperationContract] double Add(double x, double y); [OperationContract] double Subtract(double x, double y); [OperationContra

使用IIS承载WCF服务

1.WCF可以方便的通过IIS承载,此承载模型与ASP.NET和ASP.NET Web Service使用的模型类似.2.WCF可以在以下操作系统上的IIS版本上承载 Windows XP SP2上的IIS 5.1 Windows Server 2003上的IIS 6.0 Windows Server 2008或者Windows Vista或者Windows 7上的IIS 7.0 以及IIS后续版本 3.在IIS 7.0中提供了一种新的承载服务方式即WAS(Windows Process Act