基本看网上例子服务都是如下开启方式 简单服务类CalculatorService
using (ServiceHost host = new ServiceHost(typeof(CalculatorService)))
  { 
  host.Opened += (s, e) => Console.WriteLine("service is running...");
  host.Open();
  //Console.ReadLine();
  }
初学WCF,可能是概念搞错了,但也没心思沉下去翻大头书。我想知道 这个CalculatorService 类如何传参数进去。
public class CalculatorService:ICalculator
     {
        public double Add(double x, double y)
        {
           return x + y;
        }      //我想在这里写个验证函数
      //定义一个变量 clients=new  list<clientinfo>  
      // 这个clients 如果不在类里面定义,那么如何传参进来,如果在类里面定义,又如何被外部引用? 除了静态变量
      public bool verify(string pass )
       {  对  clients 进行操作   }
}譬如说我想建立一个客户列表对象 list<clientinfo>(非静态)来做密码验证这个客户列表如果建在CalculatorService  类里面,我如何取出来?又如果我建立在外面,又如何传递进去被CalculatorService类所引用?=================另外由CALLBACK 引发的客户端消息,可以直接messagebox,也可以直接写控制台消息,但如何把这个消息给发送到前台form?  我在网上翻到个例子,竟然是用sendmessage API来做,有其他办法么?   5:     class CalculateCallback:ICallback
   6:     {
   7:  
   8:         public void DisplayResult(double x, double y, double result)
   9:         {
  10:             Console.WriteLine("x + y = {2} when x = {0} and y = {1}", x, y, result);
  11:         }
  12:     }

解决方案 »

  1.   


    实际上,像我这样的,很多时候只是为了完成一个小案例,也许只是卡在一个概念上而已。我的目的也不在成为一个专家,上网的目的就是为了求知,网上大多WCF例子都没有点出我的疑问。也困扰了好几天了,所以才来求助。
      

  2.   

    蛋疼,感觉每次都是花了老久找不出答案,然后出分提问之后得到答案 切不到点子上。再然后继续百度 自己找到答案。问题其实不难,临门一脚,费了我三天时间,竟然没人知道,也是醉了。服务端实现服务契约类的实例模式,有三种类型,分别为PerCall-每次服务操作调用创建一次,调用完后进行销毁;PerSession-同一个会话期间创建一次,客户端代理第一次操作(IsInitiating = true)调用创建,调用代理的Close方法销毁或者调用IsTerminating服务操作销毁;Single-服务只会创建一次,服务开始时创建,服务完成时销毁这玩意儿写在服务定义的头部[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
    class CalculatorService :ICalculator
    {

    }
    然后,对服务的调用可以先实例化再调用。 用法就可以跟传统SOCKET 一样了。
    CalculatorService myservice =new CalculatorService();//myservice.参数 =任意参数;//在这里可以写EVENTServiceHost host = new ServiceHost(myservice);host.open();
      

  3.   

    应该是:[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]