WCF服务寄宿IIS与Windows服务 - C#/.NET
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相关推荐
- 第三节:Windows平台部署Asp.Net Core应用(基于IIS和Windows服务两种模式)
一. 简介 Asp.Net Core 部署方式有两种:依赖框架和独立部署. 1. 框架依赖的部署: 顾名思义,依赖框架的部署 (FDD) 依赖目标系统上存在共享系统级版本的 .NET Core. 由于 ...
- python 服务注册_python注册Windows服务
注册windows服务程序框架 安装pywin32 pip install pywin32 按照下述程序框架编写代码,业务逻辑写main函数里即可. ''' SMWinservice by David ...
- WCF服务寄宿IIS时.SVC文件无法浏览的解决办法
在IIS中托管服务和经典的ASMX Web服务托管相似,需要在IIS下创建虚拟目录,并提供一个.svc文件和Web.config配置文件.另外,托管时,服务的基地址必须与.svc文件的地址相同. 一. ...
- Windows平台部署Asp.Net Core应用(基于IIS和Windows服务两种模式)
三. Web部署发布至IIS 1. 前提: 安装 dotnet-hosting(这里的版本为2.2.4,该安装包 包括:dotnet runtime 2.2.4 和 dotnet hosting)和 ...
- oracle服务未启动失败,windows服务未启动导致 ORA-12560和RMAN-00554错误 | 信春哥,系统稳,闭眼上线不回滚!...
今天,有人在群里问RMAN-00554.RMAN-04005.ORA-12560错误,如下: C:Usersstream>rman target / 恢复管理器: Release 11.2.0. ...
- [老老实实学WCF] 第三篇 在IIS中寄存服务
老老实实学WCF 第三篇 在IIS中寄宿服务 通过前两篇的学习,我们了解了如何搭建一个最简单的WCF通信模型,包括定义和实现服务协定.配置服务.寄宿服务.通过添加服务引用的方式配置客户端并访问服务.我 ...
- 更上层楼:动态安装你的windows服务
前言:先说明一下本文示例windows服务的简单需求,即根据外部配置实现不同方式记录日志的功能.记录日志的方式有三种,分为文本记录.数据库记录以及文本和数据库同时记录日志.如您所知,这个功能基本上没有 ...
- 网管员心声:Windows服务有“备”无患
在局域网环境中,网管往往非常重视对Windows服务器硬盘中的用户数据文件的备份,而忽视了对Windows系统本身提供的各种服务的状态信息和服务数据的备份,如IIS服务.DHCP服务.DNS服务等,这 ...
- 以Windows服务方式运行.NET Core程序
原文:以Windows服务方式运行.NET Core程序 在之前一篇博客<以Windows服务方式运行ASP.NET Core程序>中我讲述了如何把ASP.NET Core程序作为Wind ...
最新文章
- rabbitmq代码
- java2第九章的总结_java并发的艺术-读书笔记-第九章线程池
- 《此生未完成》痛句摘抄(3)
- 前端学习(1344):用户的增删改查操作1
- miui12 android系统耗电,miui12耗电严重怎么办,miui12续航优化方法
- linux nginx 图片服务器,搭建Nginx图片服务器(Linux)
- Spring Boot集成Redis缓存之模拟高并发场景处理
- python期末复习卷_【期末复习卷A】六年级科学上册期末复习试题
- 加快github下载速度绝招
- win7中安装redis
- [NHibernate]使用AttributeNHibernate.Mapping.Attributes
- linux 查看端口、进程情况及kill进程
- vmware workstation 12 永久激活码
- Office 2010 excel在打开两个表格的时候,仅能在一个窗口显示
- 成品、预售、老店翻新、教练:邀约话术(绝干干货)-健身房管理系统结捷径系统
- asp上传头像mysql_asp 会员头像上传 代码
- Ubuntu 16.04 64位 安装 modelsim
- win10系统老显卡(AMD Radeon HD 8500M)驱动错误
- oracle 11g 连接远程服务器 数据库
- ros 单向通讯 talker,listener 发布订阅模型
热门文章
- python将学生信息保存到文件中_Python statsmodels OLS:如何将学习的模型保存到文件中...
- 【C++】C++中的头文件(.h)—详解(1)
- leetcode - 15. 三数之和
- Java中大规模集合快速求和计算
- CV之Haar特征描述算子-人脸检测
- Hibernate关系映射
- [git] 基础操作-02 分支和主支合并
- 线性代数【1】线性代数是什么【2】行列式计算【3】行列式性质【特殊行列计算】【4】克莱姆法则
- eigen库安装_Python-OpenCV 1. 图像处理库OpenCV安装
- python3-pwntools教程_记一次five熬夜重装pwntools