在.NET开发中,WCF(Windows Communication Foundation)服务是一种常用的服务架构,它允许开发者构建服务和客户端应用程序之间的通信。通常,WCF服务托管在IIS中,可以通过添加服务引用的方式直接访问。但是,如果WCF服务是托管在控制台应用程序中,那么就不能直接添加服务引用,因为这些服务并不对外公开,无法直接访问。本文将介绍一种通过创建中间服务来访问控制台托管的WCF服务的方法。
系统要求:.NET Framework 4.0、Visual Studio 2010和Windows Phone 7SDK。为了演示这种方法,创建了以下项目:
解决方案中总共有9个项目:
ActualService项目包含实际服务的实现,它实现了Person对象的接口。以下是Service1类的一个示例:
public class Service1 : IService1, IServicePolicy
{
// 实现接口的方法
}
ActualServiceForPhone项目作为桥梁服务,它调用ActualService服务。
IPerson项目定义了服务和客户端都使用的接口。以下是IService1接口的一个示例:
[ServiceContract]
public interface IService1
{
// 定义服务操作
}
ServiceHost项目是一个控制台应用程序,用于托管WCF服务。以下是启动服务的代码示例:
using (ServiceHost host = new ServiceHost(typeof(Service1), new Uri[] { new Uri("http://localhost:60011", UriKind.Absolute) }))
{
// 打开服务
host.Open();
Console.ReadLine();
// 关闭服务
host.Close();
}
这两个项目是Silverlight 4.0的默认模板项目,包含一个按钮和一个网格,用于显示来自ActualService WCF服务的数据。
SLPhoneClient项目是一个Windows Phone 7Silverlight项目,包含一个按钮和一个列表框,用于显示来自ActualServiceForPhone的数据。
要运行项目,请按照以下步骤操作: