WCP初体验

WCF是MS对于WebService/Remoting/消息服务的整合.

这部分一定会在今后的网络环境中大展拳脚.因此我就来学习一下.

首先就是进入msdn的首页,发现首页改版了,清爽很多.内容索引做的更好了.

然后进入我想要找到的页面:http://msdn.microsoft.com/zh-cn/library/ms735119.aspx

首先浏览了一下概述,和我心中想的功能差不多.

接着就是入门教程.跟着MS的实例做了一个"快速入门",感觉挺爽的.以前觉得很难实现的客户端/服务器段交互变得很容易了.

WCF服务器端主要是:

定义服务-->实现服务-->配置服务

中间端:

承载服务-->运行服务

客户端:

创建客户端-->配置客户端-->使用客户端.

其中,比较难于理解的是"承载服务".承载服务的意思是说, wcf的服务可以发布为多种方式:如TCP/IIS/named Pipe等.而承载服务就是选择一种渠道来承载服务.

从编程的角度看,首先是建立一个console application, 是service. 这个Service. 然后运行起来这个Service,运行的方式肯定是command line了,运行的期间这个黑窗口不可以关. 这个时候,最神奇的是, 我们定义的服务可以通过http访问了,而http访问的地址在iis没有设置.

服务器端

web看服务器端

然后建立client的Console Application, 调用服务即可.

其实Client的代码多半也是靠SvcUtil.exe生成的.

客户端

===

代码:

client:

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            EndpointAddress epAddress = new EndpointAddress("http://localhost:8000/ServiceModelSample/Service/CalculateService");
            CalculaterClient client = new CalculaterClient(new WSHttpBinding(), epAddress);

            Console.WriteLine(client.Add(3, 4));
            Console.WriteLine(client.Subtract(5, 3));


            client.Close();
        }
    }
}
服务器端:
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;

namespace WCFTest.Service
{
    [ServiceContract(Namespace = "http://WCFTest.Service")]
    public interface ICalculater
    {
        [OperationContract]
        int Add(int a, int b);

        [OperationContract]
        int Subtract(int a, int b);
    }



    class Program
    {
        static void Main(string[] args)
        {
            //基址
            Uri baseAddres = new Uri("http://localhost:8000/ServiceModelSample/Service");
            ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddres);


            try
            {

                //承载服务
                selfHost.AddServiceEndpoint(typeof(ICalculater), new WSHttpBinding(), "CalculateService");

                ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
                smb.HttpGetEnabled = true;

                selfHost.Description.Behaviors.Add(smb);


                selfHost.Open();
                Console.WriteLine("Service Begin...");
                Console.WriteLine("Press <enter></enter> to Stop Service");
                Console.WriteLine();
                Console.ReadLine();

                selfHost.Close();
            }
            catch (CommunicationException ex)
            {
                Console.WriteLine("An exception occured::" + ex.Message);
                selfHost.Abort();
            }


        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值