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"/>


目录
相关文章
|
存储 编解码 数据库
基于人脸识别的智能门锁系统
基于人脸识别的智能门锁系统
410 0
|
NoSQL Ubuntu 网络安全
docker安装redis并允许远程访问
docker安装redis并允许远程访问
docker安装redis并允许远程访问
|
12月前
|
人工智能 分布式计算 搜索推荐
元宇宙:通往未来数字世界的入口
【10月更文挑战第27天】元宇宙,一个融合虚拟现实、增强现实、人工智能和区块链等技术的多维度数字世界,正成为连接现实与虚拟的桥梁。它不仅提供沉浸式的社交、娱乐和商业体验,还预示着数字时代的深刻变革,对经济、文化和社会产生深远影响。本文探讨元宇宙的定义、特征、关键技术及其未来影响。
农场养成种树种植游戏系统开发案例详细丨dapp农场养成种植种树游戏系统开发规则玩法/设计案例/功能逻辑/源码部署
  农场养成种树游戏(Farm simulation tree planting game)是一类模拟农场生活的游戏。在这种游戏中,玩家扮演农场主或农民的角色,通过种植和护理树木,以及进行相关的农业活动,来管理和发展自己的农场。
|
网络协议 Java Go
技术笔记:KCP协议学习
技术笔记:KCP协议学习
632 0
|
缓存 前端开发 JavaScript
如何优化前端性能:一种全面的策略探讨
本文将介绍一种全面的前端性能优化策略,包括代码优化、资源加载、网络请求以及页面渲染等方面的技术手段和实践经验。通过综合运用这些方法,可以有效提升网站或应用的性能表现,提升用户体验和页面加载速度。
|
安全 网络协议 Linux
ip和端口介绍以及常用范围
ip和端口介绍以及常用范围
458 0
|
机器人 BI 数据格式
用八爪鱼RPA轻松实现员工社保管理,解放hr重复劳动!
八爪鱼rpa是一款强大的自动化工具,可以帮助企业实现员工社保管理的自动化。
|
缓存 运维 前端开发
大淘宝技术行业FaaS化实战经验分享
本文将分享我们在FaaS化过程中的经验,尝试回答关于FaaS的Why、What、How三个问题,给对FaaS有兴趣的同学提供一些实践经验。
1426 0
大淘宝技术行业FaaS化实战经验分享
JAVA远程读取服务器文件
JAVA远程读取服务器文件
817 1