Web Client Software Factory系列(1):初识与预备知识

什么是Software Factory

由微软模式与实践小组开发的软件工厂,并非是一些公有的组件,可以直接引入项目使用,它所要解决的问题是提供用特定技术开发应用程序时使用的工具、方法、模式等的整个集合,旨在为如何在企业环境中最好地使用特定技术提供指南,每个软件工厂包含如下部分:

  1. 应用程序块和库 — 软件的实际部分,基于顶级目标技术构建,旨在提供预构建的遵守建议的最佳实践的基础结构。
  2. 指导包方案和模板 — Visual Studio 的典型插件,用于生成初始解决方案模板和/或使用建议的最佳实践构建的功能扩展现有项目。这些插件的大部分实现依赖于应用程序块和库。
  3. 设计器 — Visual Studio 的附加设计器支持,用于部分应用程序。
  4. 引用实现 — 使用软件工厂的所有其他资产进行的稍微实际些的应用程序的完整执行。
  5. 体系结构指导和模式 — 有关软件工厂使用的模式和最佳实践选择的综合文档。
  6. 操作方法主题 — 如何使用软件工厂的各部分的详细分步指导(或仅是有关如何以软件工厂建议的方式使用特定技术的指导)。

模式与实践小组提供的软件工厂有:

Web Client Software Factory

Web Service Software Factory

Smart Client Software Factory

Mobile Client Software Factory

……

什么是Web Client Software Factory

Web客户端软件工厂提供了一个工具集,用于指导许多开发人员使用ASP.NET同时协作构建大型ASP.NET应用程序任务,在Web客户端软件工厂中提供了:

  1. 应用程序块和库 — 包含了Composite Web应用程序块, Page Flow应用程序块, ObjectContainerDataSourceControl,并且使用Enterprise Library进行权限管理、异常处理、日志记录和数据访问。
  2. 指导包方案和模板 — 提供了一系列的模板包括Solution模板,Business Module模板, Foundational Module模板, Page Flow模板
  3. 设计器 — 包含了Page Flow设计器
  4. 体系结构指导与模式 — 如View-Presenter ,Application Controller ,Service Locator ,Dependency Injection 等
  5. 引用实现 — 提供了一个全球银行公司的e-Banking引用实现
  6. ……

Web客户端软件工厂资产图如下:

TerryLee_WCSF

安装Web Client Software Factory

安装Web客户端软件工厂需要有如下几个必备的条件

安装Guidance Automation Extensions

安装Guidance Automation Toolkit

安装.NET Framework 3.0 and Windows Workflow Foundation

安装Web Client Software Factory,官方站点:http://www.codeplex.com/websf

使用Web Client Software Factory

使用Web Client Software Factory时可以按照帮助文档提供的流程进行:

TerryLee_WCSF

创建Web客户端解决方案

安装完Web客户端软件工厂后,会在 Visual Studio 2005 中发现称为“Web 客户端解决方案”的新项目模板,列在指导包项目类型的下面,如下图所示:

TerryLee_WCSF03

创建完成后的解决方案结构如下:

TerryLee_WCSF04

可以看到,使用Web客户端软件工厂指导包创建的解决方案被分成了两个部分,一是Modeles目录下的Shell项目,一是WebSites下的名为DevelopmentWebSite网站,实际上,Web客户端软件工厂的目标是创建多个协同工作的独立模块以定义一个网站,因此这些项目只是您要添加到应用程序的多个项目中的前两个项目。该解决方案的常规布局是为站点的每个部分创建一个独立的模块(类库项目)。每个模块将独立兼容并且在主网站目录中将具有独立的页面和源代码文件的目录。此项目布局的目标是使多个开发人员可以独立处理站点的不同部分,而不会相互干涉,并且能够通过将新库和刷新的页面目录传送到部署服务器来独立部署模块,而无需同时重新部署所有模块。同时可以看到,为了整合一个站点下的多个模块,它在 /Shared 子目录下定义一个顶层母版页 Default.master,模块创建的页面将默认使用此母版页。

