WCF如何绑定netTcpBinding寄宿到控制台应用程序详解

WCF如何绑定netTcpBinding寄宿到控制台应用程序详解,第1张

契约

新建一个WCF服务类库项目,在其中添加两个WCF服务:GameService,PlayerService

代码如下:

[ServiceContract]

public interface IGameService

{

[OperationContract]

Task<string> DoWork(string arg);

}

public class GameService : IGameService

{

public async Task<string> DoWork(string arg)

{

return await TaskFromResult($"Hello {arg}, I am the GameService");

}

}

[ServiceContract]

public interface IPlayerService

{

[OperationContract]

Task<string> DoWork(string arg);

}

public class PlayerService : IPlayerService

{

public async Task<string> DoWork(string arg)

{

return await TaskFromResult($"Hello {arg}, I am the PlayerService");

}

}

服务端

新建一个控制台应用程序,添加一个类 ServiceHostManager

public interface IServiceHostManager : IDisposable

{

void Start();

void Stop();

}

public class ServiceHostManager<TService> : IServiceHostManager

where TService : class

{

ServiceHost _host;

public ServiceHostManager()

{

_host = new ServiceHost(typeof(TService));

_hostOpened += (s, a) => {

ConsoleWriteLine("WCF监听已启动!{0}", _hostDescriptionEndpoints[0]Address);

};

_hostClosed += (s, a) =>

{

ConsoleWriteLine("WCF服务已终止!{0}", _hostDescriptionEndpoints[0]Name);

};

}

public void Start()

{

ConsoleWriteLine("正在开启WCF服务{0}", _hostDescriptionEndpoints[0]Name);

_hostOpen();

}

public void Stop()

{

if (_host != null && _hostState == CommunicationStateOpened)

{

ConsoleWriteLine("正在关闭WCF服务{0}", _hostDescriptionEndpoints[0]Name);

_hostClose();

}

}

public void Dispose()

{

Stop();

}

public static Task StartNew(CancellationTokenSource cancelTokenSource)

{

var theTask = TaskFactoryStartNew(() =>

{

IServiceHostManager shs = null;

try

{

shs = new ServiceHostManager<TService>();

shsStart();

while (true)

{

if (cancelTokenSourceIsCancellationRequested && shs != null)

{

shsStop();

break;

}

}

}

catch (Exception ex)

{

ConsoleWriteLine(ex);

if (shs != null)

shsStop();

}

}, cancelTokenSourceToken);

return theTask;

}

}

在Main方法中启动WCF主机

class Program

{

static Program()

{

ConsoleWriteLine("初始化");

ConsoleWriteLine("服务运行期间,请不要关闭窗口。");

ConsoleWriteLine();

}

static void Main(string[] args)

{

ConsoleTitle = "WCF主机 x64(按 [Esc] 键停止服务)";

var cancelTokenSource = new CancellationTokenSource();

ServiceHostManager<WcfContractServicesGameService>StartNew(cancelTokenSource);

ServiceHostManager<WcfContractServicesPlayerService>StartNew(cancelTokenSource);

while (true)

{

if (ConsoleReadKey()Key == ConsoleKeyEscape)

{

ConsoleWriteLine();

cancelTokenSourceCancel();

break;

}

}

ConsoleReadLine();

}

}

服务端配置

在控制台应用程序的Appconfig中配置systemserviceModel

<systemserviceModel>

<services>

<service name="WetteryWcfContractServicesGameService" behaviorConfiguration="gameMetadataBehavior">

<endpoint address="nettcp://localhost:19998/Wettery/GameService" binding="netTcpBinding" contract="WetteryWcfContractServicesIGameService" bindingConfiguration="netTcpBindingConfig">

<identity>

<dns value="localhost" />

</identity>

</endpoint>

</service>

<service name="WetteryWcfContractServicesPlayerService" behaviorConfiguration="playerMetadataBehavior">

<endpoint address="nettcp://localhost:19998/Wettery/PlayerService" binding="netTcpBinding" contract="WetteryWcfContractServicesIPlayerService" bindingConfiguration="netTcpBindingConfig">

<identity>

<dns value="localhost" />

</identity>

</endpoint>

</service>

</services>

<bindings>

<netTcpBinding>

<binding name="netTcpBindingConfig" closeTimeout="00:30:00" openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="00:30:00" transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions" hostNameComparisonMode="StrongWildcard" listenBacklog="100" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="100" maxReceivedMessageSize="2147483647">

<readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647 " maxBytesPerRead="4096" maxNameTableCharCount="16384" />

<reliableSession ordered="true" inactivityTimeout="00:30:00" enabled="false" />

<security mode="Transport">

<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />

</security>

</binding>

</netTcpBinding>

</bindings>

<behaviors>

<serviceBehaviors>

<behavior name="gameMetadataBehavior">

<serviceMetadata httpGetEnabled="True" httpGetUrl="http://localhost:8081/Wettery/GameService/MetaData" />

<serviceDebug includeExceptionDetailInFaults="True" />

<serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />

</behavior>

<behavior name="playerMetadataBehavior">

<serviceMetadata httpGetEnabled="True" httpGetUrl="http://localhost:8081/Wettery/PlayerService/MetaData" />

<serviceDebug includeExceptionDetailInFaults="True" />

<serviceThrottling maxConcurrentCalls="1000" maxConcurrentInstances="1000" maxConcurrentSessions="1000" />

</behavior>

</serviceBehaviors>

</behaviors>

</systemserviceModel>

未避免元数据泄露,部署时将HttpGetEnable设为False

运行控制台应用程序

按[ESC]键终止服务

客户端测试

服务端运行后,用wcftestclient工具测试,服务地址即behavior中配置的元数据GET地址

http://localhost:8081/Wettery/GameService/MetaData

http://localhost:8081/Wettery/PlayerService/MetaData

总结

若手机无法安装三星应用商店,请操作:

1通过手机登陆三星官网

向上滑动屏幕,点击下载三星应用商店按钮,并按照提示进行安装即可(若未出现“下载三星应用商店”,请等待几秒待网页加载完毕)。

2若无法安装该软件,请检查手机上网是否正常。

3换个时间段尝试。

最近一段时间,三星手机内置的 游戏 优化服务(Game Optimizing Service,简称“GOS”)引发了强烈的质疑,据称这项服务会主动限制某些 游戏 的性能,以达到防止手机过热的目的。

三星的这个想法和出发点非常好,推出这项措施在客观上也非常有必要,但是问题是经过大量用户的实际验证,发现其GOS服务进行性能限制的对象不止针对 游戏 类应用。

还有大量其它普通类型的APP同样也会遭到性能限制,对此还有专业人士提取分享出了10000个被三星GOS服务进行能性限制的APP名单,引发了很大的争议。

近日,三星在其官网上针对上述 质疑进行了回应,以自问自答的形式回答了一些公众所关注的焦点问题。

三星表示,其GOS服务的目的是用于监控手机的运行状态,以防止设备运行 游戏 类应用时,出现卡顿、性能大幅下降和功耗增大,导致手机过热等问题。该服务仅 适用于运行高负荷的大型 游戏 ,不适用于、不会影响到除 游戏 之外的一般应用。

针对专业人士从其GOS服务数据库中提取出来的,会被限制性能的10000个应用名单一事,三星回应称“这个列表的目的仅仅是为了快速判断用户所新安装的应用是否为 游戏 ,与GOS服务本身无关”。

也就是说,并非所有纳入GOS服务名单中的应用都会被限制性能,这个名单并非是“黑名单”。

对于跑分测试软件为什么没有被加入GOS服务名单的质疑,三星称GOS服务主要针对的是大型 游戏 ,而跑分测试软件不是 游戏 类应用,不会长时间运行,导致手机过热的可能性不大,因此没有被纳入GOS服务控制调节的范围内。

如果开启性能优先模式, 游戏 体验会有多大的提升?三星称,这可以解锁CPU和GPU的性能限制,在某些 游戏 中大概会提升10帧左右,但不推荐这样做。

最后一个问题最为关键,那就是如果用户启用性能优先模式,由此导致手机过热出问题,会不会影响到三星所提供的免费维修服务?

三星表示不影响,性能优先模式也是三星向用户提供的一项功能,如果设备出现问题且在保修期内的话,就可以享受免费的售后服务。

三星表示将继续对这项服务进行改善、优化。

注:图三来自三星官网,原文为韩文,为方便读者阅读理解,使用机器翻译,仅供参考。

请先在华为应用市场下载华为游戏中心和HMSCore(华为移动服务),并从华为游戏中心下载对应游戏。

华为游戏中心下载方法:在浏览器中打开链接:应用市场,下载安装华为游戏中心最新版本(如系统提示下载华为应用市场时请优先安装),并从华为游戏中心下载安装对应游戏,即可使用华为帐号登录游戏。

