做网站卖酒营销推广运营

bicheng/2026/1/24 23:05:04/文章来源:
做网站卖酒,营销推广运营,建e网网址是多少,wordpress图标方块在[第1篇]中#xff0c;我们介绍了WCF关于实例管理一些基本的知识点#xff0c;包括InstanceContext、InstanceContextMode、已经如何通过ServiceBehaviorAttribute应用不同的实例上下文模式给不同的服务。在[第1篇]中#xff0c;对WCF采用的三种不同实例上下文模式进行了简…在[第1篇]中我们介绍了WCF关于实例管理一些基本的知识点包括InstanceContext、InstanceContextMode、已经如何通过ServiceBehaviorAttribute应用不同的实例上下文模式给不同的服务。在[第1篇]中对WCF采用的三种不同实例上下文模式进行了简单的比较本篇的重点方法对单调PerCall模式为进行详细介绍。 在单调Per-Call实例上下文模式下WCF总是创建一个新的服务实例上下文处理接收到的每一个服务调用请求并在服务操作执行结束后回收服务上下文和服务实例。换句话说单调服务实例上下文模式使服务实例上下文的生命周期与服务调用本身绑定。我们首先来介绍单调模式下服务实例上下文具体有怎样的生命周期。 一、 单调模式下的服务实例上下文提供机制 对于单调模式服务实例的生命周期大体上可以看成服务操作执行的生命周期。服务实例在服务操作执行前被创建在操作完成之后被回收。下面的列表揭示了在单调模式下对于每一次服务调用请求WCF的整个服务实例激活过程 WCF服务端接收到来自客户端的服务调用请求 通过实例上下文提供者InstanceContextProvider对象试图获取现有服务实例的实例上下文对于单调模式返回的实例上下文永远为空 如果获取实例上下文为空则通过实例提供者IntanceProvider创建服务实例封装到新创建的实例上下文中 通过InstanceContext的GetServiceInstance方法获取服务实例对象借助操作选择器OperationSelector选择出相应的服务操作最后通过操作执行器OperationInvoker对象执行相应的操作方法 操作方法执行完毕后关闭被卸载InstanceContext对象。在此过程中会调用InstanceProvider对象释放服务实例如果服务类型实现了接口IDisposable则会调用Disposable方法 服务实例成为垃圾对象等待GC回收。 对于上述列表中提到的InstanceContextProvider、InstanceProvider等重要的对象以及相关的实现机制将在本系列后续的部分进行单独讲解。为了加深读者的理解这里通过一个简单的例子来演示在单调模式下服务实例的整个激活流程。 二、 实例演示单调模式下服务实例的生命周期 本案例依然沿用典型的4层结构和计算服务的场景下面是服务契约和具体服务实现的定义。在CalculatorService类型上通过ServiceBehaviorAttribute特性将实例上下文模式设为单调Per-Call模式。为了演示服务实例的创建、释放和回收我们分别定义了无参构造函数终止化器Finalizer以及实现的接口IDisposable并在所有的方法中输出相应的指示性文字以便更容易地观测到它们执行的先后顺序。 1: using System.ServiceModel; 2: namespace Artech.WcfServices.Contracts 3: { 4: [ServiceContract(Namespacehttp://www.artech.com/)] 5: public interface ICalculator 6: { 7: [OperationContract] 8: double Add(double x, double y); 9: } 10: } 1: using System; 2: using System.ServiceModel; 3: using Artech.WcfServices.Contracts; 4: namespace Artech.WcfServices.Services 5: { 6: [ServiceBehavior(InstanceContextMode InstanceContextMode.PerCall)] 7: public class CalculatorService : ICalculator, IDisposable 8: { 9: public CalculatorService() 10: { 11: Console.WriteLine(Service object is instantiated.); 12: } 13: ~CalculatorService() 14: { 15: Console.WriteLine(Service object is finalized.); 16: } 17:  18: public void Dispose() 19: { 20: Console.WriteLine(Service object is disposed.); 21: } 22: public double Add(double x, double y) 23: { 24: Console.WriteLine(Operation method is invoked.); 25: return x y; 26: } 27: } 28: } 为了演示GC对服务实例的回收在进行服务寄宿的时候通过System.Threading.Timer使GC每隔10毫秒强制执行一次垃圾回收。 1: using System; 2: using System.ServiceModel; 3: using System.Threading; 4: using Artech.WcfServices.Services; 5: namespace Artech.WcfServices.Hosting 6: { 7: public class Program 8: { 9: private static Timer GCScheduler; 10:  11: static void Main(string[] args) 12: { 13: GCScheduler new Timer( 14: delegate 15: { 16: GC.Collect(); 17: }, null, 0, 100); 18: using (ServiceHost serviceHost new ServiceHost(typeof(CalculatorService))) 19: { 20: serviceHost.Open(); 21: Console.Read(); 22: } 23: } 24: } 25: } 通过一个控制台应用程序对服务进行成功寄宿后客户端通过下面的代码使用相同的服务代理对象进行两次服务调用。 1: using System; 2: using System.ServiceModel; 3: using Artech.WcfServices.Contracts; 4: namespace Artech.WcfServices.Clients 5: { 6: class Program 7: { 8: static void Main(string[] args) 9: { 10: using (ChannelFactoryICalculator channelFactory new ChannelFactoryICalculator(calculatorservice)) 11: { 12: ICalculator calculator channelFactory.CreateChannel(); 13: Console.WriteLine(x y {2} when x {0} and y {1}, 1, 2, calculator.Add(1, 2)); 14: Console.WriteLine(x y {2} when x {0} and y {1}: {3}, 1, 2, calculator.Add(1, 2)); 15: } 16: } 17: } 18: } 从运行后服务端的输出可以看出对于两次服务调用请求服务端先后创建了两个服务实例在操作方法成功执行后Dispose方法得以执行。而终止化器Finalizer是被GC在后台执行的所以执行的时机不能确定。不过有一点可以从中得到证实当服务操作执行时服务实例变成了“垃圾”对象并可以被GC回收以腾出占据的内存空间。 Service object is instantiated. Operation method is invoked. Service object is disposed. Service object is instantiated. Operation method is invoked. Service object is disposed. Service object is finalized. Service object is finalized. 三、 服务实例上下文的释放 如果服务实例须要引用一些非托管资源比如数据库连接、文件句柄等须要及时将其释放。在这种情况下我们可以通过实现IDisposable接口在Dispose方法中进行相应的资源回收工作。在单调实例上下文模式下当服务操作执行时Dispose方法会自动被执行这一点已经通过上面的案例演示得到证实。 对于实现了IDisposable接口的Dispose方法有一点值得注意的是该方法是以与操作方法同步形式执行的。也就是说服务操作和Dispose方法在相同的线程中执行。认识这一点很重要因为无论采用怎样的实例模式在支持会话Session的情况下如果服务请求来自于同一个服务代理服务操作都会在一个线程下执行。对于单调模式就会出现这样的问题由于Dispose方法同步执行的特性如果该方法是一个比较耗时的操作那么来自于同一个服务代理的服务后续调用请求将不能得到及时执行。WCF只能在上一个服务实例被成功释放之后才能处理来自相同服务代理的下一个服务调用请求。为了让读者体会到同步方式释放服务实例在应用中的影响并证明同步释放服务实例的现象我们对上面的案例略加改动。 在CalculatorService中通过线程休眠的方式模拟耗时的服务实例释放操作5秒。在Dispose和Add方法中除了输出具体操作名称之外还会输出当前的线程ID和执行的开始时间代码如下所示。 1: [ServiceBehavior(InstanceContextMode InstanceContextMode.PerCall)] 2: public class CalculatorService : ICalculator, IDisposable 3: { 4: public void Dispose() 5: { 6: Console.WriteLine(Time: {0}; Thread ID: {1}; Service object is disposed., DateTime.Now, Thread.CurrentThread.ManagedThreadId); 7: Thread.Sleep(5000); 8: } 9: public double Add(double x, double y) 10: { 11: Console.WriteLine(Time: {0}; Thread ID: {1}; Operation method is invoked., DateTime.Now, Thread.CurrentThread.ManagedThreadId); 12: return x y; 13: } 14: } 在客户端我们创建两个不同的服务代理通过ThreadPool分别对它们进行2次异步调用。下面是相关的服务调用代码。 1: using (ChannelFactoryICalculator channelFactory new ChannelFactoryICalculator(calculatorservice)) 2: { 3: ICalculator calculator channelFactory.CreateChannel(); 4: ThreadPool.QueueUserWorkItem(delegate 5: { 6: Console.WriteLine({3}: x y {2} when x {0} and y {1}, 1, 2, calculator.Add(1, 2), DateTime.Now); 7: }); 8: ThreadPool.QueueUserWorkItem(delegate 9: { 10: Console.WriteLine({3}: x y {2} when x {0} and y {1}, 1, 2, calculator.Add(1, 2), DateTime.Now); 11: }); 12: Console.Read(); 13: } 从客户端和服务端输出结果的比较我们可以清晰地看出基于相同服务代理的操作方法和Dispose方法都执行在相同的线程下线程ID为12并且两次服务操作的间隔为服务实例释放的时间5秒。由于服务操作和Dispose方法的同步执行导致服务端忙于释放上一个服务实例而不能及时处理来自相同服务代理的下一个服务调用请求。 客户端 3/6/2009 71234 PM: x y 3 when x 1 and y 2 3/6/2009 71239 PM: x y 3 when x 1 and y 2 服务端 Time: 3/6/2009 71234 PM; Thread ID: 12; Operation method is invoked. Time: 3/6/2009 71234 PM; Thread ID: 12; Service object is disposed. Time: 3/6/2009 71239 PM; Thread ID: 12; Operation method is invoked. Time: 3/6/2009 71239 PM; Thread ID: 12; Service object is disposed. 关于服务实例的同步执行机制还有一点需要说明是在Dispose方法中可以得到当前OperationContext而OperationContext在会话Per-Session实例上下文模式下是不可得的。 四、单调模式与可扩展性 在单调模式下如果不考虑GC对垃圾对象回收的滞后性服务实例的数量可以看成是当前正在处理的服务调用请求的数量。相关的资源能够在服务操作执行完毕之后得到及时回收通过实现IDisposable接口将资源回收操作实现在Dispose方法中。所以单调模式具有的优势是能够最大限度地发挥资源的利用效率避免了资源的闲置和相互争用。 这里的资源不仅仅包括服务实例本事占据的内存资源也包括服务实例直接或间接引用的资源。由于单调模式采用基于服务调用的服务实例激活和资源分配方式所以服务实例或被分配的资源自始至终都处于“工作”状态不会造成资源的闲置。服务实例在完成其使命之后能够对资源进行及时的释放被释放的资源可以及时用于对其他服务请求的处理。 我们将单调模式和后面要讲的会话模式作一个对比后者采用基于服务代理的实例激活和生命周期管理。也就是说在不考虑WCF闲置请求策略当服务实例在超出某个时间段没有被使用的情况下WCF将其清理的情况下服务实例的生命始于通过服务实例进行第一次服务调用或者调用Open方法开启服务代理之时服务代理的关闭会通知WCF服务端框架将对应的服务实例进行释放。举一个极端的例子服务实例在存续期间需要引用一个非托管资源比如是数据库连接假设最大允许的并发连接为100。现在先后100个客户端或者服务代理进行服务调用请求毫无疑问100个服务实例会被创建并同时存在于服务端的内存之中并且每一个服务实例引用一个开启状态的数据库连接那么当来自第101个客户端服务调用请求抵达时将得不到处理除非在它的超时时限到达之前有一个客户端自动将服务代理关闭。 但是对于相同的场景如果采用单调的模式就能应付自如因为在每次服务调用之后数据库的连接可以及时地得到关闭和释放。 对于单调模式很多读者一开始就会心存这样的疑问服务实例的频繁创建对性能不会造成影响吗在前一章中我们就说过高性能Performance和高可扩展性Scalability是软件设计与架构中永远不可以同时兼顾的原因很简单高性能往往需要充足的资源高扩展性又需要尽可能地节约资源。所以我们才说软件设计与架构是一项“权衡”的艺术我们的目的不是将各个方面都达到最优因为这是不可能实现的任务我们须要做的只是找到一个平衡点使整体最优。关于高扩展性和性能之间的平衡关系我们很难有一个适合所有场景的黄金法则这需要对具体场景的具体分析。 较之会话模式单调模式能够处理更多的并发客户端提供更好的吞吐量Throughput。对于量化我们的服务到底能够处理多少客户端Juval Lowy在其著作《Programming WCF》中提出了这样一项经验性总结在一个典型的企业应用中并发量大概是所有客户端数量的1%高并发情况下能达到3%也就是如果服务端能够同时维持100个服务实例那么意味着能为10 000个客户端提供服务。 关于服务实例的创建过程其中会使用到诸如反射这样的相对影响性能的操作但是在WCF应用中真正影响性能是操作时信道的创建和释放。服务实例的激活和它们比起来可以说是微不足道。但是如果在应用中出现对基于相同服务代理的频繁调用比如服务调用放在一个For循环中调用上百次服务实例的创建带来的性能损失就不能不考虑了。 作者Artech 出处http://artech.cnblogs.com 本文版权归作者和博客园共有欢迎转载但未经作者同意必须保留此段声明且在文章页面明显位置给出原文连接否则保留追究法律责任的权利。 转载于:https://www.cnblogs.com/artech/archive/2009/11/09/1598695.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87049.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子商务网站建设技术基础--asp.net程序设计教学大纲平原县网站建设

