WCF开发步骤

一个在vs2017中开发wcf的步骤 一、新建WCF服务应用程序 删除自动创建的WCF服务,然后添加新建WCF服务的接口和实现 接口如下: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.ServiceM 阅读详情

1. 开发服务(Service)

(1)新建WCF服务应用程序

WCF是.NET3.0新增的,如果要在Visual Studio 2005下开发WCF应用程序,需要安装Visual Studio 2005 Extensions for WCF and WPF才可以支持。Visual Studio 2008 和 2010 由于包含了.NET3.0,所以,它直接支持创建WCF服务项目。

(2)定义WCF服务契约

新建WCF服务应用程序后,系统会自动生成IService1.cs文件,如下代码所示。它是服务契约接口文件。服务要实现的操作可以通过接口来定义。(将红体部分修改为自己的业务代码)

//IService1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WcfService1
{
    // 注意: 如果更改此处的接口名称 "IService1",也必须更新 Web.config 中对 "IService1" 的引用。
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);

        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);

        // 任务: 在此处添加服务操作
    }

    // 使用下面示例中说明的数据约定将复合类型添加到服务操作。
    [DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";


        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }


        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }

    }
}

服务契约需要用 [ServiceContract]属性定义,使它成为WCF服务中公开的接口。

服务定义的操作方法用 [OperationContract] 属性定义,使它成为WCF服务公开接口中公开的成员。

实体类CompositeType是通过服务发送的复合类型的数据契约定义的,有[DataContract]和[DataMember]属性定义。

(3)实现WCF服务契约

服务实现,其实就是对契约(接口)的实现,继承接口并实现方法。(下面代码是系统自动生成的,把红色部分改为自己的代码)

//Service1.svc.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace WcfService1
{
    // 注意: 如果更改此处的类名“Service1”,也必须更新 Web.config 和关联的 .svc 文件中对“Service1”的引用。
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }

        public CompositeType GetDataUsingDataContract(CompositeType composite)
        {
            if (composite.BoolValue)
            {
                composite.StringValue += "Suffix";
            }
            return composite;
        }

    }
}

重新编译WCF服务应用程序,会发现WcfService1\bin 的目录下生成了WcfService1.dll,说明刚才我们创建的WCF服务应用程序其实是个类库项目。

2. 创建宿主进程(Host)

要想使WCF服务运行,需要宿主进程(Host)。即WCF服务不可能凭空存在。每个WCF服务必须托管(Hosting)在Windows进程中,该进程就称为宿主进程(Host Process)。宿主可以由IIS提供,也可以由Windows Form程序或Windows服务提供,或者Console控制台程序也可以。

下面以Windows Form程序为示例进行讲解,其他方法基本类似。具体步骤:

(1)新增一个WindowsForms应用程序WindowsFormsWcfApp。

(2)在WindowsFormsWcfApp中添加对刚才实现的WCF服务的WcfService1库引用。

(3)添加引用:System.ServiceModel;

(4)配置宿主程序WindowsFormsWcfApp的参数。

添加一个应用程序配置文件App.config。并加入如下配置:

//App.config

WCF开发步骤

 整个WCF配置是用system.serviceModel元素定义的。

服务用元素定义,包括一个指定契约的元素,契约的值是指定了[ServiceContract]属性的接口的名称,包括接口的命名空间,如contract="WcfService1.IService1"。属性binding指定了绑定信息定义了由服务使用的协议,"wsHttpBinding"代表了WCF服务使用的是HTTP协议。

元素定义了服务的地址,服务可以用http://localhost:8000/寻址。

(5)启动服务

向WindowsFormsWcfApp的Form1窗体添加两个Button按钮,如下图所示,并完善Form1.cs文件


//Form1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.ServiceModel;

namespace WindowsFormsWcfApp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //声明宿主
        ServiceHost host = null;

        private void btnStart_Click(object sender, EventArgs e)
        {
            host = new ServiceHost(typeof(WcfService1.Service1));
            host.Open();  //启动服务的监听器信道,监听请求

            lblShow.Text = "服务已启动";
        }

        private void btnStop_Click(object sender, EventArgs e)
        {
            if (host.State != CommunicationState.Closed)
            {
                host.Close();  //停止信道
            }
            lblShow.Text = "服务已停止";
        }       
    }
}

运行该宿主程序,单击“启动服务”按钮在IE浏览器栏中输入:http://localhost:8000/,将会看到下图所示的服务提示信息。


3. 创建WCF客户端

若要调用WCF服务的操作,则客户端首先需要导入服务契约到客户端本地描述(Native Representation)中。如果客户端使用WCF,则调用操作的常见做法是使用代理。代理是一个CLR类,它公开了一个单独的CLR接口用以表示服务的契约。代理完全封装了服务的每一个方面:服务的位置、实现技术、运行时平台及通信传输。

