Hawk's profileHawkBlogListsNetwork Tools Help

Blog


    11/19/2008

    万里之行始于足下。

    一家人,一家人。
    1/9/2008

    更新

    更新
    2/6/2007

    华强广场居然还不开张

    不知道是不是要倒闭啦.哈哈.
    12/19/2006

    ......
    11/1/2006

    《在路上》央视《赢在中国》主题歌

    王利芬、张瑞敏 等词, 王晓锋 曲
    央视《赢在中国》主题歌
    演唱:刘欢
    那一天
    我不得已上路
    为不安分的心
    为自尊的生存
    为自我的证明
    路上的心酸
    已融进我的眼睛
    心灵的困境
    已化作我的坚定
    在路上
    用我心灵的呼声
    在路上
    只为伴着我的人
    在路上
    是我生命的远行
    在路上
    只为温暖我的人
    温暖我的人
    创作背景:
    词作者是中国经济界的四位精英:蒙牛的牛根生,联想的柳传志,海尔的张瑞敏,阿里巴巴的马云。创作过程可能是以某位为原创,在此基础上口头集体切磋定稿。这首歌词打动了很多人,不仅是因为它是王利芬主持的《赢在中国》的片尾曲,其次是歌曲中的一句“为自尊的生存”,更重要的是渗透了中国特色下的“自由呼声”。所谓中国特色,即是指群体性处于生存的煎熬状态,在这种目标明确的状态下,人权、人格可能是最不值得被重视的,赤裸裸的金钱和利益被摆在首位和全方位。古人说大丈夫有三大评估标准“贫贱不能移,富贵不能淫,威武不能屈”,其实在现实中国,后两者很容易做到,第一条是最难达标的。当一个落后国家处于由群体性物质缺乏向富裕过渡的混乱期,提出“自尊的生存”这样的人格自由呼声,是多么振聋发聩!
    10/20/2006

    经典爆笑语录大全

    经典爆笑语录大全

    1.女:“只要有钱,我嫁给谁都行。”男:“银行的保险柜你嫁吗?”
    2.争吵的时候,男人和女人的区别就像是手枪和机关枪的区别。
    3.我妻子想减肥,所以她每天都去骑马。结果马一个月之中瘦了四十斤。
    4.病人:“医生,你把剪刀留在我肚子里了。”“没关系,我还有一把。”
    5.法官:你为什么要印假钞?被告无辜地说:因为我不会印真钞。
    6.妻:“男人,都是胆小的。”夫:“不见得,否则我何以会与你结婚。”
    7.上联:哈哈哈哈哈,下联:嘿嘿嘿嘿嘿。横批:神经有病
    8.第一年:他说,她听。第二年:她说,他听。第三年:他俩说,邻居们听。
    9.如果我们生存的冰冷的世界依然难改变,至少我还拥有你化解冰雪的容颜。
    10.贼甲:“快数数今天一共抢了多少钱?”贼乙:“不用,明天看看报纸就知道了。”
    11.老师:“彼得,你知道老鼠能活多少年吗?”彼得:“这个就要看猫的心思了。”
    12.袋鼠对狗说:“我可以把手机放在我的袋子里,而你只能把手机挂在屁屁上!”
    13.猪八戒:我改名叫赛潘安啦,很多美女在等我呢!孙悟空:莫不是你上网了吧,呆子。
    14.女儿问妈妈:“爸爸从前害羞吗?”“要是他不害羞,你现在至少大四岁!”
    15.父:你都这样大了,该找一个老婆了。子:是呀,但茫茫人海,我找谁的老婆呢?
    16.女:“你跟我说话怎么老嚼着糖?”男:“不嚼糖哪来那么多甜言蜜语?”
    17.甲女:“你的未婚夫知道你的年龄吗?”乙女:“是的,他知道一部分。”
    18.“我把她当做北极看待!”“如何?”“她冷得像冰一般,又像磁石那么能吸引我。”
    19.难以实现
    马哈哈开车带着全家行驶在乡间小路上,突然,他发现有一只青蛙正在横穿马路。马哈哈赶紧刹住车,走下来,把青蛙放到了路边。青蛙非常感谢马哈哈,并答应实现马哈哈的一个愿望。于是,马哈哈便对青蛙说:
    “下一周要举行‘选狗大赛’,我想让我的狗得第一。”青蛙要求看一看狗,马哈哈便从车中把狗抱了出来。青蛙一看,那只狗又蠢又胖,而且还只有三条腿。
    “这个愿望恐怕难以实现,您还是换个别的愿望吧!”青蛙面带愧疚地说。
    “那么这样吧,你让我的妻子在下届的选美比赛中获得第一吧!”马哈哈要求道。
    青蛙让马哈哈的妻子从车里出来,看了看说:“我能再看一看刚才那只狗吗?”
    20.如此丑女
    有一个女子长得奇丑无比,男人见后都躲避三分。女子有个最大的心愿,就是让人贩子绑架,然后……于是,每当夜幕降临,她便徘徊在人迹稀少的乡村小路上,等待着那一时刻的来临。
    功夫不负有心人,这天深夜,她终于被一个绑匪绑架塞进车子内。绑匪带着自己的“胜利果实”来见绑匪头目,准备请功领赏。可是,绑匪头目一见女子的长相,不禁大骂那个绑匪没眼光,并责令他立即让那个女子离开车子。绑匪依照头儿的命令让女子下车,可是女子根本没有下车的意思。僵持了很长时间,绑匪使用威逼、恐吓、殴打等种种手段让女子下车,可是女子始终没有屈服,她就是不下车。绑匪头目见状,无奈地喊道:“算了吧!车子不要啦!”
    21.不公平
    有一位牧师和一位公车司机同时过世了,但是公车司机上了天堂,牧师却下了地狱。牧师一生贡献于教会却下地狱,觉得相当地不平。
    于是向上帝抱怨。牧师:“主啊!我一生都贡献于教会,每个礼拜天都带着您的信徒做祷告。为什么我却不如一个公车司机?下地狱了呢??”上帝:“对啊!就是因为如此你才下地狱的。你每个礼拜天都带着信徒们祷告,讲经,但他们都在下头睡觉!但是公车司机每天在街上横冲直撞,他的乘客却在祷告呢!”
    22.毒药
    顾客从药店买药刚出来,药店伙计就急匆匆地追了上来。
    伙计:对不起,您要的是补药,我错给您了毒药。
    顾客:你看你,差点出了大事儿。
    伙计:可不是,老板知道后肯定会骂我的,毒药可比补药贵一倍呢。
    23.避免发问
    一位享誉国内的植物学教授和他的助教正在研究新品种的植物。
    一日,助教问教授:“如果您在野外上实习课,遇到不认识的植物,要怎么办?“
    教授回答道:“我通常走在最前头,然后把不认识的植物通通踩死,以免学生发问。“
    24.活动厂长
    有个工人问厂长秘书:
    “厂长看戏怎么总是坐前排?”
    “带领群众。”
    “可看电影他怎么又坐中间了?”
    “深入群众。”
    “来了客人,餐桌上为啥总有我们厂长?”
    “代表群众。”
    “可他天天坐在办公室里……”
    “傻瓜,相信群众呗!”
    25.刺客
    两个歹徒埋伏着,打算暗算某人,但老是不见那人的踪影。其中一个着急他说:“怎么搞的?还不见他来,但愿他不要发生意外!”
    26.一颗牙
    约翰:“你爸爸简直像个吝啬鬼,你看看,他是一个制鞋匠,你还穿那么破的鞋子。”
    汤姆:“那你爸爸呢?他是个有名的牙科医生,而你小弟弟却只有一颗牙!”
    27.良心不忍
    有一天,一位诗人和朋友一起喝酒。他们要了一份下酒菜,四只麻雀。他的朋友一口气连吃了三只,正要吃最后一只时,诗人忙说:“这一只该我吃了吧?”朋友叹了口气,说:“我本想给你吃,可是,我实在不忍心拆散它们,还是让它们团聚吧。”说完,他把最后一只也吃下去了。

    华强广场开始招商

    今天早上看到华强电子世界招商部门口一大堆人,一问才知道华强广场原定于10。20日开始招商。不过临时派出所由于安全原因让华强电子世界把活动取消了。

    上班族的真实写照

    最后几张图片

    看的人心里美滋滋的:)













































     
    9/22/2006

    介绍 .NET Framework 3.0

    http://www.microsoft.com/china/MSDN/library/netFramework/netframework/intronetfx30.mspx?mfr=true

    介绍 .NET Framework 3.0

    发布日期: 2006-08-30 | 更新日期: 2006-08-30

    介绍 .NET Framework 3.0

    适用于:

    .NET Framework 3.0(即以前的 WinFX)

    Windows 开发

    摘要:3.0 版 Microsoft .NET Framework 采用了大量的最新技术,可以解决当今应用程序开发中的种种难题。

    *
    本页内容
    描述 .NET Framework 3.0 描述 .NET Framework 3.0
    应用 .NET Framework 3.0:设想 应用 .NET Framework 3.0:设想
    了解 .NET Framework 3.0:技术 了解 .NET Framework 3.0:技术
    获取 .NET Framework 3.0:不同选项 获取 .NET Framework 3.0:不同选项
    结论 结论
    更多参考资料 更多参考资料

    David Chappell

    Chappell & Associates

    2006 年 7 月

    描述 .NET Framework 3.0

    应用程序开发的目标始终如一,就是在最短时间内制作出最好的软件。然而,随着开发平台的性能越来越高,制作软件的壁垒也相应提高了。以 Windows 为例,原来的 Win32 接口已经融入到功能更强的 .NET Framework 中。2002 年发布的 Framework 1.0 和 2005 年发布的 Framework 2.0 为设计和编写 Windows 软件的开发人员提供了更好的工作环境,效率也更高。

    .NET Framework 3.0(以前称为 WinFX)就是我们前进路上的下一个目标。建立在这一新版 Framework 上的应用程序可通过 Visual Studio 2005 创建,对大多数 Windows 开发人员来说,这样的应用程序将会更加熟悉。.NET Framework 3.0 是从 2.0 版本演化而来,并在原来的基础上添加了许多新的功能。.NET Framework 3.0 计划于 2006 年底发布,适用于 Windows Vista、Windows Server 2003 和 Windows XP。

    本文对 .NET Framework 3.0 及其组件进行了整体描述,目的是让大家对这一新版本有一个清晰的了解,同时分析了采用的技术,并给出简要说明。

    创建现代应用程序:主要挑战

    今天,开发一款优秀的应用程序可不简单 - 您需要考虑众多的要求。传统的考虑因素,如访问数据、通过 Web 浏览器上网等固然重要,但这些已经显然不够了。下面列出了现代应用程序面临的一系列新挑战:

    组织越来越倾向于从面向流程的角度看待他们的工作。由于大多数应用程序已经对业务流程实现了部分自动化,因此,在代码中明确流程中的这几个步骤就非常重要了。而要实现这一目标,最有效途径是使用工作流技术,这是一种需要支持基于工作流的应用程序的方法。

    通常来讲,应用程序要与组织内外的其他应用程序进行通信。现代应用程序还必须适用于面向服务的架构 (SOA),同时还要实现一些功能,作为其他软件可以访问的交互服务。要实现这些目标,就需要支持面向服务的应用程序。

    对于使用应用程序的人员来说,通常还需要有传递识别信息的方法。目前定义和使用数字标识的技术各不相同,这也是造成网页仿冒等问题泛滥的原因。有鉴于此,现代应用程序及其使用者将会从一致的数字标识用户控件中受益。

    对于现代用户界面,人们的要求也有了很大幅度的提高。要提供真正的业务价值往往需要处理不同类型的文档,使用二维或三维图形,播放视频等等,还要保证本地 Windows 客户端和 Web 浏览器能够兼容这些功能。要满足这些要求,需要不同的用户界面采用统一的方法。

    一般说来,现在的应用程序需要应对以上部分或全部的挑战,因此,这些应用程序的开发平台应该采用一致、可行的方法来解决所有的相关问题。.NET Framework 3.0 就是专为解决这些 Windows 应用程序难题而设计。

    应对挑战:.NET Framework 3.0 功能介绍

    如图 1 所示,.NET Framework 3.0 版是在以前版本的基础上完善而成。事实上,3.0版本保留了 .NET Framework 2.0 的全部功能,因此,在以前版本基础上开发的应用程序仍然可以正常使用。.NET Framework 3.0 添加了四个新组件:Windows Workflow Foundation、Windows Communication Foundation、Windows CardSpace 和 Windows Presentation Foundation。本节将会概要介绍 .NET Framework 2.0 和上述四个新组件的功能。

    .

    图 1

    .NET Framework 2.0:Windows 应用程序通用基础

    尽管仍然可以通过 Win32 界面直接编写软件,而事实上却是,.NET Framework 已经成为编写新 Windows 应用程序的主流环境。如下所示为.NET Framework 最重要的组成部分:

    ASP.NET,支持可 Web 访问的应用程序的开发。

    ADO.NET,允许应用程序访问相关的其他类型数据。

    Windows Forms,支持建立 Windows 应用程序的图形用户界面 (GUI)。

    System.XML,使应用程序能够使用 XML 定义的数据,包括 XSLT 和 XPath。

    Framework 的 2.0 版本在以前版本的基础上添加了几项实用功能,包括对开发 ASP.NET Web 应用程序的技术改进,支持在 64 位 Windows 上运行的 64 位应用程序,还增加了处理事务的新方法。虽然 .NET Framework 2.0 中的部分组件为 3.0 版本中新增组件所取代,但是 2.0 版本的技术仍然是新发布的 3.0 版本的基础,请见随后的详细介绍。

    Windows Workflow Foundation:支持基于工作流的应用程序

    工作流是一个简单思路:按照特定顺序执行的一系列步骤。您甚至可以认为每个应用程序都在执行工作流,因为每个应用程序都执行某些过程。但是,在使用 C#、Visual Basic 或其他编程语言等传统方法开发的应用程序中,这些过程都隐含在代码中。这样做没问题,但是这些过程被深深地嵌入程序逻辑中,使得其执行或更改愈加困难。

    使用工作流技术执行过程逻辑可以有效地解决这一问题。采用工作流技术后,逻辑与普通代码就不会纠缠在一起,过程中的每一步骤都会明确定义,然后由工作流引擎执行。这样做的结果就是,过程执行清楚明确。

    工作流引擎不是什么新概念,有些已经在 Windows 和其他系统中得到应用。Microsoft 已经在部分产品中嵌入了工作流引擎。但是,随着工作流日渐成为开发应用程序的主流方法,提供适用于 Windows 的单一工作流技术已经势在必行。这也正是 Windows Workflow Foundation(正式缩写是 WF )的设计初衷。由于其提供了适用于 Windows 的通用工作流技术,WF 已成为所有基于工作流应用程序的统一创建基础。Microsoft 的 Microsoft Office 2007 系统、Windows SharePoint Services 等软件,以及许多其他公司的应用程序也会使用 WF。

    但是,提供通用的工作流技术之路却是困难重重。举例来说,如何使用一种方法来满足不同工作流应用程序的各种要求?WF 给出的答案是,从全局视角来看待工作流。如图 2 所示,WF 工作流只是一组由 WF 引擎执行的活动。一个活动就是一个类,它可以包含工作流创建者认为有必要的任何工作。活动可以在不同的工作流中重复使用,因此,在针对新问题创建自动化的解决方案时,过程将会更加容易。

    .

    图 2

    提供通用工作流技术面临另一个困难是,面向人员工作流和面向系统工作流的传统分歧。通常来说,工作人员使用的工作流应用程序需要有较高的灵活性,能够进行实时更改。而一般由系统,也就是由软件使用的工作流应用程序则相对更加静态,但要求尽可能高效。WF 综合考虑了这两种不同的使用情况,不仅包括面向人员的功能(如更改运行中工作流的功能),同时还支持更多面向系统的操作。

    通过 WF 的 Windows 通用工作流技术,.NET Framework 3.0 为广大开发人员提供了一种非常有用的软件开发模式。随着面向流程的软件继续风行,工作流技术也会随之推广。

    Windows Communication Foundation:支持面向服务的应用程序

    无论是通过工作流还是其他方式开发,绝大多数应用程序都需要与其他应用程序进行通信。近几年来,应用程序间的通信技术发展迅速。在长达数十年的不统一之后,主要供应商之间最终达成了一致的应用程序通信协议。根据 SOAP 这一全球 Web 服务协议,基于 J2EE、.NET Framework 等不同技术平台开发的应用程序间的互操作性相比以前大为简化。它还会使面向服务的架构这一思想为更多的组织接受。

    当然,现在的通信方式已经不少了。以 .NET Framework 2.0 为例,您可以选择以下几种通信方式:

    ASP.NET Web 服务,提供基于 SOAP 的交互通信。

    .NET Remoting,主要用于 .NET 应用程序之间的通信。

    Enterprise Services,支持可扩展的事务性应用程序。

    System.Messaging,通过 Microsoft Message Queuing (MSMQ) 支持队列消息。

    Web Services Enhancements (WSE),它是 ASP.NET Web 服务的扩展,支持 WS-Security 等新规范。

    这些技术都有其自身的价值,在实际应用中也有着各自的地位。可是,既然问题是一样的,为什么要采用好几种不同的解决方案呢?为什么不根据交互服务来建立一个单一的应用程序通信基础?

    这正是 Windows Communication Foundation (WCF) 的设计初衷。有了 WCF,开发人员不必再像从前一样,处理每一类通信都要使用到不同的应用程序编程接口技术 - WCF (最初的代号为“Indigo”)以通用的 API 提供通用的方法。在 .NET Framework 3.0 环境下,大多数使用上述技术之一的应用程序将会代而使用 WCF。

    WCF 通过 SOAP 提供强大的交互通信支持,这是现代计算机设备的基本要素。它还支持多项 WS-* 规范,如 WS-Security、WS-ReliableMessaging 和 WS-AtomicTransaction。WCF 不需要 SOAP,但是可能会使用其他方法,包括优化二进制协议、MSMQ 队列消息 和基于 REST 的简单通信。WCF 同样采取明确的面向服务方法来进行通信。WCF 不会在对象间进行透明通信,而是为通信各方提供略微不同的抽象服务。其结果之一就是放开了分布式对象系统间某些紧密的耦合关系,使得交互出错减少,并且更容易修改。

    无论是在组织内部还是组织之间,应用程序通信都是现代软件的基本功能。.NET Framework 3.0 以其 WCF 面向服务方法解决了这一难题。

    Windows CardSpace:一致的数字标识用户控件

    请您想一下,人们在 Internet 上是如何表示各自身份的。多数情况下是将个人的数字标识作为一个简单的用户名。再加上密码之后,就可以使用这个标识访问电子邮件帐户、网上商店、网上银行和其他一些金融机构了。尽管这种方法很简单,现在也在普遍应用,但是用户名和密码方式有着无法回避的缺点。最重要的两项是:

    要记住登录众多网站的不同用户名和密码,的确让人不胜其烦。为了减少这些麻烦,许多人在不同网站使用相同的用户名和密码,可这样又增加了安全风险。

    用户名、密码和其他个人信息可能会被网页仿冒者窃取。网页仿冒者会发送欺骗性电子邮件,诱使受害者去登录一个假冒网站,比如一个与受害者银行极其相似的仿冒网站。而这个网站实际上是网页仿冒者控制的。一旦受害者输入自己的用户名和密码,网页仿冒者就会利用这些信息,在真网站冒充该用户,牟取不当利益。

    要减少这些问题的危害性,我们需要采用新的方法来管理数字标识。Windows CardSpace(最初代号为“InfoCard”)是这种新方法中的重要组成部分。为帮助人们追踪自己的数字标识,CardSpace 用不同的信息卡来表示每个数字标识。如果网站接受 CardSpace 登录,那么用户在尝试登录这一网站时会看到 CardSpace 选择屏幕,如图 3 所示。您可以选择一张卡片,这就相当于选择了登录该网站的数字标识。不必再去费心记住数不清的用户名和密码,用户只要记住他们要使用的那张信息卡就可以了。不同的信息卡还包含其他信息,用户可以通过它控制登录网站时提交的信息。

    .

    图 3

    信息卡表示的这些标识是由一个或多个标识提供者创建而成的。组织可以有自己的标识提供者,而不必依赖于简单的用户名和密码。每个标识提供者都会采用更加强大的加密机制,让用户来验证他们的标识。CardSpace 本身也包含一个自发行的标识提供者,可以在客户端计算机上运行。使用这一提供程序,用户可以创建自己的标识,且标识也不必依赖密码进行身份验证。网站接受这些自发行 CardSpace 标识,这样就不必再依赖常见的密码方法,自然会减少因密码而带来的诸多问题。

    不用密码登录网站,网页仿冒者也就无密码可偷了!但是,如果网页仿冒者成功诱使受害者访问假冒网站的话,他们还是会窃取用户的其他信息,如敏感的医疗信息等。要杜绝这种情况,就要求用户自己能够区别假冒网站和真网站。为帮助用户识别网站,拥有网站的组织应获取“高度确认认证”。与现在的 SSL 简单认证不同,新的认证方式涉及到更多、更严格的流程,其中包括采用更严格的方式来证明申请该项认证的组织的身份。高度确认认证上还可以带有公司徽标和其他信息,帮助用户准确识别使用证书的网站是否合法。用户访问新网站时,CardSpace 会始终以标准屏幕显示该网站的证书信息。根据认证的接受程度,屏幕上会自动显示出对网站标识的确认程度。其目的是,强制用户明确界定网站是否可信,然后帮助他们作出正确选择。

    Windows CardSpace 实际上是更大的标识元系统的一部分。标识元系统完全基于开放的公共协议,它定义了一种全新的方式,能够使不同的数字标识技术在各个不同的平台(包括 Windows 以外的操作系统)和应用程序(包括 Internet Explorer 以外的 Web 浏览器)上使用。CardSpace 采取通用的方法来选择标识和其他 Windows 信息,因而在元系统中扮演着重要角色。并且,由于解决了基本的标识问题,CardSpace 也已经成为 .NET Framework 3.0 的重要组成部分。

    Windows Presentation Foundation:适用于不同用户界面的统一方法

    对几乎所有的应用程序来说,用户界面都是重要的组成部分。现在,用户对这些界面的要求越来越高了。当然,我们仍然需要传统的菜单驱动式 GUI。但是除此之外,许多应用程序还需要能够播放视频、运行动画、采用二维或三维图形,以及调用不同的文档。无论是通过安装的桌面客户端还是通过 Web 浏览器来访问应用程序,上述功能都必须可以正常使用。

    一直以来,Windows 上的这些用户界面功能都是以不同方式提供的。例如,开发人员可以使用 .NET Framework 中的 Windows Forms 来创建 Windows GUI,使用 HTML、Java 小程序或 JavaScript 代码创建 Web 浏览器界面,或是使用 Windows Media Player、Adobe 的 Flash Player 等软件播放视频,文档格式则以 Microsoft Word、Adobe PDF 或其他软件进行定义。很明显,开发人员面临着巨大的挑战:如何使用不同的技术,为不同的客户端创建一致的用户界面。这相当困难。

    Windows Presentation Foundation (WPF),最初代号为“Avalon”,就是为解决这一难题而设计。WPF 为所有的这些用户界面提供一致的技术基础,从而大幅简化了开发人员的工作。WPF 采用更为现代的方法,支持视频、动画、二维或三维图形以及各种类型的文档,从而可以让用户以全新的方式处理信息。此外,WPF 还为桌面客户端和浏览器客户端提供了通用基础,大大简化了二者的应用程序开发工作。

    让我们以图 4 中的界面(其中包含了图像、现场图、三维视图等等)为例说明 WPF 的部分功能。过去,开发人员需要懂得各种技术才能进行工作;而现在通过这种更为一致的方法,开发人员可以轻松制作出类似示例中的用户界面。

    .

    图 4

    另外一个长期困扰用户界面开发人员的问题是,如何创建高效界面需要的不同角色。软件开发人员需要编写相应的界面逻辑,但是,他们并不是定义界面感观的最佳人选。一般来说,人机交互领域的设计人员和专家更适合这一工作。但是在以前的技术(如 Windows Forms)背景下,这些问题完全由开发人员决定。开发人员和设计人员之间没有实现真正有效的协作。WPF 借助于可扩展应用程序标记语言 (XAML) 解决这一问题。XAML 是一种基于 XML 的语言,允许以声明方式指定用户界面 -而非代码。这就,开发工具就能够根据设计人员创建的可视化显示,更加容易地生成和使用界面规范。实际上,Microsoft 的一款新产品 Expression Interactive Designer 就是为此而设计。使用这一工具(其他的由第三方提供),设计人员可以创建界面外观,然后生成他们所创建界面的 XAML 定义。开发人员将这些定义导入 Visual Studio 之后,就可以着手构建界面所要求的逻辑了。

    开发人员创建了直接在 Windows 上运行的安装版 WPF 应用程序后,就可以使用 WPF 提供的全部功能了。但是,若要创建在 Web 浏览器内部运行的客户端程序,开发人员应创建一个 XAML 浏览器应用程序,我们通常称之为 XBAP。与安装版 WPF 应用程序的基本原理相同,XBAP 允许在可下载的浏览器应用程序中表示与用户界面相同的样式。两种应用程序可以使用相同的代码,这也就意味着开发人员不再需要针对桌面和浏览器客户端的不同技术集。特别是按照此类丰富 Internet 应用程序的现状,在安全沙箱内运行从 Internet 下载的 XBAP,将会限制应用程序的功能。但是,安装版 WPF 应用程序中提供的大量用户界面功能子集也可用于 XBAP。

    WPF 安装版应用程序和 XBAP 都可以利用 WPF 的现代图形支持,其中包括使用硬件加速、支持矢量图形以及其他更多功能。通过提供更强大的图形支持功能,WPF 使得一系列数据可视化选项成为可能,而这依靠 Windows Forms 或其他的早期技术是不可能实现的。WPF 还提供了 XML Paper Specification (XPS) 的基础,可定义查看、分发和打印固定格式文档的标准格式。

    用户界面是现代应用程序中复杂而重要的组成部分。通过 WPF,.NET Framework 3.0 提供了一种比较完整和一致的解决方案,用于应对用户界面方面的难题。其目标是使构建用户界面的相关人员(包括开发人员和设计人员)能够更有效的进行工作。

    应用 .NET Framework 3.0:设想

    理解一组技术如何协同工作的最好方式,就是查看其使用方式的示例。现在假设,一款应用程序要求客户和代理提交保单。如果使用 .NET Framework 3.0 执行,则会有图 5 所示的工作流程。

    .

    图 5

    图表左上角所显示的应用程序业务逻辑,是使用 WF 工作流得以实现的。处理保单是一项多步骤流程,包括根据组织的保险规则来评估此保单,或许要检查投保人的信用,甚至还要获得其上司的批准。工作流依靠所需要的其他软件,以活动方式实现流程中的每一个步骤。如果要访问存储数据,工作流中的活动可以使用 ADO.NET。

    保险公司可以提供一个呼叫中心,使客户可以通过电话进行投保。呼叫中心员工使用的客户端软件显示在图表的右上角,是由安装版 WPF 应用程序实现的。客户端使用 WCF 与应用程序业务逻辑进行通信,采用的是经过 WCF-WCF 通信优化的二进制协议。如图所示,呼叫中心工作人员依靠 Windows CardSpace 来选择他们在登录该应用程序时将要使用的标识。

    客户还可以通过网络进行投保,而保险代理商也可以通过网络提交保单。为便于网络操作,该应用程序使用 ASP.NET 与 Web 浏览器进行通信。如图表的左下角所示,客户通过 Internet Explorer 来访问该应用程序,他们可以使用普通的 HTML 界面,也可以使用 CardSpace 来选择自主设定的标识。第三方也可以为其他客户端操作系统和浏览器实现标识选择机制,使得标识元系统能够扩展至非 Windows 客户端和 Web 浏览器。

    保险代理商通过 Internet 访问该应用程序时可能需要具有更多功能的界面。因此,他们应该使用 XBAP 而非简单的 HTML 界面。如图表底部中间位置所示,这些客户可以共享呼叫中心所用 WPF 桌面应用程序提供的大部分用户界面功能。由于两者构建在同一基础之上,因此应用程序开发人员可以在两种类型的客户端中重复使用相同的代码。对于其他类型的客户端来说,代理商可以使用 CardSpace 选择他们针对该应用程序所设定的标识。

    最后,此应用程序有可能需要与其他应用程序之间进行互访。如果批准客户时要求信用审核,则最有可能通过调用外部服务实现。或者此应用程序会直接收到外部软件请求,提供这些外部应用程序可以调用的服务。在这些情况下,如图表右下角所示,该应用程序依靠 WCF 使用标准 Web 服务进行通信。无论这些应用程序构建于何种技术之上,WCF 对 SOAP 的支持都使得这些应用程序之间的交互变得轻而易举。

    该方案说明了如何使用 .NET Framework 3.0 中最重要的组件来构建出色的应用程序。而此处所举的简单示例省略了相当多的选项,因此不能将其视为该系列技术所有功能的完整说明。相反,该示例只是提供一种思路,用于讲解如何使用 .NET Framework 3.0 的不同部分来解决实际的业务问题。

    了解 .NET Framework 3.0:技术

    更深入地研究 .NET Framework 3.0 的各项构成技术,对于真正了解 .NET Framework 3.0 的功能会很有帮助。本节分别为 .NET Framework 3.0 的五个部分提供了一个简明教程。有关各部分的更详细介绍,请参阅本文末尾的“更多参考资料”。

    .NET Framework 2.0

    .

    图 6

    .NET Framework 2.0 是目前 Windows 开发的基础,同时也是 .NET Framework 3.0 的基础。图 6 介绍了 Framework 的两个组成部分:公共语言运行库 (CLR) 和 .NET Framework 类库。.NET Framework 3.0 的一些组件,包括 WF、WCF 和 WPF,基本上都作为 .NET Framework 类库的扩展而执行。如前文所述,类库的许多部分仍然是开发人员所使用的重要部分,而其他部分则被包含到 .NET Framework 3.0 提供的新技术中。例如,ASP.NET 仍然是创建浏览器可访问的应用程序的基础,ADO.NET 仍然用来与存储数据配合使用。.NET Framework 3.0 开发人员使用 WPF 而非 Windows Forms 来创建本机 Windows GUI,但与 ASP.NET Web Services、.NET Remoting 或 Enterprise Services 相比,他们通常更喜欢 WCF。尽管存在这些变化,但也应该了解即使在 .NET Framework 3.0 世界中,早期版本的 Framework 仍然是开发人员所使用的核心部分,这一点非常重要。

    Windows Workflow Foundation

    由工作流驱动的、面向流程的设计,是 Windows 软件重要部分的正确开发方式。WF 的目的是让开发人员创建并执行这些基于工作流的应用程序。图 7 显示 WF 提供的用于进行该项工作的组件。

    .

    图 7

    如前文所述,每个工作流都通过一定数量的活动创建。工作流和活动都属于类,所以两者均可由代码直接创建。WF 也提供了工作流设计器,这是一个用于构建工作流的 Visual Studio 托管图形工具。但是创建工作流后,其活动就可以从 WF 附带的基本活动程序库 (BAL) 或其他任何来源得到。

    一旦定义了一个工作流,最终就会由 WF 运行时引擎来执行。该引擎所依赖的是一组运行时服务,用于保持工作流状态、跟踪工作流执行等。运行时服务、运行时引擎和工作流本身,所有这些都包含在某个主机进程中。该进程可以是任何 Windows 进程,从正在桌面上运行的简单的控制台或 WPF 应用程序,到可扩展的服务器进程。

    要了解 WF,需要至少具有一点其组件的知识。以下部分将对各组件进行简述。

    工作流

    从本质上说,工作流就是一组活动。WF 对两种样式的工作流提供内置支持:

    可以按定义的顺序执行活动的顺序工作流。类似于传统的流程图,顺序工作流中包含分支、循环和其他控制结构。但默认情况下,活动会按顺序依次执行。

    可以实现传统有限状态机的状态机工作流。类似于任何的状态机,特定时间所执行的活动由当前状态和已收到的事件共同决定。

    顺序选项可用于定义明确的工作流,例如完全基于软件的进程中的工作流。创建并理解这些工作流相对简单,而且一开始就让大多数开发人员觉得非常容易。当执行路径不太容易预测时,可以选择状态机工作流。一个典型的例子就是涉及与人进行交互的工作流,任何人在任何地方都可以取消该工作流。通过顺序工作流可应对该状况,但每个步骤都会成为一个分支:若工作流未取消,则应该执行;若已取消,则应该执行其他活动。使用状态机对这种行为建模会简单许多,因为取消工作流的请求恰恰是另一个可以在任何时间接收并处理的事件。

    对状态机工作流的支持,是 WF 如何尝试为人和系统工作流提供支持的一个例子。另一个相关的例子是,WF 对更改正在运行的工作流的支持。人的要求千变万化,某个工作流的相关人员,在进程运行当中添加步骤、删除步骤或进行其他更改的行为并不罕见。为了以受控方式适应这种状况,WF 允许创建工作流的开发人员在执行工作流时指明是否要修改以及如何修改。

    基本活动程序库

    开发人员可以随意创建自定义活动。事实上,Microsoft 的目标是促进满含可重用活动的 WF 生态系统的开发。而且,从一个普通的基本活动集着手会让每个人都觉得更加容易。基本活动程序库 (BAL) 的作用就是提供这个普通集。

    无论使用 BAL 中的哪些活动,工作流都不是必需的。而且,许多开发人员会发现 BAL 使他们的工作变得更简单,尤其是在开始的时候。BAL 中包含的活动如下:

    IfElse:根据是否满足某个条件,执行两个或更多可能路径中包含的活动。

    While:只要某个条件为真,就反复执行一个或多个活动。

    Sequence:以定义的顺序,一次执行一组活动。

    Parallel:并行执行两组或多组活动。

    Code:执行定义的代码块。

    Listen:等待一个特定事件,收到后再执行一个或多个活动。

    InvokeWebService:调用一个 Web 服务。

    state:表示工作流状态机中的一个状态。

    EventDriven:定义包含一个或多个活动的转换,该转换需处于特殊状态,并在收到特定事件后执行。

    Policy:允许使用 WF 提供的规则引擎定义并执行业务规则。

    WF 采用了较一般的方式来使用活动,而并非为指定的工作流定义特定语言。BAL 提供了一种“语言”,但任何人都可以使用 WF 随意定义自己的语言。

    Windows Workflow Foundation 工具:工作流设计器

    使用工作流创建应用程序的一个优势是可以图形化地定义工作流。WF 的工作流设计器允许使用该功能,如图 8 所示。默认情况下,开发人员可将工具框中出现的 BAL 活动拖放到该工具的设计界面上,以创建工作流。

    .

    图 8

    一些开发人员不喜欢图形设计器,他们更愿意编写代码。WF 也允许使用这种方法(并且有时需要该方法:一般是直接从代码构建的活动)。也可以将这两种方法结合使用,如同时使用工作流设计器和直接编码的方法创建工作流。其目的是让开发人员使用最有效率的方法。并且为实现更广泛的工具支持,也可以通过 XAML 语言表达工作流,这也是 WPF 所使用的语言。事实上,使用工作流设计器创建的工作流默认为是 XAML 定义的。

    运行时引擎和运行时服务

    如前文所述,WF 运行时引擎具有执行工作流中的活动的职责。作为执行该职责的一个部分,它依赖于一组运行时服务。WF 包含这些服务的标准实现,但是有能力的开发人员可以根据需要更换。这些服务支持几种不同的功能,其中有两种最值得注意:

    持久性:因等待某个事件受到阻塞的工作流,可以使用该服务将其内存状态自动保存到磁盘。当事件发生时,该服务会自动重新加载工作流的状态并重新开始执行。这对于涉及到人员的工作流尤其有用,因为等待一个响应可能需要几个小时、几天或更长时间。

    跟踪:工作流中的活动清楚地区分了其实现进程的执行。WF 的跟踪服务允许开发人员将工作流的执行信息自动写入数据库中。例如,开发人员希望跟踪工作流的起始时间、它的每个活动的起始时间和其他信息。

    Windows Workflow Foundation 和其他 Microsoft 技术

    引入新方法肯定会影响现有方法。.NET Framework 3.0 中的新技术也不例外,每项技术都会对 Microsoft 的其他技术产生影响。当使用 WF 时,对 Windows SharePoint Services、Microsoft Office 2007 系统和 BizTalk Server 的初始影响最大。

    为了使开发人员更容易地创建文档合作和其他种类信息共享的工作流应用程序,3 版 的 Windows SharePoint Services 托管了 WF 运行时。Office SharePoint Server 2007 是 Office 2007 系统的组成部分,基于 WF 支持,构建于 Windows SharePoint Services 中。此外,添加该服务器后,就可以直接在 Office 2007 客户端应用程序中显示 InfoPath 窗体,而且可以在一些普通方案(如批准一个文档)中使用一组预定义的工作流。

    任何熟悉 BizTalk Server 的人现在一定已经注意到了该产品的编排功能和 WF 提供功能之间的相似性。事实上,BizTalk Server 2006 发布后,将通过 WF 替换该产品现有的编排功能,并提供可帮助将现有编排服务迁移到 WF 工作流的工具。但有一点很重要,即应了解 WF 和 BizTalk Server 2006 解决的问题是截然不同的:

    WF 提供了一个通用框架,用于创建基于工作流的 Windows 应用程序。它可以被托管在任何进程中,使用任何种类的活动,并解决任何种类的业务问题,其中包括人员和系统工作流。

    BizTalk Server 是面向企业应用程序集成、企业对企业集成和管理业务流程的许可产品。它提供了大量用于连接不同系统和软件的适配器、用于实现诸如 RosettaNet 和 SWIFT 等标准的加速器以及对企业活动监控的支持。BizTalk Server 还提供了管理基础结构和工具,以及对增长的可扩展性的支持。

    因为它是 Windows 标准的工作流技术,因此 WF 以后很可能会出现在其他 Microsoft 产品和技术中。无论 Microsoft 做出什么样的选择,在客户创建的大量应用程序中都肯定会出现 WF 的身影。

    Windows Communication Foundation

    面向服务的通信的变化,标志着在应用程序交互方式上的进步。WCF 专为支持面向服务的应用程序而设计,正好体现了这种进步。本节将介绍 WCF 最重要的方面,包括服务和客户端、通信选项以及对安全性、可靠通信和事务的支持。

    服务和客户端

    .

    图 9

    如图 9 所示,WCF 的基本思路很简单:服务提供了客户端可访问的接口。该接口可通过 Web 服务描述语言 (WSDL) 来定义,然后转成代码,也可以通过 C# 或 Visual Basic 等语言直接定义。对于一个提供保险应用程序服务的简单接口而言,若使用后一种方法,则代码如下所示:

    [ServiceContract]
    interface IInsuranceApplication
    {
     [OperationContract]
     int Submit(int policyType, string ApplicantName);
    
     [OperationContract]
     bool CheckStatus(int applicationNumber);
    
     [OperationContract]
     bool Cancel(int applicationNumber);
    }
    

    C# 接口的定义用 ServiceContract 属性来标记。该属性表示 WCF 可在该接口中提供进行远程调用操作的方法。所提供的接口方法都标有 OperationContract 属性。在上述简单示例中,每个方法都标有该属性,因此都可以提供给远程调用者。但这并不是必需的,仅为接口的某些方法应用 OperationContract 是合法的。无论进行哪种选择,应用程序中必须有一个类实现该接口,从而为接口定义的方法提供实际代码。一旦完成,WCF 会自动将方法标记为 OperationContract,表示该服务的客户端可对其进行访问。

    关于服务如何被实际提供给其客户端,图 10 给出了比较详细的介绍。客户端不直接访问接口,而是连接到特定的端点。服务可以提供多个端点,从而允许不同的客户端以不同方式进行访问。

    .

    图 10

    如图所示,每个端点都具有以下三个属性:

    合约,说明使用该端点可以调用的操作。该合约只需使用定义这些操作的接口名即可识别,此处是 IInsuranceApplication。

    绑定,定义如何调用端点的操作。每个绑定都可定义数个方面,包括使用什么协议来调用操作、使用哪类安全性等。WCF 中包含许多预定义绑定,如此处显示的 BasicHttpBinding,这是最常见的例子,用户也可以定义自定义绑定。单个服务可以提供多个端点,所以可通过不同协议、使用不同安全性选项,同时访问不同种类的客户端。

    地址,表示端点的位置。如图所示,位置是以 URL 表示的。

    WCF 的基础很简单。与大多数通信技术一样,细节可以很复杂,因为具有许多选项,但是创建一般的 WCF 应用程序并不难。

    通信选项

    由不同类型的开发人员构建的不同种类的应用程序,需要以不同的方式进行通信。对大多数开发人员而言,最简单的方式是远程过程调用 (RPC),它可以使客户端可以像调用本地操作那样调用远程操作。例如,假设是上文所示的接口,客户端可通过一般同步的方式调用任何操作,并耐心等待返回响应。该选项对开发人员而言很容易,在某些情况下是正确的选择。

    但是,WCF 还提供了其他几个选项。如下所示:

    调用没有响应的操作。该类通信标有属性 OneWay,对于发送事件或其他单向交互很有用。

    基于消息的异步通信,直接发送和接收 XML 消息。

    显式处理 SOAP 消息,包括直接在 SOAP 标头中插入元素。

    WCF 还允许开发人员控制服务进行的各种本地形式。例如,使用 ServiceBehavior 属性,可用来设置服务是单线程还是多线程的、是否为每次调用创建新的服务实例以及其他选项。

    安全性、可靠性和事务

    基本通信,即系统间的数据移动功能,它非常有用,但却远远不够。大多数应用程序还需要其他功能。例如,大多数分布式应用程序需要某种安全性。从今天使用的不同方法和技术多样性看来,安全性的提供可能非常复杂。为了使开发人员在不必了解所有细节的情况下创建安全的分布式应用程序,WCF 主要依赖于安全性绑定。例如,上文所示的 BasicHttpBinding 可以配置为使用 HTTPS 而不是普通的 HTTP,其他绑定则提供了更多的安全性选项。例如,WsHttpBinding 支持 WS-Security,允许基于 SOAP 的交互验证、数据完整性和数据机密性。开发人员还可以创建自定义绑定,以提供其应用程序所需的相同的安全性服务。

    对于许多应用程序而言,确保通信的可靠性也非常重要。传统的 Web 服务方法,即通过 HTTP 发送 SOAP,在某些情况下完全可以胜任,当使用 BasicHttpBinding 时会用到该方法。但在大多数情况下,这种广泛使用的方法显得力不从心。例如,经由一个或多个 SOAP 中间方传输的消息不能靠这种简单的方法实现端对端的可靠性。这些情况下,WCF 将执行 WS-ReliableMessaging。开发人员可以选择一个支持该选项的绑定,如 WsHttpBinding,从而传输交互可靠的消息。

    在某些应用程序中,分布式事务也很重要。WCF 构建于 System.Transactions 之上,是 .NET Framework 2.0 的组成部分,允许创建事务性软件。方法可以使用 OperationBehavior 属性指示其所需事务并定义该事务的进行方式。WCF 依赖于 WS-AtomicTransaction 规范,允许分布式事务跨供应商边界进行交互。使用该多供应商协议定义的技术,WCF 应用程序可以参与涉及多项技术(包括 J2EE 及其他)的事务。

    Windows Communication Foundation 和其他 Microsoft 技术

    如前文所述,WCF 取代了一些用于创建分布式应用程序的早期 Microsoft 技术。大多数使用 ASP.NET Web Services、.NET Remoting、Enterprise Services、System.Messaging 或 WSE 构建的应用程序,将转而通过 WCF 进行构建。WCF 应用程序可以与 ASP.NET Web Services 应用程序交互,两者都支持标准 SOAP,也可与其他构建在 Enterprise Services、MSMQ 和 3.0 版的 WSE 上的应用程序交互。BizTalk Server 2006 也可以使用 WCF,而且未来版本的 BizTalk Server 会更直接地构建在 WCF 提供的架构上。

    有一点非常重要,即使新的 .NET Framework 3.0 应用程序不常使用 WCF,但其取代的所有技术仍是该版 Framework 的组成部分,而且仍被照常支持。使用这些技术的早期版本构建的应用程序,还会继续正常运行;安装和使用 .NET Framework 3.0 不会破坏现有代码。

    Windows CardSpace

    无论是通过 Web 浏览器还是其他种类的客户端,用户通常会跨网络访问应用程序。这些应用程序通常需要用户以某种方式标识自己,因此结果肯定是人们必须定期获取并提供远程软件的标识信息。通过浏览器访问 Internet 应用程序,就是一个很常见的示例,内联网上的用户通常也会面临该问题。

    如前文所述,现在多数人经常依赖用户名和密码进行数字识别,由此产生了诸多问题。Windows CardSpace 作为较大的标识元系统的组成部分,提供了解决这些问题的可选方法。若要更深入地了解 CardSpace 是如何实现的,应从了解标识元系统的基本概念入手。

    Windows CardSpace 和标识元系统

    当用户访问应用程序时,无论所使用的是 Web 浏览器还是应用程序特定的客户端,或者其他形式,一般都会提供某种数字标识。数字标识各种各样,但实际上都可由网路上的一个安全令牌表示。简单的安全令牌可能只是一个用户名,复杂的令牌则可能包含一个 X.509 证书或一个 XML 文档。无论通过何种方式,安全令牌都是目前网络上表示数字标识的典型机制。

    我们可以美好地憧憬,总有一天所有人都会采用相同的安全令牌格式,但实际上各种方式仍将继续使用。现在我们会在钱包中携带各种标识卡,如驾驶执照、信用卡、航空公司常飞旅客积分卡等,与此类似,我们会始终使用由各种安全令牌表示的数字标识。没有单个标识系统可以提供通用的方案,所以多个安全令牌将始终是必需的。

    然而,用户仍需要某种方式来一致地处理不同的数字标识。即使没有单个标识系统可以胜任,也可以创建一个标识系统的子系统,即标识元系统,从而以一致的方式使用各种数字标识。Microsoft 与其他公司通力协作,引领着定义该元系统的进程。该元系统基于开放的 Web 服务技术,如 WS-Security 和 WS-Trust 等,可定义数字标识的获取与使用方式,而无需考虑其所依赖的安全令牌类型。

    发行、获取和使用数字标识的过程可以视作是获取三个不同角色的过程。这些角色如下:

    用户:有时称为主体,用户是具有数字标识的实体。

    标识提供者:标识提供者可以为用户提供数字标识。例如,对雇主分配给您的数字标识而言,标识提供者一般是诸如 Active Directory 的系统。对于您使用的 Amazon 数字标识而言,标识提供者将只对您有效,因为您可以定义自己的用户名和密码。不同标识提供者所创建的数字标识可以包含不同的信息,并提供不同的用户真实身份保证级别。

    依赖方:依赖方是一个应用程序,以某种方式依赖于数字标识。依赖方将频繁使用标识(即该标识安全令牌中包含的信息)来验证用户,然后作出授权决定,如批准该用户访问某信息等。依赖方也会使用该标识获得信用卡号,来验证不同时间或出于不同目的而进行访问的同一用户。依赖方的典型示例包括 Internet 网站,如银行、网上商店和拍卖站点,以及其他通过 Web 服务接受请求的所有应用程序。

    这三种实体在标识元系统中进行交互。图 11 说明了这种交互作用,以及 CardSpace 的适当位置。

    .

    图 11

    用户通过 CardSpace 识别应用程序访问依赖方时,这一过程就会开始。要了解此依赖方将请求哪种类型的安全令牌,应用程序必须取得依赖方的策略(步骤 1)。以用于访问网站的浏览器为例(这可能是最常见的情况),站点策略的表达方式为 HTML,并作为网页的一部分发送回来。但是,对于通过 Web 服务访问的应用程序来说,应用程序将改为使用由 WS-MetadataExchange 定义的行业标准协议来向依赖方请求获取其策略。在这种情况下,该策略使用另一种行业标准 WS-SecurityPolicy 来表示。无论以何种方式获得策略信息,都会始终指明该依赖方将会接受的安全令牌类型,以及这些令牌中所必须包含的信息。

    一旦 CardSpace 了解到依赖方需要的安全令牌类型后,会显示之前所示的标识屏幕。对该用户可用的每个数字标识在此屏幕上表示为一个信息卡。由外部依赖方发行的卡称之为受管卡,而由 CardSpace 自发行提供程序发行的卡称之为自发行卡。两种卡都在此屏幕上显示,用户可以任选其一。为了更加方便做出选择,屏幕会将所有不符合要求的信息卡显示为灰色,从而指示出能够满足依赖方要求的标识。然后,用户就可以从中任意选择一个作为要使用的数字标识(步骤 2)。

    但是,卡中并不包含实际的安全令牌。相反,它含有的是用于查找特定标识提供者以及为该用户请求安全令牌所必需的信息。(实际上,所有信息卡最初都是由某些标识提供者创建的。)CardSpace 以用户所选信息卡中包含的内容向发行此卡的标识提供者请求安全令牌(步骤 3)。该请求是使用另一种行业标准协议 WS-Trust 发出的,并且用户使用 Kerberos(X.509 证书和数字签名)或另外一种机制来向标识提供者进行自我身份验证。令牌以加密形式返回,其中还包含了一个时间戳,以防止令牌被盗并于日后重新使用。

    请求的安全令牌返回后会发送到依赖方(步骤 4)。依赖方使用令牌信息的方式有所不同。例如,如果令牌中包含一个 X.509 证书,并附带数字签名,则依赖方将有可能使用令牌来验证用户。但是,使用令牌验证或进行其他任何安全相关目的操作时没有任何要求。(实际上,术语“安全令牌”本身就是用词不当。)令牌中可以含有如用户年龄证明、购物网站享受优惠资格以及其他信息。身份验证是安全令牌一种重要但非唯一的使用目的。

    需要十分注意的是,作为整体来讲,无论是 CardSpace 还是标识元系统都不了解用于安全令牌的格式或技术。元系统的目标是提供一致的方法来使用基于任何类型安全令牌的所有数字标识,而不仅仅是尝试为数字标识创建新的单一源或为安全令牌创建标准格式。通过提供元系统关键部分的 Windows 实现,CardSpace 在实现数字标识的常规方法过程中扮演着一个很重要的角色。

    防止网页仿冒

    标识提供者通常与用户不同,例如在标识由雇主分配时。但是在很多情况下,标识提供者即为用户自身。例如,如果没有使用 CardSpace,则访问许多网站都需要提供用户名和密码,而这两者都是由用户定义的。一旦用户创建标识之后,他们就可以将其用于提供用名和密码,然后可以查询银行余额、购买书籍或进行站点允许的其他任何操作。

    但是如上所述,由于他们仍然依赖密码,所以这种自发行标识容易成为攻击者的目标,。为帮助减少此类攻击,CardSpace 提供了另外一种创建自发行标识的方法。该自发行标识提供者在用户的 Windows 系统上本地运行。自发行标识提供者创建的安全令牌不是依赖于用户名和密码,而是使用安全声明标记语言(SAML,一种 OASIS 定义的标准)进行定义。这些令牌依靠公钥技术而不是依靠密码来验证用户标识。如果依赖方接受他们,则他们就可以起到与传统用户名和密码相同的作用。好处是将不再存在网页仿冒者可以盗取的密码。减少密码的使用,再有如上所述高度保险认证提供更严格的网站标识证明,能够大幅降低网页仿冒所造成的危害。

    Windows CardSpace 和其他 Microsoft 技术

    CardSpace 涉及到数项其他 Microsoft 技术,其中包括:

    WCF:由于依赖 Web 服务标准,例如 WS-Security 和 WS-Trust,因此 CardSpace 使用 WCF 进行通信。实际上,WCF 应用程序的创建者只需指定一个特别绑定,就可以让该应用程序使用 CardSpace。

    Active Directory:虽然现在还无法实现,但 Active Directory 终将成为元系统中的一个标识提供者。

    Windows Live ID(以前称为 Passport):正如 Active Directory 一样,Microsoft 业已宣布会将 Live ID 验证系统修改为一款标识提供者。请注意,不能使用 CardSpace 来代替 Live ID,因为这两者用于解决完全不同的问题。相反,正如其他任何标识提供者一样,Live ID 将成为标识元系统的一部分。

    Microsoft 还提供其他标识相关技术,用以解决与 CardSpace 不同的问题。例如,Active Directory Federation Services (ADFS) 主要关注于组织之间的联合标识。这是一项重大的挑战,许多需要与其他组织合作的公司都面临着这一挑战。但是,此问题与 CardSpace 和标识元系统所解决的更广泛的问题完全不同。

    Windows Presentation Foundation

    基于工作流的逻辑、面向服务的通信和标识都是现代应用程序中的重要组成部分。但是,用户通常最关注的是他们所看到的:用户界面。WPF 的目的是为了解决现代应用程序中创建用户界面所遇到的挑战。WPF 提供了一系列相应功能来满足这些需求,如下所述。

    Windows Presentation Foundation 功能

    开发人员完全可以使用 C#、Visual Basic 或一些其他基于 CLR 的语言来自由构建 WPF 应用程序界面。但是,如前文所述,WPF 也允许使用基于 XML 的 XAML 来指定界面。XAML 中的元素和属性可直接映射到 WPF 提供的类和属性。例如,在下面的简单示例即使用 XAML 来定义按钮:

    <Button Background="Red">
     No
    </Button>
    

    该示例创建了一个包含文本“No”的红色按钮。使用如下代码也可以达到完全相同的效果:

    Button btn = new Button();
    btn.Background = Brushes.Red;
    btn.Content = "No";
    

    无论如何定义,实际上所有 WPF 应用程序都遵循相同的基本模型。应用程序可继承 WPF 的标准应用程序对象,以提供基本方法、事件和属性。WPF 应用程序既可以拥有传统的对话框驱动界面,也可以拥有导航式界面,其功能更类似于一个浏览器应用程序。以后者样式构建的应用程序通常作为一组页面实现,每个页面中包含以 XAML 定义的用户界面和以代码定义的某些逻辑关系。为了将这些页面链接在一起,XAML 还提供了一个与 HTML 十分类似的超链接元素。应用程序每次显示一个页面,可使用户在这些页面之间前进或后退、维护历史记录列表以及其他功能等。尽管不需要,导航应用程序还是可以作为 XBAP 在 Web 浏览器内运行;开发人员也可以在安装版 WPF 应用程序中自由使用该界面样式。其目的是构建出融合浏览器界面与本地 Windows 界面最佳特点的软件。

    无论其界面使用哪种样式,WPF 应用程序都可以通过面板进行基本布局。每个面板通常包含多个控件,这些由 WPF 提供的控件包括按钮、文本框、组合框、菜单以及其他对象。这些控件如何放置取决于所选择的面板类型。例如,Grid 允许将控件放在指定的网格上,而 Canvas 则允许开发人员将控件放在其界限范围内的任何位置。在 GUI 中,通常用户生成的事件由应用程序中的不同控件和其他类进行捕获和处理。还可以将样式和模板应用到控件组,这样就可以非常容易使应用程序具有一致的外观。

    WPF 的支持范围远远超出了上述的基本用户界面功能,还包括:

    文档:WPF 应用程序可以使用 XAML 的 FixedDocument 标记来显示 XPS 文档。也可以使用 FlowDocument 标记来显示流文档。流文档与传统的屏幕文档类似,能够让用户滚动浏览其内容。另外,开发人员通过设置此标记的不同属性,可以使文档更适应其环境。例如,文档可以每次显示一页,这样读者就不必上下滚动页面了。WPF 还能够根据显示文档的窗口大小来自动确定应该把文档拆分成多少列。其目的是尽量提高屏幕上文档的可读性。

    图形:WPF 还支持创建二维和三维矢量图形。对于二维作业,WPF 可提供标准抽象,例如形状、画笔和绘图笔,同时还允许三维图形定义模型,以用于指定光线和摄像机位置信息。与早期技术(例如 Windows Forms 需要依赖于 GDI+ 才能绘制图形)不同的是,WPF 图形并不是使用开发人员所必须了解的单独一组概念来进行分区的。相反,用于图形的 XAML 元素能够与那些用户界面其他方面的元素自然组合。按钮可带有图形内容,文本和图形可以组合,以及其他更多功能。

    图像:使用 XAML 的图像标记,WPF 应用程序可以显示不同格式的图形,包括 JPEG、GIF 以及其他格式。WPF 依靠 Windows Imaging Component (WIC) 为编解码器以及显示和存储图像的软件提供标准框架。在 WPF 中,通常图像元素可以与其他元素组合,能够让按钮显示图像而不是简单的文本标签。

    媒体:WPF 应用程序可以使用 MediaElement 标记来显示不同格式的视频和音频,包括 WMV、AVI 和 MPEG。同样,此元素也可与其他 XAML 元素相组合,例如使三维立方体的所有侧面上都显示视频。

    动画:WPF 提供动态显示绝大部分用户界面的内置支持。例如,放大和缩小圆圈、顺利地更改按钮大小。应用程序还可以定义包含时间线的情节提要,允许调整动画的发生顺序。

    数据绑定:由于许多 WPF 应用程序都需要显示数据,因此提供将数据映射到用户界面元素的自动支持功能是很有帮助的。WPF 可为包含在对象和其他源中的信息提供此类数据绑定。WPF 数据绑定还允许在显示数据前对其进行排序和筛选。

    Windows Presentation Foundation 的应用

    WPF 提供大量的用户界面功能,使开发人员和设计人员可以创建出非常吸引人的用户界面。但是无论客户端应用程序看起来有多漂亮,如果存在部署问题的话,可能会使某些组织拒绝使用。如果推出的新版本客户端涉及到安装此应用程序的每台桌面电脑,则会导致高额的升级成本。现在,避免此问题的一个常用方法是创建基于浏览器的客户端,而不是本地 Windows 客户端。然而与浏览器相比,本地 Windows 客户端通常拥有更好、响应更及时的用户界面。为解决部署这些客户端时所面临的难题,就需要使用 ClickOnce 技术准备好安装版 WPF 应用程序。ClickOnce 技术第一次应用于 .NET Framework 2.0,可使 Internet Explorer 用户通过 Web 选择应用程序,然后将其自动安装在本地计算机上。安装之后,应用程序还能够在出现可用的新版本时进行自动更新。目的是将 Web 客户端的简单性和低成本部署与安装版 WPF 应用程序强大功能结合起来。

    尤其是在使用 ClickOnce 进行部署时,安装版 WPF 应用程序在许多情况下都是很好的客户端选择。但即使其用户可以从 WPF 界面中获益,也存在不适用此类应用程序的情况。例如,回想一下上述的远程保险代理商,或者希望提供三维图形、视频以及其他 WPF 现代功能的网上商店。奢望此类应用程序用户通过安装本地 WPF 应用程序来访问网站通常是不切合实际的。更佳的解决方案是在用户的 Web 浏览器内提供 WPF 样式的界面。

    XAML 浏览器应用程序 XBAP 即是针对这一问题而专门设计的。Internet Explorer 用户可以将 XBAP 直接下载到浏览器,而不必部署安装版 WPF 应用程序。此应用程序在 Internet Explorer 内运行,可以提供基于 WPF 的用户界面。但是从 Internet 网站下载和运行代码是一项危险的操作。为保护用户免遭恶意开发者的攻击,所有从 Internet 下载的 XBAP 都在部分信任沙箱中运行。基于 .NET Framework 提供的代码访问安全性,该沙箱会限制 XBAP 的操作。例如,从 Internet 下载的 XBAP 不能创建独立窗口或启动新窗口,不能显示由 XBAP 本身启动的保存对话框或访问隔离存储区以外的文件系统。尽管沙箱规定了种种限制,XBAP 仍然可以使用大部分的 WPF 功能,包括二维和三维图形、动画、屏幕文档、图像、视频等。

    如前文所述,WPF 可使用 XAML 的 FlowDocument 元素让应用程序显示适合的文档。显然,基于显示方式而更改文档外观并不总是最好的解决方案。有时,固定格式文档(在屏幕上和打印出来的效果始终相同)会是更好的选择。WPF 的 XPS 文档可解决这一问题。使用 XAML 子集予以定义之后,可以在安装了 XPS 阅读器的任何系统上阅读 XPS 文档。此外还提供了一种新的 Windows 打印格式,能够以更高的保真度来打印复杂图形。为了更加一致地与不同类型的文档配合使用,XPS 文档和 Office 2007 文档都使用了 Microsoft 的“开放打包约定”,其中定义了存储文档内容、数字签名文档以及其他操作的常用方法。

    Windows Presentation Foundation 工具

    使用基本的文本编辑器就可以直接以代码和/或 WPF 来创建任何的 WPF 用户界面。但大多数人还是倾向于使用更好的工具,因此 Microsoft 提供了 Visual Studio 2005 的扩展,开发人员可以基于此来构建 WPF 应用程序。Visual Studio 的下一个版本(代号为“Orcas”)仍将为 Windows Presentation Foundation 提供更多的可视化设计器功能。使用该工具,开发人员能够以图形方式创建他们所希望的用户界面,然后用工具生成此界面的代码。

    但是一般来讲,开发人员不是定义用户界面的最佳人选。设计人员通常更擅长此类工作,因为他们的工作就是与人交流。问题在于绝大多数设计人员并不编写代码,因而 Windows Presentation Foundation 可视化设计器(位于 Visual Studio 内)不是适用于该团队的有效工具。为了保证设计人员在 WPF 环境下的高效工作,Microsoft 推出了 Expression Interactive Designer。设计人员可以使用该工具来执行定义界面感观、指定动画等操作,然后将所创建内容生成 XAML 版本。开发人员将此 XAML 版本导入 Visual Studio 之后,就可以为事件处理等内容添加代码。由于 Visual Studio 和 Expression Interactive Designer 使用相同的生成系统,因此开发人员和设计人员可以使用其各自熟悉的工具反复处理一个项目。其目的是帮助来自设计与软件工程这两个不同学科的人员高效地协同工作。

    Windows Presentation Foundation 和其他 Microsoft 技术

    与其他 .NET Framework 3.0 组件一样,WPF 对现有 Microsoft 技术也有所影响。其中受到影响最大的有:

    Windows Forms:.NET Framework 最初用于创建 GUI 的方法,现在许多应用程序中都用到 Windows Forms。考虑到这一点,WPF 应用程序中允许托管 Windows Forms 控件,同时允许在 Windows Forms 应用程序中托管 WPF 控件。例如,Windows Forms 应用程序中可以托管能够提供三维数据可视化的 WPF 控件。虽然有一些限制,但是肯定可以同时使用这两种技术来构建应用程序。另请注意,现有 Windows Forms 应用程序仍可在 .NET Framework 3.0 环境中正常工作。

    Win32 和 Microsoft 基础类 (MFC):与 Windows Forms 一样,可以在使用这些现有技术构建的现有 Win32 和 MFC 应用程序中托管 WPF 控件,反之亦然。但是其互操作性与 Windows Forms 相比有些复杂,原因是与 Windows Forms 的不同之处在于,基于 Win32 和基于 MFC 的应用程序并不是构建在 CLR 之上。因此,与 WPF 之间的互操作性还要求基于 CLR 的代码与本地 Win32 代码之间建立映射。

    Direct3D:是 API DirectX 系列的组成部分,其作用是使应用程序创建和显示三维图形。随着 .NET Framework 3.0 的面世,主流 Windows 应用程序都可以使用 WPF 中的三维功能,而不只局限于 Direct3D 提供的更专业方法。但一些需要较高性能的应用程序(例如三维游戏)仍将继续使用 Direct3D。实际上在后台,WPF 仍依靠 Direct3D 来完成所有的图形渲染工作。

    Windows Communication Foundation:如上所述,WPF 应用程序可以使用 WCF。但是,XBAP 通常无法使用 WCF,因为 WCF 需要完全信任才可正常运行。从 Internet 下载的每个 XBAP 都在部分信任沙箱中运行,这就禁止了 XBAP 访问 WCF。但是,XBAP 能够使用 ASP.NET Web 服务来调用可与 WCF 和其他 Web 服务实现交互的 SOAP。

    “WPF/E”:WPF 值得一提的另一个方面,尽管没有包含在 .NET Framework 3.0 之内。其代号为“WPF/E”,目的是在本身不支持 WPF 的系统中提供 WPF 样式界面支持。顾名思义,“E”表示该技术可用于任何地方,包括 Macintosh、小型设备以及其他系统。WPF/E 计划于推出 WPF 之后的某个时间发布,将提供全部 WPF 功能的一个子集,其中包括二维图形、动画和视频。

    获取 .NET Framework 3.0:不同选项

    对于要使用 .NET Framework 3.0 的应用程序,必须将此版本的 Framework 安装在运行该应用程序的计算机上。这对于 Windows Vista 来说是非常简单的:会在默认情况下安装 .NET Framework 3.0。也就是说,安装了 Windows Vista 的新计算机或升级到 Vista 的现有计算机都会自动安装 .NET Framework 3.0 应用程序。另外,.NET Framework 3.0 也可以在 Windows XP 和 Windows Server 2003 上运行。为使这两个系统的现有用户能够用到新的 .NET Framework 3.0 组件,Microsoft 提供该软件的免费下载版本。

    结论

    .NET Framework 3.0 是由 Windows 编程模型演变而来。它建立于 .NET Framework 2.0 的基础之上并加以扩展,目的是支持现代应用程序的构建。为此,该 3.0 版本采用了大量的最新技术,可以解决当今应用程序开发中的种种难题。通过在公共基础上建立这种多样性,Microsoft 致力于使软件的整体效果大于各个部分之和,从而让开发人员以更加一致的方式使用 .NET Framework 3.0 的不同部分来构建应用程序。

    无论组织选择采用此新版本的哪些方面,其中所蕴含的技术必定会对 Windows 软件领域产生重大影响。对于该领域的所有人来说(无论是开发人员、设计人员或是决策者),现在是开始了解如何从 .NET Framework 3.0 获益的时候了。

    9/16/2006

    SourceFormatX 版本升级历史

    这个页面列出了 SourceFormatX 系列产品的最新更新升级和新加功能,如果您对 SourceFormatX 有新功能建议或新语言支持请求,请不要犹豫联系我们,我们非常乐意倾听来自您的意见和建议,谢谢。

    SourceFormatX 2.56 Service Pack 3  [2005/03/04]

    • 这个服务包修正了一些次要的Bug,并包含了前2个服务包

    SourceFormatX 2.56 Service Pack 2  [2005/02/15]

    • 这个服务包修正了一些次要的Bug

    SourceFormatX 2.56 Service Pack 1  [2005/01/18]

    • 这个服务包修正了一些次要的Bug

    SourceFormatX 2.56   [2004/07/20]

    • 为源码浏览器添加了JSP和HTC的扩展名支持

    SourceFormatX 2.55   [2004/07/18]

    • 增加了格式化 JSP 源代码的功能

    • 增加了格式化 HTML Components (HTC) 源代码的功能

    • 增加了丹麦语界面的支持

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了缩进default关键字内部语句块的Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了错误转换default关键字"/="符号的Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了字符串识别的Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了switch关键字后有时丢失大括号的Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了缩进已换行代码的Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了同时选中"拖后大括号"和"缩进大括号"时会错误排版的Bug

    • 为VB, VBScript, VB.NET语言修正了错误缩进Elseif关键字的Bug

    • 修正了错误设置和保持用户自定义编辑器风格

    SourceFormatX 2.54  [2004/06/22]

    • 为C/C++, Java, C#, PHP, JavaScript语言增加了单行条件语句添加括号对的功能

    • 为C/C++, Java, C#, PHP, JavaScript语言增加了函数块添加分隔注释的功能

    • 为C/C++, Java, C#, PHP, JavaScript语言增加了把空格转换为制表符的功能

    • 为Object Pascal语言增加了缩进底层begin...end的功能

    • 为Object Pascal语言增加了缩进begin...end内部代码块的功能

    • 为Object Pascal语言增加了设置冒号前空格数的功能

    • 为Object Pascal语言增加了删除变量声明块中空格的功能

    • 为C/C++, Java, C#, Object Pascal, PHP, JavaScript语言增加了混乱代码时删除注释的功能

    • 修正了C/C++有时错误识别#endif预处理关键字的Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了拖后else关键字到括号尾时严重出错的Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了缩进嵌套单行条件语句歪斜的Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了缩进switch关键字内部语句块的Bug

    • 为C#语言修正了错误联合带有属性元素行的Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了混乱代码时错误地联合了某些关键字的Bug

    • 为Visual Basic修正了错误判断Frm文件内冒号并强行断行的严重Bug

    • 为C/C++, Java, C#, PHP, JavaScript语言修正了错误合并带有空行的单行条件的Bug

    • 为Object Pascal修正了错误交换带有/不带有Begin..End行的Bug

    • 启用了全新的、更加简捷方便和可靠的注册机制

    SourceFormatX 2.53  [2004/05/12]

    • 添加了调整C/C++/Java/C#/PHP/JavaScript小括号内外空格的功能

    • 修正了C#编译预处理#region的Bug

    • 修正了C/C++/Java/C#/PHP/JavaScript字符串的Bug

    • 修正了某些笔记本上无法注册的Bug

    SourceFormatX 2.52  [2004/05/01]

    • 修正了格式化Object Pascal时出现的大小写混乱问题

    • 调整了格式化C/C++/Java/C#时catch关键字的空格数量

    SourceFormatX 2.51  [2004/04/30]

    • 修正了格式化C/C++/Java/C#/PHP源码无效的Bug

    • 修正了错误判断C/C++的struct和case关键字的Bug

    SourceFormatX 2.50  [2004/04/26]

    • 采用了全新的 C/C++ 词法解析引擎

    • 采用了全新的 Java 词法解析引擎

    • 采用了全新的 C# 词法解析引擎

    • 采用了全新的 PHP 词法解析引擎

    • 采用了全新的 JavaScript 词法解析引擎

    • 增加了格式化 ASP 源代码的功能

    • 增加了混乱多种源代码的功能

    • 为 Object Pascal 语言添加了689个常用函数、内建类型和VCL控件属性的大小写强制转换,使其能强制转换的元素个数达到914个

    • 为 VB/VBScript 语言添加了115个常用函数、方法和属性的大小写转换,使其能自定义转换的元素个数达到328个

    • 为 VB/VBScript 语言添加了98个内建固定常量的自定义大小写转换

    • 修正了一些小 Bug

    SourceFormatX 2.15  [2004/03/21]

    • 为 Object Pascal 语言添加了112个常用函数的大小写强制转换

    SourceFormatX 2.12  [2004/03/17]

    • 修正了某些计算机的购买申请码不断变化的Bug

    SourceFormatX 2.11  [2004/03/15]

    • 修正了有时不能保存个人参数设置的Bug

    SourceFormatX 2.10  [2004/03/12]

    • 增加了格式化 PHP 源代码的功能

    • 增加了两键鼠标模拟滚轮滚屏的功能

    • 修正了导出 C# 源代码时内存越界的 Bug

    SourceFormatX 2.00  [2004/02/28]

    • 增加了格式化前后源代码对比的功能

    • 增加了格式化前后源代码同步滚动的功能

    • 增加了源代码括号和函数边界瞬间高亮匹配的功能

    • 增加了源代码浏览器

    • 增加了对滚轮鼠标的支持

    • 增加了法语界面的支持

    • 修正了一些小Bug

    SourceFormatX 1.10  [2003/10/09]

    • 修正了格式化 VB/Vbs/VB.NET 源代码的严重错误

    • 修正了格式化少数 C/C++/Java/C# 源码对不齐的Bug

    • 修正了格式化少数 Pascal 源码整体歪斜的 Bug

    • 添加了更多的 Pascal 语言关键字

    • 修正了其它的小 Bug

    SourceFormatX 1.00  [2003/08/20]

    • 建立 SourceFormatX 的初始版本

    • 进行了大量的测试,收到了大量的反馈

    C Java PHP Perl Python 的程序代码美化工具

    C Java PHP Perl Python 的程序代码美化工具
    (Pretty Print Program/Source Code Beautifier)使用

    作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com

    写于:2002/04 最后更新: 09/09/2006 17:09:05
    Feed Back >> (Read this before you ask question)
    Creative Commons License

    版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
    http://www.chedong.com/tech/indent_tools.html

    关键词:pretty print indent perltidy pydent astyle htmltidy source code beautifier

    内容摘要:
    写本文的目的无非是2个:

    1. 如果前任程序员缩进非常不整齐的代码非常影响现任维护者的代码阅读速度。
    2. 新的项目代码(无论在什么编辑环境下编写)都能够非常好的适应公司的缩进规范,可以便于开发者之间的交流。

    如果马上能从以下列表中找到你需要的就完全不必耐心的看到最后:相应工具包中的文档会有更详细的使用说明

    c, c++ c# ==>   indent   Astyle

    java ==> astyle Jalopy Jacobe ImportScrbber

    php ==> phpCodeBeautifier

    perl ==> perlTidy

    python ==> Pydent

    asp ==> VBSBeaut

    程序员应该是善于沟通的,代码美化的意义在于体现了开发者对他人的尊重,使用好的编码约定可以使源代码明白、易读、准确,更加直观且与其他语言约定保持一致,从而让程序员之间更好的沟通。

    有统计表明缩进良好的代码可以提高代码阅读的效率40%以上,而另一个统计是软件开发工作的70%以上是维护前人的代码,因此对以往代码的格式美化往往也是系统重构(refactoring)的第一步。代码美化工具(pretty print program)的使用可以使基本的代码缩进规范成为一种更容易执行的制度。

    另外,如果作为部门代码规范的制订者也应该了解程序员不是机器,写代码时完全不犯代码缩进错误几乎是不可能的。基于工具的批量格式化和整理工具方便的配置导入/导出机制制定统一的缩进规范才是一个真正有可操作性的制度。

    几种开放源代码的代码美化工具的介绍

    工具名称 适用语言 简介 安装/使用
    indent c indent就是代码美化工具的代名词 indent是gcc附带的一个标准工具,
    indent [options] [input-files]
    indent [options] [single-input-file] [-o output-file]
    perltidy perl
    perltidy本身也是用perl写的 下载后: perl Makefile.PL;make;make install
    perltidy [ options ] file1 file2 file3 ...
    (output goes to file1.tdy, file2.tdy, file3.tdy, ...)
    perltidy [ options ] file1 -o outfile
    perltidy [ options ] file1 -st >outfile
    perltidy [ options ] <infile >outfile
    astyle c c++ java (php) 一个速度很快的C/C++/Java源代码美化工具。
    astyle比indent好在有很多成套的的风格定义:ansi java linux...不必记住复杂的缩进具体选项。
    下载源代码解包后,make, 生成astyle可执行文件
    astyle [options] < Original > Beautified
    astyle [options] Foo.cpp Bar.cpp [...]
    astyle --style=ansi *.cpp
    我尝试过用它来格式化PHP程序也很有效(当然是不合HTML代码混在一起的纯PHP代码)。
    jalopy java 功能强大的JAVA代码格式化工具,除了标准界面外,命令行工具,还可作为ANT JBUILDER ECLIPSE JDEVELOPER等工具的插件使用,并提供API http://prdownloads.sourceforge.net/jalopy/下载
    并参考相应安装文档
    pydent python pythius包含了2个工具:
    pydent: 代码缩进工具
    pystat: 代码统计工具
    下载源代码解包后:
    Run "python setup.py build"
    Run "python setup.py install"
    htmltidy html/xml HTML代码的纠错工具,可以帮助你的HTML代码更好的符合W3C规范,现在被称作tidy,因为它不仅只使用于HTML,也现在也适用于XHTML XML的格式化。

    但JSP不适合ASP PHP JSP等嵌入式脚本的代码美化

     

    下载源代码后 make 生成tidy可执行文件:
    tidy file1 file2 ...
    注意:对于含有中文的页面要使用 -raw选项
    tidy.exe -raw -imuq -wrap 132 -f %f.err %f
    选项说明:
    -raw: 不修改中文字符 (output values above 127 without conversion to entities)
    -i indend 缺省HTML按2个空格缩进
    -m 覆盖原文件
    -u 强制所有HTML标记大写(这个可以不加)
    -wrap 页面代码宽度大于132行强制换行
    -f %f.err 将错误输出到“相应文件名.err”文件中
    HTMLTIDY支持XML的格式美化:
    tidy -xml -imq web.xml
    tidy -xml -imq build.xml

    其他工具介绍:

    php代码美化工具
    phpCB: php code beautifier 有命令行版本,也有图形界面的代码查看器。
    http://www.phpedit.net/products/phpCodeBeautifier/

    Java的代码美化工具
    如果是专门针对JAVA代码的格式化,Jacobe也是很好的选择,它缺省包含了一个完全按照SUN的代码规范的格式化配置文件。而且甚至有JIndent这种商业化代码整理工具以获得更好的效果。

    ImportScrbber: java import声明的整理工具,能够将import java.util.*这样的引用变成单条的引用,并且帮助删除已经不再需要的引用。 http://importscrubber.sourceforge.net/

    介绍这些工具的都可以在这里可以找到:Jacobe Jindent Jxbeautifier...
    http://directory.google.com/Top/Computers/Programming/Languages/Java/Development_Tools/Code_Beautifiers/

    使用命令行工具实现代码的批量修改

    Windows 2000下:用for命令实现目录遍历和文件过滤及命令执行,例如:
    for /R %f in (*.java) do astyle --style=java %f
    for /R %f in (*.htm*) do tidy -raw -imq -wrap 132 -f %f.err %f
    for /R %f in (*.asp) do vbsbeaut.exe -i -s4 %f

    Linux:用find -exec 遍历执行,例如:
    find ./ -name *.java -exec astyle --style=ansi {} \;

    因此不要被很多商业化软件漂亮的图形界面所迷惑,当面对上千个源文件时,能够基于命令行的批量操作也是一个非常重要的功能。

    针对Eclipse等IDE开发环境的工具插件使用

    越来越多的IDE开发环境都包含了代码美化功能,但有些仍不如这些专门的工具强大,而且如果开发人员中有的用Eclipse,有的是JBuilder的忠实用户,如何让他们都能方便的遵守代码规范呢?答案就是用全Jalopy针对这些主流IDE开发环境的插件。
    Jalopy: Java代码美化工具: http://jalopy.sourceforge.net/
    Eclipse plug-in: http://jalopy.sourceforge.net/plugin-eclipse.html
    CheckStyle: Java代码代码规范(缩进,命名)检查工具 http://checkstyle.sourceforge.net
    Eclipse plug-in: Eclipse Checkstyle Plug-in

    安装:
    作为Eclipse的插件安装都非常方便,下载后解包到Eclipse/plug-in/目录下重启Eclipse即可:

    配置:
    Jalopy: Windows ==> Jalopy Preference 配置的导入/导出在General选单中,
    CheckStyle: Windows ==> perference ==> checkstyle 配置的导入/导出就在配置界面右侧
    标准配置的导入/导出功能可以大大降低开发人员针对以上工具的学习时间,对于大部分开发者来说不需要详细了解其中所有的选项配置,只要知道将标准配置导入就可以了。我常用的Jalopy配置文件

    使用:
    Jalopy: 在代码编辑界面点右键的选单中除了原有的Format选项外,还多出了Format with Jalopy选项,而Eclipse自身带有的Source=>Orgenize Imports也是能够达到Imports Srubber同样的功效。
    CheckStyle是一个非常复杂的代码风格检查过程:包括缩进,命名规范等,因此缺省是Disable的,启动针对一个项目的CheckStyle需要在点:项目的properties==>CheckStyle==>Enable。

    而且以上这些工具都包含了针对ant的扩展,可以方便的加入到ant脚本中进行自动的代码整理/统计。


    参考资料:

    GNU Coding Standards
    http://www.gnu.org/prep/standards_toc.html

    Code Conventions for the Java(TM) Programming Language
    http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html

    PHP Coding Standard
    http://alltasks.net/code/php_coding_standard.html

    Perl Style
    http://www.perldoc.com/perl5.6.1/pod/perlstyle.html

    pb: Perl/Javascript Beautifier
    http://www.arachnoid.com/lutusp/ftp/cgi/pb.txt

    HTML XML XHTML CSS...
    http://www.w3c.org 

    C-C++ Beautifier HOW-TO:
    http://www.tldp.org/HOWTO/C-C++Beautifier-HOWTO/

    VBScript代码规范
    http://msdn.microsoft.com/library/en-us/script56/html/vbsCodingConventions.asp

    VBSBeaut代码整理工具
    http://www.daansystems.com/vbsbeaut/

    Java组件之间的依赖度分析
    http://www.clarkware.com/software/JDepend.html

    代码检查
    http://www.thecortex.net/clover/index.html

    更多XP工具
    http://directory.google.com/Top/Computers/Programming/Languages/Java/Coding_Standards/
    http://www.xprogramming.com/software.htm
    http://www.qsm.com/CodeCounters.html


    附:为什么HTMLTIDY的不适合重新格式化JSP PHP ASP等HTML嵌入式脚本语言

    而有些无法解析的错误其实是代码不规范造成的。

    1. JAVASCRIPT中的"<"
      比如
      for (i = 1; i<a; i++)
      需要改成
      for (i = 1; i < a; i++)
      ^ ^ "<"前后需要加空格,否则HTMLTIDY会把<a当成HTML标记
    2. HTML属性中包含JSP标记:
      对于一般的JSP属性输出TIDY是可以认出来的

      比如: <input type=text size="9" name="alias" maxlength=20 value=<%=infoForm.getAlias()%> >
      但像这样的代码:
      <img border=0 src=/image/upload/content/<%=infoForm.getId()%><%=infoForm.getPhoto()%> width=120>
      由于属性的开头不是<%,因此会出现IMG没有结尾错误
    3. HTMLTIDY缺省是将代码完全补齐的,而实际上很多HTML代码是在被包含文件中。而且HTMLTIDY对中文编码得识别还有一定问题(目前只支持BIG5)

    原因:

    为什么嵌入式代码很难维护?毕竟针对不规范的HTML语法检查器要比一个语言的解析器要复杂的多。举例来说,比如针对这样的代码:
    <?php echo "<table>";?>
    </table>

    这样形式的代码,美化工具必须同时懂得HTML语法和PHP语法才行,所以大部分格式工具都是针对一种语言,或者针对嵌入脚本的程序部分的格式化,或者只对针对纯HTML格式化。只有少数Virsual Age, Forte等大型开发工具里包含了JSP的代码美化,另外就是SLICKEDIT这种大型商业文本编辑器等。

    解决:对于包含程序的JSP ASP等文件的HTML部分的格式美化最好还是使用专门的HTML编辑工具Dreamweaver(≥4)和Frontpage(≥2000)中的格式化工具来实现。比如:对于FRONTPAGE从菜单的工具==>网页选项==>HTML源代码选单里选择“使用下面的规则重新格式化源代码”。

    总之,使用HTML和程序在一起的嵌入式脚本语言本身就是一件非常不好的开发习惯。从长远来开用XML/XSLT等技术实现数据/表现/逻辑的分离是一种更适合大规模开发的模式。

    为了目前大量的ASP PHP JSP应用我还是通过Google上找到一些工具,相信HOMESITE等。其实前面提到的VBSBeautifier其实也是调用Perl 5.8在Windows上的

    一个用于ASP的代码美化工具:VbsBeaut
    http://www.daansystems.com/vbsbeaut/

    一个用于ASP JSP PHP编辑并带有代码美化功能的工具:BPHTML
    http://www.bphtml.com/

    一个基于Java的HTML编辑器,内嵌了C C++ Java JavaScript Perl等类C语言的代码美化器:http://www.arachnoid.com/arachnophilia/index.html

    Beautifier highlights and indents source code using highlight configuration files (which are similar to Ultraedit highlighting files). As such, it supports C, C#, Java, Perl, PHP, Pascal, Lisp, Mumps, Eiffel, Euphoria, and x86 Assembler, amongst others.
    http://www.beautifier.org/

    Trita is a source code beautifier which learns your personal formatting style by examining examples of your code.
    http://www.trita.com/
    支持:Java, Javscript, CSS, JSP, HTML, ASP, Lisp, Delphi, C#, C++, PHP, Perl, Python, and SQL.

    原文出处:<a href="http://www.chedong.com/tech/indent_tools.html">http://www.chedong.com/tech/indent_tools.html</a>

    扁家贪腐示意图

    相关资料

    扁家贪腐示意图


    (2006年08月31日)

    9/8/2006

    苏鹏的播客

     
     2006年9月8日

    麻烦大家给我有个能够联系到chen朋友的方法好吗,我给他的信箱dflyingchen@hotmail.com发了两封信,并且添加了这个信箱作为Msn,也看到他上线了,但是和他打招呼他也没有回复我,我不知道怎么能够联系到他,请各位好心的朋友帮忙,谢谢大家。

    另外有些好心的朋友用我的名字在chen的博客上留言了,我先谢谢大家了,大家的心思是好的,但是请不要用我的名义留言好吗,谢谢了。

    2006-9-8 13:09:27 (中国标准时间, UTC+08:00)  #    评论 [9]   人生与思考  |  引用
     2006年9月7日

    我在8月底的课程中在没有征得Dflying同意的情况下引用了他的在blog上的部分内容,并违反了他的版权声明

    我对此深表歉意,如果有此引发了他的不快或者是法律上的问题,我希望和他沟通。

    作为一个技术人员,每次我都想把最好的和最新的技术带给大家,但是仅仅凭我一个人的力量,恐怕非常有限,所以如我在前面回复的帖子里所说的,我会借鉴一些好的,其他朋友写的内容来充实我的课程,大多数情况下,我会从国外的官方论坛来找这些资料,因为这样会比较少的有所谓的版权问题。但是这次介绍atlas的内容的时候,我发现国内的dflying朋友的内容非常丰富,我就结合我的课程借鉴了其中一些内容。

    在引用之前,我并不知道有此版权声明,且并没有读过此段内容,我在课程之前,也向Dflying发信质询过,但是没有收到他的回信。

    当然,由此认定我是蓄意抄袭,则完全是有理由,且合情合理的,

    对此我表示真诚抱歉,虽然我的出发点是好的,但无疑作了坏事,我对此表示非常遗憾。

    以后的课程中,我会调整内容,至少保证不会再遇到有版权声明的技术人员的blog。或者个人的文档,我会尽量使用官方文档。

    另外,此事是我个人行为, 我不是微软员工的职员,目前也不在微软工作,如果有法律问题,也会由我个人承担。

    我已经在他的网站上发布了我的道歉,以及相应的回复,回复如下“
    我是苏鹏,我可以把课程的报酬给Dflying Chen,而且,我也愿意把你推荐到微软的webcast来做讲师,让你可以直接与广大朋友通过webcast分享他的知识,并获得相应的收益。当然,这需要你本人同意。”

    [转]关于《MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容》的声明

     

            感谢朋友们对我在MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容(后文以“此事件”代替)中所提内容的关注。由于目前此事件的相关情况正在调查中,故不方便对其表达个人看法(包括但不限于对网友的回应,对苏鹏讲师的答复等)。在此事件调查清楚以及我给出明确答复之前,希望朋友们不要有过激言论,以和为贵。

            注意:本文章中内容不能代表、说明或隐含指出我对此事件的任何观点,本文章也没有表达出任何我将放弃对此事件相关人员、组织提起诉讼的权利的意愿。


    posted on 2006-09-08 20:11 Dflying Chen 阅读(219) 评论(7)  编辑 收藏 引用 收藏至365Key 所属分类: Others

    评论:
    # re: 关于《MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容》的声明 2006-09-08 20:14 | U2U
    难以置信啊  回复
      
    # re: 关于《MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容》的声明 2006-09-08 20:58 | 佚名[匿名]
    以和为贵  回复
      
    # re: 关于《MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容》的声明 2006-09-08 21:09 | 源码工作室
    我支持你,就是要这样,才能维护我们的权利。
      回复
      
    # re: 关于《MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容》的声明 2006-09-08 21:17 | YngwieWang
    和为贵  回复
      
    # re: 关于《MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容》的声明 2006-09-08 22:17 | Ring
    理解作者.
    但还是希望大家以和为贵.  回复
      
    # re: 关于《MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容》的声明 2006-09-08 22:24 | 阿不
    一直在关注整个事件的发展过程,也一直都没有发表评论,支持Chen的这个声明的态度,希望其他人也没必要再争了,以和为贵。我想这个事件已经引起大家对版权问题的重视了,我相信这绝对是MS最愿意看到的。  回复
      
    # re: 关于《MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容》的声明 2006-09-08 22:38 | fangsang
    打击盗版  回复

    [转]MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内 [再续]

    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-07 22:39 | Ring
    @haha[匿名]
    既然苏鹏老师已经在这里向大家道了歉, 愿意承担自己因此带来的责任, 并且也愿意协商在经济上的给予赔偿. 既然承认了错误,并愿意对自己的错误负责,我想大家也没必要再纠缠苏鹏.

    否则,请大家也要扪心自问, 自己是否现在已经侵权?
    我们是不是不该用盗版软件?是不是不该传播未经授权的书籍,电影,音乐?

    通过这件事,大家如果能够从中吸取教训,那是最好的..  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-07 22:51 | 飞扬跋扈的青春
    @Ring
    道歉应该郑重得,说得明明白白.
    在人家评论里不痛不痒得算啥啊?
    事搞大了,对谁都没益处,但是,该据理力争得就不该让步.  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-07 23:40 | zeusvenus
    以前对苏鹏印象挺好的。

    不过这次怎么着也应该事先联系并征求你的同意,是他不对。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 01:57 | chan
    强烈BS MS!所以小弟坚持用MS的D版!打倒帝国主义!!打倒MS!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 02:19 | rIPPER
    苏不要这么急替微软顶包么 :)

    苏侵犯他人版权无疑,从中获利也无疑,ms是组织者,没有尽到审核内容管理合作方人员的义务,算个第二被告也不冤枉。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 08:11 | 苏鹏
    我希望这个事情到此为止了,有什么问题请直接和我私人进行沟通。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 08:13 | daisylh
    人以和為貴  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 09:26 | xjb
    先沟通好,毕竟这是公开网络,影响面比较大  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 09:42 | wonder
    成功源于共享....你敢说你的技术不是抄来的吗?
    成功源于共享....你敢说你的技术不是抄来的吗?
    成功源于共享....你敢说你的技术不是抄来的吗?
    成功源于共享....你敢说你的技术不是抄来的吗?
    成功源于共享....你敢说你的技术不是抄来的吗?
    成功源于共享....你敢说你的技术不是抄来的吗?成功源于共享....你敢说你的技术不是抄来的吗?成功源于共享....你敢说你的技术不是抄来的吗?  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 09:50 | lovecherry
    虽然苏老师的做法确实欠妥,但是我觉得这个事情还是尽快有个合理的解决比较好,一直这么吵下去也不是事情啊,要换位思考。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 09:58 | wonder
    不过如果要引用别人的原创文章..确实还是需要说明一下.

    转载请注明出处..哈哈  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 10:05 | Teng
    哈哈,火气别这么大啊,毕竟webcast也是免费的!
    现在网上抄袭现象确实很多,不过应该加上作者的字样,不要将别人的东西成为自己的专利!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 10:18 | rIPPER
    啥叫到此为止? 自己做出不名誉的事诚恳道歉也就罢了。你自己看看你那声明,一口一个“借鉴”,你搞清楚吧,是“抄袭”好哇。

    还有上面那个“你敢说你的技术不是抄来的吗”,说你无知是抬举你了。著作权保护形式,至于内容,甲写的关于atlas的文档和乙写的关于atlas的文档当然说的是一回事;问题是如果甲ctrl-c ctrl-v乙的文档,那就有问题了。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 10:39 | Alexander
    @苏鹏
    我希望这个事情到此为止了,有什么问题请直接和我私人进行沟通。
    --------------------------------------------------------

    看到这里,我强烈支持dflying维护自己的权益,"到此为止"不是你苏鹏来决定的,TX们对此的讨论因为你那若有若无的几句解释就可以停止了吗?

    人家的原创本身就是个人时间精力价值的体现,你轻松复制过去讲给别人听就算了,你看不见作者的版权声明就算了,但请你不要再摆出一副高高在上的姿态,一会要介绍dflying去做讲师,一会要大家到此为止,这不是解决问题的态度,更不能让大家继续相信你的那些说辞。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 11:33 | 鑰佺緟
    樓上的老兄,人家已經做道歉,已給dflying明確的答復。我個人也是讚成dflying的觀點的.但是你一再追問下去,又有何意義呢?  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 11:36 | LESE
    成功源于共享....你敢说你的技术不是抄来的吗?
      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 11:37 | Bear.sTaR{R}
    本来还有点同情苏鹏,虽然他是错了,但念在他曾经帮助过那么多人,所以希望大家能和平解决。
    不过看到他说的下面的话,感觉就很不爽了:(“我是苏鹏,我可以把课程的报酬给Dflying Chen,而且,我也愿意把你推荐到微软的webcast来做讲师,让你可以直接与广大朋友通过webcast分享他的知识,并获得相应的收益。当然,这需要你本人同意。”)。

    你丫丫个呸的,这是人说的话吗,这算什么东西..........  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 11:58 | LESE
    {r}兄弟头脑不是一般的简单
    如果我说那是我写的,我是假苏朋,你会不会把上面的文字给吞到肚子里?!
    bear 丫个  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 12:06 | 徐灿钊Asp.net专栏
    这事情可闹大了,什么事情转载我的文章就好了。可惜恐怕还要等上几年。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 12:14 | king[匿名]
    一班傻鸟,
    人家要告,要不告,是人家两个人的事情。
    旁人在那里添油加火的,关你们鸟事啊!
      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 12:20 | 呵呵[匿名]
    抄你的是看的起你
    这也告真有你的   回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 12:33 | yifeng
    @wonder http://fanrsh.cnblogs.com/
    你试试把自己公司的产品代码copy一份卖给对手公司赚个钱,
    看看法官是不是接受你 “你敢说你的技术不是抄来的吗” 的说法。

    你是我见过的弱智中最最弱智的.
    连技术和知识产权都分不清真是应该拉出去当众阉割。

      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 12:36 | yifeng
    呵呵[匿名]

    小P孩,别扇风点火  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 12:46 | king[匿名]
    我想这话题也应该告一段落了。
    希望这张帖子能给每个人敲醒一个警钟,请尊重原作者的著作版权!
    解铃人还需系铃人,至于这件事何去何从,我想苏鹏本人应该主动的跟Dflying Chen 联系.  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 13:10 | 含笑_べ[匿名]
    先前是苏老师理亏,已经向Dflying Chen公开道歉了,如果Dflying Chen在纠缠下去就是你的不对了(对我个人而言都是非常感谢二位的,一直关注苏老师的Atlax webcast讲座,苏老师的两节内容是一样的,但是其他课程是自己的,请各位有个正确的判断.也经常来Dflying Chen的博客开关于atlax的文章,期盼您的书早点出来)不要因为此事耽误了您的出书情况,哈哈!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 13:24 | dirtemp
    那这个事情要怎么才能解决嘛?

    大家不依不饶的。


    是不是要负刑事责任哟


    我看苏鹏已经道歉了,如果觉得还不行,那我觉得Dflying Chen可以提个解决方案来,事情总是要解决的,不要无休止的闹下去。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 13:50 | webclerk
    要求MS赔钱资助你的blog
    :-)  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 13:58 | px
    苏鹏那个叫什么道歉,从头至尾看不出一点诚意,真tmd丢ms的脸,ms踢他滚蛋算了  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 14:20 | fds2003
    TO:PX
    ----------
    楼上的兄弟,说话不要太偏激!说出去的话,就如同泼出去的水!
    兄弟,假如这事情发生在你的身上,你会怎么样呀?
    这事情等他们俩解决就行了!然后他们给大家一公开的交代就行了,没有必要闹得沸沸扬扬的!这对谁都没有好处!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 14:22 | Bear.sTaR{R}
    @LESE
    你丫才头脑简单了,我是在他自己的网站上看,我才不是看的这里的回复,你可以自己去看看  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 14:30 | very big
    一群无休止的傻瓜!!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 14:30 | very big
    该停了吧~  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 15:36 | 小石头[匿名]
    苏鹏我看你人品有问题,你习惯剽窃国内国外别人的东西,钻惯了空子啊?又装做一脸无辜,你不配在圈里混!MS怎能用这样的人?!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 20:42 | 飞扬跋扈的青春
    @呵呵[匿名]
    又一个披着马甲得.

    我找个明星强奸你去吧,然后报道出来,看得起你了.  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 20:50 | 飞扬跋扈的青春
    @含笑_べ[匿名]
    先前是苏老师理亏,已经向Dflying Chen公开道歉了,如果Dflying Chen在纠缠下去就是你的不对了(对我个人而言都是非常感谢二位的,一直关注苏老师的Atlax webcast讲座,苏老师的两节内容是一样的,但是其他课程是自己的,请各位有个正确的判断.也经常来Dflying Chen的博客开关于atlax的文章,期盼您的书早点出来)不要因为此事耽误了您的出书情况,哈哈!
    ---------------------------------------
    呵呵,其实因为苏鹏算个名人,所以这个事情,大家掺入了太多和稀泥得想法.我举个例子:
    一个小偷,把你家东西偷了,别抓住了,小偷诚恳地说:我把东西还你. 你到认为这是个好贼了?诚恳得贼了?
    大家只看到了苏鹏在自己Blog上所谓得诚恳,没有人真正想过当初他ctrl+v给微软做webcast,并且收了人民币得时候,他真得不知道这是不对得?
    他真的主动了联系了dflying?
    即使他没有联系到dflying他不知道应该说明此webcast是来自dflying得blog?他混迹软件业这么多年,这点真能不知道?
    为什么他不加? 我们小小网民copy人家东西得时候都知道加上ZT二字,他能不知道?
    加了以后微软还会让他做这些webcast么?他还会收到他收到得钱么?

    大家别光看着现在所谓得诚恳,杀人犯杀了人后大部分都挺后悔得.

    那些苏鹏得粉丝,谁来给我解释,你们得苏老师人品到底如何? 谁说相信他人品来着?
      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 21:34 | 高海东
    大家不要太过分了 就算人家抄了 也没有那么严重吧 认错就可以了  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 21:51 | 飞扬跋扈的青春
    re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 21:34 | 高海东

    大家不要太过分了 就算人家抄了 也没有那么严重吧 认错就可以了
    ---------------------------
    这位兄台,要是你花钱买了苏鹏一本书,后来发现里面内容不是他写的,是抄袭别人的,你会这么宽宏大量的说:苏鹏,出来到个谦就Ok啦! 会么? 以往类似的事情发生过,大部分买书的还是会出来骂娘吧,因为他花钱了,结果买的是别人的东西,有被作者欺骗的感觉.
    如今这件事为啥不是了呢?
    对于被抄袭者,损失都是一样的,自己的劳动成果被人剽窃,牟取了个人利益.对抄袭者,是一样的,都是抄袭他人作品,自己得到实惠.唯独买书者和浏览webcast者反映会截然不同,为啥?
    因为看webcast没花钱!!
    谁管他苏鹏得没得实惠? 谁管他dflying有多愤怒,给你道歉了,你还想乍得?
    目前感觉dflying做的严重得,现在不都讲换位思考么?你想想,如果你是花钱看webcast呢? 你目前什么反映? 不是被骗了么? 你会像现在这么淡然?
    苏鹏做法没变,dflying做法没变,为啥你的态度可能会变呢?  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 21:59 | ps
    如果Dflying Chen就是这样不能宽恕人,以达到什么现实的目的的话。
    我想他的人品也绝对是值得怀疑的。
    难道写了几篇文章发到网上,就算是我们的救世主了?
    做人要厚道,原则要讲,人道风度也要讲。没有事情要糟到这种程度。
    犯了错要承担责任,得了理也可以饶人吧。
    你有什么事和律师谈,和苏鹏谈都很正常。
    但拿网络的规则来弄事情却让人不屑。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 22:12 | 冯文元
    我喜欢听苏老师的课,苏老师的人品是信的过的,
    你写出来的目的是什么,不就是让大家会的吗?

    说不定你的那些东东也是从国外的网上翻出来的吧  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 22:18 | 飞扬跋扈的青春
    @ps

    Dflying怎么就吓唬人?你看看他一共在此事上说过几个字.
    得理要看饶什么人?苏鹏哪里有诚恳得道歉了? 当出租车挂碰啊,还要私了,给俩钱儿完了,搞笑.
    "如果Dflying Chen就是这样不能宽恕人,以达到什么现实的目的的话。
    我想他的人品也绝对是值得怀疑的。"
    这个就有意思了,哈哈,你倒是说说有啥目的?不就是炒作么!我们就拭目以待!
    "难道写了几篇文章发到网上,就算是我们的救世主了?"
    这句话是从哪来得?dflying啥时候要求你干啥了?
    "做人要厚道,原则要讲,人道风度也要讲。"
    恩,这句话你跟苏鹏讲去.
    "犯了错要承担责任,得了理也可以饶人吧。
    你有什么事和律师谈,和苏鹏谈都很正常。
    但拿网络的规则来弄事情却让人不屑。"
    你给个饶过苏鹏得理由.就凭他Blog上码那几行狡辩得文?  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 22:22 | 飞扬跋扈的青春
    @冯文元
    "我喜欢听苏老师的课,苏老师的人品是信的过的,"
    看前面发言,啥玩意你就信得过了?你们一起吃过饭喝过酒么?
    "你写出来的目的是什么,不就是让大家会的吗?"
    赶明儿我把苏老师webcast东西拿来出本书,同意不?钱我分苏老师点儿.
    "说不定你的那些东东也是从国外的网上翻出来的吧"
    唉,你最好找到去,这样,你可以炒作一下了.  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 22:36 | albertjj
    强烈支持dflying维护自己的权利

    @高海东
    反对你的说法。剽窃了他人的劳动成果而寻求“和解”,那如果小头偷了你东西被你发现了,然后还给你,你是不是也息事宁人?你肯定不乐意,因为你知道要是你没有发现,你将损失惨重!要是苏先生的行为也没有被发现呢?

    “以和为贵”这种老思路,只能息事宁人,但是不能杜绝类似的情况,而且对受害人也是不公平的。法制的社会,一旦违规,就要得到该有的惩罚!

    所以支持dflying维护自己的利益,拿起法律武器!

    还有,像原创者致意,你们才是精神文化的创作和传播者,bs剽窃的人!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 22:48 | Alvin Ye
    个人意见:
    Dflying Chen做得很对.
    苏老师理亏在先.

    但是苏老师已经向你道歉,并且态度十分诚恳,我觉得你们可以交个朋友,所谓不打不相识.一笑了之.

    Dflying Chen 也让中国的所有程序员都意识到 "版权"的重要.我觉得已经达到目的了.


      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 23:04 | sss[匿名]
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 19:45 | Dflying Chen

    若是出于非商业用途的转载/修改,那么我没有任何意见,这是我的荣幸。但据我所知,苏鹏先生所做的WebCast不是无偿的,虽然对于开发者是免费的,但微软公司会给其相应的报酬,这是一种商业活动,是可以给他带来直接经济利益的。这种行为是我无法容忍的。 回复
    ---------------------------------------------
    我靠,做人斤斤计较成你这样,不如去死了算了.典型的东方嫉妒.  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-08 23:09 | 飞扬跋扈的青春
    @sss[匿名]
    我靠,做人斤斤计较成你这样,不如去死了算了.典型的东方嫉妒.
    ------------------
    啥叫东方嫉妒?你接触过多少老外? 他们的斤斤计较反而清清楚楚,别搞得出问题了,都来什么孔孟思想了.
    你在你公司干的活给我,我拿去卖钱,你干不?
    不干别在这装大方. 站着说话不腰疼.  回复

    [转]MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内 [续]

    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:36 | hougoo
    1.你写的文章确实太好了
    2.博客园的名声很大
    3.有些所谓的讲师确实不怎么样
    4.该维权的决不能退缩
    顺便说一句,有时候感觉有的讲师讲课用的ppt,我感觉不是他们自己写的  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:42 | Bear.sTaR{R}
    其实因为网络的原因,借鉴别人的是很正常,但完全照搬就实在说不过去了。

    如果真的要完全照搬用下,怎么的都要跟别人说下,要得到人家的允许的。

    不过大家都是为了帮助我们这些菜鸟学东西,都是好的,呵呵。

    不要伤了和气!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:42 | shizhe
    这有什么奇怪的,难道大家从小到大的老师都是把自己原创的科学教授给学生吗?那恐怕没几个人能够称为老师。
    嘿嘿,不过要是作者想要钱,那就另当别论了。。。想要多少呢?  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:44 | .Live
    @shizhe
    你觉得你这么说话 是不负责任的.  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:48 | 恩 电
    大家还是协商解决的好,不要伤了和气!各位有谁没有放错误的时候呢?各位有谁没有侵犯他人劳动成果或知识产权的时候呢(例如使用盗版软件)?!人民内部矛盾,一切以和为贵,以振兴民族IT事业大局为重!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:50 | shizhe
    都是搞这个的,应该一起切磋,这个课程还是对我们帮助很大的,也算学了不少东西,作者应该出书立传,苏老师以后也还是找本正规出版的教科书教我们吧  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:52 | egg
    双方都逃不出名利,两字.  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:53 | 达达
    我没看过WebCast。。。。落伍了  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:55 | Cure
    其实即使是抄,之前也应该联系说明一下,没得到许可就抄袭,只能怪自己了。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 16:56 | shizhe
    以和为贵,我们还需要今后可以得到这类免费课程呢,现在的IT培训太贵了。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:03 | abc[匿名]
    Atlas就那么一点东东,那么几点内容,你不也是看开发者的文档得来的,不是什么原创性的东西,不必要如此大动干戈!按不按你的次序说,按不按你的方法描述,都是那么一会事,何必呢?不见得,人家得了多少,你失了多少.当然了,你翻译的东西,被MS请的讲师"引用"了,也是件有面子的事,炒作炒作,园子里热闹点.呵呵,建议DUDU和有资源的朋友找些记者报道下,不是为Dflying Chen,而是为博客园.也许园子下面的发展问题,有了关注,而有所突破呢(不知道人家会不会说我们下作,呵呵).  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:04 | aspnetx
    @阿生
    还"质歉"呢
    道个歉都不那么认真
      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:07 | flower.b
    @shizhe
    你的说法完全是小农意识  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:07 | @eden
    支持。顶一下  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:14 | Ring
    I have no more words to say,
    but teacher shupeng may be not Microsoft's full time employee!   回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:16 | kkname123
    Atlas本来就是人家微软的东西,这点事不算什么,如果Atlas是你发明,结果被微软抄袭了,那么这个事情倒是搞大了。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:19 | aspnetx
    @Ring
    yes,indeed  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:24 | PointNet
    被人用觉得你的文章不错啊,所以别生气啊!!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:27 | aspnetx

    我觉得这件事

    请大家相信Dflying Chen的人品,也请大家相信苏鹏的人品

    他们会处理好这件事的

      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:29 | henry
    发出律师函信是否有点跨张,道先搞清楚对方有没有用你的东西获取利益。
    如果是免费的跟对方说清版权问题就可以了。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:39 | LoveCoding
    @aspnetx
    对地
      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:41 | idior
    引用别人的东西 注明出处! 很简单的事。
    难道苏彭没写过论文?

    Dflying Chen也不用这么激动,我想博客园的文章或多或少被人抄过。
    我记得最近看到一本 “程序员面试”的书中就有抄袭博客园文章的内容。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:41 | 天轰穿
    哈哈,我就说嘛,做人要厚道!!

    虽然苏鹏的很多教程对我们很多人都确实有帮助!
    但是用我以前看见别人转我文章不留名那种气愤的感觉来说,这还是不对的!

    你起码顺便说下你这个代码来至那里,或者变相的说下也好撒,呵呵!!

    不过我现在学得聪明点了,我不写文章了,我全做视频,并且打上水印,

    要写就去那些地方投稿,1000字虽然只有50-70块钱,但是我心理舒服!

    不过话说回来,我做的atlas视频也有抄袭你跟TerryLee的,只是好象你们都看过的,而且幸好我也都注明了的,否则你的粉丝一人骂我一句我就得跳楼了,挖哈哈!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:52 | liudong
    大家不要担心,这件事他们会处理好的,都是搞技术的人没有过不去的坎  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:59 | Dflying Chen
    @天轰穿
    抄袭/转载/引用没有关系,事实上我也很高兴看到这一点,因为这是对我的一种认同。但是“因此获得商业利益或个人金钱报偿”是绝对不可以接受的。
      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 17:59 | fds2003
    大家和气解决这问题!最好事先和他说谈下,不到最后一步都不要给律师信!  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 18:04 | shizhe
    为人师者,传道、授业、解惑者,我们从苏老师那里听到知识,获得开发技巧,疑问得到解答(每一封邮件均会回复给我),我觉得已经完成了苏作为老师的任务。
    同时,我也非常感谢Dflying Chen,希望能激发大家共同的智慧。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 18:12 | ZergTant
    虽然没用过Atlas,但是支持下版权,至少应该公开道个歉  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 18:44 | 阿一
    http://www.supengcast.net/PermaLink,guid,9b605973-1a17-4a4f-9961-e7c2b6e26a56.aspx

    他已经道歉了!其实他也是想将知识让更多的人去分享!
    希望大家不要太责备他。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 18:54 | .老刘
    两位都给我的atlas学习带来了很大的帮助,我作为一个局外人,最想看到的是一次“不打不相识”。
    我觉得如果我是苏老师,我会主动和Dflying Chen联系一下,其实大家作的都是开源事业,也许团结起来力量更大。
    以上仅仅是我,一个局外人的看法,但我想这也是最好的结果。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 19:18 | love coding
    作为一名讲师,苏老师也是蛮负责的.  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 19:45 | Dflying Chen
    若是出于非商业用途的转载/修改,那么我没有任何意见,这是我的荣幸。但据我所知,苏鹏先生所做的WebCast不是无偿的,虽然对于开发者是免费的,但微软公司会给其相应的报酬,这是一种商业活动,是可以给他带来直接经济利益的。这种行为是我无法容忍的。   回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 19:46 | THIN
    各位也太搞了吧,Dflying Chen肯定姓陈啊,哈哈,  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 19:55 | 郑皓宇
    我相信两位先生的人品,都是人民内部矛盾,我认为不必诉诸法律解决吧,别伤了和气,.NET刚刚起步不久,正是需要两位先生的时候,还是化干戈为玉帛吧,要不不仅两位都不受益,对于园子和MSDN WebCast也不好。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 20:00 | jillzhang
    @Dflying Chen
    稍安勿躁,大家最好静下来好好商量商量怎么办,大街上要是撞车了,也要调解么
    千万别因此伤了和气.
    你这种技术共享的惊声让大家十分敬佩.
    苏老师毕竟也是为了大家学习.总之尽量采用比较平和的方式解决吧
    我只是一些建议.
    不过苏鹏的做法的确不对.
      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 20:23 | aspnetx
    @郑皓宇
    问题不是那么简单的
    如果不正之风现在不被遏制住的话
    那么还谈什么发展
    以后大家谁还有写作的积极性  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 20:25 | 沛沛
    Title
    若是出于非商业用途的转载/修改,那么我没有任何意见,这是我的荣幸。但据我所知,苏鹏先生所做的WebCast不是无偿的,虽然对于开发者是免费的,但微软公司会给其相应的报酬,这是一种商业活动,是可以给他带来直接经济利益的。这种行为是我无法容忍的。

     
    这么说来,只有让苏鹏把微软发动报酬分点给Dflying Chen才行啊!!
      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 20:31 | Dflying Chen
    @沛沛
    如果您觉得这样的要求太赤裸裸,那么我可以道貌岸然一点:
    钱不是我的目的,我只是为了净化网络的空气,为了提高社会主义精神文明水平,为了早日达到共产主义而今自己的微薄之力而以……自己都起鸡皮疙瘩……

    PS:本贴以后我不会再逞口舌之快,我相信是非自有公道。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 20:31 | 忘情水
    发现很多人都报以和为贵的思想,中国几千年的封建儒家思想害人不浅啊,对这种剽窃行为应该将决打击,而不是姑息纵容。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 20:58 | ddee
    @郑皓宇

    容忍剽窃知识,想内部解决,唉~~~~`中国就是这样的人太多了,完全是事不关己高高挂起,说些看视道貌岸然的话,实则危害巨大

    我们暂且不论Dflying Chen这些altas的文章价值有多高,但是我想这毕竟应该是chen付出了劳动整理、学习的结晶,自己维护自己的利益,无论价值的多少都是正确的。

    那些旁观、说风凉话的,是是和剽窃一样可耻的,就是你们助长这这种风气  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 21:11 | 鑰佺緟
    個人支持dflying chen的做法  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 21:25 | ps
    如果大家对苏鹏有所了解的话,就知道他是一个比较真诚的人。
    我想他不会说是有意的侵犯Dflying Chen 的版权,他在视频中也明确的指出
    很多demo并不是他原创的,也包括一些文章的引用。
    但很遗汗这次苏鹏并没有注意到Dflying Chen 的版权说明,这是他的失误。
    但是我依然建议Dflying Chen 通过友好,适当的方式处理好这件事情。


      回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 21:25 | 我是苏鹏
    我是苏鹏,我可以把课程的报酬给Dflying Chen,而且,我也愿意把你推荐到微软的webcast来做讲师,让你可以直接与广大朋友通过webcast分享他的知识,并获得相应的收益。当然,这需要你本人同意。另外,我想问问Dflying Chen朋友的信箱是多少,我在事前和今天都给你发了信件,但是目前没有得到回复,我发的是hotmail的信箱,那个是你常用的吗?  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 21:43 | 沛沛
    @我是苏鹏
    我觉得事情已经向好的方向发展了,我们可以安心去学些了  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 22:05 | 风中聆听
    事情应该能很好的解决,大家都是为了传播更多更精彩的知识。并且我们也看到苏老师的诚意了。  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 22:09 | aspnetx
    @我是苏鹏
    首先,我怀疑这个帐号的真实性
    另外,似乎感觉有些挑衅的意思
    所以才会有如此的猜测  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容均为抄袭我Blog中的内容 2006-09-07 22:14 | haha[匿名]

    @我是苏鹏
    你发了么,你真的发了么?
    推荐人家做讲师~~~~啧啧,看来你还是不知道自己和dflying谁大谁小.  回复
      
    # re: MSDN WebCast苏鹏所做的Atlas相关讲座内容很多都抄袭了我Blog中的内容 2006-09-07 22:29 | haha[匿名]
    世界真奇怪啊,侵权者倒是搞得无辜得很....  回复