目录 一、事务的概念 二、事务的核心特性 三、事务操作中的常见BUG 3.1 脏读 3.2 不可重复读 3.3 幻读 四、隔离级别 五、使用事务 一、事务的概念 “事务”是指一组操作,在逻辑上是不可分割的,组成这组操作的各个语句,或者全部执行成…

设计响应式网站多少钱nodejs同时做网站和后台管理

引言: 北京时间:2024/3/14/9:20,简单聊一聊我的日常。昨天晚上十点左右更新完新的一篇文章,回到宿舍简简单单花了个两首歌的时间洗了个澡,然后为了保持形象吹了个头发,哈哈哈!当然对比以前的我…

app网站的优点设计企业网站内容

vp9协议梳理-header头文件 本文是对vp9视频码流中header中包含的语法元素的一个分类整理,及其对具体的解码过程的影响的分析。 这里写目录标题 vp9协议梳理-header头文件1. Vp9码流中的header头文件2. profile3. show_existing_frame, frame_to_show_map_idx4. fr…

xampp wordpress 建站教程聊城网站建设找谁

vmware为我们提供了三种网络工作模式 vmware为我们提供了三种网络工作模式, 它们分别是: Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。 VMware虚拟机的三种网络类型的适用场景如下…

如何建立一个免费网站酒店网站建设工作

