摘要:
很早就有为《Silverlight 2完美征程》推荐的想法了,这源于我自己亲身经历的一点一滴。话说,关于Silverlight,TerryLee是我的导师和益友。他的系列文章《一步一步学Silverlight 2系列》为无数的Silverlight粉丝带来指导和导航,而我自己的Silverlight之路也是从这一系列文章开始的。现在,我很高兴的看到Terry的新书《Silverlight 2完美征程》隆重上市。 阅读全文
摘要:
Tuple,是函数式编程的概念之一,早见于Elang、F#等动态语言。不过,我第一次听说Tuple还早在2005年园子的Ninputer大牛提出在.NET 2.0实现Tuple的基本想法。
作为.NET 4.0 BCL的一部分,本文晓以一二要点,对Tuple进行一翻分析,以期对这个新成员表示欢迎。 阅读全文
摘要:
.NET 4.0来了,在这个夏天。在蚊子和啤酒相伴的深夜,我将继续[你必须知道的.NET] 系列的完善,将自己对于.NET 4.0新特性的探索形成[深入.NET 4.0]这样一个子系列。同样是一如既往的将角度把握在语言和平台本质的探索,可能的角度上,最佳实践式的应用和国外最新论调的共享同样是这一新生力量关注的话题。好戏才刚开始,我们继续在路上。
总体来说,这是一篇介绍性的文章,不会涉及过多技术细节和研究过程。但是,作为拉开序幕的第一页,本文以提纲挈领的方式展开对.NET 4.0的初次体验。从What’s new的角度,开始我对.NET 4.0新特性的探索之旅。既然是介绍,那么首先给出导航式的链接是必要而必须的,因为一篇小小的篇幅却是难以交代全面What’s new in details,所以看官尽情各取所需吧。 阅读全文
摘要:
MVC Walkthrough是公司关于MVC技术培训系列的第一部分,在第一部分中我对ASP .NET MVC进行了一次流水线似的访问,从MVC的基本要素开始,探讨MVC、MVP和WebForm的区别与种种,然后深入讨论什么是MVC,什么是M、什么是V、什么是C,最后自然少不了Routing和Execution Process,近两个小时的时间虽然太短,但是该有的引导性基础都包括在内了。 阅读全文
摘要:
博客园北京.NET俱乐部第一次技术活动,我的技术演讲。 阅读全文
摘要:
一个简单的技巧,一个补充的说明(对hbfly老兄的)。反射的能量是强大的,强大到我们可以轻而易举的对元数据信息进行读取和操作,正是如此很多基于Attribute和Reflection的巧妙设计就油然而生了。例如,在我的项目中就通过定义Attribute来实现实体类的string属性在get/set时统一进行Trim操作,保证了提交数据没有冗余,同时不必在其他地方来特别关注实现对于string.Trim()的调用。 阅读全文
摘要:
语言是程序开发者行走江湖的手上利器,各大门派的高手在论坛、博客为了自家门派争吵不已早是技术世界中的亮丽风景,虽多少为刚刚踏入江湖的新手提供了思考的素材,但也同时迷惑了初出茅庐的前行方向。
本文不欲计较门派的高下,旨在明辨技术的真谛,这就是.NET平台下的开发利器:C#语言,并从其变迁的进程中对于.NET技术发展把玩一番。
在下篇,我们将从历史走来,对.NET的未来做个展望性的了解,具体而言就是.NET 4.0的新东西。
阅读全文
摘要:
所谓MVC,其实就是M、V、C而已。归根揭底,MVC是一种表现模式,是一种软件架构模式。其中有几个重要的概念:
M,Model, 引用系统数据,管理系统功能并通知View更改用户操作。
V,View,就是用户接口,用于显示数据。
C,Controller ,将用户操作映射到Model,并操作视图。
R,Routing ,MVC的奥秘在于通过Routing实现了对URL的路由选择,完成了上述3个基本概念的基础逻辑。 阅读全文
摘要:
语言是程序开发者行走江湖的手上利器,各大门派的高手在论坛、博客为了自家门派争吵不已早是技术世界中的亮丽风景,虽多少为刚刚踏入江湖的新手提供了思考的素材,但也同时迷惑了初出茅庐的前行方向。 本文不欲计较门派的高下,旨在明辨技术的真谛,这就是.NET平台下的开发利器:C#语言,并从其变迁的进程中对于.NET技术发展把玩一番。
在上篇,我们走在历史,对.NET的过去尤其是c#语言做以回顾,具体而言就是.NET 1.0、2.0、3.0的一路走来。 阅读全文
摘要:
对HtmlHelper进行扩展,是MVC中对于View层进行灵活控制的主要手段之一,对此我在第七回:漫谈ActionLink,有时“胡搅蛮缠”中进行过探讨。在本文,只是一个小技巧,丰富我们在自定义HtmlHelper时可以有更好的选择。
工欲善其事,必先利其器。TagBuidler使得HtmlHelper变得简单,自信的观众可以完全不用TagBuilder,通过任何其他的办法来实现类似于MergeAttribute、AddCssClass这样的逻辑,但是既然已经有了,不妨一试。就像它的大哥StringBuilder,给我们处理string带来多少不错的亲近感受,看面子也不妨关照一下小弟TagBuilder。 阅读全文
摘要:
MVC时代来临了,但是一开始是不被很多人接受的。可能的主要原因是,大家不得不告别拖拉控件的至爽感受,回到貌似asp的历史岁月。所以,心有不甘是可以理解的,然而时代显然是进步的。我们虽然必须在View中进行很多HTML代码的工作,但是MVC为我们提供了可以堪称完美的方案(至少我是这样认为的),那就是HtmlHelper。在MVC的View层,我们有很多熟悉的面孔,例如Html.Encode、Html.AntiForgeryToken、Html.BeginForm、Html.TextBox等,而其中ActionLink算是其中的“猛将兄”。
阅读全文
摘要:
MVC是个新鲜的东西,至少为ASP .NET Web世界带来或多或少的争议,褒奖者有之,诋毁者有之。这也正常,人类的思维确实没法统一,即便是多个选择其实是件好事儿也一样。不管怎样,评说者至少应该在了解的基础上再进行评论,才显得“专业”,没有品味的找茬型选手实在不值得恭维。
作为MVC范例集锦,我将MVC发布之后业界的应用开源项目做个简单的整理,Anytao不打算对任何项目发表个人观点,因为有些项目未经本人了解,所以此处仅是one by one式的陈列,期望对学习者有些帮助而已。
阅读全文
摘要:
提起P/Inoke,我们不可避免的感受到一丝丝的“高深”。一般来说,高深不代表高不可攀,作为.NET平台下于非托管代码交互的基本方式,P/Inoke对大多数Web开发者是个不常光顾的场所,然而互操作问题是或多或少在我们的开发中不期而遇的问题,因为总会在某个偶然我们对托管世界和非托管世界建立一个交集。那么,了解和深入P/Invoke将是你不得不进行起航的拐点,今日我的朋友黄际洲的新书《精通.NET互操作:P/Invoke,C++ Interop和COM Interop》一书提供了一个打开P/Invoke的钥匙,正像本书的定位一样:国内首本全面深入介绍.NET互操作技术的技术书籍。 阅读全文
摘要:
在ASP .NET MVC中,以友好的URL访问资源是MVC吸引眼球的特色之一,但是随之而来对于Authorize问题的处理变得令人令人头痛。我们的方案同样是应用ActionFilter实现对Authorize处理。显然我们可以在OnActionExecuting事件中对Action进行“预”处理,将关于Authorize的验证过程统一在OnActionExecuting中进行,就可以对标记的Action实现调用之前的过滤了 阅读全文
摘要:
根据登陆用户的角色来决定具体执行的Action(ClientList或者AdminList),并由不同的Action导航到不同的View(ClientBookList或者AdminBookList),而对于不同Action访问的URL都是一样的(http://anytao.com/Book/List/123),同时避免了在服务层对角色的判断,某种程度上按照RoleType对于Controller层进行了“注入”,使得Controller层的逻辑不在关心Action过滤的问题。 阅读全文
摘要:
对集合元素进行排序是经常发生的事情,事实上大部分的集合类型都默认实现了Sort方法,进行其元素的排序操作。自定义Comparison为实现更好的Sort控制,提供了很好的扩展机制。
在我们的实际应用中,对于例如BookStore这样的具体应用而言,我更推荐以LINQ的OrderBy来实现。 阅读全文
摘要:
畅游地球是个美好的愿望,随着地图服务的日益完善,我们足不出户畅游全球已变得简单异常。事实上,Google Earth和Virutal Earth已经成为Web服务中的必选目标,为自己的网站加入Earth或者Map地图服务是件非常酷的事情,那么在我们的Silverlight应用中使用地图服务是否能够得心应手呢?
答案是肯定的,我们操作Earth服务只需执行简单的服务调用,就可完成坐地日行八万里的壮举了,而这一切是由VIEWs组件封装了Javascript脚本来完成的,通过对Virtual Earth Service的调用,在Silverlight中使用托管代码完成简单消费。
下面我们来看看这一过程是如何实现的?
阅读全文
摘要:
问题的解答,常常是留给自己思考的,有时候一个猛然浮现的问题将我拉入混沌,但是思考和探索之后也会豁然开朗;有时候,给他人方便就是给自己方便,但是没有记录的方便不足以给更多人方便;过去的很多时间,我回答了很多问题,但是发现重复回答的比例在直线上升,所以在一个统一的地方,提供统一的管理是最好的方式。那么,从今开始这个方寸土地,就是我记录问答时刻的一亩三分地,任何我熟悉和了解的问题,都将尽己所能为你解忧,同时任何我不知道或闻所未闻的内容,也请您见谅我的无知,但是至少你会得到一个“对不起,我不知道”的答案。 阅读全文
摘要:
老赵在谈表达式树的缓存(2):由表达式树生成字符串中提到,在描述Type信息时讨论FullName或者AssemblyQualifiedName提供完整的Type信息,虽是小话题,但却是值得有聊的话题。在.NET中反应一个Type名称信息的有以下三个属性,分别是:
Name,获取当前成员的名称。
FullName,获取Type 的完全限定名,包括Type的命名空间,但不包括程序集。
AssemblyQualifiedName,获取Type的程序集限定名,其中包括从中加载Type 的程序集的名称。事实上,AssemblyQualifiedName被定义为只读abstract属性,具体的实现由其派生类来实现,例如TypeBuilder,我们可以根据其具体实现类型对此有个大致的了解。
此处的定义毋庸置疑是官方的(MSDN),俗话说,事实是检验真理的唯一标准,那么这三个相近的概念,究竟代表了怎样的不同,我们回到事实近看分晓。 阅读全文
摘要:
在.NET世界里,我们常常听到的一句话莫过于“System.Object是一切类型的根,是所有类型的父类”,以至于我在《你必须知道的.NET》8.1节 以“万物归宗:System.Object”这样的title为System.Object授予至高荣誉。所以,基于这样的观点就有了下面这句“接口是否也继承于System.Object?”,事实上这正是今天在技术群里小小讨论的一个插曲。
interface,想说爱你不容易呀。 阅读全文