WCF概要

WCF:Windows Communication Foundation

一、特点概述:

1.统一ASMX, .NET Remoting, 与EnterpriseServices的开发模型:①为各种应用提供单一的编程模型;②基于配置驱动的协议选择,消息格式,进程分配等等

2.面向服务:①构建面向服务的系统设计② 简化实现SOA的方法

3.松耦合:①并没有限制在特定的协议,编码格式,或者主机环境上②所有的选项都可配置

4.可交互:支持Web Services的核心标准

5.已经批准和还未被批准的内容:在可扩展性方面能够快速适用新的协议和更新

6.整合性: 整合Microsoft早期的技术如:COM, Enterprise Services, MSMQ

二、原理示意图:


实现代码:

代码结构


简单的业务逻辑类:HelloIndigoService.cs

using System;
using System.ServiceModel;

namespace HelloIndigo
{
    [ServiceContract(Namespace="http://www.monkeyfu.net")]
    public interface IHelloIndigoService
    {
        [OperationContract]
        string HelloIndigo(string message);
    }

    public class HelloIndigoService : IHelloIndigoService
    {
        #region IHelloIndigoService Members
        public string HelloIndigo(string message)
        {
            return string.Format("Receivied message at{0}:{1}", DateTime.Now, message);
        }
        #endregion
    }
} 

服务端:

using System;
using System.Collections.Generic;
using System.Text; 

//WCF使用到的命名空间
using System.ServiceModel;
using System.ServiceModel.Dispatcher;

namespace Host
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServiceHost host = new ServiceHost(typeof(HelloIndigo.HelloIndigoService)))
            {
                host.AddServiceEndpoint(typeof(HelloIndigo.IHelloIndigoService), new NetTcpBinding(), "net.tcp://localhost:9000/HelloIndigo");
                host.Open();
                Console.ReadLine();
            }
        }
    }
}

客户端:

using System;
using System.Collections.Generic;
using System.Text;

using System.ServiceModel;
using Client.localhost;

namespace Client
{
    [ServiceContract(Namespace = "http://www.monkeyfu.net")]
    public interface IHelloIndigoService
    {
        [OperationContract]
        string HelloIndigo(string message);
    }