闭包和装饰器都是属于函数的语法范畴,是在函数定义中以另一个函数做为形参的语法机制。1 闭包(Closurer)闭包是定义内部函数的一种语法规则,要理解闭包,请看下面的实例:def outer(t):....print(t)....def inner(i):........return…

常见的有利于seo的网站系统无锡网站建设要多少钱

坐标系 任何VisionPro图像都支持一组坐标空间,为表达特定特征的位置提供数字框架。最有用的空间是根空间和用户空间,根空间将点与原始获取图像中的像素相关联,用户空间用于获得校准和固定空间中的特征位置和测量值。 根空间 图像的根空间…

个人做外包网站多少钱泰安程序开发

背景 今年各个大厂的机房事故频繁,其中关键组件Redis是重灾区,本文就来看下怎么做Redis的多机房容灾 Redis多机房容灾方案 1.首先最最直观的是直接利用Redis内部的主从数据同步来进行灾备,但是由于Redis内部的主从实现对机房间的网络延迟等…

seo 网站 结构用wordpress 登录

过流量检测 这里的流量检测就是在网络层的waf拦截到我们向webshell传输的数据包,以及webshell返回的数据 包,检测其中是否包含敏感信息的一种检测方式。如果是大马的情况下,可以在大马中添加多处判断代码,因此在执行大马提供的功…

