软件工厂

不知道有没有人有兴趣翻译这本书

Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools
by Jack Greenfield, Keith Short, Steve Cook, Stuart Kent, John Crupi
Publisher: Wiley; 1st edition (August 16, 2004)
ISBN: 0471202843

微软的软件工厂,由于Visual Studio将来版本的支持,也许会带来软件开发新的Paradigm Shift 。

网上有关的资料:
1. Software Factories — Industrialized Software Development
2. .NET Architecture Center — Software Factories
3. Moving to Software Factories
4. MSDN TV about Software Factories
5. Keith Short’s WebLog 
6. Stuart Kent’s WebLog

跟Visual Studio Team System有关的
1. Visual Studio Team System — Domain Specific Language (DSL) Tools
2. Grady Booch Interview: IBM Rational: Rival Microsoft Faces Uphill Battle
3. Rick LaPlante Interview: Microsoft’s VSTS Goal: Creating a Mass Market for Enterprise Tools

一篇相关的发人深省的文章(来源:[Martin Fowler]):

Language Oriented Programming: The Next Programming Paradigm

推荐几个小工具

1、Net Snippets

一个在浏览器收集整理资料、图片的插件,可以方便的抓取整个页面、选定部分或全部图片等。目前其功能已经扩展到整个桌面和常用的应用程序中,在任务栏上加一个Drop Spot,就可以方便地将任何文字、图片或文档拖入到其中保存起来,Net Snippets 的分类、备份/恢复功能也非常不错,如果想试用,来这里下载。

2、Foxit PDF Reader

Adobe Acrobat 功能越来越多、越来越大,造成的结果是启动时越来越慢,有数不清的插件 API 需要载入,Acrobat Reader 也不能幸免,曾经有人给它做了一个Speed Up 的小工具,可以将其启动时载入的许多插件给禁止掉,这样能大大加快启动的速度。

如果经常只是查看 PDF 文件,现在有了新的选择:Foxit PDF Reader ,绿色软件、免费、小巧、界面整洁大方,最重要的是启动速度很快。如果喜欢,可以这里下载。

3、BlogJet

经常写 Blog 的人肯定有这样的经历,要登录并进入到书写页面,就费不少劲?/FONT>辛辛苦苦写了半天,很小心地调整格式,拼写检查,可能还因为网络速度的原因,提交的时候很慢,更有甚者,提交时出现错误,返回时发现已输入的大篇文章已消失了

使用 BlogJet 可以很大程度上避免以上问题,它是一个离线编?Blog 的工具,支持 Blogger、b2、Blogware 等,当然也不能少了很流行.Text ,对 .Text 的分类支持也不错,值得一试,本篇文章就是使用 BlogJet 提交上来的,下载地址在这里。注意:目前的BlogJet对中文支持不是很完善,偶尔会产生乱码。

软件版本号乱弹

今天安装 Ecilpse 的时候,想去看看 JDK/JRE 有没有新版本,发现有一个挺让人迷惑的东西:在 Java 官方网站上,J2SE 1.5.0 被命名为 J2SE 5.0 ,难道 J2SE 1.4 就是 J2SE 4.0?我记得好象 J2EE 其实就是 Java 1.2 for Enterprise Edition ,那 J2EE 1.3/1.4是不是就要叫 J3EE/J4EE 了?呵呵

大家还记得 JBuilder 吗?从 2000 年开始,几乎半年就升级一个版本,其实大版本中间变化并不是特别大,一些小升级或修正都要升个大版本,终于升级到 JBuilderX 了,然后命名方式改了,从 JBuilder 2005 又开始了,有点别扭。有些软件甚至把版本号都升到 60、70 了,吓人。

还有些挺奇怪的软件版本号,DB2 从 7.2 以后,没有 8.0 ,直接出 8.1 版本了,难道把 8.0 内部消化了?

