我开发了一个WCF REST Api,它使用NHibernate作为持久层。我目前正在使用Per-Session服务,但已经读过Per-Call服务是我正在做的事情的方式。
有两件事(可能非常相关)我不喜欢,我希望删除它。
在第一次调用api时,需要20秒才能响应,这可能意味着它正在加载库和实例化类。我可以在任何电话会议之前这样做吗?我已经在ServiceContract实现类上有一个静态构造函数,但它没有减少加载它的时间。
在后续通话中,如果我停止呼叫该服务约10分钟,则通话时间将再次从1秒变为超过20秒。这是我最关心的问题,因为客户端必须有30秒的超时时间才能让用户看到应用程序崩溃。
我该如何改进?您是否有任何提高这些服务性能的技巧?
答案 0 :(得分:1)
似乎是IIS应用程序池回收的明显案例,因此假设您在IIS中托管此WCF服务是合理的。
有几个选择:
答案 1 :(得分:0)
尝试记录Application_Start()和Application_End()以显示应用程序启动和停止的时间。如果这是你的问题,这可以让你知道。
它也可能是Session_Start / End类型的东西。
如果您认为您的网站会变得更加繁忙,那么您的应用程序停止并始终启动将不会是一个问题。