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

随机推荐

  • 雅诗兰黛精华露和精华的区别

    雅诗兰黛精华露和精华的区别如下:1 质地:精华露是高浓缩后的护肤品,质地较为粘稠,更适合干性皮肤使用。而精华液是液体状态,质地更清爽一些,可在面霜之前使用,具有深度补水 和美白的作用。2 适用人群:精华露适合30岁以上的人群,而精华液适合各

    2024-04-15
    54700
  • 伊思芙洗发水怎么样

    很好。根据查询齐家网显示:伊思芙是一家专业的洗发水品牌,洗发水主要是以植物精华为主要原料,不含硅油,SLS,SLES等有害物质,有较好的洗发效果,且对头皮和头发比较温和,适合各种发质使用。这款贵妇膏很好。根据伊思芙官网资料显示,熊宝伊思芙贵

    2024-04-15
    56500
  • 纯露哪个牌子好,纯露什么牌子的好,纯露品

    纯露的品牌和品质因地区和产品类型而异。以下是一些在纯露领域表现良好的品牌: FLORIHANA:来自中国的品牌,以天然护肤理念和高品质的有机成分著称,备受世界各地芳疗爱好者的推崇。 奥莎蒂:奥莎蒂是意大利著名的高端护肤品品牌,产品包含海洋生

    2024-04-15
    46300
  • 问下苏秘精华露怎样?这个什么时候用最好?具体如何啊?

    你问的是使用顺序还是时间呢?精华一般是用在水之后的,乳之前。时间的话,最好早晚都要用哦,尤其晚上用吸收会更好。先用柔肤水清洁肌肤,打开毛孔,用的时候仔细顺着肌肤纹理慢慢按摩,轻轻拍打,最后再用乳液和面霜锁水。第二天早起,能感觉到自己脸摸起来

    2024-04-15
    55100
  • 海蓝之谜和时妍露哪个好用

    海蓝之谜。1、品牌更好。海蓝之谜是雅诗兰黛旗下的高端护肤产品,时研露是爱茉莉旗下的小众护肤品。2、效果更好。海蓝之谜护肤品中包含多种精贵的原材料,让肌肤更稳定的修复,补水和修护效果都是一流的,时研露是一类清爽型的精华,护肤效果远不如海蓝之谜

    2024-04-15
    38600
  • 怎样开一个化妆品店

    1 一般需要办好工商营业执照、税务登记证、组织机构代码证就可以了。2 最好能找到一些化妆品厂商在当地的经销商,直接从经销商处进货,货源与服务有保障。如果你与厂家有关系也是可以的。3 如果只经营化妆品的话,一般店不要太大,15平米以下就行了。

    2024-04-15
    46200
  • 妮维雅洗面奶适合学生洗吗 妮维雅洗面奶敏感肌可以用吗

    对于敏感肌来说在使用的时候是要特别注意成分的,这个妮维雅的洗面奶要是敏感肌使用的话会不会出现过敏的情况?这款洗面奶适合学生用的吗?妮维雅洗面奶适合学生洗吗妮维雅洗面奶适合14岁以上的人群使用。一般情况下,年龄在18周岁以上的女性,可

    2024-04-15
    37000

发表评论

登录后才能评论
保存