WCF是Windows平台下程序间通讯的应用程序框架。整合和 .net Remoting,WebService,Socket的机制,是用来开发windows平台上分布式开发的最佳选择。wcf程序的运行需要一个宿主ServiceHost,我们可以选用控制台应用程序,也可以选择IIS寄宿,还可以选择windows 服务寄宿。相较与控制台程序,IIS,和Windows服务比较稳定。而且大家不会时不时的去重启下IIS下的网站,或者windows服务。

在IIS下寄宿Wcf

我们新建一个类库项目

在项目下添加一个ICalculator接口类,实现wcf 服务契约,操作契约接口

using System.ServiceModel; namespace IISServices { [ServiceContract(Name = 'CalculatorService')] public interface ICalculator { [OperationContract] double Add(double x, double y); [OperationContract] double Subtract(double x, double y); [OperationContract] double Multiply(double x, double y); [OperationContract] double Divide(double x, double y); } }

新建一个服务类CalculatorService,实现服务契约接口ICalculator

namespace IISServices
{ public class CalculatorService : ICalculator { public double Add(double x, double y) { return x + y; } public double Subtract(double x, double y) { return x - y; } public double Multiply(double x, double y) { return x * y; } public double Divide(double x, double y) { return x / y; } } }

添加一个文件,文件名为CalculatorService.svc就是我们用来寻找服务对外暴漏的入口。只需要添加一行代码就可以。当我们访问服务的时候IIS会寻找我们这个svc文件来找到我们提供的服务。

 <%@ServiceHost Service='IISServices.CalculatorService'%>

添加一个web.Config文件,添加system.serviceModel节点的配置信息。里面不需要配置我们访问服务的地址,因为IIS下我们网站的地址就是我们访问服务的地址。

<?xml version='1.0' encoding='utf-8' ?> <configuration> <system.serviceModel> <behaviors> <serviceBehaviors> <behavior name='metadataBehavior'> <serviceMetadata httpGetEnabled='true'/> </behavior> </serviceBehaviors> </behaviors> <services> <service behaviorConfiguration='metadataBehavior' name='IISServices.CalculatorService'> <endpoint binding='wsHttpBinding' contract='IISServices.ICalculator' /> </service> </services> </system.serviceModel> </configuration>

项目详细如下,另外应用里面需要添加System.ServiceModel这个dll引用,wcf的大部分实现都在这个类库里面:

我们在IIS下面新建一个网站,根目录只需要添加web.Config,svc服务文件即可,bin下面放我们生成的IISServices.dll如下:

网站访问端口我们配置为82,启动网站。

在我们需要引用服务的类库或exe上添加服务引用http://localhost:82/CalculatorService.svc,就可以找到我们需要的服务了。

在Windows服务下寄宿wcf服务

我们新建一个控制台应用程序Service。添加下面这三个类库引用

System.ServiceModel.dll

System.ServiceProcess.dll

System.Configuration.Install.dll

将Programs.cs修改为Service.cs,添加代码如下

