代码改变世界

WCF 第五章 行为 在WCF一个服务内部的事务操作

2010-12-09 17:35 by DanielWise, 829 阅读, 1 推荐, 收藏, 编辑
摘要:事务化的服务操作只能作为一个整体成功或失败。它们以一个整体被初始化,假设结果将会是一致的,无论操作最终是成功还是失败。图片5.9 使用伪代码描述这个行为。客户端打开一个到服务端的连接然后调用它的Transfer 方法。Transfer 执行一个借入,一个存入,然后标记事务完成。客户端在事务语义中不涉及。 为了在WCF中实现这个行为,服务操作必须使用[OperationBehavior(TransactionScopedRequired=true)]属性来标记为是可事务化的。这指导WCF创建一个新的事务并在将控制权给那个方法前把执行线程入列。如果操作在它完成前失败了,所有在事务中进行的对事务资源 阅读全文

关于SQL Server 存储过程的一点问题

2010-12-08 18:39 by DanielWise, 793 阅读, 0 推荐, 收藏, 编辑
摘要:1. 如何使用SQL Server 生成一条存储过程? 打开SQL Server管理平台,展开节点“对象资源管理器”→“数据库服务器”→“可编程性”→“存储过程”,在窗口的右侧显示出当前数据库的所有存储过程。单击鼠标右键,在弹出的快捷菜单中选择“新建存储过程”命令。 Note: 现在你可以从打开的窗口编辑自己的存储过程,但是除非你的存储过程可以执行通过,否则不会被SQL Server添加为一条合法的存储过程。2. 存储过程该怎么写? CREATE PROC[EDURE] procedure_name [; number ] //修改procedure_name 为你自己的存储过程名;[{@pa 阅读全文

WCF 第五章 行为 实现事务(操作行为)