    class Program
    {
        static void Main(string[] args)
        {
             IHelloIndigoService proxy = ChannelFactory<IHelloIndigoService>.CreateChannel(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:9000/HelloIndigo"));
             string s = proxy.HelloIndigo("Hello from client...");
            Console.WriteLine(s);
            Console.ReadLine();
        }
    }
}

原理概述:客户端和服务器端保存相同的接口(契约),至于这个契约可以由服务器端直接发布为服务,这个需要在Config里进行配置:
 <endpoint binding="mexHttpBinding" contract="IMetadataExchange" address="mex"/>

时间: 2024-10-26 05:56:27

WCF概要的相关文章

WCF REST架构简单网站

C# 3.5 WCF REST架构简单网站 前言 以前在微软的平台,架构一个网站,需要传统的数据库处理代码,业务逻辑层代码,前端的页面处理,还有交互程序处理这几部分的紧密结合,可以说解耦比较困难.网站开发的难度高,更新成本的难度也就高了.就我经验来说,一个简单的网站必须是一个可扩展,易跨平台数据复用,易维护的架构.我在这里抛砖引玉的说说我使用的架构:数据库 +REST Server+WEB(MVC?) 在下面的文字我尽量少做细节描述,把我目前的做法和大家分享一下就是了. 下载范例 概要 在MS平

WCF中的REST架构二 (支持AJAX的WCF服务

我在昨天的文章WCF中的REST架构一(REST 概述)谈了REST的基本概要,并提出了从HI REST (高REST)到 LO REST (低REST) 的RESTFULness(REST度)的概念.在今天的文章中,我将详细介绍大家可能最为熟悉的REST风格的WCF 服务:支持AJAX的服务.此类服务应属于LO REST的范畴.现在很多人直觉地将"好"等同于"高大全",因而低估了这种LO REST实现的价值.本篇将告诉你这决非事实,支持AJAX的WCF服务是足够强

工作流服务-使用 WCF和WF 4的工作流可视化设计

开发人员越来越多地采用面向服务的体系结构 (SOA) 作为构建分布式应用程序的方式.对于缺乏经验的人,设计和实现面向服务的分布式应用程序可能会令人生畏.然而,Microsoft .NET Framework 4 使得使用 Windows Workflow Foundation (WF) 实现 Windows Communication Foundation (WCF) 服务变得比以往任何时候都更简单. WCF 工作流服务为编写长时间运行.持久的操作或服务(其中通过排列操作的顺序强制实施应用程序协

WCF学习(六):实例

准备技术: WCF服务契约.数据契约等基础知识 Donet基本开发 内容概要: 三种实例激活类型 单调服务 会话服务 单例服务 实例类型 WCF支持三种实例类型:PerCall.PerSession.Single.PerCall就是单调服务会为每次客户端的请求去分配一个新的服务实例:PerSession会为每次客户端连接分配一个实例:Single所有的客户端会去共享一个相同的服务实例. WCF是通过ServiceBehavior特性中的InstanceContextMode属性来告诉服务实例采用

初识WCF之使用配置文件部署WCF应用程序

     二月份的开头,小编依旧继续着项目开发之路,开始接触全新的知识,EF,WCF,MVC等,今天小编来简单的总结一下有关于WCF的基础知识,学习之前,小编自己给自己提了两个问题,WCF是什么?WCF能用来做什么?WCF具有哪些优点?带着这样的问题,小编开始进行了一番搜索,一下是小编整理的结果.         WCF是什么?         WCF(Windows Communication Foundation)是用于构建面向服务的应用程序的框架 ,是由微软发展的一组数据通信的应用程序开发

使用AppFabric 承载WCF和WF服务【注意点和问题的解决方法】

前面几个文章  http://www.cnblogs.com/2018/category/263041.html 接了Appfabric的概要和分析,实际使用中还有一些注意的问题,总结一下. 数据库访问 由于IIS应用池的账户[默认BUILTIN\IIS_IUSRS]设置不同,因此数据库需要对这个用户赋予权限,否则访问数据库会出现问题,出现问题时在Windows日志中会有记录 Widnows 事件查看器 如果出现问题,可以先察看这个里面是否记录了相关信息,这个是比较重要的一个线索,许多的错误和异

在 WCF 中使用高效的 BinaryFormatter 序列化

本文将定义一个 WCF 终结点行为扩展,以在 WCF 中使用更高效的 BinaryFormatter 进行二进制序列化,并实现对是否使用传统二进制序列化功能的可配置. 介绍 实现步骤 使用方法 效果   介绍 在 OEA 框架中,是使用 WCF 作为数据传输框架.但是使用 WCF 内部的二进制序列化,序列化后的数据大小,要比使用传统的 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 类进行序列化后的数据大小要大得多.作

wcf 报内部错误,无法处理该请求。怀疑是sql的问题

问题描述 wcf 报内部错误,无法处理该请求.怀疑是sql的问题 用.net 4.0 + mysql写WCF的事务处理例子. 不加sql相关的东西都没问题. 加上就报内部错误,而且没有详细错误,也不知道为什么,我在配置文件开了debug,并且都加try了,还是没有详细信息. 测试了好几次,就怀疑是SQL的这部分有问题,但是我还看不出哪里的问题.请教. [OperationBehavior(TransactionScopeRequired=true)] public void intoMoney(

WCF 服务应用程序与 服务库之间的区别

简单理解,        WCF服务库,可以认为是一个包含WCF服务以及契约定义的类库.这儿库还不能直接运行,你可以在其他项目里引用,在宿主里启用托管这个库.而WCF应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定义,可以直接看到运行的效果.此项目模板应该是基于IIS托管的程序.        前者一般考虑WCF服务设计的时候,服务类的定义为单独的库,可以为其它项目使用.提高代码的复用性.        后者在开发基于IIS托管的WCF服务程序时,比较多见,自学的时候也可以使