纯手工的WCF

一、创建一个类库程序,定义服务协定IOperationService和服务实现OperationService。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace ServiceLib
{
    [ServiceContract]
    public interface IOperationService
    {
        [OperationContract]
        int Add();
        [OperationContract]
        int Multi();
    }
}

  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace ServiceLib
{
    public class OperationService:IOperationService
    {

        public int Add()
        {
            return 5;
        }

        public int Multi()
        {
            return 10;
        }
    }
}

  二、创建一个控制台程序作为宿主。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Channels;
namespace MyServiceHost
{
    class Program
    {
        static void Main(string[] args)
        {
            using (HostService hostService = new HostService())
            {
                hostService.OpenService();
                Console.ReadLine();
            }
        }
        public class HostService:IDisposable{
            /// <summary>
            /// 定义服务对象
            /// </summary>
            private ServiceHost host;

            public HostService(){
                this.CreateOperationService();
            }
            public ServiceHost Host
            {
                get { return host; }
            }
            /// <summary>
            /// 基地址
            /// </summary>
            public const string BASEADDRESS = "net.pipe://localhost";  //或者http、net.tcp 等
            /// <summary>
            /// 备用地址
            /// </summary>
            public const string OPERATIONSERVICEADDRESS = "Operation";
            public static readonly Binding OperationBingding = new NetNamedPipeBinding();
            /// <summary>
            /// 定义服务类型
            /// </summary>
            public static readonly Type ServiceType=typeof(ServiceLib.OperationService);
            /// <summary>
            /// 接口类型
            /// </summary>
            public static readonly Type ContractType = typeof(ServiceLib.IOperationService);
            /// <summary>
            /// 构建服务对象
            /// </summary>
            protected void CreateOperationService()
            {
                host = new ServiceHost(ServiceType, new Uri[] { new Uri(BASEADDRESS) });
                //为服务对象添加终结点
                host.AddServiceEndpoint(ContractType, OperationBingding, OPERATIONSERVICEADDRESS);
            }
            /// <summary>
            /// 释放空间
            /// </summary>
            public void OpenService()
            {
                Console.WriteLine("开始启动服务....");
                host.Open();
                Console.WriteLine("启动服务成功....");
            }
            public void Dispose()
            {
                if (host != null)
                {
                    (host as IDisposable).Dispose();
                }
            }
        }
    }
}

  三、创建一个控制台程序作为客户端,来测试服务的调用。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Channels;
using ServiceLib;
namespace ClientConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            using (OperationProxy proxy = new OperationProxy())
            {
                Console.WriteLine(proxy.Add().ToString());
                Console.WriteLine(proxy.Multi().ToString());
                Console.ReadLine();
            }
        }
        /// <summary>
        /// 硬编码定义服务协定
        /// </summary>
        [ServiceContract]
        interface IService
        {
            [OperationContract]
            int Add();
            [OperationContract]
            int Multi();
        }

        class OperationProxy : ClientBase<IOperationService>, IService
        {
            /// <summary>
            /// 硬编码定义绑定
            /// </summary>
            public static readonly Binding OperationBinding = new NetNamedPipeBinding();
            public static readonly EndpointAddress OperationAddress = new EndpointAddress(new Uri("net.pipe://localhost/Operation")); //Operation 表示宿主中定义的备选地址
            public OperationProxy()
                : base(OperationBinding, OperationAddress)
            {
            }
            public int Add()
            {
                return Channel.Add();
            }
            public int Multi()
            {
                return Channel.Multi();
            }
        }
    }
}

  

时间: 2024-10-04 23:16:22

纯手工的WCF的相关文章

JAVA+PHP+阿里云组件纯手工实现POP、SMTP、IMAP开发邮件服务器(二)

java开发邮件服务器的接收模块 用java建立socket服务端,监听端口25,实现SMTP协议.即可完成邮件服务器的接收模块. 这里要注意的是,SMTP协议其实可以分为两种.一种是你用手机.PC等客户端发邮件到邮件服务商的服务器的时候用的SMTP协议,这一类是需要登录验证的.一种是邮件服务商之间传递邮件的SMTP协议,此类协议是不需要登录的.比如你用Foxmail上你的QQ邮箱发送了一封邮件到163的邮箱.过程是这样的: 邮件从Foxmail通过SMTP协议发送到QQ邮箱的服务器. QQ邮箱