2010-12-07 21:38 by DanielWise, 512 阅读, 0 推荐, 收藏, 编辑
摘要:有两个场景一般用作事务的参考。多步骤商业过程是典型跨度分,天,月的长时间运行过程。它们可以涉及多个组织和基于人的工作流。短期运行事务是那些在几秒钟完成并很少有外部依赖的商业操作。尽管它们都有定义的很好的接口和确定的工作流,它们是根本不同的事物。WCF支持短期运行的事务。它通过借助.NET和Windows基础结构来实现运行在只有微软环境平台的事务同时通过使用WS-*标准事务来支持跨平台。 多步骤商业过程一般需要同时连接自动化过程和手动工作流。它们可能需要不长时间(比如,处理一个订单)或者几个月(比如,获得一个回扣)。如果一个多步骤过程(比如,计划一次商业旅行)半途而费,前期步骤(比如,飞机票预订 阅读全文

WCF 第五章 可信赖会话

2010-12-07 17:42 by DanielWise, 1023 阅读, 0 推荐, 收藏, 编辑
摘要:WCF是微软在SOA (面向服务)领域的一款利器,先不谈WCF,我们来聊聊SOA。SOA 全称是Service Oriented Application, 也是由面向过程(汇编,C),面向对象(C++, C#, java),面向组件,面向内容…发展过来的。 面向过程可以简化为函数,也可以说我们首先把问题抽象为有限个步骤,这些有限个步骤可以经过计算得到输出结果; 面向对象则首先把我们要处理的事物以一种抽象的层次引入,与面向过程相比多了属性,以及更高层次的集合,简而言之就是先通过抽象剥离,再通过集合汇聚,然后形成一个可以在计算机内表示具体事物的结构; 面向组件是要解决面向对象中不同对象间的依赖关系 阅读全文

WCF 第五章 导出并发布元数据(服务行为)

2010-12-07 08:37 by DanielWise, 1300 阅读, 1 推荐, 收藏, 编辑
摘要:一个服务的ABCs-它的地址,绑定和契约-是以元数据的形式表示的以便于潜在的客户端知道到哪里,该如何与谁去通信。信息统称为服务元数据。服务行为元数据是大多数程序员遇到的第一个行为,因为当你创建WCF工程时它被引用于由Visual Studio 2008生成的配置文件里。这个行为与一个元数据终结点一起工作以便于元数据可以被客户端访问。 为了使元数据对客户端有用,有两个步骤是必须的: 以一种客户端可读并发布到客户端可以找到的地方格式导出。默认的导出格式是WSDL,所以只要客户端可以读基于标准的元数据格式,它们可以理解如何与服务端通信。WCF在任何支持的传输协议上使用WS-MetadataExcha 阅读全文

WCF 第五章 控制并发会话的数量

2010-12-06 22:17 by DanielWise, 1772 阅读, 0 推荐, 收藏, 编辑
摘要:当InstancingMode被设置成PerSession时,WCF为每个连接到服务端的会话创建一个实例。为了控制连接到一个服务端的会话数量,可以使用maxConcurrentSessions行为。当达到最大值时,下一个客户端尝试创建的会话将会阻塞直到另外一个会话关闭。这个设置对限制可以连接到服务端的用户(或客户端或服务器端)的数目是很有用的。 列表5.11显示了一个使用InstanceContextMode.PerSession和ConcurrencyMode.Multiple行为的服务。服务操作花费20秒钟完成。列表5.11 使用InstanceContextMode.PerSession 阅读全文

WCF 第五章 控制并发调用的数量

2010-12-06 21:42 by DanielWise, 1320 阅读, 0 推荐, 收藏, 编辑
摘要:当InstancingMode设置成Single时,WCF在宿主内创建一个单一的实例,不考虑有多少客户端被创建。当ConcurrencyMode设置成Multiple时,WCF为每个请求创建一个线程(取决于系统上限)以实现服务方法的并行执行。为了减少这个,maxConcurrentCalls行为控制有多少个并发调用可以激活。 列表5.9 显示了一个使用InstanceContextMode.Single和ConcurrencyMode.Multiple的服务行为。服务操作花费20秒完成。列表5.9 使用InstanceContextMode.Single和ConcurrencyMode.Mul 阅读全文

WCF 第五章 控制并发实例的数量

2010-12-05 11:20 by DanielWise, 2024 阅读, 0 推荐, 收藏, 编辑
摘要:默认情况下,WCF 宿主将会启动尽可能多的实例来处理请求消息。如果一个服务的实例和并发行为并没有确定,WCF将会为每个进入的请求创建一个服务实例同时将按照需要分配线程来反应请求。总体来说这是一个对性能和扩展性都很好的解决方案因为服务将会最大化扩展硬件性能。但是有很多情况你可能想舍弃使用这种行为。为了这个目的,有三种在并发和实例上的设置可以实现。这些定义在配置文件的行为组分的serviceThrottling元素里。maxConcurrentInstances行为控制有多少个服务实例可以被一个服务创建。这个设置是有用的如果ConcurrencyMode是PerCall或者PerSession,因 阅读全文

WCF 第五章 会话级别的实例

2010-12-05 10:08 by DanielWise, 968 阅读, 0 推荐, 收藏, 编辑
摘要:会话在分布式应用程序中广泛用于维护每个用户的状态。在站点或者基于站点的应用中,将每个用户的状态存储于会话中很常见。这这些情况中,用户和会话间有一个1:1比例。WCF以一个类似的概念支持服务。使用InstanceContextMode.PerSession设置,WCF可以直接为每个会话创建一个服务实例。提示 实例会话与可信赖会话不同Per-Session服务实例不应该与另一个WCF特性弄混,可信赖会话。这个特性,实现了WS-RM规范,用来确定在扩媒介的不同终结点间的可信赖的,顺序的消息传输。它与并发或者对象创建行为没有任何关系。为了实现Per-session服务实例,必须做两件事:在契约层允许会 阅读全文

WCF 第五章 实现一个单例

2010-12-03 12:53 by DanielWise, 1397 阅读, 0 推荐, 收藏, 编辑
摘要:有很多情形需要一个服务对应一个服务实例,而且实例仅可以运行一个线程。任务应该严格的按照FIFO(先进先出)顺序执行,没有并发。尽管这个严重降低吞吐量,这有利于那些状态在所有调用者间共享且它们没有足够的锁定机制存在的场景。 为了创建一个仅有一个单一线程的单一服务实例,InstanceContextMode.Single 应该与ConcurrencyMode.Single一起使用。InstanceContextMode.Single设置意味着仅有一个实例应该被创建,而ConcurrencyMode.Single设置指导WCF在某一时刻只能在一个线程中执行一个实例。这些设置指导WCF按照FIFO(先 阅读全文