实例来自:JustACoderWCF博客简单实例一:1. Service1.csview plaincopy to clipboardprint?   namespace WCFStudy1  
    {  
      问题一: [ServiceContract]   
表示的什么?有什么作用,怎么很多方法的上上面都有这个?
 

   public interface IService1  
    {  
           [OperationContract]  
          string SendMessage(string clientInput);  
       }  
     
  public class Service1 : IService1  
      {  
   
     #region IService1 Members  
       public string SendMessage(string clientInput)  
        {  
               return string.Format("Server Get Message: {0}", clientInput);  
           }  
    
           #endregion  
       }  
   }  namespace WCFStudy1 
{ [ServiceContract] public interface IService1
 { [OperationContract] string SendMessage(string clientInput); } public class Service1 : IService1
 { #region IService1 Members
 public string SendMessage(string clientInput) { return string.Format("Server Get Message: {0}", clientInput); } 
#endregion } }2. Program.cs   1. using System;  
   2. using System.Collections.Generic;  
   3. using System.Linq;  
   4. using System.Text;  
   5. using System.ServiceModel;  
   6.   
   7. namespace WCFStudy1  
   8. {  
   9.     class Program  
  10.     {  
  11.         static void Main(string[] args)  
  12.         {  
  13.             // 创建一个独立AppDomain作为服务端。  
  14.             AppDomain.CreateDomain("Server1").DoCallBack(delegate  
  15.             {  
  16.                 ServiceHost host = new ServiceHost(typeof(Service1));  
  17.                 host.AddServiceEndpoint(typeof(IService1),                  //契约(C)  
  18.                                         new BasicHttpBinding(),             //绑定(B)  
  19.                                         "http://localhost:9999/myservice"); //地址(A) 
问题二:这里的AppDomain指什么?
契约、绑定、地址有什么怎么回事?
 

  20.   
  21.                 host.Open();  
  22.             });  
  23.   
  24.             // 下面是客户端  
  25.             ChannelFactory<IService1> factory = new ChannelFactory<IService1>(  
  26.                 new BasicHttpBinding(),  
  27.                 "http://localhost:9999/myservice");  
  28.             IService1 client = factory.CreateChannel(); 
问题三:“ ChannelFactory<IService1> ”表示什么?有什么功能?
 

  29.   
  30.             var reply = client.SendMessage("Hello WCF");  
  31.             Console.WriteLine(reply);  
  32.   
  33.             Console.Read();  
  34.         }  
  35.     }  
  36. }  

问题四:“.NetFramwork3.5”下WCF有五个项目类型,分别是“WCF Service Library、Sequential Workflow Service Library、”State Machine Workflow Service Library、WCF Service Application、Syndication Service Library“,这五种项目类型分别表示什么?这个实例应该是哪一种类型的项目?问题五:为什么”客户端“和”服务器端“都在一个类里面。问题六:谁能给俺讲讲这个实例的表是什么意思?

解决方案 »

  1.   

    WCF 3个基本概念就是A(地址) B(绑定) C(契约)有这3个东西,才能实现WCF,地址很好理解,WCF作为一种远程调用的平台,没地址你上哪调用?
    绑定就像你指定调用服务的方法方式(飞机,轮船,火车,汽车,都可以到目的地,但总要选一个吧)
    通过契约暴露服务,这是WCF的约定,也就是服务必须用 [ServiceContract] 里面必须有 [OperationContract] 数据契约必须用 [DataContract](也不是必须,Serializable就可以)
    对于 Contract 理解不了,就死记就好了。1+1必须等于2一样。ChannelFactory就是一个工厂类。通过我指定的A,B,C创建一个客户端代理的实例。
    (因为我知道地址,服务的定义(接口),还指定了调用的方式:BasicHttpBinding)还有个AppDomain的概念(简单的说AppDomain就相当于一个“进程”)
    这个最简单实例,可能对初学者来说反而不好理解了。总之这个示例就是偷懒的最终结果,不符合实际的WCF应用。不看也罢~呵呵
      

  2.   

    谢谢您,JustACoderWCF和Socket通信有什么差别么???客户端代理什么意思?可以理解为调用服务器服务程序的客户端实例吗?.NetFramwork3.5”下WCF有五个项目类型,分别是“WCF Service Library、Sequential Workflow Service Library、”State Machine Workflow Service Library、WCF Service Application、Syndication Service Library“,这五种项目类型分别表示什么?这个实例应该是哪一种类型的项目?这里的项目能否给解释下,小弟的英语不太好谢谢,一会会有第二节,要用两~四天的时间看完您的博客,期间会吧问题贴出来,帖子会一起结的
      

  3.   

    都给1楼回答了
    补充一下,还有寄宿这个概念 也就是那个AppDomain的运用
    在某一个进程中划分一段空间,把wcf的服务程序放进该空间中运行