.net WCF简单实例详解(5)

时间:2022-09-05 20:13:02

本文为大家分享了.net WCF简单实例,供大家参考,具体内容如下

1.创建WCF项目

.net WCF简单实例详解(5)

2.系统自动生成IWcfService

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
  [ServiceContract]
  public interface IWcfService
  {
 
    [OperationContract]
    string GetData(int value);
 
    [OperationContract]
    CompositeType GetDataUsingDataContract(CompositeType composite);
 
    // TODO: 在此添加您的服务操作
  }
 
 
  // 使用下面示例中说明的数据约定将复合类型添加到服务操作。
  [DataContract]
  public class CompositeType
  {
    bool boolValue = true;
    string stringValue = "Hello ";
 
    [DataMember]
    public bool BoolValue
    {
      get { return boolValue; }
      set { boolValue = value; }
    }
 
    [DataMember]
    public string StringValue
    {
      get { return stringValue; }
      set { stringValue = value; }
    }
  }

(1)服务契约:ServiceContract(服务)和OperationContract  (方法)

(2)数据契约:DataContract(类)和DataMember(属性) 用于类和结构上

(3)消息契约:MessageContract 用于soap消息

3.WCF服务类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class WcfService : IWcfService
  {
    public string GetData(int value)
    {
      return string.Format("You entered: {0}", value);
    }
 
    public CompositeType GetDataUsingDataContract(CompositeType composite)
    {
      if (composite == null)
      {
        throw new ArgumentNullException("composite");
      }
      if (composite.BoolValue)
      {
        composite.StringValue += "Suffix";
      }
      return composite;
    }
  }

4.服务配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<system.serviceModel>
  <!--配置绑定节点Start-->
  <bindings>
   <basicHttpBinding>
    <binding name="basicHttpBinding0" maxReceivedMessageSize="2147483647">
     <readerQuotas maxStringContentLength="2147483647"/>
     <security mode="None" />
    </binding>
   </basicHttpBinding>
   <netTcpBinding>
    <binding name="netTcpBinding0" maxReceivedMessageSize="2147483647">
     <readerQuotas maxStringContentLength="2147483647"/>
     <security mode="None" />
    </binding>
   </netTcpBinding>
   <wsHttpBinding></wsHttpBinding>
  </bindings>
  <!--配置绑定节点End-->
  
  <!--配置服务节点Start-->
  <services>
   <!--配置某一服务,在这里可以指定服务名称-->
   <service name="WcfServiceTest.WcfService">
    <endpoint address="aaa" binding="basicHttpBinding" bindingConfiguration="basicHttpBinding0"
     name="BasicHttpBinding_WcfService" contract="WcfServiceTest.IWcfService">
     <identity>
      <dns value="localhost"/>
     </identity>
    </endpoint>
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="netTcpBinding0"
     name="NetTcpBinding_WcfService" contract="WcfServiceTest.IWcfService">
     <identity>
      <dns value="localhost"/>
     </identity>
    </endpoint>
   </service>
  </services>
  <!--配置服务节点End-->
 
  <behaviors>
   <serviceBehaviors>
    <behavior>
     <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
     <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
     <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
   </serviceBehaviors>
  </behaviors>
  <protocolMapping>
    <add binding="basicHttpsBinding" scheme="https" />
  </protocolMapping
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
 </system.serviceModel>

5.iis部署WCF服务

.net WCF简单实例详解(5)

.net WCF简单实例详解(5)

6.添加客户端项目并添加服务引用

.net WCF简单实例详解(5)

7.Main程序中添加wcf服务并调用方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Program
 {
   static void Main(string[] args)
   {
     var client = new WcfService.WcfServiceClient();
     try
     {
       var str = client.GetData(2046);
       Console.WriteLine(string.Format("内容:{0}", str));
       client.Close();
     }
     catch (Exception ex)
     {
       Console.WriteLine("出现异常!");
       client.Abort();
     }
     Console.ReadLine();
   }
 }

8.客户端配置文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_WcfService" />
      </basicHttpBinding>
      <netTcpBinding>
        <binding name="NetTcpBinding_WcfService">
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>
    <client>
      <!--<endpoint address="http://localhost/WcfServiceTest/WcfService.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_WcfService"
        contract="WcfService.IWcfService" name="BasicHttpBinding_WcfService" />-->
      <endpoint address="net.tcp://localhost/WcfServiceTest/WcfService.svc"
        binding="netTcpBinding" bindingConfiguration="NetTcpBinding_WcfService"
        contract="WcfService.IWcfService" name="NetTcpBinding_WcfService">
        <identity>
          <dns value="localhost" />
        </identity>
      </endpoint>
    </client>
  </system.serviceModel>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。