C#中分布式事务的超时处理问题
    
            
摘要:事务是个很精妙的存在,我们在数据层、服务层、业务逻辑层等多处地方都会使用到。在这里我只说下TransactionScope这个微软推荐使用的隐式事务。它是从Framework 2.0开始引入的一个事务管理类,在使用隐式事务时,事务完成前程序应调用TransactionScope的Complete()方法,将事务提交,然后利用Dispose()释放事务对象。若执行期间出现错误,事务将自动回滚。比如:using(ransactionScopescope =newTransactionScope()) {//to do something scope.Complete(); }在这里个人建议用usi
        
阅读全文
摘要:微软发布Visual Studio 2012 示例代码浏览器2012-09-05 13:45 by Jialiang, 1101 阅读,4评论,收藏,编辑示例代码对于开发人员的重要性是不言而喻的。很多程序员往往通过示例代码着手学习一门技术。当开发人员遇到编码困难时也往往希望得到示例代码来解决疑难杂症。示例代码可谓是开发人员的良师益友,为程序员的学习和工作保驾护航。微软一站式示例代码库,与Visual Studio和 MSDN Samples Gallery产品组合作,共同研发了Visual Studio示例代码浏览器,可同时应用于Visual Studio 2012和Visual Studio
        
阅读全文
摘要:以下几节中我将对C#2中增加的最重要的特性进行介绍。 1)泛型---作为C#2最重要的新特性(同时也是.NET2.0的CLR中最重要的新特性),泛型实现了类型和方法的参数化。 2)可空类型---值类型没有“值不存在”的概念。有了可空类型之后,就可以表示“缺少一个有意义的值”。 3)委托---虽然委托在CLR的级别上没有任何变化,但C#2使它们使用起来更容易。除了语法得到了一些简化,匿名方法的引入,还引导我们采取更“函数化”的编程风格---这个趋势在C#3中得到了延续。 4)迭代器---虽然一直以来,都可以利用C#的foreach语句来简单地使用迭代器,但C#1中,它实现起来却是一件让人痛苦的事
        
阅读全文
摘要:本片继承前面几篇一贯的特点,浅谈胡侃。 1 .NET为什么要引入泛型? 说到.NET泛型,应该都不陌生,毕竟泛型是.NET 2.0中就推出的特性,各位博友应该都知道引入泛型的目的是为了解决装箱、拆箱带来的性能损失,说的当然没有错,但是不够“太具体”,确切来讲泛型解决了原先无法避免的容器操作的装箱拆箱问题。 目的就说这么多吧,言简意赅,该说的说了,多说无益。 2.浅谈.NET泛型原理 有过C++编程经验的博友对C++中的模板,一定不陌生,泛型的语法和概念和C++中的模板极其类似,在C++中模板的目的是为了设计更加通用的类型,在.NET中也是这样,当然还有另外一个重要的作用,就是前面所说...
        
阅读全文
摘要:需求需要在DataGridView新增行时触发新行第二列的双击事件以显示数据选择窗体,具体如下图事件代码入下//单元格双击事件处理View Code dataGridView1.CellDoubleClick += (s, e) => { if (e.RowIndex < 0) return; var curItem=bindingSource1.Current as KB_Route; if (e.ColumnIndex >= 0 && dataGr...
        
阅读全文
摘要:线程与进程的比较: 线程具有许多传统进程具有的特征,所以,又称为轻型进程(Light-Weight Process)或进程元,相应地把传统进程称为重型进程(Heavy-Weight Process),传统进程相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都拥有若干个线程,至少也有一个线程。下面我们从调度性、并发性、系统开销和拥有资源等方面对线程和进程进行比较。 1)【调度】 在传统的操作系统中,作为拥有资源的基本单位和独立调度、分派的基本单位都是进程。【【而在引入线程的操作系统中,则把线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位】】,------>>
        