【OpenGL】“我叫MT”纯手工3D动画制作之1——基础介绍

最近在家研习面经,温习基础,索性花些时间将本科期间完成的一些学习之作整理出来,分享之余顺便水点经验 其实这个事情起源于一门“计算机图形与动画(Computer Graphics & Animation)”的外方课程,当初的外籍教师Tony教的很认真,对于这门课自己也投入了非常多的时间.言归正传,这里先介绍一些涉及的技术,熟悉的同学请跳过哈~ A.几何物体建模 带阴影的后面我会介绍到的哦~ 加下划线的后面我后面会举栗子的哦~ B.涉及的图形学技术与应用 C.动画技术 参考文献 1.王汝传,张登银,

【OpenGL】“我叫MT”纯手工3D动画制作之2——建立模型

最近在家研习面经,温习基础,索性花些时间将本科期间完成的一些学习之作整理出来,分享之余顺便水点经验 其实这个事情起源于一门“计算机图形与动画(Computer Graphics & Animation)”的外方课程,当初的外籍教师Tony教的很认真,对于这门课自己也投入了非常多的时间.言归正传,这里先介绍一些涉及的技术,熟悉的同学请跳过哈~ D.准备工作 需要的相关库有: • QuickTime 7.7.1 for Windows (主要用于播放动画与配音) • QuickTime SDK (开

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

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

纯手工获取的WINDOWS 7 32位 SP1后续补丁集ver201509的官方下载地址

虽然不是纯手工咖啡,但是对于一个微软操作系统封装爱好者来说,纯手工获取的WINDOWS 7 32位 SP1后续补丁集ver201509的官方下载地址应该比手工咖啡更香醇. 下面是手工获取的补丁列表: 截至到20150920,以后有空闲时间的话可以每个月更新一次,只含WINDOWS 7 32位系统的重要补丁,不含可选补丁,不含IE 9,IE 10,IE 11补丁,不含netframe 4.52的补丁(这个有netframe 4.52本身安装包): Windows 7 Service Pack 1 

纯手工定制西服怎么鉴别

纯手工定制西服怎么鉴别_百度经验 纯手工定制西服怎么鉴别 浏览:91 | 更新:2013-07-01 17:43 定制西服一定要量身定制才行,有些商家的西服说是定制,不过只是量一下尺寸然后再用早就做好的号衣稍做改动去应付,这个定制的时间很短,真正的定制西服工期很长,中间还有试衣修改的时间,这些都是必不可少的环节,如果没有试衣修改,做出来的衣服很难做到完美合适,这个你要在去商家那里的时候一定要问清,最好是拿商家的衣服亲自检验一番. 下面我教大家几个小窍门,很容易就能检验出是不是量身定制西服,首先有

【转】纯手工玩转 Nginx 日志

Nginx 日志对于大部分人来说是个未被发掘的宝藏,总结之前做某日志分析系统的经验,和大家分享一下 Nginx 日志的纯手工分析方式. Nginx 日志相关配置有 2 个地方:access_log 和 log_format . 默认的格式: access_log /data/logs/nginx-access.log; log_format old '$remote_addr [$time_local] $status $request_time $body_bytes_sent ' '"$re

一年纯手工打造的Java老A上册开始预售了

Java老A这本书写了很久,昨天终于开始在china-pub上开始预售了,其它网站可能会慢一点,不过既然叫预售,就肯定还没到货. 有兴趣的人可以去看看哈(后续其它网站地址也会在这里公开): http://search.china-pub.com/s/?key1=java%cc%d8%d6%d6%b1%f8&type=&pz=1 关于本书内容,请参考:http://blog.csdn.net/xieyuooo/article/details/38373409 里面有本书的所有目录信息,封面等

七夕节送礼不用愁,妹妹爱物多多,不妨进来看看,纯手工作品,价格优惠 ^^*

首语谐音手语,手的语言,即用最真心.纯手工打造的妹妹爱物—— ------------------------------------------------------ 每到各种节日,加班到吐血的IT男们,总是没什么时间准备礼物给女朋友,偶尔想起又不知道送什么的好,女朋友虽然心里不说,多少有些难过.现在推荐老婆的羊毛毡手工店,每一件都是亲手制作,特别是可以个性定制,女朋友收到一定很喜欢.我就是这么哄老婆的,嘿嘿 ^^* -------------------------------------