摘要:
ASP.NET MVC2 结合System.ComponentModel.DataAnnotations 提供了一套非常有效的实体验证框架。对于错误信息的处理,它默认提供了两种选择: 字符串常量 从程序集资源文件读取 但是在我们这里,我们有一套自己的资源文件方案,也就是我们需要自己控件错误信息的本地化操作。由于在元数据,我们只能提供常量,无法进行字符串操作。一种比较直接和麻烦的办法就是重写所有的验证规则,在验证规则中对字符串常量进行本地化操作。但是这样做,一方面会比较麻烦,所有的验证规则我们都要进行重写;另一方面我们在设计model时就是特别的小心使用我们自己重写过的规则才能达到我们的目的 阅读全文
摘要:
很多关于.NET 4.0新特性的介绍,缓存功能的增强肯定是不会被忽略的一个重要亮点。在很多文档中都会介绍到在.NET 4.0中,缓存功能的增强主要是在扩展性方面做了改进,改变了原来只能利用内存进行缓存的局限,允许用户在不改变代码的情况下通过修改配置的方式,灵活的切换缓存介质。Cache Provider是可扩展的,开发人员可以方便的将缓存存放在文件中,也可以扩展使用分布式缓存。然而,由于之前已经有System.Web.Caching.Cache这个缓存对象的存在,让我一直对.NET 4.0的新的Cache和原来已存在的System.Web.Caching.Cache的关系产生了一定的迷惑。通过 阅读全文
摘要:
眨眼间,离上次公布LumaQQ.NET 2008 预览又过去了半个多月的时间。有消息称,QQ2008协议即将过期,即使如此,我还是希望能完成当前版本的既定功能。今天我很高兴的正式公布LumaQQ.NET 2008的最新版本,这个版本已经基本上一个版本所具有的全部功能,包括: 登录管理 消息管理 好友管理 群操作 这些功能的API基本都基本与上一个版本没有大的差别。这个版本最大的变化在于登录... 阅读全文
摘要:
一段时间以来,一直有人问原来的LumaQQ.NET已经不能登录了。经过确认,QQ2005协议确实已经被官方停止使用,LumaQQ.NET就是基于2005协议之上,所以自然也是无法使用了。一个多月以前在小组发布了准备重新拾起Lumaqq.net的开发的消息后一直没有下文。期间都是在周末的时间断断续续的根据LumaQQ 2008的最新协议来重新修改所有的协议包,这也是一个相对平淡和烦燥的工作,没头没脑... 阅读全文
摘要:
几天前,同事浪子在用VS2010创建MVC站点时,发现里面的页面模板中大量使用了一种新的模板语法:<%: %> ,由于之前他比较少使用ASP.NET MVC,还以为是MVC里面新增的一种模板语法,而我很早就开始使用MVC工程,但也从来没有见过此种语法。于我们共同断定这可能是ASP.NET4.0中新出的一种模板语法。果然,我们在ASP.NET 4.0白皮书上找到了答案:这是用于替代<... 阅读全文
摘要:
如果你经常去查阅相关的互联网协议,比如:HTTP,MetaWeblog API,ATOM,WebDav,SMTP。你都会不经意的发现它们都有一个相对的RFC编号,这些编号会对应一个像“http://tools.ietf.org/html/rfc2616”的一个链接页面,这个页面详细说明了该协议的定义规范。通常一个协议都定义都需要比较长的内容,但是通过阅读这些协议本身我们就可以更好,更完全的理解该协... 阅读全文
摘要:
ASP.NET请求验证功能可以给我提供应用程序的安全保证,避免站点受到XSS的攻击。但是在一些情况下,我们需要禁用这个功能,比如我们需要使用HtmlEditor来让用户输入一些HTML文本,这时候ASP.NET 2.0允许我们可以通过在web.config设置validateRequest="false"。或者在MVC中,我们可以通过在Controller或者Action上设置[ValidateRequest(false)]这个特性来达到禁用的上的。但是在当你把站点从旧版本升级到ASP.NET 4.0后,你会发现,即使你这样做,仍然会提示你这样的一个异常“A potentially dange 阅读全文
摘要:
WebDav协议基于Http 1.1协议进行扩展,在包含原有的GET ,POST,HEAD等HTTP标准请求方法,增加了:PROPFIND,PROPPATCH,MKCOL,COPY,MOVE,LOCK,UNLOCK等一些新的请求方法,使应用程序可以直接对Web Server的文件进行读写。在协议定义中,还包括对文件进行锁定,解锁,版本控制等方法。 在IIS中,已经包含了对WebDav协议的支持,用... 阅读全文
摘要:
在即将发布的Kooboo CMS 2.1.0.0中,将会升级到ASP.NET MVC 2。需要将所有的Module也同步升级到MVC2,在升级过程中发现MVC2一旦进入View输出阶段后,Response.Clear将会不起作用(Controller执行阶段,这个方法仍然正常工作),这将会影响Kooboo CMS Module的正常运行。 在确定是MVC 2引起的问题后,于是就从Response.Clear这个方法着手,它的代码逻辑如下:在这里判断,_httpWriter和_writer变量是否相同。于是我就只能从运行时的调试来看看这两个变量的值分别是什么,下面的截图分别是_httpWrite 阅读全文
摘要:
前几天装了Visual Studio 2010 RC后,Visual Studio 2008原有的XML高亮和智能提示丢失了,打开XML文件如同普通文本一样,没有高亮和提示信息,编辑XML文件变得相当麻烦。在VS设置项翻了半天就是没有找到可以还原的地方,花了几分钟在网上很快就找到答案。通过如下命令启用VS,即可修复该问: devenv /ResetSkipPkgs 相关的链接:http://c... 阅读全文
摘要:
ASP.NET MVC框架从还未正式发布时就已经成为了我工作的方向和重点,而它也在不断的完善和发展,前两天,ASP.NET MVC2 RTM已经发布了,MVC2主要是在提高我们基于ASP.NET MVC框架之上的WEB程序开发效率上下功夫,新增了很多的常用功能的集成,API的优化以及IDE的改善支持等方面。随着开发效率的不断提高和资源的不断丰富,以及MVC框架本身所具备的天生的优点,我相信未来ASP.NET平台的WEB开发将会逐步走向MVC方向。至少在ASP.NET Mobile Web的开发中,Webform已经被MVC所取代,在未来的ASP.NET中,包含Mobile WebForm 控件 阅读全文
摘要:
昨天公司的一位实习生问我,该怎样提高学习能力和学习效率。他说,他想学习很多东西,但是都感觉学的很慢,很多技术的学习都要一步一步从基础知识开始学习,这需要耗费很多的时间,并且很多时候不能马上用于实践上,所以他感觉很迷茫和着急。我给他的建议是:这是正常的,也是必须经过的一个阶段,你有这样的认识说明你的学习方法是正确的,你现在掌握了更多的基础,就会越有利于以后学习其它的东西。现在学习速度偏慢,是因为你还... 阅读全文
摘要:
ASP.NET中,所有的上下文对象(HttpContext,HttpReqeust,HttpResponse…)都没有进行抽象,而且它们都是自我封闭的对象,我们无法对它进行扩展和修改。虽然它们都提供公有构造器,我们可能也可以追溯到请求管道的源头,去自己实例化HttpContext,可是它们的大部分方法都是封闭的,不可重写的,这样使得我们在做多工作的时候无法称心如意,甚至于四处碰壁。 ASP.NET... 阅读全文
摘要:
似乎在昨天还是想要补上2008年的总结,转眼间2009也已经走到尽头了。这回不能再犯老错误了,是该好好回顾总结一下过去一年的得失。过去的一年,是忙碌的一年,实现了职业生涯第一次转变的目标,不再安逸下去。回首这一年,关键词是“开源”,开源伴随着自己职业生涯的成长过程,当然以后仍然会继续参与开源事业,同样也希望开源能促进我的职业生涯有更大的突破,所以一切还得从开源说起。 以前,我总会把我平常工作的一些... 阅读全文
摘要:
Kooboo的一个设计初衷是跨数据库,特别是提供对轻量级数据库,文件型数据库的支持,我们总是希望给用户提供最简单,最少配置的产品。我们选择了Entity Framework来作为我们的ORM框架,隔离数据库的不同实现,以最大减少我们在跨数据库时的代码和架构复杂性。Entity Framework目前也已经提供了各种数据库的Provider,理论上是可以很容易做到跨数据库的实现。 在Kooboo 1... 阅读全文
摘要:
考虑到这篇文章会有很多截图,并且更注重实际操作,考虑再三,还是录制了一个视频来演示如何使用Kooboo来开发网站,并且实现继承。 由于找不到一个好的视频空间,所有的视频空间上传后都会造成比较严重的失真,所以提供视频下载地址,有兴趣的朋友可以下载。我们正在准备一些视频教程,在下周会上传到Koobo官方站点。最近在我博客也收到了一些朋友的建议,毕竟在这里会比较散乱,所以如果您有什么意见或建议请到:官方... 阅读全文
摘要:
要介绍一个全新的产品,仅仅靠文字描述是远远不够的,从本篇开始,将会以图文并茂的方式来展开Kooboo的各个功能点。在这一篇中,我将会带大家来体验使用Kooboo如何来创建一个简单的站点。本篇的目的,并不拘束在各个功能的技术细节,而是希望以一个全景的方式,让大家对Kooboo有一个整体的印象。 知识准备 从实践角度上,创建一个Kooboo站点,主要有以下一些主要步骤: 创建一个新的站点,新的站点可... 阅读全文
摘要:
Kooboo的定位是一个CMS,内容管理平台,从更严格意义上来说,它更应该网站快速开发平台。针对一般网站开发过程的分析和提炼,着重在解决网站的一般需求,提出一套快速开发网站的理念和方法。在这些理念和方法的指导下,来进行网站的开发,规范开发过程,提高开发效率,减少维护成本,提高网站质量。 我们在开发一个网站,一般会面对如下问题: 内容存储,这是一个基础性问题。内容是整个网站的肉体,也是灵魂,失去了内... 阅读全文
摘要:
在Kooboo中使用了Entity Framework作为持久化框架,但由于EF1.0并没有提供完整缓存解决方案,一直以来都在为数据缓存而烦脑,在没有找到合适解决方案的情况下,采取了临时的解决办法:直接缓存实体。但是由于Entity实体都是带状态的,并且都与ObjectContext有间接的反向引用,缓存带状态的实体,会造成对象上下文混乱和连接资源的无法被正确释放。因此缓存的Entity实体,首先... 阅读全文
摘要:
背景 随着Extjs的不断成熟,它也在不断的被开发人员所接受和使用。Extjs是一个完全的UI框架,它自带的控件已经能很好的满足日常开发的需要,并且它底层仍是以html和样式为基础,在不满意需求特殊需求的情况,我们也非常方便的进行扩展。所以,我一贯的态度是,要使用extjs就要用的彻底,UI部分应该完全使用Extjs来实现,完全摈弃传统的ASP.NET前台模式。当然,现在也有一些把Extjs封装成... 阅读全文
摘要:
去年这个时候也是8月份,离开了生活9年的福州来到厦门,已整整一年的时间。离开福州的原因,就是不想让自己在安逸中沉沦下去,需要重新寻找技术的激情。来到新公司后,也开始投入老板梦想中的那个伟大CMS的研发工作,至今仍在不断的忙碌。当时的我,对CMS的概念的并不是特别理解,时至今日,我仍然无法很清楚的定义什么才是CMS。CMS是Content Managment System的缩写,意为内容管理系统,但... 阅读全文
摘要:
System.Web.Compilation.BulidManager负责站点的动态编译,所有的页面、用户控件、和所有的ASP.NET特殊目录,都会在运行时被BuildManager编译和处理,也包括Bin目录。我们知道在ASP.NET中,所有的页面和控件都包括.ASPX和后台代码文件,除了代码文件在编译时会被静态编译成一个类型外,.ASPX文件在运行时也会被动态编译在一个动态类型中,以便写在.A... 阅读全文
摘要:
利用IIS带的SMTP虚拟服务器,可以匿名发送邮件,并且通过telnet就可以发送,一直只是看过别人做过,并且看过很多遍,自己没有尝试过还是无法即拿即用,今天还是亲手尝试了一下,并记录以下的发送步骤。 使用Telnet发送邮件: 打开cmd命令行 输入telnet 127.0.0.1 25,连接本地邮件服务器 输入HELO,建立会话,返回250成功代码。 输入MAIL FROM:youname@s... 阅读全文
摘要:
CS-Script是基于ECMA CLR标准之上的动态编译C#脚本的编译引擎。利用CS-Script可以在系统中动态编译一段C#脚本,并以静态函数或实例对象的形式使用。放在一个系统框架中,可以起到部分动态语言的效果。先看看它的使用:Assembly assembly = CSScript.LoadCode( @"using System; public class Script { public ... 阅读全文
摘要:
刚开始入门时是在别人的技术博客里学习技术,那时候起步相对较晚,毕业后的很长一段时间才知识什么是.NET,所有技术对自己来说都是新知识,要学习的太多了。而通过技术博客还可以不断的了解到自己不曾知识的技术,通过别人的辩论也可以让自己可以有一个辩证的观点来认识某一种技术的优缺点,从而帮助自己逐渐形成相对客观的观点来看待每一种技术。社区的交流几乎是自己技术生涯中,最重要的一个老师。大家可能都认为技术书籍才... 阅读全文