阅读全文
摘要:MSBuild是什么?MSBuild全称(Microsoft Build Engine),是用来生成.NET程序的平台。您可能不知道它,但是如果您在使用VS做开发,那么一定时时刻刻在使用它。因为是它在背后为你管理生成你的项目文件。当新建一个项目时,注意下项目文件夹中的*.*proj文件就是为MSBuild提供的,这是个文本文件,基于XML格式,里面包含有项目所包含的文件,生成配置,输出配置等信息。当把一个文件或者图片等添加到项目中,就会在这里添加一个描述,反之则删除一个描述信息;在项目属性页所做的配置也会在这里存储。为何去了解MSBuild想去了解这个源于以前学WPF时的疑惑(当时就想从MSB
        
阅读全文
摘要:自己接触NHibernate,Spring.Net,Moq这些框架有一段时间了,觉得很多很Cool的功能在这些框架中的实现都建立在动态代理这个技术之上,特来跟大家分享一下,希望大家一起讨论,一起进步,我的计划是这个系列将会有四篇文章: 1..Net动态代理Castle系列(一)---初步认识 2..Net动态代理Castle系列(二)---ORM中延迟加载及实现 3..Net动态代理Castle系列(三)---在Mock框架中的运用及实现 4..Net动态代理Castle系列 (四)---在AOP中的运用及实现 今天先开始对动态代理有个初步的认识,并通过实例来让大家能认识到Cast...
        
阅读全文
摘要:区分const,static,readonly,volatile四个关键字const:表示常量,变量的值是绝不会被改变的,常量的值是在编译时就已经确定了。编译器会把常量的值保存在程序集的元素据里面,在C#里面,下面列举的简单类型才能被定义为 常量:Boolean, Char, Byte, SByte, Int16, UInt16 , Int32, UInt32 , Int64, UInt64 , Single , Double , Decimal, String。如果定一个引用类型为常量,则必须把该变量的值设为null。因为常量的值是不会改变的,所以常量也常常被认为是定义的类型的一部分。换句话
        
阅读全文
摘要:TransferControllerctl =newTransferController(null,null);//因为这个测试用不到这2个接口,所以用了nullboolreal = ctl.TransferMoney(fromAccount, toAccount, money); Assert.IsFalse(real); }publicvoidTransferMoney_Validate_FromAccount_NotExist_Test() {stringfromAccount ="11111111111111";stringtoAccount ="bbbb
        
阅读全文
摘要:利用Aspose.Word控件实现Word文档的操作Aspose系列的控件,功能都挺好,之前一直在我的Winform开发框架中用Aspose.Cell来做报表输出,可以实现多样化的报表设计及输出,由于一般输出的内容比较正规化或者多数是表格居多,所以一般使用Aspose.Cell来实现我想要的各种Excel报表输出。虽然一直也知道Aspose.Word是用来生成Word文档的,而且深信其也是一个很强大的控件,但一直没用用到,所以就不是很熟悉。偶然一次机会,一个项目的报表功能指定需要导出为Word文档,因此寻找了很多篇文章,不过多数介绍的比较简单一点,于是也参考了官方的帮助介绍,终于满足了客户的需
        
阅读全文
摘要:基元线程同步——内核模式构造(WaitHandle,EventWaitHandle,AutoResetEvent,ManualResetEvent,Semaphore,Mutex)2012-08-29 17:46 by xiashengwang, 280 阅读,0评论,收藏,编辑一、内核模式构造内核模式构造,采用的是windows操作系统来同步线程,比用户模式的VolatileRead,VolatileWrite,Interlocked等同步慢很多。但它也有自己的优点:1,不用像用户模式那样占着cpu“自旋”,浪费cpu资源。2,内核模式可同步在同一机器不同进程中运行的线程。3,可实现本地和托
        
阅读全文
摘要:IList与IList[T],自定义接口IActionList2012-08-28 14:45 by 旦旦, 143 阅读,1评论,收藏,编辑附件:ActionList.rarWPF DataGriw采用编辑模式,用户可以双击最尾的空白行从而新加一条记录.也可以选择行记录后按键盘Del键来删除选择的记录,做完一系列的操作后一次性把数据都保存到远程数据库中.那在MVVM中Ui和后台是分离的.不能直接知道那样那数据是新加\还是修改\有那些数据是被删除的了.那当前操作的集合表面保存的数据就不一定是这次一系列所有操作的数据.那只是操作过后所要保留下来的数据而以.为了触屏这样子的问题很多人一般都会写多几
        
阅读全文
摘要:系统重新发布了下,改进了一些BUG系统UI,给人感觉非常好,体积小巧,速度快支持N级菜单导航,菜单显示方式支持目前支持2种模式分别:菜单(无限级),横向(2级)。优化了生成菜单JSON的算法。本系统大部分使用AJAX操作。大大提高了用户体验,操作起来相对要简单明了一些。系统中用到的技术如下:ASP.NET 4.0 + c# + SQL2005 + jQuery我的言语表达能力不行,只能用图片来表达啦。相信很多朋友一看就明白怎么回事,要的就是这个效果 好啦,不多说啦,,上美图:第一张项目截图:底层代码登陆页面,密码可以记住,登陆后显示首页无限极菜单表格列表,table显示jquery控制效果表单
        
阅读全文
摘要:这几天园子里面讨论ORM性能的比较火,甚至有点火药味。都说自己的ORM好,性能高,当然自己用得最顺手的是最好的,咱们也追求没有最好,只有更好。正好,Newlife群主自己有一个500M的sqlite数据库,以前好多人对Newlife.Xcode的性能都有顾虑,那实测下Xcode实际性能:1.550M的Sqlite数据库,大约580万实际项目的DNS数据2.Newlife.Xcode不需要自己动手实现接口就支持目前主流的数据库。【MSSQL,Mysql,Oracel,Access,Sqlite,PostgreSQL,Firebird】3.Xcode的其他特点,比如数据库反向工程之类就不说了,看看
        
阅读全文
摘要:面向对象—在线文件管理模块2012-08-21 21:42 by xiangxiong, 527 阅读,3评论,收藏,编辑在园子里看到好多关于在线文件管理系统的文章和源代码,大家实际上达到的目的其实多大同小异,但是采用的实现的方式大有不同。本人刚好在项目中应用到在线文件管理模块,如实自己开始写了一个Demo,当然也参考了网上高人写的代码,下面介绍我对这个模块实现的思路和实现。实现思路介绍:文件对象 FileSystemItem.cs文件操作管理类 FileSystemManager.cs界面 Demo.aspxJs jqModal.js弹出窗口文件对象此类对文件对象的属性进行封装。usingS
        
阅读全文
摘要:在项目开发中,往往会碰到一些非常规的需求,每次碰到这种情况,都需要花费时间来整理自己的思路,然后参考网络上其他人的实现方式或者作法,有时候可以找到一些相同的模块进行改进即可符合需求,但往往很多是需要自己潜心研究,然后提炼优化,虽然探索过程还是比较开心,不过时间肯定是需要花不少的。我每次碰到这种情况,都会沉下心来,力求把这种的模块做得更好一点,方便以后的重用,这样每次抱着这样的态度,着实积累了不少好的东西,也可以为后面的项目夯实基础。在一次Winform的项目开发过程中,客户需要对一些体检数据等参数进行曲线展示,其实图表控件有很多,但是我印象比较深的还是开源的ZedGraph控件,这个既可以用在
        
阅读全文
摘要:在业务系统的操作过程中,有时候,用户需要切换用户进行重新登录,这种情况有时候是因为一个人管理多个用户账号,希望通过不同的账号登录进行管理不同的资料,另一种情况是酒店的换班操作,另一个人接替前面的人进行系统维护管理。这种重新登录其实也是一种友好的操作之一,试想一下,换个账号登录,就需要推出系统,重新寻找运行程序才可以,而且如果系统启动较慢一点的,还需要等待,所以实现重新登录,有时候也是必要的。因此实现这个功能,也是体现我们开发的系统注重细节的表现。另外,自动登录(其实是接受通过命令行参数进行登录)也是很常见的,有时候,让客户端记住用户的账号密码,我们在后台通过调动命令行方式进行登录,让系统程序接
        
阅读全文
摘要:阅读目录开始运行时不使用反射优化反射性能的终极方法没有从名称到序号的查找过程尽量使用专用版本的读取方法ClownFish的实体加载器对并发的优化ClownFish的实体编译方法在上篇博客中,我介绍了我的最新版本的通用数据访问层:ClownFish。在那篇博客的回复评论中,有些人感觉比较好奇:为什么ClownFish能比手工代码的执行速度更快?不过,也有人不相信,那些人认为反射肯定的速度肯定比不上手写代码。显然后者完全是在瞎猜,凭自己的感觉在猜。今天的博客不打算再介绍ClownFish在功能上有什么优点,只是想回答上篇博客中那些感兴趣的人,解答他们的疑惑:为什么ClownFish能比手工代码的执
        
阅读全文
摘要:【物联网智能网关-09】CAN总线通信演示(TinyGUI触屏)CAN 是Controller Area Network 的缩写,ISO国际标准化的串行通信协议。最早应用在汽车上,在欧洲是汽车网络的标准协议,目前已经广泛应用在工业自动化、智能家居、船舶、纺织和医疗设备等领域(详情请参见百度百科《CAN总线协议》)。由于CAN总线接口.NET Micro Framework官方库并不支持,所以我在串口类库的基础上,根据CAN总线的特点,设计出一套CAN总线通信库。CAN类库的声明如下:public class CAN { public CAN(string canName, ...
        
阅读全文