大多数软件的版本编号都是很“正常”的,值得一提的是部分软件的版本号编的很有创意,里面包含了较为丰富的意义,如 OfficeXP、WindowsXP(引的无数软件跟风模仿)、Oracle 8i/9i/10g ,小小的几个字母,体现了软件丰富的含义。

软件版本编号本属于公司内政,其它人不容干涉,但是做为用户,瞅着顺眼,读着上口的版本号,也是蛮重要的体验嘛。

窃以为,做为市场策略的一部分,以命名为目的版本号可以较为随便,如附加年份、Logo 等,而标准的内部版本号还是老老实实的以 1.0、1.1 、2.0 等来标识,在相近的两个版本上用 Build Number 来区分,也是挺好的办法。

The Password is dead – 密码将消失

在最近哥本哈根召开的 IT Forum 上,Bill Gates 说密码将消失,未来是智能卡(Smart Card)和 64 位天下。

Bill Gates 说身份识别(Identity)管理是造成 IT 系统复杂的一个重要根源, 有很多人试图使用各种办法突破身份识别系统。

如果有一个恰当配置的识别系统,即能够验证用户,并且能够有效防止 phishing(诱骗窃取身份) 问题的发生。同时,他宣称,密码是身份识别系统的一个主要的弱项,以后并不能完全依靠密码来保证系统的安全。

那什么是密码的替代品呢? 一个基于 RFID 的数字身份或生物特征,微软正向生物测定学和智能卡方向前进,并促使其用户使用这些技术。

智能卡其实已经在微软总部 Redmond 使用,每个员工都可使用同一个 Smart Card 在进出各个办公楼层,或访问机器,已经完全替代了密码。

大家也可能注意到了,在最新的微软的硬件中,有一款键盘和一款鼠标已经开始支持指纹识别了,这也算是一个具体行动,虽然价格稍贵(>500 RMB),但对于重要的商业应用来说,感觉价格也还可以,我曾经见过有厂商向银行推销指纹识别设备用于柜员认证,约 2000 RMB,而且说是从以前都卖 3000 RMB,对大客户才降价的。

查看:Silicon 消息全文

Microsoft Biztalk 2004 vs IBM WebSphere Business Integration Server Foundation 5.1

最近有幸深入了解了一些 Biztalk 2004 和 WebSphere Integration Server Foundation 5.1 的内容,作为两大软件厂商的两大商业流程集成平台,不仿做一下对比。

Biztalk 2004 以下简称为 Biztalk,WebSphere Business Integration Server Foundation 5.1 简称 WBI-SF。

1、对于关键标准的支持

由于 WebServices 技术成为将来 EAI、B2Bi 方案使用的一种主流技术,两个平台在此方面的支持均比较完善,可以在流程中很方便地调用 Web Service。

但对于 Web Service 的一个重要协议:BPEL4WS — 商业流程执行语言,两者支持的力度则不同。WebSphere 的流程编排(Choreograph)是以 BPEL4WS 为基础,增加了一定扩展。而 Biztalk 则更象是延用了 XLANG 的流程编排(Orchestration),而做了一些扩展以便能够支持 BPEL4WS。

这个也可能与产品的发布日期有关,Biztalk 2004 在研发中的时候,BPEL 1.1 的标准还没未成形,而 WBI-SF 则是在 BPEL 1.1 成为正式标准之后才发布的。

2、应用接口与适配器(Adapter)

Biztalk 似乎在这个方面要具有优势,这可能归功于 Biztalk 产品历史稍长,很早就有 Biztalk Framework、Adapter Framework,加上近几年的不断发展,已经可以支持所有主流数据库、基础架构和产品(如 CORBA、EJB、MQ、EDI)、垂直行业标准(HIPAA,RosettaNet、FIX, SWIFT (Financial)),应用程序(Sibel CRM、SAP、J.D.Edwards、PeopleSoft),数量达到数百个,而 WBI-SF 则除了与自己的产品/技术(如CICS、Lotus等)具有接口外,其它的 Adapter 并不多。

