简述wcf应用
一.新建wcf
如下图:wcf可以简历俩种形式
1.库文件,就是一个类库文件,可以用windows服务或控制台开启。
2.服务应用程序,可以直接IIS上面发布。

二.库文件自动生成的类
接口类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization; using System.Text; namespace WCFLib
{
using System.ServiceModel; /*
WCF服务的特点:
* 1、在接口上必须贴上 [ServiceContract]标签来标记这个接口是一个wcf的服务
* 2、在这个接口中的方法上贴上 [OperationContract] 标记这个方法是一个wcf的服务方法,可以被外界调用
*/
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value); }
}
实现类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text; namespace WCFLib
{
/// <summary>
/// WCF服务的实现类,它是用来处理wcf服务方法的逻辑代码的
/// </summary>
public class Service1 : IService1
{
public string GetData(int value)
{
return string.Format("你输入了: {0}", value);
}
}
}
配置文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration> <appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" />
</system.web>
<!-- 部署服务库项目时,必须将配置文件的内容添加到
主机的 app.config 文件中。System.Configuration 不支持库的配置文件。-->
<system.serviceModel>
<!-- services节点负责存放所有的WCF服务的-->
<services>
<!-- name 一定是配置为当前服务实现类的全名称 契约 (合同)-->
<service name="WCFLib.Service1">
<host>
<baseAddresses>
<!-- 表示当前Service1这个服务的地址,被服务器来监听-->
<add baseAddress = "http://localhost:8733/Design_Time_Addresses/WCFLib/Service1/" />
</baseAddresses>
</host>
<!-- 终结点,也是供服务器来监听,
address="" :表示当前监听的地址使用上面host配置节点中的baseAddress中的地址
如果这个地址不为空,优先使用这个地址
binding="basicHttpBinding" :表示客户端与wcf服务的通讯方式基于基本的http模式
basicHttpsBinding: 表示表示客户端与wcf服务的通讯方式基于基本的https模式, 数据传输更加安全,但是速度要慢一些
contract="WCFLib.IService1" :表示当前wcf服务Service1所对应的节点是谁
-->
<endpoint address="" binding="basicHttpBinding" contract="WCFLib.IService1">
</endpoint> <!-- 元数据交换终结点供相应的服务用于向客户端做自我介绍。
类似于Webservices的元数据,客户端将来生成的代理类就是按照这个元数据中的描述信息来生成的-->
<!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service> </services>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- 为避免泄漏元数据信息,
请在部署前将以下值设置为 false -->
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
<!-- 要接收故障异常详细信息以进行调试,
请将以下值设置为 true。在部署前设置为 false
以避免泄漏异常信息-->
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel> </configuration>
控制台托管的代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace WCF服务的自托管
{
using System.ServiceModel;
using WCFLib; class Program
{
static void Main(string[] args)
{
//开启托管MenusMgr这个wcf的服务
//如果ServiceHost() 的第二个参数不填写的话,自动去查找当前运行项目中的配置文件
//所以要记得在当前项目的app.config中配置好wcf服务库的节点
using (ServiceHost host = new ServiceHost(typeof(MenusMgr)))
{
//开启监听,等待客户端的连接
host.Open(); Console.WriteLine("服务已经开启");
Console.ReadKey();
}
}
}
}
三.客户端调用的方式
引用--添加服务引用--输入地址OK
四.引用好服务调用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace Client
{
using Client.WcfServer;
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ } protected void Button1_Click(object sender, EventArgs e)
{
MyServerClient my = new MyServerClient();
string str = my.GetPerson("张三");
this.TextBox1.Text = str;
}
}
}
简述wcf应用的更多相关文章
- [翻译]15个最常见的WCF面试问题
WCF和ASMX WebService的区别是什么? 最基本的区别在于,ASMX或者ASP.NET WebService是用来通过基于HTTP的SOAP来实现通讯.但WCF可以使用任意协议(HTTP, ...
- 通过 WCF 实现点对点文件共享 z
下载免费的项目源代码 下载项目的数据库 目录 简介 背景 为什么是WCF? WCF历史简述 WCF基础 点对点概念 代码分析(它是怎么工作的) 核心转化引擎层 下载管理层 服务层 代码的使用(如何运行 ...
- 浅议Grpc传输机制和WCF中的回调机制的代码迁移
浅议Grpc传输机制和WCF中的回调机制的代码迁移 一.引子 如您所知,gRPC是目前比较常见的rpc框架,可以方便的作为服务与服务之间的通信基础设施,为构建微服务体系提供非常强有力的支持. 而基于. ...
- Android调用Web服务
现在大部分应用程序都把业务逻辑处理,数据调用等功能封装成了服务的形式,应用程序只需要调用这些web服务就好了,在这里就不赘述web服务的优点了.本文总结如何在android中调用Web服务,通过传递基 ...
- .net面试中的一些常见问题与答案
1.页面传值的方式及其优缺点? Session,Application,Cookies,Requst.QueryString,Requst.Form,Server.Transfer(通过Conte ...
- 简述WebService与.NET Remoting的区别及适应场合 WCF
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhoufoxcn.blog.51cto.com/792419/166990 为了 ...
- 再见WCF
转眼微软的WCF已走过十个年头,它是微软通信框架的集大成者,将之前微软所有的通信框架进行了整合,提供了统一的应用方式.记得从自己最开始做MFC时,就使用过Named Pipe命名管道,之后做Winfo ...
- WCF技术剖析之七:如何实现WCF与EnterLib PIAB、Unity之间的集成
原文:WCF技术剖析之七:如何实现WCF与EnterLib PIAB.Unity之间的集成 在这之前,我写过深入介绍MS EnterLib PIAB的文章(参阅<MS Enterprise Li ...
- WCF Restful调用跨域解决方案
目前很多项目中CRM更多扮演一个纯后台管理系统,用户更多的操作是在移动端执行,不管是安卓还是IOS甚至是H5.这里以H5为例,CRM提供数据接口,移动web端来调用接口进行数据处理,这里就会涉及到一个 ...
随机推荐
- Luogu 2114 [NOI2014]起床困难综合症
还挺简单的. 发现这几个二进制运算并不会进位,所以我们从高到低按位贪心,一位一位计算贡献. 发现$2^{30}$刚好大于$1e9$,所以最多只要算29位. 首先算出一个全都是$0$的二进制数和一个全都 ...
- 连接Excel数据库
SQL语法:http://www.w3school.com.cn/sql/sql_syntax.asp Ctrl键拖(也就是复制) 先输入1,2,然后下拉 一.问题的提出 在ASP编程中会遇到很多大大 ...
- Umbraco中获取UmbracoContext
在Umbraco项目中,获取当前的UmbracoContext几乎是都需要用到的,我们一般通过一个静态方法来获取,代码如下 public class ContextHelpers { public s ...
- 数据结构_我不会AVL_wbhavl
问题描述 欢迎来到暴走数据结构,我是洪尼玛.今天,我们来玩 AVL 树,怎么玩呢? 很简单:给你 n 个数字,你需要按顺序插入一棵 AVL树中,然后输出每个数所在节点的深度(从 1 开始).因为我不会 ...
- 数组队列C++实现
template <typename _T>class CArrayQueue {public: CArrayQueue() { m_rear = 0; ...
- WebGoat系列实验Denial of Service & Insecure Communication
WebGoat系列实验Denial of Service & Insecure Communication ZipBomb 服务器仅接收ZIP文件,将上传的文件解压,进行操作之后删除.已知服务 ...
- vimrc配置-新建文件时自动生成文件头
vimrc配置-新建文件时自动生成文件头 auto add file header autocmd BufNewFile *.py 0r /home/zxkletters/.vim/vim_te ...
- 怎样创建XML文档
在程序中,我们怎样创建一个XML文档.下面演示中,Insus.NET在程序创建一个和http://www.cnblogs.com/insus/p/3274220.html 一模一样的XML文档. 可以 ...
- shell脚本实现自动保留最近n次备份记录
项目中出现的问题 某天上午服务器出现卡顿特别严重,页面加载速度奇慢,并且某些页面刷新出现404的问题,就连服务器的tab命令的自动提示都出现了问题,楼主费了九牛二虎之力,根据服务器排查发现,服务器数据 ...
- volatile关键字小结
Java 提供了一种稍弱的同步机制,即 volatile 变量,用来确保将变量的更新操作通知到其他线程.可以将 volatile 看做一个轻量级的锁,但是又与锁有些不同: 1. 对于多线程,不是一种互 ...