网站建设项目设计书建设部建造师网站

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 水平居中布局⭐ 垂直居中布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣…

做我的世界皮肤壁纸的网站江门做网站价格

目录 一、mapping属性 二、总结 一、mapping属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型,常见的简单类型有: 字符串: text (可分词的文本)、keyword (精确值,例如:品…

尚义住房和城乡规划建设局网站中国建设布网站

文章目录 嫌啰嗦直接看源码Q5 :PyTorch on CIFAR-10three_layer_convnet题面解析代码输出 Training a ConvNet题面解析代码输出 ThreeLayerConvNet题面解析代码输出 Train a Three-Layer ConvNet题面解析代码输出 Sequential API: Three-Layer ConvNet题面解析代码输出 CIFAR-1…

郑州网站建设招商网站的优化方案怎么写

一、LAMP平台概述: LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整台系统和相关软件,能够提供动态web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统,Apache网站服务器&#xf…

沈阳网站设计开发seo关键词排名优化官网

按照官网 的提示,我开始安装faster rcnn,但是出现了很多问题,我将其汇总了起来,并提出了解决办法。 先说明一下我的配置: python : anaconda2linux: centos 6.9 安装faster rcnn请先参考:《cuda8cudnn4 F…

怎么自己做导购网站网站建设scyiyou

Flink任务一般为实时不断运行的任务,如果没有任务监控, 任务异常时无法第一时间处理会比较麻烦。 这里通过调用API接口方式来获取参数,实现任务监控。 Flink任务监控(基于API接口编写shell脚本) 一 flink-on-yarn 模式 二 编写she…

贵州做网站的提供网站建设定制

写在开头 欢迎阅读MySQL修炼手册的第12篇,今天我们将深入探讨MySQL中的视图,了解如何利用视图简化复杂查询并保护敏感数据。 1 视图的基本概念 在开始学习视图之前,让我们先了解一下视图的基本概念。视图是一种虚拟的表,它是基…

做网站的工具有哪些高爆传奇手机版

2023年12月5日-12月6日,由白鲸出海主办的【GTC2023 全球流量大会】在中国深圳盛大召开。 本次大会荟聚海内外优质企业品牌,以专业的“展会”形式,全方位呈现跨境出海的成果,探索多元化的跨境商业模式,大会涵盖社交娱乐…

为什么要用国外服务器做网站ADPR国际传媒网站建设

id属性 id属性具有唯一性&#xff0c;也就是说&#xff0c;在一个页面中相同的id只能出现一次。在不同的页面中&#xff0c;可以出现两个id相同的元素。 语法 <div id"text"> ...... </div> class属性 class&#xff0c;顾名思义&#xff0c;就是“类…

芜湖市建设银行支行网站网站结构如何优化

88W8997-A0-CBQ2E005-T 是业界尺寸最小、能效最高的MU-MIMO无线互连组合芯片&#xff0c;面向企业级和消费级市场。88W8997是业界首款全面支持Bluetooth 4.2以及未来Bluetooth 5.0全套功能的28nm 2 x 2 802.11ac Wave-2组合芯片。该器件实现了高达867Mbps的峰值数据传送速率&am…

建设部网站施工员查询昌大建设集团大老板

目录 &#x1f60a;前言 一.选择题 1.执行下面程序&#xff0c;正确的输出是&#xff08;c&#xff09; 2.以下不正确的定义语句是&#xff08; &#xff09; 3.test.c 文件中包括如下语句&#xff0c;文件中定义的四个变量中&#xff0c;是指针类型的变量为【多选】&a…

如何做情趣网站池州网站制作优化

golang的协程和通道&#xff0c;之前就看过了&#xff0c;一直没有很好的理解&#xff0c;所以一直也没记录&#xff0c;今天看书&#xff0c;看到有一个总结的章节&#xff0c;里面记录了一些注意事项&#xff0c;因此写个文档&#xff0c;记录一下&#xff0c;避免以后自己忘…