(1)生成代理类和配置文件

方式一:直接添加服务引用,如下图


添加服务引用时必须确定WCF服务端正在运行中,否则地址无法访问。

方式二:通过命令行工具SvcUtil.exe生成代理。

我们知道Web Service是通过WSDL对外提供服务的描述,以便客户端能够通过WSDL知道这个Web Service所包含的方法、方法的签名等信息,客户端通过WSDL就能知道怎么去调用这个Web Service。

到了WCF,微软依然采用WSDL来提供WCF服务描述。

前面服务端宿主程序的配置,添加了一个 ,目的就是让服务端对外提供WSDL形式的服务Metadata描述。

微软也提供了Secutil.exe工具来通过WSDL生成客户端代理类和契约配置文件。

选择菜单“开始”--->“Microsoft Visual 2008”--->"Visual Studio Tools"--->"Visual Studio 2008命令提示"命令。启动VS2008的命令行窗口。

输入:svcutil.exe/language:c#/out:Client.cs/config:app.config。

该命令指定了要生成代码的语言、代理类代码文件和配置文件名,以及WCF服务端的地址。

命令运行时必须确定WCF服务端正在运行中。

运行以上命令会生成两个文件Client.cs 和 app.config。将这两个文件添加到客户端项目中即可。

(2)使用WCF客户端调用服务

通过以上两种方法产生的代理类,我们就很轻松地就像使用本地方法一样地调用WCF服务方法了,这一点基本上和调用Web Service 相同。

 ServiceReference1.Service1Client wcfClient = new WCFClientApp.ServiceReference1.Service1Client();

WCF开发简简单单的六个步骤 WCF开发简简单单的六个步骤 分布式开发 分布式开发分布式开发分布式开发 立即下载

相关推荐

C#WCF和WEB项目接口开发实际案例

自己项目中开发的服务器接口案例。增删改查基础案例。

Visual Studio 2019 WCF配置

Visual Studio 2019 创建 WCF服务 找不到,则需要安装Visual Studio的Windows Communication Foundation组件

Violinlins 1847

如何利用ADS中的耦合线设计带通滤波器并转换为HFSS模型

耦合线带通滤波器是一种常用的微带滤波器形式,由多个长度为四分之一波长的耦合线节组成,在所需频点形成谐振,构成滤波器的频率响应特性。首先我们先来了解一下耦合线带通滤波器的电路结构,见下图:包括两对耦合线,中间为公共连接点,其中两对耦合线的偶奇模阻抗为(Z1e,Z1o)和(Z2e,Z2o,端口输入阻抗为Z0)。2.指定一个初始奇偶模值,ADS优化出一个合适的结果,通过奇偶模值利用linecalc工具计算出微带耦合线尺寸。假设中心频率为2GHz,则对应频点的电长度为。5.运行结果,两个软件仿真结果基本一致。

auqihc的博客 2229

WCF分布式开发步步为赢(2)自定义托管宿主WCF解决方案开发配置过程详解

Posted on 2009-03-25 00:22 Frank Xu Lei 阅读(3206) 评论(51)  编辑 收藏 网摘 所属分类: WCF分布式开发步步为赢, SOA and EAI <!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="ht

微软特邀讲师 老徐FrankXuLei 的专栏 3959

WinForm轻松打造AntDesign现代化工具栏

摘要: 本文介绍如何在WinForm中利用AntdUI库实现AntDesign风格工具栏,包括安装配置、动态生成按钮/下拉菜单、布局优化及主题美化。通过AntButton、AntDropdown等控件结合事件绑定,可快速构建支持图标、工具提示、权限控制的现代化工具栏,并解决常见图标加载、布局错乱问题。最后提供代码示例与响应式设计技巧,助你打造高效美观的WinForm界面。 (字数:150)

java专栏 1593

Transformer——从原理、模型架构到内部细节介绍

Transformer模型是一种基于注意力机制的深度学习模型,最早由Google在2017年的论文《AttentionIsAllYouNeed》中提出。自其问世以来就迅速席卷了自然语言处理他(NLP)领域,并在各类主流任务上取得了新的突破,包括机器翻译、语言建模、序列标注和文本分类等。在NLP领域取得巨大成功后,迅速扩展到了计算机视觉(CV)领域,并带来了革命性的变化。这种基于自注意力机制的深度学习模型,不仅在NLP任务中力压群雄,也成为CV领域的新宠。

小拉拉的博客 1万+

我的WCF项目系列之五----WCF 面向对象开发

