WCF第一次访问很慢的问题

WanderOCN 2016-01-18 03:00:49
RT
WCF是个好东西,可以做很多HTTP服务不依赖于IIS。
但问题是,创建好的非IIS托管的WCF服务,当某个客户端第一次访问时候很慢,一般都3、4秒左右。然后第二次及以后的访问,速度极快,在数十毫秒以内。

如果把这个客户端关掉,再次打开,又出现这个问题。

一直没解决这个问题,造成使用瓶颈,请教大神。

网上找的什么useDefaultWebProxy="false" ,这个设置没有作用。
...全文
628 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_wwq 2016-01-20
  • 打赏
  • 举报
回复
引用 7 楼 dongxinxi 的回复:
这跟协议没关系,1#说的就是客户端在引用服务后,应该把工程中的序列化程序集开关打开,这样在调的时候,就不用预编译了,那3秒是耗费在客户端上面,不是服务端
说的有理
WanderOCN 2016-01-20
  • 打赏
  • 举报
回复
引用 9 楼 WanderOCN 的回复:
[quote=引用 7 楼 dongxinxi 的回复:] 这跟协议没关系,1#说的就是客户端在引用服务后,应该把工程中的序列化程序集开关打开,这样在调的时候,就不用预编译了,那3秒是耗费在客户端上面,不是服务端
嗯,这个是一个新的思路,我去看看[/quote] 问题已找到,的确是客户端的问题,WCF躺枪。 问题出在我的客户端HTTP请求是用的HttpWebRequest req。 然后.NET每次会自动搜索代理,所以很慢; 我设置了req.Proxy = null 后解决第一次访问速度很慢的问题。 虽然你的答案并不正确,但给我提供了解决问题的思路,另外我问题描述方向有问题,最后结分给你
  • 打赏
  • 举报
回复
这跟协议没关系,1#说的就是客户端在引用服务后,应该把工程中的序列化程序集开关打开,这样在调的时候,就不用预编译了,那3秒是耗费在客户端上面,不是服务端
xian_wwq 2016-01-19
  • 打赏
  • 举报
回复
引用 5 楼 WanderOCN 的回复:
[quote=引用 3 楼 Forty2 的回复:] 服务,一般可以期待它持续运行几个月几年的。第一次启动慢,我认为没有任何问题。 第一次启动,要初始化很多东西,因此一般都比较慢。
不是服务程序第一次启动很慢,而是WCF启动后,任意客户端第一次访问很慢,后面很快。客户端关闭后,再次连接的第一次又很慢[/quote] 换成net.tcp试试,如果还慢,那和http没有关系了, 可能问题出在业务层
WanderOCN 2016-01-19
  • 打赏
  • 举报
回复
引用 7 楼 dongxinxi 的回复:
这跟协议没关系,1#说的就是客户端在引用服务后,应该把工程中的序列化程序集开关打开,这样在调的时候,就不用预编译了,那3秒是耗费在客户端上面,不是服务端
嗯,这个是一个新的思路,我去看看
WanderOCN 2016-01-19
  • 打赏
  • 举报
回复
引用 6 楼 xian_wwq 的回复:
[quote=引用 5 楼 WanderOCN 的回复:] [quote=引用 3 楼 Forty2 的回复:] 服务,一般可以期待它持续运行几个月几年的。第一次启动慢,我认为没有任何问题。 第一次启动,要初始化很多东西,因此一般都比较慢。
不是服务程序第一次启动很慢,而是WCF启动后,任意客户端第一次访问很慢,后面很快。客户端关闭后,再次连接的第一次又很慢[/quote] 换成net.tcp试试,如果还慢,那和http没有关系了, 可能问题出在业务层[/quote] 换TCP是回避问题,我现在想找到问题原因和解决问题!
WanderOCN 2016-01-18
  • 打赏
  • 举报
回复
引用 3 楼 Forty2 的回复:
服务,一般可以期待它持续运行几个月几年的。第一次启动慢,我认为没有任何问题。 第一次启动,要初始化很多东西,因此一般都比较慢。
不是服务程序第一次启动很慢,而是WCF启动后,任意客户端第一次访问很慢,后面很快。客户端关闭后,再次连接的第一次又很慢
WanderOCN 2016-01-18
  • 打赏
  • 举报
回复
引用 楼主 WanderOCN 的回复:
RT WCF是个好东西,可以做很多HTTP服务不依赖于IIS。 但问题是,创建好的非IIS托管的WCF服务,当某个客户端第一次访问时候很慢,一般都3、4秒左右。然后第二次及以后的访问,速度极快,在数十毫秒以内。 如果把这个客户端关掉,再次打开,又出现这个问题。 一直没解决这个问题,造成使用瓶颈,请教大神。 网上找的什么useDefaultWebProxy="false" ,这个设置没有作用。
使用WCF承载HTTP+JSON方式
Forty2 2016-01-18
  • 打赏
  • 举报
回复
服务,一般可以期待它持续运行几个月几年的。第一次启动慢,我认为没有任何问题。 第一次启动,要初始化很多东西,因此一般都比较慢。
  • 打赏
  • 举报
回复
sorry, 服务端不存在上述问题,请无视
  • 打赏
  • 举报
回复
猜测是预生成XML序列化程序集引起的 https://msdn.microsoft.com/zh-cn/bk3w6240(vs.80).aspx 其实你只需要把服务中需要序列化的模型所在的工程 > 属性 > 生成 > 生成序列化程序集(开) 重新发布你的项目会多出来一个xxx..XmlSerializers.dll 这就是第一次访问慢3秒在干的事情

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