Web客户端软件工厂创建的解决方案,自带了默认的起始页面,运行上面的程序后,可以看到如下界面:

TerryLee_WCSF05

相关的问题

要提示一点的是,WCSF现在还不支持Visual Stuido 2008。并且如果你的机器上安装了Visual Studio 2008 Beta2版本的话,在运行由WCSF创建的Web应用程序时将会报错。可以下载附件中的文件,覆盖<安装目录>\\Microsoft Web Client Factory\Microsoft Practices Library下的文件,或者自行打开WCSF源代码,找到WCSFExtensions下的WCSFBuilderBase.cs文件中,修改方法TearDown:

public TItem TearDown<TItem>(IReadWriteLocator locator, TItem item)
{
if (typeof(TItem).IsValueType == false && item == null)
return default(TItem);
return DoTearDown<TItem>(locator, item);
}

结束语

Web 客户端软件工厂为尝试管理使用 ASP.NET 构建的大型网站的开发人员提供了引人注目的解决方案。此软件工厂支持创建与站点中的各个子目录相关联的模块,并为模式(如 View-Presenter 和 Application Controller)提供了一个可支持以模块化方式启用网站的独立开发、测试和部署的框架。值得我们认真去研究,后续的文章将会更详细的讲述Composite Web应用程序块、View-Presenter模式等。
附件:/Files/Terrylee/CompositeWeb.rar

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2007-11-25 20:03 TerryLee 阅读(4980) 评论(37)  编辑 收藏 所属分类: Software Factory

  回复  引用  查看    
#1楼 2007-11-25 20:11 | 蛙蛙池塘      
关注过一阵儿,由于英语不行,放弃了
  回复  引用  查看    
#2楼 2007-11-25 20:25 | Jeffrey Zhao      
很好哇,我也关注。
  回复  引用  查看    
#3楼 2007-11-25 20:25 | Clingingboy      
我们项目在用,还行
  回复  引用    
#4楼 2007-11-25 20:26 | ccuz [未注册用户]
你最近怎么消失了啊,期待你的文章啊:)
  回复  引用  查看    
#5楼 [楼主]2007-11-25 20:34 | TerryLee      
@Jeffrey Zhao
仔细研究了一下感觉确实不错:)
  回复  引用  查看    
#6楼 [楼主]2007-11-25 20:34 | TerryLee      
@蛙蛙池塘
其实仔细看不难:)
  回复  引用  查看    
#7楼 [楼主]2007-11-25 20:34 | TerryLee      
@Clingingboy
:)
  回复  引用  查看    
#8楼 [楼主]2007-11-25 20:35 | TerryLee      
@ccuz
前段时间忙着工作、考试等,消失了一段时间,呵呵
  回复  引用  查看    
#9楼 2007-11-25 21:04 | 坐断东南 笑煞之!!      
呵呵,,观注中。。
好很不见有新作了。。。特来捧捧。。
  回复  引用  查看    
#10楼 [楼主]2007-11-25 21:26 | TerryLee      
@坐断东南 笑煞之!!
谢谢,确实好久没有更新了:)
  回复  引用    
#11楼 2007-11-25 21:39 | Ray Zhang [未注册用户]
支持兄弟!
BTW, GAX1.3已经支持VS2008了。
  回复  引用  查看    
#12楼 [楼主]2007-11-25 21:44 | TerryLee      
@Ray Zhang
大磊哥也来了,呵呵

// 可能是我还用的是Beta2吧:)
  回复  引用  查看    
#13楼 2007-11-25 22:28 | Anders Cui      
久违了 :)
接下来还会很忙吗?
  回复  引用  查看    
#14楼 [楼主]2007-11-25 23:12 | TerryLee      
@Anders Cui
接下来应该会好一些:)
  回复  引用  查看    
#15楼 2007-11-26 08:23 | Enzo      
功能很强哦
  回复  引用    