在学习WCF之前,就见到过另一种编程思想,叫做面向服务开发,哈哈,当时不甚了了。 前面提到,我之前一直用Delphi开发的,所以是学习的Delphi面向对象开发,记得足足有3个多月,写了22万行代码,才算是明白面向对象开发。对我以后的工作和学习打下了结实的基础。 很长时间,我都是用WCF开发服务,用Delphi开发客户端,其中数据通过WCF交互的部分没有用到面向对象开发的思想,一直到...

diechiqiang6924的博客 165

raw_count、tpm、fpkm、rpkm如何选择

转录组测序中常见的数据类型有:raw_count、tpm、fpkm、rpkm。本文进行简单辨析: 一、概念 1 raw_count RNA-seq数据中,raw_count一般是指mapped到基因外显子区域的reads数目。比如说htseq,STAR,或者RSEM等NGS分析流程计算产生的counts值。其中RSEM(RNA-Seq by Expectation-Maximization),考虑到一条read 可能会匹配多个exon位置,故而其产生的为expected_count。 2 TPM

weixin_59289660的博客 1万+

wcf开发的六个步骤

wcf开发的六个步骤 2008-10-09 12:26 1、定义WCF服务契约 A.项目引用节点右键添加System.ServiceModel引用。 B.在代码文件里,添加以下命名空间的引用: using System.ServiceModel; using System; C. 新建一个命为ICustomerService 接口,并添加一个获取客户信息的方法定义名为Cust

wangwenism的专栏 725

避开集成插件!手把手教你用URL登录实现Finereport与致远OA的无缝跳转

本文详细介绍了如何通过URL登录机制实现Finereport与致远OA的无缝跳转,无需复杂插件配置。文章涵盖用户体系同步、环境配置、URL登录核心设置及安全加固方案,特别适合企业数字化转型中BI工具与OA系统的轻量化集成需求。

weixin_29215815的博客 75

微信小程序(云开发) - 实现微信小程序拼团功能+前后台源码/数据库设计,开团参团、自动成团、微信分享链接URL参与拼团、组团人数/倒计时/实时数据、设置拼团人数限制等(拼团退款处理逻辑、订单同步等)

实现微信小程序云开发拼团功能,云开发小程序--微信拼团设计实现,微信小程序实现秒杀、拼团等效果,微信小程序云开发拼团源码完整版 包含前后台和数据库,拼团商城小程序开发,分销,拼团,社群团购,微信小程序—判断参团人数(设置拼团剩余人数数组)拼多多拼团小程序开发,微信云开发教程怎么实现微信小程序云开发拼团功能?云开发如何实现拼团,拼团小程序怎么弄,微信小程序案例:拼团模块,需要朋友助力,详细源码demo示例,如何做拼团功能,云开发小程序如何做拼团功能,外卖电商拼团,仿拼多多拼团,拼团后退款怎么办,拼团后订单管理

🏆 前端领域优质创作者 4628

WCF开发入门的六个步骤

在这里我就用一个据于一个简单的场景:服务端为客服端提供获取客户信息的一个接口读取客户信息,来完成WCF开发入门的六个步骤。 1.       定义WCF服务契约A.      项目引用节点右键添加System.ServiceModel引用。B.      在代码文件里,添加以下命名空间的引用using System.ServiceModel;using System;C.   

shuilv2000的专栏 619

AI测试:手把手教你用AI做桌面自动化「喂饭教程」

本文介绍了基于MCP协议的DesktopCommanderMCP自动化工具,通过自然语言指令实现桌面操作。系统采用客户端-服务器架构,支持应用程序管理、文件操作、屏幕控制等功能。详细说明了环境搭建步骤,包括Python和Node.js依赖安装、API密钥配置及MCP服务部署。通过实战案例展示了文件整理、批量截图等典型应用场景,并分享了任务描述优化、权限控制等最佳实践。该方案能显著提升重复性桌面操作的效率,让AI成为智能办公助手。

blues_C的博客 851

WCF开发六步骤

1、定义WCF服务契约A.项目引用节点右键添加System.ServiceModel引用。B.在代码文件里,添加以下命名空间的引用:using System.ServiceModel;using System;C. 新建一个命为ICustomerService 接口,并添加一个获取客户信息的方法定义名为CustomerInfomation,返回字符串类型的客户信息。D.为接口ICustomerSe...

weixin_30730151的博客 161

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[转]WCF开发简简单单的六个步骤

本文转自:http://www.cnblogs.com/xuanfeng/archive/2008/01/09/1030835.html 在这里我就用一个据于一个简单的场景:服务端为客服端提供获取客户信息的一个接口读取客户信息,来完成WCF开发入门的六个步骤。 1.       定义WCF服务契约 A.      项目引用节点右键添加System.ServiceModel引用。 B.   ...

weixin_34318956的博客 89

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: IIS&nbsp;状态代码-http错误大全
下一篇: Asp.net利用Jquery动态添加表格的行数
绝凌峰
博客等级 码龄18年 28粉丝 183原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值