WCF 入门教程一(动手新建第一个WCF程序并部署)-阿里云开发者社区

开发者社区> 开发与运维> 正文

WCF 入门教程一(动手新建第一个WCF程序并部署)

简介: WCF的相关概念信息就不在此赘述了,网上一搜一大把。 现在让我们动手搭建我们的第一个wcf程序吧,具体流程如下: 1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。 2、建立完成后如下图所示: 3、删除系统生成的两个文件IService1.cs与Service1.svc(或者自己重命名,在系统生成的基础文件中进行编码,此处感觉重命名麻烦,于是

WCF的相关概念信息就不在此赘述了,网上一搜一大把。

现在让我们动手搭建我们的第一个wcf程序吧,具体流程如下:

1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序。


2、建立完成后如下图所示:


3、删除系统生成的两个文件IService1.cs与Service1.svc(或者自己重命名,在系统生成的基础文件中进行编码,此处感觉重命名麻烦,于是选择删除--新建)

4、添加自定义的WCF【服务文件】Test.svc


5、此时vs2010会自动生成WCF接口文件ITest.cs


6、我们在ITest中定义WCF方法TransferTest,在Test.svc.cs对该接口的方法进行实现,代码如下:

<span style="font-size:14px;"><pre name="code" class="csharp">namespace WCFServiceDemo
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“ITest”。
    [ServiceContract]
    public interface ITest
    {
        [OperationContract]
        string TransferTest(int num);
    }
}

namespace WCFServiceDemo
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Test”。
    public class Test : ITest
    {
        public string TransferTest(int num)
        {
            return  "第"+num+"次WCF调用成功!";
        }
    }
}
</span>



可以看到,在WCF中的接口与普通接口的区别只在于两个上下文,其他的和我们正常学习的接口一样。定义这个上下文要添加System.ServiceModel的引用。[ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。[OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。

 7、此时我们的第一个WCF服务程序就建立好了,将Test.svc“设为起始页”,然后F5运行一下试试,如下图所示,VS2010自动调用了WCF的客户端测试工具以便我们测试程序:

8、我们双击上图中的 TransferTest() 方法,出现如下图:

在请求窗口中的值中输入参数“99”,然后点击“调用”,在响应窗口中会出现返回值“"第99次WCF调用成功!",说明测试成功,点击下面的XML也可以看到XML的数据传输。

9、我们设计测试的场景是在生产中经常应用的场景,把WCF程序寄宿在IIS之上。假设场景如下:【A服务器】和【B服务器】。我们把我们刚刚建立的WCF程序“部署”在【B服务器】上,我们的目标是在【A服务器】的应用程序来访问【B服务器】的WCF程序,实现服务器端的应用程序通讯。

首先我们将WCF应用程序发布一下,然后部署在B服务器的IIS之上

部署步骤如下:http://blog.csdn.net/jiankunking/article/details/44118911

10、在客户端【A服务器】]创建服务的引用

我们这里以WinForm应用程序为例,建立地物理地址为【B服务器】的ip,

新建解决方案,并且创建WinForm应用程序的项目。命名为:WCFClient,如下图所示:

添加在之前部署的服务的引用。如下图所示:

点击“前往”-->“确定”按钮,效果如下:

此时我们完成了对服务的引用。我们再次查看解决方案,里面多了Service References的文件夹,通过资源管理器打开后里面多了些文件,这些文件用于客户端向服务端的调用。

11、调用WCF服务端的方法

将WCFClient项目设为:启动项目

Form窗体上,添加一个button,并添加button1_Click事件,在button1_Click具体的调用方法如下:

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

        private void button1_Click(object sender, EventArgs e)
        {
            WCFClient.WCFService.TestClient tc = new WCFService.TestClient();
            string str = tc.TransferTest(999999);
            MessageBox.Show(str);

        }
    }
}
F5,点击按钮,效果如下:


小注代码中也可以 

//引用WCF服务的名称空间
 using WCFClient.WCFService;
以方便后面变量的声明

通过以上的例子,我们完成了由A服务器的应用向B服务器中WCF提供的方法的调用。

12、代码下载:

http://download.csdn.net/detail/xunzaosiyecao/8481267


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章