摘要:刚刚爱上MVC3.0,几个不眠夜的学习越来越有趣。今天随手尝试自定义Mvc3.0的视图引擎,虽然已成功,但是还发现有点小疑问。随手贴出来希望大家指教指教。
MVC的视图文件目录被固定/Views目录内,区域视图文件也是被固定在/Areas目录下,出于好奇和对目录名的敏感,尝试修改它。通过reflector找到视图引擎的构造接口类VirtualPathProviderViewEngine
在MVC2.0中,自定义自己的视图引擎,继承它即可,但在3.0中,我发现继承它会缺少一个函数。再reflector获得了BuildManagerViewEngine的抽象类,因为RazorViewEngine继 阅读全文
一起谈.NET技术,C#中标准Dispose模式的实现
2011-09-01 23:58 by 狼人:-), 207 阅读, 0 推荐, 收藏,
摘要:需要明确一下C#程序(或者说.NET)中的资源。简单的说来,C#中的每一个类型都代表一种资源,而资源又分为两类: 托管资源:由CLR管理分配和释放的资源,即由CLR里new出来的对象; 非托管资源:不受CLR管理的对象,windows内核对象,如文件、数据库连接、套接字、COM对象等; 毫无例外地,如果我们的类型使用到了非托管资源,或者需要显式释放的托管资源,那么,就需要让类型继承接口IDisposable。这相当于是告诉调用者,该类型是需要显式释放资源的,你需要调用我的Dispose方法。 不过,这一切并不这么简单,一个标准的继承了IDisposable接口的类型应该像下... 阅读全文
一起谈.NET技术,.Net语言中关于AOP 的实现详解
2011-09-01 23:58 by 狼人:-), 285 阅读, 0 推荐, 收藏,
摘要:文章主要和大家讲解开发应用系统时在.Net语言中关于AOP 的实现。LogAspect完成的功能主要是将Advice与业务对象的方法建立映射,并将其添加到Advice集合中。由于我们在AOP实现中,利用了xml配置文件来配置PointCut,因此对于所有Aspect而言,这些操作都是相同的,只要定义了正确的配置文件,将其读入即可。对于Aspect的SyncProcessMessage(),由于拦截和织入的方法是一样的,不同的只是Advice的逻辑而已,因此在所有Aspect的公共基类中已经提供了默认的实现: public class LogAspect:Aspect { public ... 阅读全文
一起谈.NET技术,验证.NET强命称的思路和实例
2011-09-01 23:58 by 狼人:-), 201 阅读, 0 推荐, 收藏,
摘要:手头有一个行业软件,是需要插上加密狗才能正常运行的,C# / .Net Framework 1.1环境开发的。这是我们公司购买的正版软件,所以是能正常使用的,但是由于电脑多,加密狗难免要拔来拔去的。闲来无事,就研究研究吧,也好多学些调试知识。PEiD可以“鉴定”出该软件是Microsoft Visual C# / Basic .NET,新手不要以为脱壳查壳才用到PEiD啊。 那就用Reflector分析吧,注意到不插加密狗会弹出个对话框提示“*****未注册*****”的字样,部分功能受限。按F3显示搜索窗口,输入“未注册”,点其右侧“String Seach”图标进行字符串搜索。找到... 阅读全文
一起谈.NET技术,ASP.NET下用URLRewriter重写二级域名
2011-09-01 23:58 by 狼人:-), 200 阅读, 0 推荐, 收藏,
摘要:这里要求对域名进行重写,实现http://1234.abc.com/ 到 ~/Defa.aspx?id=1234的重写。 第一:域名 首先域名要支持泛解悉,就是域名解悉的主机名为星号*,例:*.abc.com。如下图 这样能保证你在浏览器地址栏输入任何前缀,DNS都会把它们指向到你指定的IP地址上。 第二:IIS设置(Win2003 + IIS 6为例) (1)网站必须为Web服务器的默认站点,即端口号为80,主机头为空的站点。如下图所示。 该站点接收所有对该服务器的HTTP请求(其它设置为主机头的站点除外)。所以任何二级域名访问该服务器都会由该站点进行处理。
... 阅读全文
一起谈.NET技术,关于Winform下,获取Treeview中CheckBox选中项的技巧
2011-09-01 23:58 by 狼人:-), 283 阅读, 0 推荐, 收藏,
摘要:背景
今天,在做一个指纹管理平台的界面上,遇到了一些问题,因为公司的基础库中没有针对Winform平台的操作,所以在一个部门选择的场景中,关于如何获取部门TreeView中被选中的项目被难住了。所幸还有一个神器叫做搜索引擎,故谷歌一番,发现Asp.net下的这个问题很好解决,但是关于Winform平台下的类似问题,如凤毛麟角啊!
当然,今天我也是查了很久,终于发现了两篇不错的文章,帮助我解决了这个问题,不敢独享,结合自己对使用其方法的心得,特意记录下来,并通过一个小例子和大家一起分享。
问题是这样的
有一个部门列表,多级的(或者说无限极),我们在Winform端列出来(这个很简单)后,需要对其 阅读全文
一起谈.NET技术,.NET异步编程:IO完成端口与BeginRead
2011-09-01 23:58 by 狼人:-), 191 阅读, 0 推荐, 收藏,
摘要:写这个系列原本的想法是讨论一下.NET中异步编程风格的变化,特别是F#中的异步工作流以及未来的.NET 5.0中的基于任务的异步编程模型。但经过前几篇文章(为什么需要异步,传统的异步编程,使用CPS及yield实现异步)的发表后,很多人对IO异步背后实现的原理以及为什么这样能提高性能很感兴趣。其实我本不想花更多的文字在这些底层实现的细节上,一来我并不擅长这些方面,二来我们使用.NET的异步IO就不需要关心这些底层东西,因为已经为你封装完备了。不过为了避免大家一再在这上面商讨,我还是在这个系列中间插入了一篇来解释一下。 本文我将从内核对象IO完成端口开始介绍,然后来瞧瞧.NET BCL... 阅读全文
一起谈.NET技术,在VS2010项目中引用Lib静态库(以Openssl为例)
2011-09-01 23:58 by 狼人:-), 525 阅读, 0 推荐, 收藏,
摘要:Openssl是个为网络通信提供安全及数据完整性的一种安全协议,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。 首先下载Openssl包:(http://www.openssl.org/),这是一个C语言类库包,在Windows下可以通过Perl对该类库包进行MakeBuild,产生libeay32、ssleay32的Lib以及Dll文件,具体操作详见:http://blogger.org.cn/blog/more.asp?name=OpenSSL&id=18972,通过编译产生这样一系列文件: inc32里面放置C... 阅读全文
一起谈.NET技术,Dojo Data Store——统一数据访问接口
2011-09-01 23:58 by 狼人:-), 152 阅读, 0 推荐, 收藏,
摘要:无论在传统的桌面应用还是在主流的互联网应用中,数据始终占据着软件应用中的核心地位。当下,web2.0已经是一个让人们耳熟能详的词汇,而由此带来的数据的开放与共享,引领我们走入了海量数据时代。在今天的互联网上,数据的交互几乎成为了我们的终极诉求,可随之而来的数据多样性,信息的分布式存储及松耦合,以及数据量的几何级规模的膨胀也带来了数据组织上的难度的增大,与此同时,伴随着Ajax, RIA及面向服务的网络应用的发展,其所要求的客户端数据处理逻辑的复杂性不断增加,使得开发难度不断加大。 出于简化数据处理逻辑,增加应用的可维护及可扩展性的需求,目前流行的JavaScript框架也基本都会具有各... 阅读全文
一起谈.NET技术,用NuGet掌管你的Visual Studio扩展
2011-09-01 23:58 by 狼人:-), 200 阅读, 0 推荐, 收藏,
摘要:如果你使用Visual Studio 2010,那么 NuGet 可以使你的生活更加美好。当你项目里要引用到的一些库时候,比如JQuery 库或者 NHibernate, NUnit, log4net 你就可以考虑使用NuGet。它可以辅助你安装或者更新这些库。 当然我不得不继续说下去从安装到使用: NuGet是一个Visual Studio 的扩展, 首先你必须要安装它: 可以到官方网站: http://nuget.org/ 然后设置自动检查更新 进入 工具|选项,然后环境|扩展管理器 ,点击 自动检查更新,安装的扩展。 当你有一个Visual Studio扩展... 阅读全文
一起谈.NET技术,C#中的语言特性都是从何而来?
2011-09-01 23:58 by 狼人:-), 223 阅读, 0 推荐, 收藏,
摘要:前几天推荐一个同事用“可选参数”,推荐完了我还画蛇添足的说这是.Net 4中的新特性。但是事后才发现这个新特性是C# 4.0的语言特性,与.Net 4无关。其实也不只这一次,我平时也经常把语言、框架、运行时,有时甚至还有开发工具混为一谈。于是今天就总结一下C#中我感兴趣的几个语言特性是从何而来的。 1.可选参数 可选参数是C# 4.0中的新特性,其作用在于在调用者不提供参数值时给参数一个默认值,用起来是这样的: static void Main(string[] args){ TestMethod(); TestMethod(10); Console.Read... 阅读全文
一起谈.NET技术,引用类型赋值为null与加速垃圾回收
2011-09-01 23:58 by 狼人:-), 182 阅读, 0 推荐, 收藏,
摘要:在标准的Dispose模式中,提到了需要及时释放资源,却并没有进一步细说让引用等于null是否有必要。 有一些人认为等于null可以帮助垃圾回收机制早点发现并标识对象是垃圾。其他人则认为这没有任何帮助。是否赋值为null的问题首先在方法的内部被人提起。现在,为了更好的阐述提出的问题,我们来撰写一个Winform窗体应用程序。如下: private void button1_Click(object sender, EventArgs e) { Method1(); Method2(); } ... 阅读全文
一起谈.NET技术,一句代码实现批量数据绑定[上篇]
2011-09-01 23:58 by 狼人:-), 157 阅读, 0 推荐, 收藏,
摘要:对于一个以数据处理为主的应用中的UI层,我们往往需要编写相当多的代码去实现数据绑定。如果界面上的控件和作为数据源的实体类型之间存储某种约定的映射关系,我们就可以实现批量的数据绑定。为了验证这种想法,我写了一个小小的组件。这个小玩意仅仅是我花了两个小时写的,其中还有很多问题没有解决,比如对于空值的处理,特殊控件属性值的HTML编码问题,以及频繁反射的性能问题,仅仅演示一种解决思路而已。本篇着重介绍如何通过这个组件来解决我们在进行数据绑定过程中的常见问题,下篇会介绍它的设计。[源代码从这里下载] 目录: 一、基于控件ID/实体属性名映射的数据绑定 二、一句代码实现批量数据绑定 三、修正绑定... 阅读全文
一起谈.NET技术,MEF——.NET中值得体验的精妙设计
2011-09-01 23:58 by 狼人:-), 288 阅读, 0 推荐, 收藏,
摘要:MEF(Managed Extensibility Framework)是.NET Framework 4.0一个重要的库,Visual Studio 2010 Code Editor的扩展支持也是基于MEF构建的。MEF的目标是简化创建可扩展的应用程序,其核心类是ComposablePart,即具有组合能力的组件,每一个称为ComposablePart(中文可为可组合构件,不过下文一直采用英文来表示,这样比较贴切)的组件可以组合(称为Import)其它组件的功能(其它组件通过声明Export提供功能)并且它也可以通过定义Export将其功能暴露给其它组件。 ComposablePar... 阅读全文
一起谈.NET技术,使用WCF实现SOA面向服务编程—— 架构设计
2011-09-01 23:58 by 狼人:-), 329 阅读, 0 推荐, 收藏,
摘要:SOA本身就是一种面向企业级服务的系统架构,简单来说,SOA就是一种进行系统开发的新的体系架构,在基于SOA架构的系统中,具体应用程序的功能是由
一些松耦合并且具有统一接口定义方式的组件(也就是service)组合构建起来的。因此,基于SOA的架构也一定是从企业的具体需求开始构建的。但是,SOA和其它企业架构的不同之处就在于SOA提供的业务灵活性。业务灵活性是指企业能对业务变更快速和有效地进行响应、并且利用业务变更来得到竞争优势的能力。对企业级架构设计师来说,创建一个业务灵活的架构意味着创建一个可以满足当前还未知的业务需求的IT架构。使用WCF实现SOA,正好可以利用WCF的灵活性,把业务.. 阅读全文
浙公网安备 33010602011771号