WCF基础

注意:通过控制台启动wcf服务,必须以管理员身份运行 vs,不然报错;

新建 wcf服务库(有两个重要的组成部分 接口和实现这个接口的类)
【也可以新建一个类库,自己定义 接口和实现这个接口的类;接口需要  [ServiceContract]标签 接口中的方法需要  [OperationContract]标签 用到的数据对象类需要 [DataContract] 和 属性需要    [DataMember]标签】
独立把wcf作为一个服务库【类库】,好处是可以被不同的宿主引用使用;{vs内置了部署在iis上的快捷方式,创建wcf应用程序,之后部署iis即可,不过是确定了部署在iis上才这样写的;单独写开具有更强的灵活性}

寄宿在控制台

1.引用wcf服务库(类库)
2.新建控制台应用程序
在main函数写如下代码

//MyService是你WCF服务库里面服务的名称

ServiceHost selfHost = new ServiceHost(typeof(Service1));

try

{

//打开 ServiceHost

selfHost.Open();

Console.WriteLine("success");

Console.ReadKey();

selfHost.Close();

}

catch (CommunicationException ce)

{

Console.WriteLine("Error : {0}", ce.Message);

selfHost.Abort();

Console.ReadKey();

}

3.在 控制台程序的 app.config中配置如下

<!--【wcf寄宿在控制台的config配置开始】放在configuration节点的下一级-->

<system.serviceModel>

<services>

<service name="WcfServiceLibrary1.Service1" behaviorConfiguration="MyBehavior">

<host>

<baseAddresses>

<add baseAddress="http://localhost:8123/WcfServiceLibrary1/Service1" />

</baseAddresses>

</host>

<endpoint address="MyService" binding="basicHttpBinding"

contract="WcfServiceLibrary1.IService1"  />

</service>

</services>

<behaviors>

<serviceBehaviors>

<behavior name="MyBehavior">

<serviceMetadata httpGetEnabled="true" />

</behavior>

</serviceBehaviors>

</behaviors>

</system.serviceModel>

<!--【wcf寄宿在控制台的config配置结束】-->

这样服务就创建成功,在需要引用这个服务的地方,引用--添加服务引用 如此例子 引用http://localhost:8123/WcfServiceLibrary1/Service1即可;

寄宿在winform

app配置和控制台完全一样,【配置再运行的项目的app.config上】

namespace OnWinform

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

ServiceHost selfHost = null;

private void button1_Click(object sender, EventArgs e)

{

if (selfHost != null)

{

selfHost.Close();

}

selfHost = new ServiceHost(typeof(WcfServiceLibrary.Service1));

selfHost.Open();

this.label1.Text="已经启动";

}

private void button2_Click(object sender, EventArgs e)

{

selfHost.Close();

this.label1.Text = "已经关闭";

}

}

}

寄宿在IIS

1、引用服务库(类库)
2、手动创建一个.svc的文件  (此文件被访问使用)
<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLibrary.Service1"%>
 3、在要启动的web项目中,的config,右击--》wcf配置--》新建服务--》bin(没有可以重新生成)--》service1--》is而vice
--》。。。。httP://删了 。。。。 
4、在iis上部署这个web项目, ip:端口/ .svc即可访问到服务了

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

时间: 2024-10-24 06:20:12

WCF基础的相关文章

纯手写wcf代码,wcf入门,wcf基础教程

<pre name="code" class="cpp">/* 中颖EEPROM,使用比较方便,但有个注意点,就是每次无论你写入 什么数据或者在哪个地址写数据,都需要将对 对应的块擦除,擦 除后才能写入成功. */ #define SSPWriteFlag 0x5A #define SSPEraseFlag 0xA5 //数据区 扇形区1 #define ADDR_START1 (uint16)0x100 //数据存储区起始地址 #define ADDR

WCF服务编程 读书笔记——第1章 WCF基础(1)

第1章 WCF基础 本章主要介绍WCF的基本概念.构建模块以及WCF体系架构,以指导读者构建一个简单的WCF服务.从本章的内容中,我们可以了解到WCF的基本术语,包括地址(Address).绑定(Binding).契约(Contract)和终结点(Endpoint):了解如何托管服务,如何编写客户端代码:了解WCF的相关主题,诸如进程内托管(In-Proc Hosting)以及可靠性的实现.即使你已经熟知WCF的基本概念,仍然建议你快速浏览本章的内容,它不仅能够巩固你的已有知识,而且本章介绍的一