3、开发难易程度

Biztalk 的开发并不是很容易的事情,需要了解端口、管道等诸多易另人混淆的东西,而且基本上是基于 XML 消息的处理,所以在流程的各个部分要经常做消息类型定义,消息转换等。而 WBI-SF 中则更多是使用容易理解的变量的概念,类似于函数中的参数。两者各有优缺点,基于变量(参数)易理解、容易开发,而基于消息较适合于完整的商业文档转换、交换,并且能证可以保证其中数据的安全性。

在流程活动基本元素(如循环、分支、顺序执行等)方面,Biztalk 支持较为完善,而 WBI-SF 则只是在 BPEL4WS 的基本元素基础上加入了有限扩展,不够丰富。

在文档转换与映射(Maping)方面,Biztalk 提供了完备的设计界面和转换函数,而 WBI-SF 只是提供了基本的映射功能。

4、开发工具支持

Microsoft 使用扩展后的 Visual Stuidio .NET 2003 做为 Biztalk 应用的开发工具,IBM 则紧紧围绕 Ecipse ,提供了一个类似于 WSAD 的 WebSphere Application Developer for Integration Edition(简称 WSAD-IE)来对 WBI-SF 应用开发提供支持。

就个人体会来说,在 WSAD-IE 中开发应用要比 VS.NET 中方便一些,目前在 VS.NET 中开发 Biztalk 应用还是很麻烦,需要安装 Biztalk 开发版,开发工具中不支持调试,只能通过另外的一个工具来跟踪调试。

在 WSAD-IE 中自带有一个 WBI-SF 简化版,所以不用另外安装 WBI-SF ,而且可以直接在开发工具中进行流程调试,如设置断点、单步执行等。

5、性能与效率

从理论上来说,Biztalk 的所有消息都要存储到消息数据库后再进行进一步处理,而 WBI-SF 则将商业流程分为两类:没有人工参与的流程的短流程以及有人工参与的长流程(类似于传统意义上的工作流),对于前者只在内存中进行处理,对于后者,则要存储到数据库中后再进行处理。

很难说两者那个的效率更好,Biztalk 都存储在数据库中,异步处理,很少会发生资源争用、死锁的情况,而且可靠性很高,而如果在内存中处理,并发量较小的时候可能会较快,但并发量大的时候,很可能会产生资源争用,进而死锁降低系统效率。

就开发工具来说,WSAD-IE 继承了 WSAD 奇慢的速度,在 1G 的 Vmware Virtual Machine 中花了 1 分钟时间才启动完成,编译部署时间也很长,在这方面,其与 Biztalk 和 VS.NET 的速度差异不是一两倍,简直是糟蹋了 Eclipse。

6、人力工作流支持

人力工作流(Human Workflow)主要指商业流程中需要人力参与,如审批、复核等。在 WBI-SF 中对人力工作流有一定的支持,每个活动结点可以设置其类型为 staff activities ,然后可以设置操作用户、权限等,且有内建的、简单的 Web 操作界面来完成在流程上定义的操作。

IBM 对于人力工作流更完整的支持体现在 WebSphere Interchange Server 4 (购自 CrossWorlds )中,估计这个东西以后会和 WBI-SF 进行整合。

Biztalk 本身的工作流特性较弱,只是提供了一些工作流基础(基础服务和接口等),具体的实现需要较多的二次开发,结合 SharePoint Services 和 InfoPath 等完成。

7、建模工具

Microsoft 提供了一个基于 Visio 的插件,可以由业务人员绘制商业处理流程图,并可以导入到 VS.NET 中直接作为 Biztalk Orchestration 基本框架来使用。

IBM 有一个名为 WebSphere Business Integration Modeler 的单独的建模工具,不知道是否是提供 WBI-SF 来使用的,此建模工具也构建在 Eclipse 的基础上。

8、其它相关信息

