由于项目当中用到了WCF,所以就简单的学了一些相关的知识,先不上基础知识了,先把自己做的第一个WCF和大家一起分享一下。
1.首先,建立了一个普通的空网站,用来做宿主。
2.在网站中新建了一个文本文件,具体如下图:
然后把它命名为“UserService.svc”。,其实里面只有一句话,如下:
<%@ServiceHost Debug="true" Service="Contract.UserServiceContract"%> ,具体指出服务契约所在的方法实现类。
3.下面开始我们疯狂的服务器端配置。
<system.serviceModel>
<!-- 以下手工配置 -->
<serviceHostingEnvironment >
<serviceActivations>
<add relativeAddress="UserService.svc" service="Contract.UserServiceContract" />
</serviceActivations>
</serviceHostingEnvironment>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBindingCfg" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288"
maxReceivedMessageSize="2147483647" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="Contract.UserServiceContract" behaviorConfiguration="ServiceBehavior">
<endpoint binding="basicHttpBinding" contract="Contract.IUserService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<!-- 以上手工配置 -->
</system.serviceModel>
这个配置的具体东西我也不是很清以后再补点基础知识,这上配置文件是我根据项目中的和博客园里网友的大作:http://www.cnblogs.com/haiyu/archive/2009/12/15/1625057.html
配置成功的。
服务器端的配置到此就结束了,其实这个配置我还是花了一定时间的,也是自己粗心吧,把服务契约的类名写错了。一个小时的挣扎,终于配好。
下面进行第二步,WCF的实现。
1.契约分两块,服务契约和数据契约
先说我的数据契约(UserDataContract.cs),这个比较简单。
没什么特别的,就是实体类“穿上马甲”。
再说服务契约(IUserService.cs);
也没有什么特别的,是新建了一个接口类,然后改装一个,加了个“马甲”,就变成上图中所示的了,其中Name,和Namespace是我自己随便写的。
下面就是对接口的实现。
上图中可以很清楚地看到对服务契约的实现。
下面就是调用WCF。
1.首先,建立一个控制台程序。
2.客户端添加服务引用,如下图:
记得改一下命名空间。
下面是客户端的配置。
应该是引用进来WCF之后会自动生成的,不过要改一改接收的虚拟BufferSize.
下面是调用的地方。
下面看看结果了: