摘要:
大概两个月前,曾有位朋友问我:如果我想在WPF中将绑定源设置到某个采用单件模式设计的实例上,应该怎么做呢?这是一个不错的问题.可能这段时间比较忙,呵呵,忘记回答这个问题了,昨天拿到伍迷大哥的《大话设计模式》(PS:强烈推荐该书哈,真的不错)时突然想起这个问题了.今天简要说一下: 首先我们简单地写一个使用了单件模式的MyButton类: publicclassMyButton:Button
{
privateMyButton()
{
this.Content="hahhaha,it'sme";
} privatestaticMyButtoninstance=newMy 阅读全文
随笔分类 - [01].NET技术
艾伟:微软是在向谁“献刀”
2011-08-29 00:00 by 狼人:-), 192 阅读, 收藏, 编辑
摘要:
前些天听了易中天先生的 "儒法之争(一)血染的思想", 对法家的思想有了一个初步的认识,可以说法家是先秦诸子中改革改的最彻底的一种思想,这主要是因为法家思想是更加与那个时代背景相结合,也更直面“惨谈”的现实。 所以其所提出的思想都是些很实际,好用的手段(甚至可以说是阴谋论)。这里不是希望大家学坏,因为我感觉对那些“为非做恶”的人使用阴谋论再“合适不过”了。 当然法家先行者的一个主要任务就是“献刀”,向君王献刀(即两面三刀,法家所推行的“赏, 罚”两面和“势, 术, 法”三刀都是为了更好地帮助君主实行集权),而刀一出鞘就要见血,而那些鲜血来自君王的手下的大臣和百姓甚至包括实施 阅读全文
艾伟:用WCF实现对无人终端的远程监控
2011-08-29 00:00 by 狼人:-), 204 阅读, 收藏, 编辑
摘要:
最近在项目中,遇到了一个需要在远程监视自动运行软件的实时情况的例子。因为MS面向服务方面有WCF,而且看了一些资料,觉得WCF比较适合这个应用。因此决定用WCF来实现这个功能。
首先,先说一下具体的应用,监控,顾名思义,有两个方面的意思,一方面是”监”,也就是远程要能实时查看终端的各种情况。这里其实指的就是被监控的要能主动的,实时的向远程控制端发送自己的情况。另一方面是控,即远程端能够发布命令控制终端进行执行。并由终端返回一定的执行信息。
而且这里是一种一对一对多的关系,即一个终端可以被多个管理端监控。实际上一个管理端也可以监控多个终端,在是这种分析中,我们可以明白,真正运行服务的是终端,而不 阅读全文
艾伟:Microsoft .NET RIA Services快速上手
2011-08-29 00:00 by 狼人:-), 145 阅读, 收藏, 编辑
摘要:
在MIX 09上,Nikhil Kothari发布了微软的一神作——Microsoft .NET RIA Services。虽然目前的版本仅仅是可怜的"March '09 Preview”,但它已经足够让人兴奋不已。简单地说,在这之前,如果你用到了现在的RIA技术比如Silverlight,你只能选择写大量的服务或者WCF来实现数据的操作功能;而有了.NET RIA Services,你在RIA项目上操作数据,就像ASP.NET那样方便!
Nikhil Kothari在MIX09上介绍.NET RIA Services的视频:
http://www.nikhilk.net/R 阅读全文
艾伟:MSBuild 简解
2011-08-29 00:00 by 狼人:-), 280 阅读, 收藏, 编辑
摘要:
从最原始的编译器,逐渐到 Shell 命令组合、Make工具,到现在的针对性 Build 工具,Rake、Ant、MSBuild,甚至于 PowerShell 这样的工具;都为我们软件开发以及系统管理做出了贡献,我甚至不能想象几十年前使用编译器生成程序的复杂步骤(其实就是把 makefile 拆开,相当恐怖)。 探讨 Make、Ant 以及 MSBuild 无太多意义,甚至从纯技术和扩展性上来说,我认为 MSBuild 弱于 NAnt,但是软件并不是这么简单,之所以深研 MSBuild,M$ 作为后盾让人信任的无奈。 本文主要讲述 MSBuild 的基本概念,以及如何使用它辅助开发... 阅读全文
艾伟:C#对游戏手柄的编程开发-API篇(2)
2011-08-29 00:00 by 狼人:-), 415 阅读, 收藏, 编辑
摘要:
回顾“被动方式”开发
在C#对游戏手柄的编程开发-API篇(1)这篇文章中我们介绍了“被动方式”的开发。在此方式下,我们的程序只扮演一个消息接收者。系统会定时告诉我们某个游戏手柄当前的状态,我们的程序接收到后再按实际需要进行处理即可。但如果你是一个细心的人,你会发现如果直接按消息事件处理的话会存在一个问题,如我们按下某个键(比如向上的方向键)然后放开时,对于我们“人”来说,我们按下与弹起的这两个动作应该只是说明我们只点击这个按钮一次。但对于系统来说,它只是机械地定时通知我们的程序在某个时间内游戏手柄的各个按钮的状态,而在我们按下到弹起这段时间内,系统有可能已经传递了N次的消息通知(N值根据捕捉 阅读全文
艾伟:.NET 4.0 中的契约式编程
2011-08-29 00:00 by 狼人:-), 182 阅读, 收藏, 编辑
摘要:
契约式编程不是一门崭新的编程方法论。C/C++ 时代早已有之。Microsoft 在 .NET 4.0 中正式引入契约式编程库。博主以为契约式编程是一种相当不错的编程思想,每一个开发人员都应该掌握。它不但可以使开发人员的思维更清晰,而且对于提高程序性能很有帮助。值得一提的是,它对于并行程序设计也有莫大的益处。
我们先看一段很简单的,未使用契约式编程的代码示例。
// .NET 代码示例
public class RationalNumber
{ private int numberator; private int denominator; public Rationa... 阅读全文
艾伟:Silverlight 3 Beta 新特性解析(2)-Graphics篇
2011-08-29 00:00 by 狼人:-), 256 阅读, 收藏, 编辑
摘要:
前提条件:
阅读本文之前请确认你已经安装了如下软件 Visual Studio 2008 (Express) SP1 Silverlight 3 Tools For Visual Studio Microsoft Expression Blend 3 MIX 09 Preview 本篇主要内容: 如何利用新的Bitmap API来创建我们自己的图像 透视3D图像(Perspective 3D Graphic) 像素模糊和投影效果 Element-To-Element Binding Bitmap API的写图像功能:
新版的Bitmap API支持从写每个像素的值来创建... 阅读全文
艾伟:C#3.0编码习惯与命名规则
2011-08-29 00:00 by 狼人:-), 183 阅读, 收藏, 编辑
摘要:
1.用Pascal大小写规则命名方法、类型、结构、接口、委托、枚举、枚举项、属性、事件等。 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicclassDataGrid
{
publicvoidDataBind()
{
}
} 2.用Camel大小写规则命名所有变量、字段和参数。 可采用Pascal也可采用Camel大小写规则的:常量、控件ID。
Code highlighting produced by Actipro Cod.. 阅读全文
艾伟:Visual Studio 2008 可扩展性开发(六):操作Solution Explorer
2011-08-29 00:00 by 狼人:-), 217 阅读, 收藏, 编辑
摘要:
前言 在可扩展性开发(五)中,我介绍了对于Solution、Project、ProjectItem的基本操作。可以认为它们面向的是解决方案内容的物理(文件)表示,我们需要使用VS提供的解决方案管理器(Solution Explorer)来管理它们。毫无疑问,解决方案管理器是VS中最重要的UI元素之一,本文将介绍对它的操作。
工具窗口内的层次结构 如果你观察一下解决方案管理器和服务器管理器(Server Explorer),就会发现它们都使用树形结构来表现背后的数据。在AOM中,UIHierarchy、UIHierarchyItems和UIHierarchyItem用于表示这样的层次结构。U.. 阅读全文
艾伟:警惕匿名方法造成的变量共享
2011-08-29 00:00 by 狼人:-), 165 阅读, 收藏, 编辑
摘要:
匿名方法 匿名方法是.NET 2.0中引入的高级特性,“匿名”二字说明它可以把实现内联地写在一个方法中,从而形成一个委托对象,而不用有明确地方法名,例如: static void Test()
{ Action<string> action = delegate(string value) { Console.WriteLine(value); }; action("Hello World");
} 但是匿名方法的关键并不仅于“匿名”二字。其最强大的特性就在于匿名方法形成了一个闭包,它可以作为参数传递到另一个方法中去,但同时也能访问方... 阅读全文
艾伟:用MSChart展示多维数据集
2011-08-29 00:00 by 狼人:-), 273 阅读, 收藏, 编辑
摘要:
之前谈到过用MSChart可以比较直观方便的实现对多维数据集的展示,做得比较粗略。这次详细介绍下我的经验,并提供主要的试验代码段。 有必要强调一下,对多维数据集的展示,层次性是非常必要的。多维数据集本身就是带有层次结构的,如何直观而又不产生歧义的正确展示出其原本的数据集合结构,成为众多据仓库展示工具软件开发商关心的问题。在选型方面,目前市场上已经有比较多的选择,相当多的第三方图形控件就已经直接支持多维数据集的展示,即直接把CellSet结果赋给该控件的DataSource即可。但是这些目前毕竟是市场化的东西,作为个人开发学习没有必要去购买---试用版的由于其种种限制,给人感觉很不舒服。 ... 阅读全文
艾伟:改进的脏话审查方案
2011-08-29 00:00 by 狼人:-), 136 阅读, 收藏, 编辑
摘要:
导言
我经常光顾cnbeta,那里的评论很精辟,有时我也会忍不住评上两句,但近来突然发现发布评论都必须经过审核才会显示了,这让我感到非常扫兴。由此我又想起了此前我曾讨论过的“非法内容核查方法”,我想这种人机结合的审核方式应该会比较适合现在的cnbeta吧。
而现在我已经对此方案有了更深、更好的思路了,想在此分享出来,和大家探讨一下,我将在此逐步解析整个审查的流程:
准备工作
要审查脏话,首先需要创建对应的审查规则,每条规则需要提供以下基本信息:
1. 表达式:用于审查内容是否匹配的正则表达式。使用正则的原因在于其灵活性,常规的纯文本检索虽然快,但遇到干扰符等情况时束手无策,而正则就可以轻松解决 阅读全文
艾伟:.Net 下跟踪线程挂起和程序死循环
2011-08-29 00:00 by 狼人:-), 299 阅读, 收藏, 编辑
摘要:
.Net 下调试跟踪线程挂起和程序死循环 作者:Eaglet .Net 下的程序调试相对C/C++要简单很多,少了那些令人头疼的指针越界的问题。不过当你的程序遇到如下问题时,依然非常棘手: 1. 进程异常终止。解决方案见 .Net 下未捕获异常的处理 2. 内存泄漏或者内存申请后程序始终没有释放。解决方案见 用 .NET Memory Profiler 跟踪.net 应用内存使用情况--基本应用篇。如果通过自己编写的程序监控,我将在以后的文章中阐述。 3. 线程因未知原因挂起,比如死锁。 4. 程序死循环。 本文将阐述如果编写程序对后两者故障实时跟踪并报告。 首先我们需要一... 阅读全文
艾伟:Fiddler:Web调试代理
2011-08-29 00:00 by 狼人:-), 292 阅读, 收藏, 编辑
摘要:
Fiddler是一款免费的记录主机HTTP(S)通信的代理(proxy),具有丰富的用户界面,支持监察请求和响应、设置断点,以及修改输入输出数据。同时,它也支持多种数据转换和预览,比如解压缩GZIP、DEFLATE,或者BZIP2格式的文件,以及在预览面板里显示图片。 Fiddler 可以从此处免费下载,目前稳定版本是v2.2.0.7。最近更新的beta v2.x版本对用户界面做了加强,并修订了一些缺陷。对于仍然使用 .NET Framework 1.1的开发人员,Fiddler 也提供了v1.3版本,只不过该版本已经不再被鼓励使用。 Fiddler被主要用来查看单次请求或者响应的... 阅读全文
艾伟:尽可能摆脱对HttpContext的依赖
2011-08-29 00:00 by 狼人:-), 174 阅读, 收藏, 编辑
摘要:
我们继续《ASP.NET MVC单元测试最佳实践》,今天主要谈论HttpContext的依赖问题。 在ASP.NET中进行单元测试的天敌便是HttpContext,它是ASP.NET的核心,极端复杂,却无法进行Mock1——可见微软能够写出那么庞大的ASP.NET框架真不那么容易。现在这个状况改善了不少,因此大家已经可以使用System.Web.Abstractions.dll了,这个程序集中提供了对于HttpContext的抽象,也就是HttpContextBase抽象类。因此在ASP.NET MVC中,各种组件均依赖于HttpContextBase而不是HttpContext。这是... 阅读全文
艾伟:WinForm控件开发总结(七)-----为复杂属性的子属性提供编辑功能
2011-08-29 00:00 by 狼人:-), 133 阅读, 收藏, 编辑
摘要:
前面的几篇文章中,我们给控件添加一个复杂的类型Scope,并且给它的类型提供的一个类型转换器,现在我们可以在属性浏览器中编辑它的值,并且它的值也被串行化的源代码里了。但是你有没有发现,在属性浏览器里编辑这个属性的值还是不太方便。因为属性只是“10,200”这种形式的,所以,你必须按照这种格式来修改,一旦格式错误就会引发异常,比如输入一个“10200”。我们期望这个属性的每一子属性都能够被独立的编辑就好了,这并非不能实现,而且实现还很简单。 为了在属性浏览器里能够独立的编辑子属性,我们还要重写两个方法:GetPropertiesSupported()和GetProperties();下面是Sco 阅读全文
艾伟:WinForm控件开发总结(五)-----为控件的复杂属性提供类型转换器
2011-08-29 00:00 by 狼人:-), 152 阅读, 收藏, 编辑
摘要:
上一篇文章我已经介绍了TypeConverterAttribute元数据的作用,本文将通过代码向你展示具体的实现。在这个例子中,我要给控件添加一个复杂的属性,这个属性对这个控件没有什么功用,纯粹是为了演示,有些牵强附会了。 现在在前一篇文章中的创建的控件代码中添加一个Scope属性:
[Browsable(true)]publicScopeScope{get{return_scope;}set{_scope=value;}}
这个属性的类型是Scope类,代码如下:
publicclassScope{privateInt32_min;privateInt32_max;publicScope() 阅读全文
艾伟:WinForm控件开发总结(四)-----控件属性的串行化
2011-08-29 00:00 by 狼人:-), 174 阅读, 收藏, 编辑
摘要:
前一篇文章介绍了常用的设计时Attribute。其中BrowsableAttribute,CategoryAttribute,DescriptionAttribute,DefaultPropertyAttribute,DefaultEventAttribute都是比较简单的,也是可有可无,但是为了提供更好的用户体验这些Attribute最好不要省掉,如果你对这些Attribute还不熟悉,可以参考我前一篇文章的描述或者查看MSDN,这里我就不在赘述了。 下来我们主要介绍一下DesignerSerializationVisibilityAttribute和TypeConverterAttribu 阅读全文
艾伟:【翻译】使用ASP.NET 2.0记录错误
2011-08-28 23:56 by 狼人:-), 173 阅读, 收藏, 编辑
摘要:
原文:http://www.dotnetcurry.com/ShowArticle.aspx?ID=94&AspxAutoDetectCookieSupport=1
使用ASP.NET 2.0记录错误 在我们开发和操作一个网站的过程中不可避免会发生错误和失败的情况. ASP.NET 2.0 提供了跟踪,instrumentation以及错误处理机制来检测和修补程序中的问题. 在本文中,我们将通过一个简单的处理来记录在我们的网站中的错误和异常.我们会这样操作:每当遇到程序错误时,将使用者导航到一个单独的页面.同时,错误将被记录到服务器上的一个文本文件.每当错误发生时,我们将以日志的形式每 阅读全文