虽然大家说 Biztalk 与 Infopath 的关系有如 Outlook 和 Exchange ,但在实际应用中,Infopath 要想利用 Biztalk 的功能,远不如 Outlook 配置一个 Profile 就可以使用 MailBox 和 Public Folder 那样简单。

Biztalk 仍需要在 BPEL4WS、Human Workflow、开发支持等方面继续进步。

IBM 在整合方面的工具很多,如 WebSphere Business Integration(不知道其与 WBI-SF 的关系如何,个人以为 WBI-SF 是 WBI 的升级版本)、WBI MessageBroker、WBI Modeler、WBI Adapter Framework、WebSphere Interchange Server、WebSphere MQ Workflow、MQ Integrator 等,说实话,这么多东西,实在很让人 Confuse ,即然天天对外宣称口号:整合应用( IBM 开发大会口号),何不把自己的整合产品先好好整合一下?或者至少给用户一个明确的产品发展计划以便于产品或技术选型/决策呀。

注:文中信息纯属个人观点,且受限于目前所能了解的信息、现状及个人能力,仅做参考。

【38】 什么是基于角色的安全

原文地址: What Is Role Based Security

基于角色的安全是一种用户级别的安全形式,在这种形式里,服务器注重的不是单独用户的身份,而是她所处于的逻辑角色。这可以由多种方法来实现。一个方法就是在服务器上安置一些代表角色的本地逻辑组别。然后服务器应用程序可以查询这些组别的SID(WhatIsAGroup),然后根据这些组别的存在与否来做出安全方面的决定。譬如,假如某个服务器的特殊访问权限只限于 Admins角色组的成员,可以生成一个叫做APP_NAME_Admins 的本地组别来代表那角色。

这个简单的基于角色的架构的好处是,它简化了开发人员和管理员两者的事务,因为两者都依赖充分理解和可靠的操作系统机制来实现安全。管理员用Windows内置的工具把用户(或者域的组别)添加到应用程序的角色(本身就是服务器上的当地组别)里去,服务器程序则依赖Windows操作系统通过Kerberos (WhatIsKerberos)来提供认证和授权信息。服务器程序可以从自客户端获取的安全令牌(WhatIsAToken)里读取这些细节。最简单的方法就是调用代表用户的WindowsPrincipal对象的IsInRole方法。这个principal(主体)对象可以通过多种方式获取,但象 ASP.NET这样的大多数很完善的服务器端基础环境会通过Thread.CurrentPrincipal (WhatIsThreadDotCurrentPrincipal)属性来提供该对象。但在简单的桌面应用程序里,不必为Thread.CurrentPrincipal费心,因为该对象只是在服务器应用程序里才有使用的需要。在桌面应用程序里,你只要一句编码就能获取运行你的应用程序的当前用户的WindowsPrincipal 对象

IPrincipal WhoIsRunningThisApplication() {

return new WindowsPrincipal(WindowsIdentity.GetCurrent());

}

一些象 COM+(HowToImplementRoleBasedSecurityForAManagedCOMApp) 和授权管理器(WhatIsAuthorizationManager),甚至SQL Server这样的系统,提供它们自己的基于角色的基础设施,所以没必要另建安全组别。但概念是一样的。对基于角色系统需要注意的是一件事情是,它的粒度比不上基于 ACL系统(WhatIsACLBasedSecurity)的粒度。基于角色的系统的安全以用户为中心,而不是以用户想要访问的个别对象为中心。但这也意味着,基于角色的系统的安全没那么复杂(只要比较一下本书里涉及基于ACL的安全的条目个数与基于角色的安全的条目个数就知道了)。当然,有关安全系统里简洁性另有说法,让我们来听听Ferguson and Schneier (2003)是怎么说的:

没有哪个复杂系统是安全的。复杂度是安全的最大的敌人,因为复杂度几乎总是以功能或选项的方式出现的

这是个读书的季节

