2010-09-28 63 views
1

假设我有一个简单的WCF应用程序,客户端为了获得一个数字而调用它。其中没有太多处理,服务合同被归为SessionMode = SessionMode.NotAllowed。引用WCF服务的生命周期是什么?

什么时候构造函数被调用?对象何时被破坏?是一个叫做每个请求的构造函数吗?

是否有任何参考文献或资源具有此信息?我似乎无法找到它。

回答

1

WCF由IIS托管,因此受其寿命规则约束。服务类本身可能会在应用程序中根据需要创建和销毁;该类将在收到请求后调用,该方法被调用,并返回结果,之后对象将离开作用域并被处置/最终确定。

但是,包含您的服务的项目看起来像IIS的普通ActiveServer.NET Web应用程序(请检查应该在其中的Global.asax文件;它包含一个类型为HttpApplication的类,并且代表IIS可以用来控制它的应用程序),IIS将维护这些应用程序的“池”以处理来自多个客户端的请求。只要请求不断出现,并且IIS不会决定应用程序已经“陈旧”并刷新它或整个池,应用程序将继续运行。因此,您声明的任何静态类(例如您的单例IoC容器)或添加到派生HttpApplication类(您用作子类型)的任何内容都将保留在内存中,直到应用程序被回收为止。