摘要:
综述 EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/。 EmitMapper映射效率比较高,接近硬编码。EmitMapper采用emit方式在运行时动态生成IL,而其他映射框架多是采用反射机制。此外EmitMapper最大限度地减少了拆箱装箱操作和映射过程中的额外的调用。 EmitMapper支持.net的所有平台:Framework 3.5、Microsoft Silverlight 3、Mono。 EmitMapper的使用非常简单,不需要指定任何的映射策略。系统会采用默认的映射配置器DefaultMapConfig完成映射 阅读全文
摘要:
综述 MSSQL是个非托管的应用程序,但是开发人员可以用托管代码创建数据库存储过程、触发器或者函数。 这样开发人员就可以利用其他语言来编写数据库存储过程、触发器或者函数,不仅可以使用FCL或其他程序集中的类型,还可以享受.net framerwork中强大类库的功能。 当首次请求一个用托管代码写的存储过程时, MSSQL会加载CLR,存储过程会在独立的应用程序域运行,这样不会对数据库本身产生影响。托管代码会被JIT编译成本地代码执行,而不是解释执行,这保证了托管代码的执行效率。编写托管代码 为了使用托管代码创建数据库存储过程、触发器或者函数,只需要对托管代码中具体方法使用Microsoft.S 阅读全文
摘要:
综述 要实现网站的统一认证,简单来讲就是利用开放平台的接口获取到用户的信息,以绑定自身网站的用户,并实现自动登录。 谈到开放平台,就得提及OAuth。OAuth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAuth的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAuth是安全的。 国内主流的开放平台如腾讯、新浪、百度、豆瓣等大部分都是基于OAuth协议实现的。现行的OAuth协议有1.0、1.0a、2.0这三个版本,其中2.0还未正式发布,不过这三个版本都有开放平台支持。 阅读全文
摘要:
Lucene.net Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,它提供了完整的查询引擎和索引引擎,可供开发人员灵活的实现全文检索功能。Lucene.net是Apache软件基金会赞助的开源项目,最新版本是2.9.2.2。 使用Lucene.net进行全文索引的关键步骤是建立索引文件:先选择一个分析器(Analyzer)用来分词,再抽取待索引文档中的文本,选择适当的索引方式并添加到Lucene.net索引中。分词 分词是全文索引的基础。Lucene.net内置了几个分析器,但功能都比较简单,如果只是针对拉丁语系的分词完全够用,但针对中文的分词就不太理想 阅读全文
摘要:
综述 SOS是一个非托管调试器扩展,用来帮助对CLR托管代码进行分析与调试。可以通过加载到非托管调试器WinDbg、NTSD或者VisualStudio调试器中使用。不同的CLR版本都自带有对应的SOS,在对应的版本目录下。 .NET框架为开发人员隐藏了底层系统的复杂性,这虽然极大地提升软件开发效率,但也同时增加了对底层的技术细节了解的难度,使得一些问题调试起来更为困难,比如内存溢出或者死锁问题。 通过SOS提供的命令,可以直观的了解CLR托管代码的底层结构,更可以方便的进行调试,并诊断一些具体问题(如GC、锁)。 将调试器附加到目标进程后,就可以通过.loadby sos mscorw... 阅读全文
摘要:
查看线程和同步块1.查看托管线程 Threads命令显示进程中的所有托管线程及统计信息。-special选项显示由 CLR 创建的所有特殊线程,包括GC线程、调试器帮助程序线程、终结器线程、AppDomain卸载线程和线程池计时器线程。Threads!Threads -specialThreadCount: 2UnstartedThread: 0BackgroundThread: 1PendingThread: 0DeadThread: 0Hosted Runtime: no PreEmptive GC Alloc Lock ID OSID ThreadOBJ State GC Context 阅读全文
摘要:
综述 MSSQL2005引入了XML的数据类型,相应的T-SQL也提供了大量的语句和函数用于支持对XML的操作,以及维护关系型数据和XML之间的转换。对XML查询 T-SQL提供了以下几个针对XML类型的查询函数: query(XQuery):利用Xquery查询符合条件的元素集合。 value(XQuery,Type):利用Xquery查询具体元素的值,Type定义值的类型。 exist(XQuery):利用Xquery查询是否存在符合条件的元素。 nodes(XQuery):利用Xquery获得一个结果集。 下面是详细的示例:查询XML 1DECLARE @Doc xml 2 SET @D 阅读全文
摘要:
综述 WF运行时(WorkflowRuntime)是一个服务的容器,它依赖一组公共的核心服务来管理WF实例,但WF运行时设计得非常轻量级,它的许多功能都由宿主程序定义。WF为这些服务提供了现成的实现,不过宿主程序也可以自行开发以满足特定的需求,将服务加入到WF运行时中。 下面是WF提供的运行时服务的实现。所有服务都继承自基类WorkflowRuntimeService。对于必要的运行时服务,如果宿主程序没有选择其他实现,WF将加载默认的服务。非必要的运行时服务,如果宿主程序没有选择其他实现,WF将不加载任何实现。 服务名默认加载其他实现必要WorkflowLoaderServiceDefau. 阅读全文
摘要:
AppDomain Windows使用进程边界来隔离在同一台计算机上运行的应用程序。每一个应用程序被加载到单独的进程中,在目标进程中,不能通过任何有意义的方式使用从一个进程传递到另一个进程的内存指针,也不能在两个进程间进行直接调用,要使用代理间接调用。 CLR使用应用程序域(AppDomain)进行程序间的隔离,可以在单个进程中运行多个应用程序域,但隔离级别与进程相当,而且不会造成进程间调用或进程间切换等方面的额外开销。简单来讲,它可以提供与进程边界相当的隔离级别,而其性能开销则要低得多。 隔离应用程序对于应用程序安全十分重要。当一个应用程序中出现的错误不会影响其他应用程序。因为应用程序域可以 阅读全文
摘要:
综述 序列化是将对象转换成流的过程,与之相反,反序列化将流转换为对象。利用序列化技术可以将对象序列化到磁盘、内存或者网络,在进程间、应用程序域间或者计算机之间传递对象。 .net框架提供了二进制格式和XML格式(纯XML或SOAP)的序列化,如果需要,也可以根据Iformatter接口实现自己需要的格式。利用Iformatter接口的Serialize方法和Deserialize方法可以将对象序列化/反序列化。 有三种方式可以声明序列化的方式。下面分别比较。 先准备一个待序列化的类User。 User类 1 public class User 2 { 3 public string Name 阅读全文
摘要:
综述 现在有很多B/S与C/S相结合的产品,会出现一种需求:从浏览器启动客户端的程序,并且如果客户端未安装相应程序,先提示安装。 主流的几款产品:腾讯QQ、阿里旺旺、迅雷、PPLive等,都有实现了类似的功能。 浏览器启动客户端程序可以通过注册自定义的Url协议来实现,而检测客户端是否安装程序需要利用ActiveX控件。 要额外注意的是,现在只有IE浏览器才支持。客户端程序 先准备一个简单的客户端程序,只用来显示传入的命令行参数。Client 1 namespace wuhong.Client 2 { 3 class Program 4 { 5 static void Main(string. 阅读全文
摘要:
捕获组 语法:字符描述示例(pattern)匹配pattern并捕获结果,自动设置组号。(abc)+d匹配abcd或者abcabcd(?<name>pattern)或(?'name'pattern)匹配pattern并捕获结果,设置name为组名。\num对捕获组的反向引用。其中 num 是一个正整数。(\w)(\w)\2\1匹配abba\k< name >或\k' name '对命名捕获组的反向引用。其中 name 是捕获组名。(?<group>\w)abc\k<group>匹配xabcx 使用小括号指定一个子表 阅读全文
摘要:
REST 表述性状态转移(Representational State Transfer,REST),不是一种标准,而是一种软件架构风格。 基于REST的服务与基于SOAP的服务相比,性能、效率和易用性上都更高,而SOAP协议非常的复杂和不透明。REST受到越来越多的Web服务供应商欢迎。目前大部分供应商,如yahoo、google、Amazon等都提供REST风格的服务。 REST的主要原则是:1.网络上的所有事物都可被抽象为资源;2.每个资源都有一个唯一的资源标识符URI;3.使用标准方法操作资源;4.所有的操作都是无状态的;5.通过缓存来提高性能。REST是基于Http协议的,任何对资源 阅读全文
摘要:
Ranking函数 MSSQL2005新增了四个排名函数,ROW_NUMBER, RANK, DENSE_RANK, NTILE。利用这些函数可以有效地分析数据以及向查询的结果行提供排序值。 下面举例说明。先准备数据:测试表和测试数据 1CREATE TABLE [Test] 2( 3 [StudentID] [bigint] NOT NULL, 4 [ClassID] [bigint] NOT NULL, 5 [TestScore] [decimal](4, 1) NOT NULL 6) ON [PRIMARY] 7GO 8 9INSERT INTO [Test] 10 VALUES (10 阅读全文
摘要:
综述 XML加密和签名技术应用非常广泛。 ASP.NET 使用XML加密对配置信息进行加密;InfoPath使用XML签名对表单进行签名;Web服务使用XML加密和签名对SOAP消息进行加密和签名;等等。 W3C提供了相应的标准:http://www.w3.org/TR/xmldsig-core。 而X.509是一种非常通用的证书格式,符合ITU-T X.509国际标准。此标准已用于许多网络安全应用程序:IP 安全、SSL、电子商务协议(SET)等等。 利用X.509证书提供的公钥/私钥对可以很方便的对XML进行加密和签名。Geneva框架生成的GenericXmlSecurityToken类 阅读全文