C# WCF初识
原文:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html
方式1:
需引用 System.ServiceModel
namespace ConsoleApplication1
{ /*
契约(Contracts):主要定义了实现那些服务,如何访问服务
契约 通常是一个 接口,定义了我们会提供哪些服务。
*/
[ServiceContract(Name = "CalculatorService", Namespace = "http://www.artech.com/")]
public interface ICalculator
{
//在方法上 声明OperationContract 表示该方法是一个对外的服务
[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);
} /*
服务 则是如何实现这个契约
*/
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;
}
}
}
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//原文:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html
using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
{
host.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "http://127.0.0.1:9999/calculatorservice");
if (host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
{
ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
behavior.HttpGetEnabled = true;
behavior.HttpGetUrl = new Uri("http://127.0.0.1:9999/calculatorservice/metadata");
host.Description.Behaviors.Add(behavior);
}
host.Opened += delegate
{
Console.WriteLine("CalculaorService已经启动,按任意键终止服务!");
};
host.Open();
Console.Read();
}
}
}
}
//方式2(配置App.config):
namespace ConsoleApplication1
{ /*
契约(Contracts):主要定义了实现那些服务,如何访问服务
契约 通常是一个 接口,定义了我们会提供哪些服务。
*/
[ServiceContract(Name = "CalculatorService", Namespace = "http://www.artech.com/")]
public interface ICalculator
{
//在方法上 声明OperationContract 表示该方法是一个对外的服务
[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);
} /*
服务 则是如何实现这个契约
*/
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;
}
}
}
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
//原文:http://www.cnblogs.com/artech/archive/2007/02/26/656901.html //WCF服务寄宿通过一个特殊的对象完成:ServiceHost。
//在上面的例子中,基于WCF服务的类型(typeof(CalculatorService))创建了ServieHost对象,并添加了一个终结点。
//具体的地址为http://127.0.0.1:9999/calculatorservice,采用了WSHttpBinding,并指定了服务契约的类型ICalculator。 //接下来是要将这个服务承载于宿主中。和为这个服务分配一个访问的地址。这时,需要新建一个App.config配置文件
ServiceHost host = new ServiceHost(typeof(CalculatorService));//将服务寄宿在宿主中
host.Open();//运行
Console.WriteLine("服务已启动、、、");
Console.ReadKey(true);
host.Close(); //关闭
}
}
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="metadataBehavior">
<serviceMetadata httpGetEnabled="true" httpGetUrl="http://127.0.0.1:9999/calculatorservice/metadata" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="metadataBehavior" name="ConsoleApplication1.CalculatorService">
<endpoint address="http://127.0.0.1:9999/calculatorservice" binding="wsHttpBinding" contract="ConsoleApplication1.ICalculator" />
</service>
</services>
</system.serviceModel>
</configuration>
C# WCF初识的更多相关文章
- WCF学习笔记之WCF初识
这篇博客将介绍WCF的最基础内容,让我们对WCF有一个基本的认识.后续的博客中将会介绍WCF其他方面内容.本篇博客将通过一个简单的例子,介绍如何创建WCF服务,并承载这个服务,让客户端来访问它.下面请 ...
- WCF初识
WCF能干什么? 在win32中,应用程序是运行在进程的线程中的,.NET出现之后,出现了AppDomain,其实就相当于在进程和线程之间又又了一层包装层,类似于子进程的概念,在一个进程或者应用程序域 ...
- WCF 初识(一)
WCF的前世今生 在.NETFramework 2.0以及前版本中,微软发展了Web Service(SOAP with HTTP communication),.NET Remoting(TCP/H ...
- WCF:初识
结构: using System.ServiceModel; namespace MyServices { [ServiceContract] public interface IHomeServic ...
- WCF编程系列(一)初识WCF
WCF编程系列(一)初识WCF Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程模型.WCF的基本概念: 地址:定义服务的 ...
- 我们一起学习WCF 第一篇初识WCF(附源码供对照学习)
前言:去年由于工作需要我学习了wcf的相关知识,初期对wcf的作用以及为何用怎么样都是一知半解,也许现在也不是非常的清晰.但是通过项目对wcf的运用在脑海里面也算有了初步的模型.今天我就把我从开始wc ...
- WCF系列教程之初识WCF
本随笔参考自WCF编程系列(一)初识WCF,纯属读书笔记,加深记忆. 1.简介:Windows Communication Foundation(WCF)是微软为构建面向服务的应用程序所提供的统一编程 ...
- 初识WCF
以前,总是说自己的基础知识不牢靠,就是因为自己总是不总结.昨天,学费交了,顿时感觉不一样了,心里有劲也有力了,知道了以前的自己到底为什么会那样了,因为没有压力. --题记 我参加过浩哥的招标项目,参加 ...
- WCF(一):初识WCF
目录: 一.什么是WCF 二.WCF能做什么 三.WCF的模型 四.WCF的基本概念 五.WCF的快速创建 1.WCF是什么 A.WindowsCommunication Foundation(WCF ...
随机推荐
- Java 6- Java 运算符
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运 ...
- restframwork之序列化
一 restframwork为我们提供了一个快速实例,方便我们快速理解restframwork的序列化的原理. 快速实例化 Django REST framework API 指南 二 restfra ...
- WPF vs2015,vs2012 添加ArcObjects SDK
一:如果是vs2015,找到注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\下面的这两个,并且将名称和数 ...
- 微信小程序开发踩坑日记
2017.12.29 踩坑记录 引用图片名称不要使用中文,尽量使用中文命名,IDE中图片显示无异样,手机上图片可能出现不显示的情况. 2018.1.5 踩坑记录 微信小程序设置元素满屏,横向直接w ...
- uva-10085-搜索-最远状态的八数码
直接bfs即可,取最后一个状态 #include <iostream> #include <stdio.h> #include <string> #include ...
- 二级VB备考中
今天安装了一个VB软件,二级备考中,每天一套牌卷子. 在Html5中 align 与valign改变了属性 vertial-align 是垂直方向的改变 面对网站首页的建立需要首先画好一份区域设计图 ...
- php CURL模拟GET、POST请求。
/** * get * @param string $url 请求地址 */ function GetHttp($url){ // 关闭句柄 $curl = curl_init(); // 启动一个C ...
- Android自定义View学习(四)
硬件加速 参考:HenCoder Android 自定义 View 1-8 硬件加速 硬件加速能够让绘制变快,主要有三个原因: 本来由 CPU 自己来做的事,分摊给了 GPU 一部分,自然可以提高效率 ...
- react-native 插件汇总
部分自己搜集 部分 来自别的网站 第三方路由插件 react-native-router-flux react-native-scrollable-tab-view 选项卡 测滑动菜单 react-n ...
- JedisCluster操作redis集群
1.pom引入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...