using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.ComponentModel; using System.ServiceModel; using System.ServiceProcess; using System.Configuration; using System.Configuration.Install; namespace Microsoft.ServiceModel.Samples { // Define a service contract. [ServiceContract(Namespace = 'http://Microsoft.ServiceModel.Samples')] public interface ICalculator { [OperationContract] double Add(double n1, double n2); [OperationContract] double Subtract(double n1, double n2); [OperationContract] double Multiply(double n1, double n2); [OperationContract] double Divide(double n1, double n2); } // Implement the ICalculator service contract in a service class. public class CalculatorService : ICalculator { // Implement the ICalculator methods. public double Add(double n1, double n2) { double result = n1 + n2; return result; } public double Subtract(double n1, double n2) { double result = n1 - n2; return result; } public double Multiply(double n1

转载于:https://www.cnblogs.com/qq260250932/p/5324268.html

WCF服务寄宿IIS与Windows服务 - C#/.NET相关推荐

  1. 第三节:Windows平台部署Asp.Net Core应用(基于IIS和Windows服务两种模式)

    一. 简介 Asp.Net Core 部署方式有两种:依赖框架和独立部署. 1. 框架依赖的部署: 顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core. 由于 ...

  2. python 服务注册_python注册Windows服务

    注册windows服务程序框架 安装pywin32 pip install pywin32 按照下述程序框架编写代码,业务逻辑写main函数里即可. ''' SMWinservice by David ...

  3. WCF服务寄宿IIS时.SVC文件无法浏览的解决办法

    在IIS中托管服务和经典的ASMX Web服务托管相似,需要在IIS下创建虚拟目录,并提供一个.svc文件和Web.config配置文件.另外,托管时,服务的基地址必须与.svc文件的地址相同. 一. ...

  4. Windows平台部署Asp.Net Core应用(基于IIS和Windows服务两种模式)

    三. Web部署发布至IIS 1. 前提: 安装 dotnet-hosting(这里的版本为2.2.4,该安装包 包括:dotnet runtime 2.2.4 和 dotnet hosting)和 ...

  5. oracle服务未启动失败,windows服务未启动导致 ORA-12560和RMAN-00554错误 | 信春哥,系统稳,闭眼上线不回滚!...

    今天,有人在群里问RMAN-00554.RMAN-04005.ORA-12560错误,如下: C:Usersstream>rman target / 恢复管理器: Release 11.2.0. ...

  6. [老老实实学WCF] 第三篇 在IIS中寄存服务

    老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...

  7. 更上层楼:动态安装你的windows服务

    前言:先说明一下本文示例windows服务的简单需求,即根据外部配置实现不同方式记录日志的功能.记录日志的方式有三种,分为文本记录.数据库记录以及文本和数据库同时记录日志.如您所知,这个功能基本上没有 ...

  8. 网管员心声:Windows服务有“备”无患

    在局域网环境中,网管往往非常重视对Windows服务器硬盘中的用户数据文件的备份,而忽视了对Windows系统本身提供的各种服务的状态信息和服务数据的备份,如IIS服务.DHCP服务.DNS服务等,这 ...

  9. 以Windows服务方式运行.NET Core程序

    原文:以Windows服务方式运行.NET Core程序 在之前一篇博客<以Windows服务方式运行ASP.NET Core程序>中我讲述了如何把ASP.NET Core程序作为Wind ...

最新文章

  1. rabbitmq代码
  2. java2第九章的总结_java并发的艺术-读书笔记-第九章线程池
  3. 《此生未完成》痛句摘抄(3)
  4. 前端学习(1344):用户的增删改查操作1
  5. miui12 android系统耗电,miui12耗电严重怎么办,miui12续航优化方法
  6. linux nginx 图片服务器,搭建Nginx图片服务器(Linux)
  7. Spring Boot集成Redis缓存之模拟高并发场景处理
  8. python期末复习卷_【期末复习卷A】六年级科学上册期末复习试题
  9. 加快github下载速度绝招
  10. win7中安装redis
  11. [NHibernate]使用AttributeNHibernate.Mapping.Attributes
  12. linux 查看端口、进程情况及kill进程
  13. vmware workstation 12 永久激活码
  14. Office 2010 excel在打开两个表格的时候,仅能在一个窗口显示
  15. 成品、预售、老店翻新、教练:邀约话术(绝干干货)-健身房管理系统结捷径系统
  16. asp上传头像mysql_asp 会员头像上传 代码
  17. Ubuntu 16.04 64位 安装 modelsim
  18. win10系统老显卡(AMD Radeon HD 8500M)驱动错误
  19. oracle 11g 连接远程服务器 数据库
  20. ros 单向通讯 talker,listener 发布订阅模型

热门文章

  1. python将学生信息保存到文件中_Python statsmodels OLS:如何将学习的模型保存到文件中...
  2. 【C++】C++中的头文件(.h)—详解(1)
  3. leetcode - 15. 三数之和
  4. Java中大规模集合快速求和计算
  5. CV之Haar特征描述算子-人脸检测
  6. Hibernate关系映射
  7. [git] 基础操作-02 分支和主支合并
  8. 线性代数【1】线性代数是什么【2】行列式计算【3】行列式性质【特殊行列计算】【4】克莱姆法则
  9. eigen库安装_Python-OpenCV 1. 图像处理库OpenCV安装
  10. python3-pwntools教程_记一次five熬夜重装pwntools