摘要: 本文将为您介绍一个对应Entity Framework的 CRUD 通用类,相比起以往的SqlCommand操作,Entity Framework更体现出映射的灵活性。以往的操作中,即使开发出一个通用类,CommandText 通常都需要使用手工输入,特别是重复的Update命令操作中,往往令人不厌其烦。通过Entity Framework可以把CRUD更高度地集中在一个通用类,令开发变得更加简单。
阅读全文
摘要: 本章主要介绍了委托(Delegate)的使用,解释委托的协变与逆变,以及如何使用 Delegate 使 Observer(观察者)模式的使用变得更加简单。
而事件(Event)属于一种特殊的委托,最后,本文还介绍了匿名方法,泛型委托Predicate,Action,Func 的来由,以及 Lambda 表达式的使用方式。
委托对象是一个派生自 System.MultcastDelegate 的类,它能通过 Invoke 方式进行同步调用,也可以通过 BeginInvoke,EndInvoke 方式实现异步调用。而事件(Event)属于一种特殊的委托,它与委托类型同步使用,可以简化的开发过程。本文会讲述事件的使用方式,并以ASP.NET的用户控件为例子,介绍一下自定义事件的使用。
阅读全文
摘要: 本文主要是介绍进程(Process)、应用程序域(AppDomain)、.NET上下文(Context)的概念与操作。一个进程内可以包括多个应用程序域,也有包括多个线程,线程也可以穿梭于多个应用程序域当中。但在同一个时刻,线程只会处于一个应用程序域内。线程也能穿梭于多个上下文当中,进行对象的调用。虽然在一般的开发当中这三者并不常用,但熟悉三者的关系,深入了解其作用,对提高系统的性能有莫大的帮助。在本篇最后的一节当中将会介绍到三者与线程之间的关系,希望对多线程开发人员能提供一定的帮助。
阅读全文
摘要: 在2011的下半年,Visual Studio 11就已经呼之欲出,在2012年的2月29日,微软官方网站正式发布了VS11的测试版。
VS11中使用了Framework4.5,与Framework4.0相比,没有发生太大的改变,只是对功能进行了优化。
下载地址:http://www.microsoft.com/visualstudio/11/zh-cn/downloads
单单一个安装包就需要1.7G左右,安装旗舰装大约需要7.6G的空间,安装时间可能比较长,可需要耐心等待喔。
阅读全文
摘要: 本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。
其中委托的BeginInvoke方法以及回调函数最为常用。
而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作。特别是在ASP.NET开发当中,可能更多人只会留意在客户端使用Ajax或者在服务器端使用UpdatePanel。其实合理使用I/O线程在通讯项目或文件下载时,能尽量降低IIS中的压力。
并行编程是Framework4.0中极力推广的异步操作方式,更值得更深入地学习。
阅读全文
摘要: 本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个方面介绍多线程的开发。
其中委托的BeginInvoke方法以及回调函数最为常用。
而 I/O线程可能容易遭到大家的忽略,其实在开发多线程系统,更应该多留意I/O线程的操作。特别是在ASP.NET开发当中,可能更多人只会留意在客户端使用Ajax或者在服务器端使用UpdatePanel。其实合理使用I/O线程在通讯项目或文件下载时,能尽可能地减少IIS压力。
并行编程是Framework4.0中极力推广的异步操作方式,更值得更深入地学习。
阅读全文
摘要: 其实为啥这是 “反流程” 升职记,就是因为 “升职” 不应该只是等待,而应该是自己争取。“命运” 不应该由天来控制,而应该由自己去创造。“升职” 并不是一个已经有的流程,而是由我们自己的努力而创造的 “奇迹” 。
阅读全文
摘要: 事务是在数据层、服务层、业务逻辑层多处地方都会使用到的东西,在本篇文章将会为大家一一细说。在软件系统当中可以看到无论在数据库、Web服务、WCF、文件系统都存在着数据参与到事务运作当中,我们把管理这些数据的工具称为资源管理器RM(Resources Manager)。而事务管理器TM(Transaction Manager)就是协调多个资源管理器的工作,保证数据完整性的工具。
阅读全文
摘要: 领域驱动设计DDD的总体结构,Repository层使用ORM映射或SQL命令等方式把持久化数据转化为领域对象,然后根据业务逻辑设计对应领域层服务Domain Service 。接着应用层进行操作上的协调,利用Repository、领域模型、领域层服务Domain Service 完成业务需要,再通过数据转换器把领域对象Domain Object转化为数据传输对象DTO。最后,利用远程通讯技术把应用层的服务(Application Service)对外开放。注意留意的是SOA系统中,UI表现层与Application Service应用层服务是实现分离的,表现层可以同时调用多方的远程服务来完成工作。
阅读全文
摘要: 自从ADO.NET Entity Framework面世以来,受到大家的热捧,它封装了大量代码生成的工具,用户只需要建立好实体之间的关系,系统就是会为用户自动成功了Add、Delete、CreateObject、Attach、ToList......等等方法,这些方法基本上已经包含获取、删除、插入等基本方法,使用起来非常方便。只是在实体的更新上,由于LINQ面向的是泛型对象T,所以每个对象的更新方法都要由用户自动编辑。有见及此,下面在下利用反射方法,创建了一个更新工具,此工具可以更新ObjectContext里面的任意一个实体或者多个关联实体。
阅读全文
摘要: 反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等程序集内部的信息。使用反射可以看到一个程序集内部的接口、类、方法、字段、属性、特性等等信息。在System.Reflection命名空间内包含PropertyInfo,MethodInfo,FieldInfo,MemberInfo,EventInfo,ParameterInfo多个反射常用的类。
阅读全文
摘要: 当预定义的绑定无法满足用户需求时,可以使用CustomBinding类开发自定义绑定,该类存在于System.ServiceModel.Channels命名空间。用户可以根据需要绑定以下属性: 事务(TransactionFlowBindingElement类)、可靠性会话(ReliableSessionBindingElement 类)、安全( SecurityBindingElement 类)、流安全、单工双工工作模式、信息编码、传输绑定等,其中信息编码和传输绑定元素是自定义绑定的必要属性,其他属性用户可根据需求制定。
阅读全文
摘要: 根据微软的定义,分部类就是“将类或结构、接口或方法的定义拆分到两个或多个源文件中。 每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来”。在使用分部类的时候,必须为类加入partial的关键字,注意每个类的可访问性必须一致,其中一类为public,其他类也必须为public。如果其中一个类为抽象类,那合并后整个类都将被视为抽象类,其中一个类为密封类,那合并后整个类都将视为密封类。在页面类、DataSet里面你经常可以发现分部类的身影,当你用到Entity Framework的时候,你会发现每个映射生成的对象都是使用分部类的方式生成的,分部类似乎早已派上用场。分部类究竟有什么好处,下面为大家一一揭露。
阅读全文
摘要: Windows Communication Foundation (WCF) 可靠性会话是一个如 WS-ReliableMessaging 协议所定义的 SOAP 可靠消息传递的实现。它在绑定层保证消息只会被传送一次,并能确定消息之间的传输顺序。它的特性在于保证了传输过程中消息不会丢失或者错位,在连接掉线的时候,它会重新连接服务器,连接次数可在配置文件中设定,当在连接失败的时候,能自动释放对话所占用的资源。
系统有多个绑定支持可靠性会话功能:wsHttpBinding、wsDualHttpBinding、wsFederationBinding、netTcpBinding、netNamedPipesBinding。其中wsHttpBinding、wsFederationBinding、netTcpBinding在默认情况下可靠性会话功能是关闭。而wsDualHttpBinding、netNamedPipesBinding则默认支持可靠性功能。
阅读全文
摘要: 当客户端引用WCF服务时,必须为服务定义一个唯一的命名空间。在默认情况下,这个服务中所用到的类会被导入到这个命名空间内。这样,在不同的服务内引用同一个数据契约时就会遇到一个问题:在客户端,同一个数据契约被导入到在不同的命名空间中,无法实现转换。从Visual Studio 2008开始,系统为客户提供了“共享数据契约”这一功能。首先把需要共享的数据契约包含在一个程序集中,生成一个Model.dll文件。在客户端引用这一程序集,在添加服务引用时,选择"高级"—>"重新使用引用的程序集中的类型(A)"—>"重新使用所引用的指定程序集中的类型(S)"
阅读全文
摘要: 关于FileUpload的赋值问题,由于FileUpload经过编译后,最后生成file标签。而在 HTML 文档中 ,file标签是浏览器向服务器发送选中文件的。该元素有一个 value 属性,保存了用户指定的文件的名称,为安全起见,file标签的value 属性是只读的,不允许程序员修改它的值,并且HTML value 属性也会被忽略。所以,当数据库记录下文件在客户端的地址,需要为file标签的value属性赋值时,就会出现问题。经过多翻查询,最后在下决定使用“隐藏标签”的方法来实现这些功能。首先在页面添加一个text标签,一个button标签,一个file标签,并把file标签的sytle属性设置为“visibility:hidden;” 把text标签和button标签模拟file的外观。在window.onload事件中,把已有的文件路径显示在text标签上。然后在button标签的onclick方法中引发file标签的click事件,获取上传文件,最后把上传文件的路径显示在text标签之上。
阅读全文
摘要: 很多人干IT这一行都冲着“收入高”这一点的,因为只要学会一点HTML、DIV+CSS,要做一个页面开发人员并不是一件难事,而且做一个页面开发人员更容易找到工作,收入比普通的工作还要高一些,所以成为了很多高校毕业生的选择。如果您只是抱着这样一个心态来入行的话,那阁下可真的要小心。因为干IT这一行竞争本来就比较激烈,特别是页面设计这方面,能够开发的人很多,所以为了节省成本在大部分公司都会在需要的时候才招聘这类人员,在没有订单的时候一些小公司还可能找各类的借口或者以降薪的手段去开除这类员工。而在招聘信息上常常会看到“招聘页面设计师,条件:30岁以下……欢迎应界毕业生前来应聘”这样一条,因为这一类工员对技术上的要求并不高,找应界生可以节约成本。所以在下觉得“IT行业是吃青春饭的”这句话只是对着以上这类人所说的,如果阁下缺乏“进取之心”,而只抱着“收入高,容易找工作”这样的态度而入行,那“IT行业是吃青春饭”将会应验了。
阅读全文
摘要: 在.NET Remoting与RMI通信中同时存在一个弊端,那就是对开发语言的限制,无论是使用哪一种通讯方式,服务器与客户端都必须支持同一种开发语言。通讯过程中不能跨越开发语言的限制,这是一个人令人懊恼的消息。JNBridge是一种领先的JAVA与.NET互操作的的产品,凭借JNBridge技术,Java和.NET代码无需交叉编译器就可以实现对象共享。所有Java代码运行在JVM上,而.NET代码则运行在CLR上。在该方案下,JVM和CLR可以运行在不同的机器上,也可以运行在一台机器的不同进程上,甚至还能运行在相同的进程的不同应用程序域上。经历多年的发展,JNBridge已经发布了JNBridgePro 5.0,JNBridgePro 5.0有着更强大的功能。 1.支持ava和.NET之间的跨平台事务;2. 支持Microsoft Visual Studio和Eclipse插件;3 兼容Windows 7;4 跨平台交易一体化主要是对用户透明;5 ''回滚'- 任何一方的终止都将导致双方的行动被回滚;
阅读全文
摘要: RMI(Remote Method Invocation)远程方法调用是一种计算机之间利用远程对象互相调用实现双方通讯的一种通讯机制。使用这种机制,某一台计算机上的对象可以调用另外一台计算机上的对象来获取远程数据。RMI是Enterprise JavaBeans的支柱,是建立分布式Java应用程序的方便途径。它针对RPC服务遗留的问题,被设计成一种面向对象的通讯方式,允许程序员使用对象来实现通信。
阅读全文
摘要: Remoting是采用分布式进行编程的一种技术,主要用于管理跨应用程序域的同步和异步RPC 会话。在默认情况下,Remoting可从使用 HTTP 或 TCP 协议进行信息通讯,并使用 XML 编码的 SOAP 或二进制消息格式进行数据交换。.NET Remoting 提供了非常灵活和可扩展的编程框架,并且可以管理对象的状态。Remoting跟Web服务不同,它并不依赖于IIS,用户可以自己开发(Development)并部署(Dispose)宿主服务器,只需要服务器支持Framework。利用Remoting实现分布式开发,可以对远程对象的生命周期进行管理,利用HttpChanel,HttpServerChannel,HttpServerTransportSink,HttpClientChannel,HttpClientTransportSinkProvider,HttpClientTransportSink等对象控制服务器端和客户端的通道,使用代理、消息接收器与通道接收器对信息进行管理。
阅读全文