HMSCore(华为移动服务)下载方法:

1打开设备自带的应用市场/商店,搜索找到HMSCore,直接下载安装。

2若设备自带的应用市场/商店搜索不到HMSCore,您可以先搜索并安装华为应用市场App,再在华为应用市场App中搜索并安装HMSCore。

3若设备自带的应用市场/商店也搜索不到华为应用市场App,您可以通过浏览器访问华为应用市场网页版,下载并安装华为应用市场App,再在华为应用市场App中搜索并安装HMSCore。

4IOS系统无法下载HMSCore(华为移动服务)和华为游戏中心,所以无法玩华为渠道的游戏。

当使用三星手机玩游戏时,游戏助推器会学习你的使用模式,并在性能和温度之间达到平衡,但有些小伙伴不喜欢界面上的提示。那三星游戏助推器怎么关闭?

三星游戏助推器怎么关闭?

1、滑出手机通知栏,点击右上角的搜索图标。

2、输入关键词“游戏助推器”,并点击进入。

3、点击右下角“强制停止”即可。

本文以三星S20为例适用于One UI 20系统

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/shuma/1301588.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-09-12
下一篇2023-09-12

随机推荐

  • 莱珀妮鱼子酱精华真假

    莱珀妮鱼子酱精华是一款非常受欢迎的美容产品,它所使用的成分包括鲟鱼子和珍珠等天然提取物,被誉为能够改善肌肤质量、提升肌肤光泽度的神奇产品。对于这款产品,关心它真假问题的人们很多,我们从以下几个角度来回答大家的疑问。我们需要知道莱珀妮鱼子酱精

    2024-04-15
    71000
  • 面膜代加工厂家

    1、济南博利医药生物工程有限公司主营产品:面膜,面膜加工,壳聚糖面膜代加工,械字号面膜加工,玻尿酸原液,霜膏,乳液等。地址:济南市历下区明湖路2号东湖大厦东座702室。成立时间:1998-07-15。2、广州寿龛生物科技有限公司主营产品:膏

    2024-04-15
    63300
  • 妮维雅洗面奶男士怎么样

    妮维雅这个品牌,一直专业的致力于男性护肤产品的开发和研究,其中也根据男性的生活特点和肤质的特点,来研究出了很多适合的产品,而关于妮维雅男士洗面奶,也是可以帮助去除多余油脂,非常适合男性肌肤使用泡沫,也非常的丰富。在使用之后,会感觉我们的皮肤

    2024-04-15
    54400
  • 中国十大电地暖品牌有哪些 十大电地暖品牌排行榜

    2016年最新十大最具影响力电地暖品牌1:EAST(伊思特)贵州伊思特新技术发展有限责任公司,坐落于贵阳国家高新技术开发区,总投资16亿,是国内唯一的专业从事“单、双导耐高温发热电缆,研发、生产和销售于一体的高新技术企业。 自上

    2024-04-15
    46800
  • 苏秘奇迹护理精华露怎么用

    苏秘奇迹护理精华露使用方法:洁面之后,取适量的苏秘奇迹护理精华露倒在掌心,然后双手轻轻揉搓一下,然后双掌轻拍脸部,涂抹苏秘奇迹护理精华露,继续轻拍帮助皮肤吸收。 苏秘奇迹护理精华露不仅可以直接使用在脸上,还可以混合在面霜、粉底液、面膜里面一

    2024-04-15
    51600
  • sk2神仙水跟AG精华液能一起使用吗

    可以。skii神仙水是可以搭配其他的精华水隔天使用的,而且这样用也没有什么问题。毕竟精华水是抹在皮肤上的,如果你的皮肤对精华水不过敏,其实是可以隔天用的,毕竟这样也不会对皮肤造成什么负担,放心使用就可以了,绝对不会出现什么问题的。SK-II

    2024-04-15
    52100
  • 日本skii 嫩肤清莹露 使用后必须要使用神仙水吗?

    日本skii 嫩肤清莹露是一个很受欢迎的产品,而关于是否需要使用神仙水,这个问题一直以来都备受争议。我们需要明白神仙水是什么。神仙水是日本SK-II公司的另一款明星产品,它是一种调节肌肤pH值并帮助保湿的化妆水。它含有大量的天然发酵物质和氨

    2024-04-15
    44000

发表评论

登录后才能评论
保存