WCF入门教程:WCF基础知识问与答(转)

学习WCF已有近两年的时间,其间又翻译了Juval的大作<Programming WCF Services>,我仍然觉得WCF还有更多的内容值得探索与挖掘.学得越多,反而越发觉得自己所知太少,直到现在,我也认为自己不过是初窥WCF的门径而已. 学以致用”,如果仅仅是希望能够在项目中合理地应用WCF,那么对于程序员而言,可以有两种选择,一种是“知其然而不知其所以然”,只要掌握了WCF的基础知识,那么对于一般的应用就足够了.要做到这一点就很容易了,微软秉承了一贯的方式,将WCF这门技术优雅地呈现给

WCF服务编程 读书笔记——第1章 WCF基础(2)

续:第1章 WCF基础(1) 元数据交换 服务有两种方案可以发布自己的元数据.一种是基于HTTP-GET协议提供元数据, 另一种则是后面将要讨论的使用专门的终结点的方式.WCF能够为服务自动提供基于HTTPGET的元数据,但需要显式地添加服务行为( Behavior)以支持这一功能.本书后面的章节会介绍行为的相关知识.现在,我们只需要知道行为属于服务的本地特性,例如是否需要基于HTTP-GET交换元数据, 就是一种服务行为.我们可以通过编程方式或管理方式添加行为.在例 1 - 10 演示的宿主应

WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构

原文:WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构 细算起来,已经有好几个月没有真正的写过文章了.近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析>的写作,一直无暇管理自己的Blog.到目前为止<WCF技术剖析(卷1)>的写作暂告一段落,初步预计于下个月由武汉博文视点出版.在<WCF技术剖析>写作期间,对WCF又有了新的感悟,为此以书名开始本人的第三个WCF系列.本系列的目的在于对<WCF技术剖析>的补充,会对书中的一些内容进行展

WCF基础之设计和实现服务协定

本来前面还有一个章节“WCF概述”,这章都是些文字概述,就不“复制”了,直接从第二章开始. 当然学习WCF还是要些基础的.https://msdn.microsoft.com/zh-cn/hh148206这个就是“原文”了,喜欢WCF的可以自己去下载. WCF简单术语: 消息:消息是一个独立的数据单元,主要由消息头和消息正文组成,入门的时候我对它的理解简单说:发送一个消息,就是调用了一个方法,具体的以后再说. 服务:服务说简单点就是终结点的集合. 终节点:即包含我们所谓的WCF的ABC三要素的接

WCF基础教程——vs2013创建wcf应用程序

引言 近期在项目中见到了师哥们常常谈到的WCF这方面的知识.当时在写程序的时候也没有理解wcf究竟是个什么东西? 以及我们为什么在项目中会採用这种框架来实现,仅仅是依照师哥他们写好的代码编写同样格式的代码.随着代码敲 的越来越多就慢慢的懂得了如何实现client和服务端的连同,可是wcf真正的执行机制还是一点也不懂,近期在听师 哥们讲课的时候有解说了一些关于WCF的知识,自己感觉应该好好理解这方面的知识了,而且这个东西在项目中是非 经常见的,以下就结合我实现的一个小Demo来和大家分享一下. 当

WCF基础之传输

WCF中使用的主要传输的方式有HTTP,TCP和命名管道. 绑定包括可选的协议绑定元素(如安全),必需的编码绑定元素和必须的传输协定绑定元素三个部分,而由传输方式则是由传输绑定元素来决定的. HTTP是客户端与服务器之间的一个请求/响应协议,不是基于连接的(即不需要建立通信会话),如果通信双方都是WCF,则建议使用TCP和命名管道通信. TCP是与HTTP相反,它是基于连接的,且TCP提供可靠传输(TCP通知发送方开始传递包,保证按发送时同样的顺序传递这些包,传输丢失的包和确保数据包不重复),W

WCF基础之大型数据和流

在WCF的实际应用中,有可能存在10M,100M甚至G级别的传输,这个时候我们就不得不考虑编码和传输模式,当然得选择相应的绑定(binding) 如上图所示,我可以直接使用系统提供的相应绑定,然后设置需要的模式即可,要启用MTOM消息编码,要选择相应的绑定,如BasicHttpBinding或者WSHttpBinding,然后将该绑定的messageEncoding设为Mtom,而流模式则有BasicHttpBinding,NetTcpBinding和NetNamedPipeBinding三种绑