博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring.Net+WCF实现分布式事务
阅读量:6306 次
发布时间:2019-06-22

本文共 2456 字,大约阅读时间需要 8 分钟。

  1.在教师服务端,我们需要在WCF的接口上加上WCF分布式事务特性:

[OperationContract][TransactionFlow(TransactionFlowOption.Allowed)]bool AddTeacher(TeacherViewModel vmTeacher);

      在教师服务端的B层实现上加上WCF分布式事务特性:

///         /// 增加学生        ///         /// 教师ViewModel        /// 
布尔值
[OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] public bool AddTeacher(TeacherViewModel vmTeacher) { //创建转换规则 Mapper.CreateMap
(); //转换实体 TeacherEntity enStudent = Mapper.Map
(vmTeacher); //调用dal层增加方法 this.CurrentDal.Add(enStudent); //提交事务,返回结果 return this.DbSession.SaveChanges() > 0; }

   2.在学生服务端的B层采用system.transactions进行分布式事务处理:

```

public void AddStudentTeacher(StudentViewModel vmStudent)

{
//创建转换规则
Mapper.CreateMap<StudentViewModel, StudentEntity>();
//转换实体
StudentEntity enStudent = Mapper.Map<StudentEntity>(vmStudent);

//调用dal层增加方法        this.CurrentDal.Add(enStudent);        this.DbSession.SaveChanges();        //调用老师的添加方法        ITeacherContracts teacherContracts = ServiceFactory.GetTeacherService();        TeacherViewModel vmTeacher = new TeacherViewModel { TeacherID = "123", TeacherName = "11" };        teacherContracts.AddTeacher(vmTeacher);    }
       3.由于每个事务处理都需要using TransactionScope、 trans.Complete,所以我们用Spring.Net的AOP管理这些相同的处理:

public class AroundAdvice : IMethodInterceptor

{
public object Invoke(IMethodInvocation invocation)
{
object result;
using (TransactionScope trans = new TransactionScope())
{
result = invocation.Proceed();
trans.Complete();
}
return result;
}
}

   4.配置数据库服务器的MSDTC服务:     4.1开启MSDTC服务,在DOS中输入net start msdtc;     4.2设置MSDTC,在DOS中输入dcomcnfg.exe,按下图所示设置:![](https://s1.51cto.com/images/blog/201810/28/9ab6fb5d815622f1cad479fe7af7375f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)      4.3关闭windows防火墙;     4.4开启数据库的分布式事务支持,设置如下图所示:     5.![](https://s1.51cto.com/images/blog/201810/28/a1fc537db968195eef6d55adc98c5400.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)     6. 当前版本是用system.transactions实现的分布式事务,用Spring.Net的AOP切了一下欢迎工作一到五年的Java工程师朋友们加入Java架构开发:855801563 获取更多免费视频教程。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代

转载于:https://blog.51cto.com/13981400/2309975

你可能感兴趣的文章
Do While ... Loop 与 Do Until ... Loop 的区别
查看>>
【Linux】查询某个字符串出现次数
查看>>
高效使用jquery之一:请使用'On'函数
查看>>
冲刺第一周第三天
查看>>
ERP环境检测工具设计与实现 Environment Detection
查看>>
不要在构造中做太多事情,不然有时候会出现有意思的代码~
查看>>
IIS 发布网站遇到的问题
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>
xcode中没有autoSizing的设置
查看>>
字符编码
查看>>
企业应用:应用层查询接口设计
查看>>
浅谈Excel开发:十 Excel 开发中与线程相关的若干问题
查看>>
nfd指令的详细说明
查看>>
安装VisualSvn Server时遇到的问题
查看>>
不用Visual Studio,5分钟轻松实现一张报表
查看>>
人脸识别 开放书籍 下载地址
查看>>
Notepad++配置Python开发环境
查看>>
用户组概念 和 挂载 概念
查看>>
如何快速获取ADO连接字符串
查看>>
AspNetPager控件的最基本用法
查看>>