看大家都想翻译书,好书多着呢

The .NET Developer’s Guide to Windows Security by Keith Brown, 这书在Keith Brown的网站上有网上版本

Code Complete, Second Edition by Steve McConnell

Refactoring to Patterns by Joshua Kerievsky

Beyond Software Architecture: Creating and Sustaining Winning Solutions by Luke Hohmann

Joel on Software by Joel Spolsky, 其中的文章在Joel的网站上 都可以看到, 好象有中文版,是否全就不清楚了

Software Architecture in Practice, Second Edition by Len Bass, Paul Clements, Rick Kazman

OASIS 正式发布 UBL 1.0

UBL – Universal Business Language ,通用商业语言,是由 OASIS 带领开发,目的在促进电子文件格式 (例如订单或发票的格式)的标准化,从而增进企业之间的信息与数据的交流。

OASIS 委员会于2004年5月通过通用业务语言UBL(Universal Business Language)1.0草案,经过6个月后,UBL1.0 成为 OASIS 的正式标准。

如果有人参加了 2004 年 3 月在北京举行的 WebServices 大会,可能会听过香港大学电子商贸基建研究中心高级科技主任(同时也是 OASIS 成员) 余家智 的讲座,其主要内容就是讨论 UBL 的基本概念,它与其他标准之间的关系,UBL 在电子商务中的应用,以及 UBL 在中国的本地化工作等。

希望能有时间进一步深入研究。

查看:相关新闻 | UBL 1.0 标准 | OASIS 组织
下载:UBL 1.0 标准文本

Wap Push

   

对比一下,上面两个短消息有什么不同?我们可以看到第一个是普通的SMS,而第二个里面不仅发件人是“未经确认的发件人”,而且在内容中,居然出现了超链接,并且两个标准Button也发生了改变。

今天下午刚收到此短信的时候,还以为遇到了“病毒”,非常紧张:(。 后来向同事咨询了一下,得知这是Wap Push,一个很老的,甚至过时的技术,但对该技术一直没有什么研究。简单来说,Wap Push就是通过SMS的Channel向客户端手机发送WML页面。

利用这种方式在智能手机上做广告,会不会成为一种趋势呢?

什么是 Microsoft .NET ?

近几天在给领导准备一个 PPT 时,被告知一定要讲清楚 Microsoft .NET 到底是什么。

平时,我们一般认为 .NET 就是 .NET Framework 、Visual Studio.NET 及开发出的应用(ASP.NET、WinForms等),要说给 Microsoft .NET 下个准确定义,说实话,这个还挺难为人的。微软自己有一段时间都承认给其对 .NET 的定义和使用给用户带来了很 confused 的感觉,后来“.NET”就不在 Windows 2003 Server 和其它一些服务器产品中使用了。

在 Microsoft China 网站上对 .NET 定义如下:

Microsoft® .NET 是 Microsoft XML Web services 平台。XML Web services 允许应用程序通过 Internet 进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建 XML Web services 并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。

在 Microsoft 网站上对 .NET 定义如下:

Microsoft® .NET 是微软公司的一组软件技术,用来连接信息、人、系统和各种设备。它通过使用 Web Services 技术来获得软件的高度集成。除了将小型的、分散的、构建模块应用互相连接起来,还将 Internet 上的更大应用连接起来(翻译的可能不是很准确)。

第二种定义虽然模糊了许多,但是似乎更贴切一些。两种定义里都把 Web Services 做为 .NET 的核心,其基本要素就是智能客户端、服务器、Web Services、开发工具以及一个额外的 .NET 体验。

由此给出我的定义:

Microsoft® .NET 是 Microsoft 围绕 Web Services 为核心,为信息、人、系统、各种设备提供无缝连接的一组软件产品(SmartClient、服务器、开发工具)、技术(Web Services)或服务(.NET Services,如 .NET Passport)。

其实还是句虚话,你明白了吗?