#16楼 2007-11-26 08:33 | lg [未注册用户]
这个和新要推出的MVC框架具体的区别在哪呢
  回复  引用  查看    
#17楼 2007-11-26 10:01 | 高海东      
希望楼主能把各个组件都用中文介绍下
  回复  引用  查看    
#18楼 2007-11-26 10:38 | 老夫子系      
一直在关注这个项目,是个很不错的范例。
  回复  引用  查看    
#19楼 2007-11-26 11:10 | Clark Zheng      
正在用Client factory,感觉还是不错的,希望BZ再写一些关于Web Service Software Factory的文章
  回复  引用  查看    
#20楼 [楼主]2007-11-26 11:19 | TerryLee      
@ Enzo
:)
  回复  引用  查看    
#21楼 [楼主]2007-11-26 11:20 | TerryLee      
@lg
我在文章一开始就提到了软件工厂的概念
------
它所要解决的问题是提供用特定技术开发应用程序时使用的工具、方法、模式等的整个集合,旨在为如何在企业环境中最好地使用特定技术提供指南

简单的说吧,MVC框架属于特定技术或者框架,而WCSF是为如何最好的使用特定技术提供指南:)
  回复  引用  查看    
#22楼 [楼主]2007-11-26 11:20 | TerryLee      
@高海东
请继续关注后面的文章
  回复  引用  查看    
#23楼 [楼主]2007-11-26 11:21 | TerryLee      
@老夫子系
:)

@Clark Zheng
有时间多交流,希望写完这个有时间再写写WSSF:)
  回复  引用  查看    
#24楼 2007-11-26 12:24 | 菌哥      
期待后续文章...
  回复  引用  查看    
#25楼 [楼主]2007-11-26 12:38 | TerryLee      
@菌哥
:)
  回复  引用  查看    
#26楼 2007-11-26 15:27 | 南疯      
TerryLee 重回博客园是园子的一件大事。在你“离开”的日子,我追到你的个人主页去看你的文章,可后来你的个人主页也打不开了。正郁闷ing……
现在TerryLee 回来了,坐草席一个!
  回复  引用  查看    
#27楼 [楼主]2007-11-26 16:24 | TerryLee      
@南疯
呵呵,确实好久没有更新了,接下来应该不会再“离开”这么久了:)

//个人主页由于没有备案被封了:)


  回复  引用  查看    
#28楼 2007-11-27 08:54 | CooS      
跟着你学习
  回复  引用  查看    
#29楼 [楼主]2007-11-27 09:59 | TerryLee      
@CooS
:)
  回复  引用  查看    
#30楼 2007-11-27 12:13 | 麒麟.NET      
不容易啊,终于回来了
  回复  引用  查看    
#31楼 [楼主]2007-11-27 12:40 | TerryLee      
@麒麟.NET
呵呵,不好意思,让大家久等了:)
  回复  引用  查看    
#32楼 2007-11-27 20:52 | RanKang      
这个我还没看懂
现在还在看你的ajax和模式设计呢,先瞄几眼,呵呵...

  回复  引用  查看    
#33楼 [楼主]2007-11-27 20:55 | TerryLee      
@RanKang
慢慢来吧,这个里面的东西不多
  回复  引用    
#34楼 2007-12-03 10:41 | anper1 [未注册用户]
老大,你怎么玩消失啊,不行,你得赔偿我们精神损失,o(∩_∩)o...
当年在delphi大富翁的卷起千堆雪那个大牛人,从论坛消失去山东移动搞管理去了,让人唏嘘不已。我以为你也要离开软件呢,中国的软件少不了你们这些大牛啊
  回复  引用  查看    
#35楼 [楼主]2007-12-11 19:22 | TerryLee      
@anper1
呵呵,不好意思,那段时间有点事,离开了大家一段时间,现在回来了:)

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-03-02 10:49 编辑过
成果网帮您增加网站收入


相关链接:

历史上的今天:
2006-11-25 开源代码生成器:SmartCode