您的位置:首页 > 其它

WCF——1.2 WCF服务、控制台宿主、控制台客户端

2013-11-26 15:10 267 查看
原文:点击打开链接

自己对照做的demo: 点击打开链接





WcfServiceLib - 服务契约的实现; *ConsoleHost工程 – Wcf宿主; *ConsoleClient工程 - Wcf客户端

创建WcfServiceLib工程(选WCF Service Library工程模板: VS为我们自动添加一个IService1.cs和Service1.cs)




Host工程里引用WcfServiceLib工程




将WcfServiceLib里App.config移动到ConsoleHost工程里,删掉Lib工程里的App.config




Host工程的Program.cs添加下面的代码,右击Builder工程

[c-sharp] view
plaincopy

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.ServiceModel;

using WcfServiceLib;

namespace WCFStudy2ConsoleHost

{

class Program

{

static void Main(string[] args)

{

using(var host = new ServiceHost(typeof(Service1)))

{

host.Open();

Console.WriteLine("Service start.");

Console.Read();

}

}

}

}

运行 ConsoleHost工程 bin/debug 下面的 exe(这一步是为了生成客户端代理,需要启动Host)
在Client工程里通过添加 Service References,生成客户端Proxy,关闭exe




在Client工程的Program.cs里添加如下代码。

[c-sharp] view
plaincopy

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace WCFStudy2ConsoleClient

{

class Program

{

static void Main(string[] args)

{

MyWcfSvc.Service1Client client = new MyWcfSvc.Service1Client();

var result = client.GetData(123);

Console.WriteLine(result);

Console.Read();

}

}

}

F5 运行Solution里的Host, 再右击Client工程选Debug的Start new instance方式,运行Client

运行结果:







由于ServiceHost实例是被创建在应用程序域中,必须保证宿主进程在调用服务期间不会被关闭,因此利用Console.Read()来阻塞进程,以使得控制台应用程序能够一直运行,直到人为关闭应用程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: