wcf 高性能服务器,WCF主机服务 承载REST 服务效率高 大概有10倍

我是在本地测试  测试代码是做了一个根据用户登陆查询的功能。

使用我自己写的一个hosting承载了一个服务 地址:http://127.0.0.1:83/Client/Login

2776f377b7334feee055ca90185ae350.png

代码如下

private void ThreadStart()

{

webServiceHost = new WebServiceHost(typeof(ClientService), new Uri("http://127.0.0.1:83/Client"));

webServiceHost.AddServiceEndpoint(typeof(IClientService), new WebHttpBinding(), "");

webServiceHost.Description.Endpoints[0].Behaviors.Add(new WebHttpBehavior { HelpEnabled = true });

webServiceHost.Opened += delegate

{

ServiceEndpoint endpoinit = webServiceHost.Description.Endpoints[0];

MessageBox.Show(string.Format("服务开启!\n服务地址:{0}", endpoinit.Address));

};

webServiceHost.Open();

}

又使用WCF主机服务承载了一个相同的服务 地址:http://127.0.0.1:82/Client/Login

2b327dc45264a8a252f2413700a3ae15.png

写了一个控制台应用程序用来测试

public static void DoWork()

{

using (WebClient webClient = new WebClient())

{

while (Run)

{

try

{

DateTime olderTime = DateTime.Now;

webClient.Headers.Add("Content-Type", "application/json");

webClient.Encoding = Encoding.UTF8;

string PostData = "{\"Password\":\"" + rd.Next(99999999) + "\",\"UserName\":\"" + rd.Next(99999999) + "\",\"isRember\":true}";

string result = webClient.UploadString("http://127.0.0.1:82/Client/Login", PostData);

totalNum++;

DateTime newTime = DateTime.Now;

TimeSpan ts = newTime - olderTime;

totalMilliseconds += ts.TotalMilliseconds;

Console.WriteLine(string.Format("线程{0}耗时{1} 平均耗时{2} 次数:{3}  结果:", Thread.CurrentThread.GetHashCode(), ts.TotalMilliseconds, totalMilliseconds / totalNum, totalNum));

Console.WriteLine(result);

}

catch

{

}

}

}

}

我自己的测试图

ececdf0a8216f2c4cfdcd471c4a9f863.png

WCF主机服务的测试图

696acf44cf05db4e607b1a6a5bc27f3e.png

可以看到效率差了 5倍左右  有的时候能差10倍。

用的是多线程处理,其中Message消息中是数据库查询耗时,线程耗时是总耗时。

想知道这是为什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Visual Studio 中创建 WCF 服务时,有两种项目类型可供选择:WCF 服务应用程序和 WCF 服务库。这两种项目类型有以下区别: 1. WCF 服务应用程序是一种可执行文件,它包含了一个独立的 WCF 服务宿主。这意味着您可以直接运行 WCF 服务应用程序,并使用其自带的服务宿主来运行和测试您的 WCF 服务。当您部署 WCF 服务时,您可以将 WCF 服务应用程序部署到 IIS 或自定义的 Windows 服务中。 2. WCF 服务库是一种库项目,它包含了一个或多个 WCF 服务契约和实现类。这意味着您必须将 WCF 服务库引用到另一个托管应用程序中,然后手动配置该应用程序的服务宿主来运行和测试您的 WCF 服务。当您部署 WCF 服务时,您可以将 WCF 服务库部署到 IIS 中,但必须将其部署为 WCF 服务应用程序的一部分。 3. WCF 服务应用程序和 WCF 服务库的项目结构也不同。WCF 服务应用程序包含了一个 .svc 文件和一个 Web.config 配置文件,用于配置 WCF 服务宿主和服务终结点。而 WCF 服务库只包含 WCF 服务契约和实现类,这些类通常包含在一个或多个 .cs 文件中。 4. 在使用 WCF 服务应用程序时,您可以使用 Visual Studio 自带的 WCF 测试客户端来测试您的 WCF 服务。而在使用 WCF 服务库时,您必须手动编写测试客户端或使用第三方测试工具来测试您的 WCF 服务。 总之,WCF 服务应用程序是一种独立的 WCF 服务宿主,适用于独立运行和测试 WCF 服务。而 WCF 服务库则是一种库项目,适用于将 WCF 服务集成到其他托管应用程序中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值