摘要:
最近沉迷于定义脚本语言,在一些简单实践后,发现如何设计一门语言本身就十分有讲究。错误的定义,往往会导致后期实现和应用脚本时,工作量的翻倍的增长。 那么首先来分析一下c#,java,js在语言级别的基础定义,和他们的区别吧。语言的基础类型对比 先说说java,就个人而言我不喜欢这门语言,但是把它放在第一个,就可以清晰的看到语言是如何“进化”的。 Java的基础类型是什么?所有引用类型的基础类型Object,以及那些所谓的原生类型(int等),当然,还有接口类型,以及一个无法用Object解释其某些行为的数组类型,和一个用于描述对象类型的Class类。 这些就完整的定义出J 阅读全文
摘要:
支持AspNet的Output Cache 对大量非实时数据复杂查询的rest服务而言,Output Cache可以说是AspNet的最大优化亮点,今天WCF的Rest服务也终于可以享受这一好处了:msdn的例子支持Xml和Json两种请求的自动适配 用Xml还是用Json,向来是Rest服务的一个需要思考的问题点,而且3.5那个糟糕的契约还非要用两个不同的方法来对待,4.0终于可以把这个问题抛到脑后,使用新的自动格式选择:如果请求是Json,那么返回也自动使用Json;如果请求是Xml,那么返回也自动使用Xml。 阅读全文
摘要:
WCF的rest服务已经不是什么新概念了,不过,最近做了一个rest服务(Host在windows服务上),缺发现没有人调用,于是自己做了一个简单web界面,调用rest服务的一些方法,同时又不想因为这个简单的界面再部署一个IIS之类的重量级服务,于是就产生了这么一个非常绕口的想法:在wcf rest服务上部署一个(套)页面,用来测试wcf rest服务自身的一个(或几个)方法 本文这个非常绕口的题目,也就是起源于这个非常绕口的想法。关于rest服务的优势 在开始说正文之前,先说说在我理解中的rest服务与一般的Soap服务相比的优势。 首先,如果rest服务的某个方法是get方式的,在url 阅读全文
摘要:
最近在写一段代码的时候,为了兼容各种未知的类型,以及完成一个根据类型自动分派的任务到对应的处理器时,使用了这样的一个契约: 用一个object数组来转递值,每个处理器则声明一个可以处理的类型组合。 然后在写如何分派时,发生了一段小插曲。分派原则 首先,明确一下分派的原则,如果处理器声明能处理的类型是:string,int 那么只有当对象数组的长度为2,并且类型分别为string和int时,才会分派到这个处理器上去执行,不过,要注意的一点是,string是引用类型,因此值可以为null,最终,声明为string,int的处理器可以接受下列参数:"aaa",123n 阅读全文
摘要:
说到c#里面foreach应该是尽人皆知的了,不过,各位是不是了解foreach是怎么工作的哪? 大多数情况下,即使不了解foreach是如何工作的,照样可以把代码写的很正确。不过,前两天我在写一段代码时,却不得不把foreach大卸八块,原因就是遇到了yield和上下文切换,详细情况听我慢慢道来。 情景介绍 ... 阅读全文
摘要:
上篇回顾 上一篇,简单的讲了一下WCF里面如何拦截一个操作,不过,只说了一半,因为程序拦截住WCF的一个操作请求之后,并不知道应该去干什么,因此,这个拦截没有发挥它该有的功能。那么怎么才能让我们的拦截发挥作用,并且有能够实现主题——基于配置的实现哪? 思考这个问题的时候,是否想到了在Web上大显身手... 阅读全文
摘要:
如果说到拦截器,相信大家都不陌生,所有的AOP都依赖各种形式的拦截器。为了让WCF服务端的行为发生变化,这里要借助拦截器的力量。 问题:WCF里面如何创建一个拦截器? 事实上,WCF里面有很多种拦截器,分别用于拦截不同的信息。这里要改变的是方法的实现部分,因此,只要拦截WCF操作就可以达到目的。 ... 阅读全文
摘要:
ReaderWriterLockSlim是3.5新推出的一个类型,用来改良ReaderWriterLock的性能问题,提供了个轻量级的读写锁的实现。 不过,今天在看msdn论坛的时候,发现一个帖子,里面提到了ReaderWriterLockSlim的一个性能问题,不过这个性能问题与之前ReaderWriterLock的性能... 阅读全文
摘要:
最近在忙项目,导致WCF的下文一直没空去写,这两天终于调休了一下,算是暂时空闲下来了。 虽然是难得闲下来了,但是一时之间WCF方面也还没找到什么灵感,哎,算了,今天先换一个主题吧,来说说我最喜欢用的小众桌面浏览器Opera。 先说说目标吧:文件共享 ... 阅读全文
摘要:
大家都知道WCF服务有一套复杂的配置,通过配置可以修改WCF的Address、Binding的行为。 那么,服务的实现能通过配置来更改吗? 当然,利用通用的DI框架可以实现,不过,即使不使用任何通用的DI框架,使用WCF一样做到。 那么具体怎么做哪... 阅读全文