本文适用于自托管Service。
我们要建立一个最简单的WCF程序,包括Service、ServiceHost和Client。
1)创建一个空的解决方案,起名为WCFBehaviorSolution,如下图所示(反正写blog不废纸,又不是写书,多截些图,读者不会骂我)
2)创建自托管Service,这是一个WCF Service库,专门适用于WCF自托管项目的:
创建项目后,WcfServiceLibrary1中存在3个文件:
IService1和Service1,这是契约及其实现类,不要动它们,因为我要实现一个最简单的WCF示例。
App.config,这是配置文件。我们稍候要用到它。
2)创建ServiceHost,这是一个控制台程序,起名为ServerConsoleApplication。
既然是自托管,那就要添加对WcfServiceLibrary1的引用,注意只是简单的Add Reference,而不是Add Service Reference。
同时,因为ServiceHost是服务的宿主,所以我们要把WcfServiceLibrary1项目中的App.config剪切到ServiceHost项目中,注意是剪切,而不是复制,让这个配置文件只存在于ServiceHost项目中。
现在让这个ServiceHost运行起来,于是我们在ServerConsoleApplication项目的Main函数中,敲下如下代码:
static void Main(string[] args) { using (ServiceHost host = new ServiceHost(typeof(Service1))) { host.Open(); Console.WriteLine("Service started."); Console.ReadKey(true); } }
3)创建Client,这也是一个控制台程序,起名为ClientConsoleApplication。
为了方便在Client添加对Service的引用,我建议大家,同时打开两个WCFBehaviorSolution解决方案,其中一个解决方案作为Service,将ServerConsoleApplication设置为启动项目(同时将ClientConsoleApplication项目unload):
按下F5,于是该Service就运行起来了:
查看App.config,这个Service的地址是http://localhost:8731/Design_Time_Addresses/WcfServiceLibrary1/Service1/,记住它,下面我们要用到。
与此同时,我们在另一个解决方案中,将ClientConsoleApplication设置为启动项目(同时将ClientConsoleApplication和WcfServiceLibrary1项目都unload):
这样就可以在ClientConsoleApplication项目中添加对Service的引用了,输入上面的Service地址,http://localhost:8731/Design_Time_Addresses/WcfServiceLibrary1/Service1/,检索到该Service,点击OK按钮将其添加到项目中:
接下来,我们在ClientConsoleApplication项目的Main函数中,调用这个Service的GetData方法:
static void Main(string[] args) { ServiceReference1.Service1Client client = new ClientConsoleApplication.ServiceReference1.Service1Client(); string price = client.GetData(1982); Console.WriteLine(price); Console.ReadKey(true); }
至此,一个WCF创建完毕。
注意几点,我们只是运用Visual Studio随便的点了点,大致写了几行程序。关于其原理,请参见我之前的文章《WCF的一些QA》。
本文代码下载:WCFBehaviorSolution0.zip
读到这里,是不是觉得太简单了,和自定义行为没半点关系,别急,下文开始加荤的,本文只是建立基本的测试环境。