<?xml version="1.0" encoding="UTF-8" ?>















<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">

<channel>
<title><![CDATA[系统分析师-软件工程师]]> </title>
<description>
<![CDATA[擅长系统分析、设计。]]>
</description>
<link>http://douxiance.blog.bokee.net/</link>
<language>zh-cn</language>
<creator>douxiance</creator>
<pubDate>Sun, 16 Apr 2006 21:45:34 CST </pubDate>
<generatorAgent rdf:resource="http://www.bokee.net"/>
<ttl>5</ttl>

<item>
<title>Eclipse插件开发快速入门</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/117126.html</link>
<description>
<![CDATA[<font size="3">刚才我在修理自己的汽车，我需要拧下一个螺丝。于是我打开自己的扳手工具包，试图找到合适的扳手。但是那些扳手的型号都不对，因为那个螺丝都属于公制标准的。我只能使用与理想尺寸最相近的扳手。这是一个不好的想法；结果我把那个螺丝弄裂了，只好去买一个专用的工具来下掉它。这个故事的精髓是：<strong>实现特定的事务永远需要使用恰当的工具</strong>。 <br /><br />　　Eclipse是一个非常流行的Java集成开发环境（IDE），它是NetBeans/SunOne Studio、Jbuilder、和IntelliJ IDEA的强有力的竞争者。Java程序员群体正在迅速地迁移到Eclipse上，因为它是免费的、开放源代码的、质量很好，而且非常容易定制。<br /><br />　　本文的内容是如何在Eclipse中编写插件（plugin）。本文的目标读者是哪些人呢？很多Eclipse用户简单地使用IDE而不需要进行定制；很多人会使用他人建立的插件，这些人不是本文的目标读者。有些用户希望定制Eclipse；有些人将为他们公司的雇员开发工具；有些人希望销售与自己的产品相关的工具；还有一些人希望使用其它名称转售预安装了某些工具的Eclipse。这些人组成了本文的目标受众。开始编写Eclipse插件的前提条件是了解如何使用Eclipse和编写Java程序，并且对标准Widget工具包（SWT）有很好的理解。<br /><br />　　<strong>安装Eclipse</strong><br /><br />　　如果你已经使用了Eclipse 3，那么可以跳过这一段落。如果没有安装该软件，你首先需要下载和安装它。你可以简单地从</font><a href="http://download.eclipse.org/downloads/index.php" target="_blank"><font color="#0000ff">Eclipse下载页面</font></a><font size="3">下载最新的稳定版本，接着把下载的文件解压到一个文件夹中（例如c:\dev）。在写作本文的时候，这个文件是eclipse-SDK-3.0.1-win32.zip（85MB）。这个过程会建立c:\dev\eclipse文件夹。<br /><br />　　请注意，在这个文件夹下已经有一个叫做plugins的文件夹了。你可以快速浏览一下，会发现很多的已经安装好的插件。这是怎么回事呢？因为Eclipse的核心相对较小，几乎每个部分都是一个插件。<br /><br />　　<strong>架构</strong><br /><br />　　Eclipse由一个很小的核心和核心之上的大量插件组成。有些插件仅仅是供其它插件使用的库。其中存在很多你可以利用的工具。所有插件使用的基础库是：<br /><br />　　&middot; 标准Widget工具包（SWT）：Eclipse中处处使用的图形化组件：按钮，图像、光标、标签等等。布局管理类。通常这个库被用于代替Swing。<br /><br />　　&middot; JFace：菜单、工具条、对话框、参数选择、字体、图像、文本文件的类和向导基类。<br /><br />　　&middot; 插件开发环境（PDE）：辅助数据操作、扩展、建立过程和向导的类。<br /><br />　　&middot; Java开发者工具包（JDT）：用于编程操作Java代码的类。<br /><br />　　上面的每一个类都有自己专有的功能，其中一些还可以单独使用（尽管它们内在地依赖于其它类）。例如，SWT不仅仅只用于插件；它还可以被用于建立非Eclipse的、独立的应用程序。还有一些其它的库没有被列举出来。<br /><br />　　图1显示了Eclipse不同层次之间的关系。<br /><br /></font>
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td height="17">
            <div align="center"><font size="3"><img onerror="this.src='http://www.yesky.com/image20010518/283031.gif';" hspace="3" src="http://dev.yesky.com/image20010518/283031.gif" align="center" vspace="1" border="1" alt="" /><br /></font>图1：分层的类库</div>
            </td>
        </tr>
    </tbody>
</table>
<br />　　<strong>安装GEF和Draw2D运行时</strong><br /><br />　　在默认情况下，这两个面向对象的库（图形化编辑器框架组件GEF和Draw2D）是没有被安装的。在本文中我们需要利用它们，因此首先需要安装它们。你可以在GEF主页面下载GEF和Draw2D，下载3.0.1或以后版本，把文件保存为GEF-SDK-3.0.1.zip（5.5MB）。把这个文件解压到Eclipse文件夹下（这是包含plugins子文件夹的文件夹）。这两个库自身也是作为插件加进来的。<br /><br />　　这些库提供了什么样的功能？它们构成了建立图形化插件的基础。图形化插件通常显示一些对象（例如方框和标签，用线和箭头链接在一起）。这些对象和连接器的绘制都是由Draw2D来处理的。但是绘制过程仅仅是图形化编辑器实现的一半功能。另一半--编辑器命令、工具条、拖放功能、打印--由GEF来完成。<br /><br />　　<strong>配置PDE选项</strong><br /><br />　　安装上述的各种部件之后，下一步就是定制或至少是熟悉插件配置选项。这些选项在菜单窗体 -&gt; 选项的&quot;插件开发&quot;类别下选择。浏览一下插件用到的数以十计的配置选项。你可以特地看一下Target Environment（目标环境）类别。它允许我们选择默认的操作系统、视窗（windowing）系统、CPU架构和语言。<br /><br />　　我们感兴趣的还有Plug-in Development（插件开发）透视图（透视图是一组视图参数选择，包括面板、视图、工具条等等，根据不同的事务发生改变，可以把它看出Eclipse中的&quot;模式&quot;）。通过选择菜单中的窗口-&gt; 打开透视图 -&gt; 其它，然后在列表中选择&quot;插件开发&quot;就可以看到它了。它与Java透视图相似，但是拥有一个插件视图，可以显示所有检测到的插件。图2显示了如何激活这个透视图，并显示了该透视图。<br /><br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img onerror="this.src='http://www.yesky.com/image20010518/283032.gif';" hspace="3" src="http://dev.yesky.com/image20010518/283032.gif" align="center" vspace="1" border="1" alt="" /><br />图2：插件开发透视图</div>
            </td>
        </tr>
    </tbody>
</table>
<font size="3"><strong>建立一个简单插件<br /><br /></strong>　　建立插件最简单的办法是使用文件-&gt; 新建-&gt;插件项目向导所提供的模板。接着输入一个项目名称（例如&quot;Invokatron&quot;）。这是什么意思呢？我们将建立的插件是Invokatron，它是一个供Java代码使用的代码生成图形化编辑器。本文删除了Invokatron的路径，但是很明显这个雄心勃勃的项目直到下次安装时才会完成。<br /><br />　　在&quot;下一步&quot;页面上，除了类名之外其它的选项都不变，类名输入invokatron.InvokatronPlugin。在&quot;插件内容&quot;页面上，输入你认为适合的任何信息。在&quot;模板&quot;页面上，选中检查框以激活模板。我们可以在多个模板中进行选择：<br /><br />　　&middot; Hello, World <br /><br />　　&middot; 简单的XML编辑器<br /><br />　　&middot; 多页面编辑器和向导<br /><br />　　&middot; 透视图扩展<br /><br />　　&middot; 弹出菜单<br /><br />　　&middot; 属性页面<br /><br />　　&middot; 视图<br /><br />　　&middot; 拥有前面的一个或多个数据项的自定义插件<br /><br />　　对于本文的示例，我们使用自定义插件模板。选择&quot;多页面编辑器&quot;－&quot;新建文件向导&quot;－&quot;属性&quot;页面。在&quot;下一步&quot;页面输入下面一些值：<br />&quot;多页面编辑器&quot;页面（图3所示）：<br /><br />　　&middot; Java程序包名称：invokatron.editor <br /><br />　　&middot; 编辑器类名称：InvokatronEditor <br /><br />　　&middot; 编辑器辅助类名称：InvokatronEditorContributor <br /><br />　　&middot; 编辑器名称：Invokatron Editor <br /><br />　　&middot; 文件扩展名：invokatron <br /><br /></font>
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><font size="3"><img onerror="this.src='http://www.yesky.com/image20010518/283034.gif';" hspace="3" src="http://dev.yesky.com/image20010518/283034.gif" align="center" vspace="1" border="1" alt="" /><br /></font>图3：&quot;多页面编辑器&quot;设置</div>
            </td>
        </tr>
    </tbody>
</table>
<br />　　&quot;新建向导&quot;页面（图4所示）：<br /><br />　　&middot; Java程序包名称：invokatron.wizard <br /><br />　　&middot; 向导类别ID：Invokatron <br /><br />　　&middot; 向导类别名称：Invokatron Wizard <br /><br />　　&middot; 向导类名称： InvokatronWizard <br /><br />　　&middot; 向导页面类名称：InvokatronWizardPage <br /><br />　　&middot; 向导名称：Invokatron Wizard <br /><br />　　&middot; 文件扩展名： invokatron <br /><br />　　&middot; 初始文件名： MyClass.invokatron <br /><br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img onerror="this.src='http://www.yesky.com/image20010518/283035.gif';" hspace="3" src="http://dev.yesky.com/image20010518/283035.gif" align="center" vspace="1" border="1" alt="" /><br />图4：&quot;新建向导&quot;设置</div>
            </td>
        </tr>
    </tbody>
</table>
<br />　　&quot;属性&quot;页面（图5所示）：<br /><br />　　&middot; Java程序包名称：invokatron.properties <br /><br />　　&middot; 属性页面类： InvokatronPropertyPage <br /><br />　　&middot; 属性页面名称：Invokatron Properties <br /><br />　　&middot; 目标类：org.eclipse.core.resources.IFile <br /><br />　　&middot; 文件名过滤器：*.* <br /><br />
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><img onerror="this.src='http://www.yesky.com/image20010518/283037.gif';" hspace="3" src="http://dev.yesky.com/image20010518/283037.gif" align="center" vspace="1" border="1" alt="" /><br />图5：&quot;属性&quot;页面设置</div>
            </td>
        </tr>
    </tbody>
</table>
<br />　　这个时候Eclipse生成了大量的文件：<br /><br />　　&middot; plugin.xml：描述该插件的主文件。它包含了辅助代码生成、库、插件依赖关系和扩展指向的一些信息。<br /><br />　　&middot; build.properties：用于描述建立（build）过程的文件。它主要用于指定需要的库。<br /><br />　　&middot; invokatron/*.java：插件类。<br /><br />　　&middot; sample.gif：菜单项显示的图标。<br /><br />　　plugin.xml文件和build.properties一起被显示在多页面编辑器中。第一个页面（&quot;预览&quot;）允许你在测试环境中导出和运行该插件。&quot;导出&quot;的意思是通过生成一些代码、接着编译和打包来完善该插件。<br /><br />　　查看一下类，你会发现它实际上没有做什么操作。添加菜单选项的代码在哪儿呢？框架组件从plugin.xml文件包含的信息中简单地生成了必要的代码。你可以查看一下这个文件。它的最后一部分包含了一个扩展列表，这是这些类可以插入Eclipse的地方。<br /><br />　　上面过程中产生的项目是示例代码的一部分，你可以下载。<br /><font size="3"><strong>运行和调试<br /><br /></strong>　　你可以在一个特殊的沙盒（sandbox）--运行时工作台（runtime workbench）中测试自己的插件。使用这种方式的时候，即使运行时工作台崩溃了，Eclipse仍然能够工作。通过点击&quot;预览&quot;页面上的&quot;载入运行时工作台&quot;或&quot;在调试模式中载入运行时工作台&quot;链接。第一次运行运行时工作台的时候，会建立eclipse\runtime-workbench-workspace文件夹。它会启动一个新的Eclipse实例，该实例与正常的Eclipse窗口非常相似（除了你的插件可以使用了之外）。<br /><br />　　但是你还是首先选择文件 -&gt; 新建 -&gt; 项目菜单和Java项目来建立一个Java项目。这个项目的名称叫做Test。图6显示了带有我们建立的向导和编辑器的运行时工作台。<br /><br /></font>
<table width="90%" align="center" border="0">
    <tbody>
        <tr>
            <td>
            <div align="center"><font size="3"><img onerror="this.src='http://www.yesky.com/image20010518/283038.gif';" hspace="3" src="http://dev.yesky.com/image20010518/283038.gif" align="center" vspace="1" border="1" alt="" /><br /></font>图6：运行该插件</div>
            </td>
        </tr>
    </tbody>
</table>
<br />　　现在我们看一下Invokatron向导。从菜单文件-&gt;新建 -&gt; 其它 可以看到它。查看类别Invokatron向导。选择Invokatron向导，接着点击&quot;下一步&quot;。这个向导会建立一个空的Invokatron文档。在Container（容器）字段中选择Test项目并点击&quot;完成&quot;。一个新的Invokatron编辑器显示出来了。这个编辑器有三个页面：一个文本编辑页面、一个属性页面（字体选择）和一个预览页面（排序的、用选择的字体绘制的）。<br /><br />　　<strong>支持文件</strong><br /><br />　　你可以在很多位置指定自己的插件在编译和运行时所需要的文件。这使我们这些Eclipse用户感到很困惑。我们试图澄清这些问题。<br /><br />　　支持文件分为三类：<br /><br />　　1、来自插件代码自身的类和资源。它们在建立过程中就会被打包为一个或多个.jar文件。<br /><br />　　2、编译和运行插件所需要的类和资源。它们都应该被包含在类路径中，并且我们必须指明在导出的时候需要复制这些文件。 <br /><br />　　3、与插件一起包含进来的文件（例如readme.txt文件）。它们不在类路径中。<br /><br />　　在插件编辑器的&quot;建立（Build）&quot;页面中可以设置编译环境。此外，这些设置会映射为build.properties文件。在第一次看到这个页面的时候我们可能会感到困惑，因为它有四个分开的部分：<br /><br />　　&middot; 运行时信息：列出了生成的库文件（第1类文件）。通常，在一个库文件中包含了插件所需要的所有类，但是你可能希望把它分割成更小的块。<br /><br />　　&middot; Source Build：列出应该被包含到.jar文件中的类文件（第1类文件的输入）<br /><br />　　&middot; Binary Build：列出应该被复制到导出的插件文件夹或档案文件中的文件（第3类文件）。上面的选择框被选中的时候，生成的文件会被自动地包含进来。<br /><br />　　&middot; 精确的类路径项：列出了在编译时刻你的应用程序所需要的.jar文件（第2类文件）。这些文件会被自动地添加到你的项目库中。我们通常容易犯的一个错误是在&quot;属性&quot;页面中的&quot;Java建立路径&quot;中和这个列表中同时包含了某个.jar文件。<br /><br />　　如果你的插件使用了某个特殊的库，就必须确保把这个库添加到项目中。接着把它添加到Source Build和精确的类路径项中。<br /><br />　　插件编辑器的其它一些重要的属性页面有：<br /><br />　　&middot; 依赖关系（Dependencies）：如果你的插件依赖于其它的插件，你就必须在这儿指定。 <br /><br />　　&middot; 运行时（Runtime）：在这个属性页面中你可以为插件指定特殊行为。<br /><br />　　<strong>导出</strong><br /><br />　　插件编码完成了，并且在工作台中测试过之后，就该准备部署到&quot;真实的&quot; Eclipse环境中了。要实现这个步骤，需要返回&quot;预览&quot;页面并点击&quot;导出向导&quot;链接。&quot;导出选项&quot;对话框允许你从三种部署类型中选择一个：<br /><br />　　&middot; 目录结构：把文件部署到一个目录中供Eclipse立即使用。接着你可以把目标位置（Destination）设置为本地的Eclipse文件夹（例如c:\dev\eclipse），直接地使用插件。<br /><br />　　&middot; 单个.zip文件：相同的文件夹会被压缩为一个.zip文件，准备好发布给客户。接下来，你必须把这个文件解压到Eclipse最上层的文件夹来安装插件。你必须在文件名字段中指定.zip文件名。<br /><br />　　&middot; 更新站点使用的独立.jar文档文件：产生一个与Eclipse用于自动更新系统相兼容的.jar文件。<br /><br />　　你点击&quot;完成&quot;之后，会生成我们选中的输出。如果你把输出作为目录结构，就必须重新启动Eclipse以激活该插件。<br /><br /><font size="3"><strong>查看示例和源代码<br /><br /></strong>　　关于如何编写Eclipse插件的最好信息来源是Eclipse所提供的插件示例集。如果我只能选择一个辅助自己编写插件的信息来源，我一定选择它。<br /><br />　　如果你要下载这些插件，只需要访问Eclipse下载页面并选择最新的版本。接着看这个页面的中间，有一个&quot;示例插件&quot;，请下载这些.zip文件（小于2MB）。把这些文件解压到Eclipse所在的文件夹（例如c:\dev）中。这个步骤会在eclipse/features和eclipse/plugins下建立很多文件夹。这些示例的源代码在C:\dev\eclipse\plugins文件夹的大量.zip文件中，如下所示：<br /><br /></font>
<table cellspacing="0" cellpadding="1" width="90%" align="center" border="1">
    <tbody>
        <tr>
            <td width="20%">示例 </td>
            <td width="80%">代码位置</td>
        </tr>
        <tr>
            <td width="20%">SWT示例</td>
            <td width="80%">在org.eclipse.sdk.examples.source_3.0.1\src...文件夹下</td>
        </tr>
        <tr>
            <td width="20%">独立的 </td>
            <td width="80%">&nbsp;</td>
        </tr>
        <tr>
            <td width="20%">&middot; 地址薄<br />&middot; 剪贴板<br />&middot; 文件查看器<br />&middot; Hello World<br />&middot; 悬浮帮助<br />&middot; 图像分析器<br />&middot; Java语法查看器<br />&middot; 文本编辑器 </td>
            <td valign="top" width="80%">...\org.eclipse.swt.examples_3.0.0\swtexamplessrc.zip 与工作台集成的 </td>
        </tr>
        <tr>
            <td width="20%">&middot; 浏览器</td>
            <td width="80%">...\org.eclipse.swt.examples.browser_3.0.0\ browserexamplesrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; 控件 </td>
            <td width="80%">...\org.eclipse.swt.examples.controls_3.0.0\controlssrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; SWT载入程序</td>
            <td width="80%">...\org.eclipse.swt.examples.launcher_3.0.0\launchersrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; 布局</td>
            <td width="80%">...\org.eclipse.swt.examples.layouts_3.0.0\layoutssrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; 绘图</td>
            <td width="80%">...\org.eclipse.swt.examples.paint_3.0.0\paintsrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; OLE </td>
            <td width="80%">特殊文件夹：<br />org.eclipse.sdk.examples.source.win32.win32.x86_3.0.1\ src\org.eclipse.swt.examples.ole.win32_3.0.0\ olewin32src.zip</td>
        </tr>
        <tr>
            <td width="20%">工作台示例 </td>
            <td width="80%">&nbsp;</td>
        </tr>
        <tr>
            <td width="20%">&middot; Java编辑器 </td>
            <td width="80%">...\org.eclipse.ui.examples.javaeditor_3.0.0\ javaeditorexamplesrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; 模板编辑器 </td>
            <td width="80%">...\org.eclipse.ui.examples.javaeditor_3.0.0\ templateeditorexamplesrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; 多页面编辑器</td>
            <td width="80%">...\org.eclipse.ui.examples.multipageeditor_2.1.0&lt;\ multipageeditorsrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; 属性表</td>
            <td width="80%">...\org.eclipse.ui.examples.propertysheet_2.1.0\ propertysheetsrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; Readme工具</td>
            <td width="80%">...\org.eclipse.ui.examples.readmetool_2.1.0\readmetoolsrc.zip</td>
        </tr>
        <tr>
            <td width="20%">帮助示例</td>
            <td width="80%">特殊文件夹：<br />org.eclipse.help.examples.ex1_3.0.0(没有Java文件；HTML在doc.zip之中)</td>
        </tr>
        <tr>
            <td width="20%">Team示例 </td>
            <td width="80%">&nbsp;</td>
        </tr>
        <tr>
            <td width="20%">&middot; 知识库提供程序 <br />&middot; 同步共享 </td>
            <td width="80%">...\org.eclipse.team.examples.filesystem_3.0.0\ teamfilesystemsrc.zip</td>
        </tr>
        <tr>
            <td width="20%">文件比较示例 </td>
            <td width="80%">&nbsp;</td>
        </tr>
        <tr>
            <td width="20%">&middot; 结构比较</td>
            <td width="80%">...\org.eclipse.compare.examples_3.0.0\ compareexamplessrc.zip</td>
        </tr>
        <tr>
            <td width="20%">&middot; XML比较 </td>
            <td width="80%">...\org.eclipse.compare.examples.xml_3.0.0\ xmlcompareexamplessrc.zip</td>
        </tr>
    </tbody>
</table>
　　<br />　　还存在一些GEF和Draw2D插件的有用示例。你可以访问GEF页面并下载最新版本。在版本发布页面中间有&quot;GEF示例&quot;，请下载该.zip文件。在写作本文的时候，该文件是GEF-examples-3.0.1.zip（0.5MB）。把这个文件解压到Eclipse所在的文件夹中。你将看到下面两个示例：<br /><br />
<table cellspacing="0" cellpadding="1" width="90%" align="center" border="1">
    <tbody>
        <tr>
            <td>示例</td>
            <td>代码位置</td>
        </tr>
        <tr>
            <td>&middot; 逻辑图表示例 </td>
            <td>org.eclipse.gef.examples.source_3.0.1\src\ org.eclipse.gef.examples.logic_3.0.0\logicsrc.zip</td>
        </tr>
        <tr>
            <td>&middot; 流图表示例</td>
            <td>org.eclipse.gef.examples.source_3.0.1\src\ org.eclipse.gef.examples.flow_3.0.1\flowsrc.zip</td>
        </tr>
    </tbody>
</table>
<br />　　<strong>查找插件开发的信息</strong><br /><br />　　你首先查看的位置应该是本文前面部分中的示例。其次还有帮助系统，它的质量也非常高。相关的内容还有：<br /><br />　　&middot; 平台插件开发<br /><br />　　&middot; JTD插件开发<br /><br />　　&middot; PDE指导<br /><br />　　&middot; Draw2D开发者指导<br /><br />　　&middot; GEF开发者指导<br /><br />　　<strong>结论</strong><br /><br />　　现在你已经有了建立Eclipse图形化插件的足够信息了。有了这么多类库的帮助，只有你的想象力会限制你的作为了。其秘诀在于你要知道自己能够使用那些工具，并且使用正确的工具完成适当的工作。<br />]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/117126.html</guid>
<subject></subject>
<author>douxiance</author>
<category></category>
<pubDate>Sun, 14 May 2006 22:24:49 CST </pubDate>
</item>

<item>
<title>李开复:网络创新模式与“时代精神”</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/115308.html</link>
<description>
<![CDATA[在最新、最酷也最绚丽夺目的网络经济中，什么样的创新才能创造出最大的价值?对一家将创新视为灵魂的新技术企业来说，如何充分发挥文化因素的价值，以便更有效也更直接地激励企业的创新精神?
<p>　　毫无疑问，创新是今天这个时代里最有激情也最有活力的字眼之一。单独地审视创新，人们也许会把与之相关的事物看成是脑力菁英们在好奇心或功利心的驱使下所完成的超乎寻常的工作的总和，但如果把创新放在产业环境、经济布局、时代精神等更大、更广的语境中考察，我们就不难发现，创新其实是一种融汇了科学技术的阶梯状累进形式、社会经济的自我更新规律以及历史文化因素在新经济中的内在映射等更深层内涵的&ldquo;立体&rdquo;现象。</p>
<p>　　尽管人人都倡导并鼓励创新，但却很少有人深入剖析过这种&ldquo;立体&rdquo;现象背后的规律性内容。比如，不同类型的企业总是会选择不尽相同的创新模式，其中有什么规律可循吗?如果说创新本身和产业、时代以及经济运行有着紧密的联系，那么在最新、最酷也最绚丽夺目的网络经济中，什么样的创新才能创造出最大的价值?对一家将创新视为灵魂的新技术企业来说，如何充分发挥文化因素的价值，以便更有效也更直接地激励企业的创新精神呢?</p>
<p>　　笔者打算借助自己在IT产业中积累的丰富的研发、运营和管理经验，深入浅出地探讨一下IT业内最为流行的几种创新模式，并向大家介绍一种与网络时代的精神内涵契合得最好的&ldquo;创新理念&rdquo;或日&ldquo;创新文化&rdquo;。</p>
<p>　　<strong>创新模式与&ldquo;时代精神&rdquo;</strong></p>
<p>　　作为人类社会和历史活动的重要组成部分，科学技术的创新也不可避免地带有强烈的&ldquo;时代色彩&rdquo;。以物理学的发展为例，当年轻的牛顿在1666年回到乡下老家并独立完成了几项开天辟地般的研究成果的时候，他一定不会想到，两百多年后，麦克斯韦、J．J．汤姆逊或是卢瑟福等人的科学研究竟会如此强烈地依赖于同一时期的产业革命进程，他更不会想到，三百多年后，盖尔曼、霍金、杨振宁等人的工作方式会与大范围的国际协作以及计算机和网络技术的迅猛发展产生密切的关联&hellip;&hellip;</p>
<p>　　将这种&ldquo;时代色彩&rdquo;套用到IT产业中来，我们大概可以这样断言：</p>
<p>　　科技创新推动产业进程，产业进程决定企业的经营模式，而企业的经营模式反过来又进一步影响或决定厂同一时期、同一领域的创新理念。</p>
<p>　　举例来说，在因特网的浪潮到来之前，IT产业中先后出现了四种主流的创新模式&mdash;&mdash;&ldquo;象牙塔式&rdquo;的创新、&ldquo;单向输出式&rdquo;的创新、&ldquo;脑力出租式&rdquo;的创新以及&ldquo;研发互动式&rdquo;的创新。它们在不同的历史时期缔造出了辉煌的科技成果和企业典范，虽然无法更好地适应网络时代的全新挑战，但直至今天，它们仍然在各自熟悉的领域里发挥着重要的价值。</p>
<p>　　<strong>&ldquo;象牙塔式&rdquo;的创新</strong></p>
<p>　　在IT技术发展的早期阶段，技术本身和产业链条之间的关系还不是特别紧密。软、硬件研发人员更习惯于单纯考虑研发目标的科技含量，而不重视或暂时不考虑其产业价值。这种&ldquo;象牙塔式&rdquo;的创新模式从某种意义上也可以被称为&ldquo;拍脑袋式&rdquo;的创新&mdash;&mdash;研发人员有了灵感，就写出论文，发表到核心期刊，然后得到同行的认可。</p>
<p>　　很显然，这种创新模式可以较好地发挥研发人员的创造力和想像力，但也同时具有与产业需求距离较远、研发成果难以转化为实际产品的缺陷。</p>
<p>　　<strong>&ldquo;单向输出式&rdquo;的创新</strong></p>
<p>　　有部美国电影讲了这样一个故事：一个人突然梦想要建造一个棒球场，同时他坚定地认为，球场建好后人们一定蜂拥而至，&ldquo;Build it and they will come!&rdquo;当然，最终的结果可能并不像他想像得那么好。</p>
<p>　　这种先发明创造、后招徕用户的做法在1980年代至1990年代的IT界非常普遍。许多著名的企业或研究机构依靠这种创新模式&mdash;&mdash;先由科学家或技术人员主导产品的设计过程，然后再花力气将产品推向市场&mdash;&mdash;取得了显著的成功，但也有不少采用类似做法的企业或是因为错误地理解了潜在的用户需求，或是因为市场推广不利而步履蹒跚。今天，采用这种创新模式的企业已经越来越少了。</p>
<p>　<strong>　&ldquo;脑力出租式&rdquo;的创新</strong></p>
<p>　　.COM泡沫破灭的时候，许多公司意识到，为了用最小的花费最大限度地满足用户需求，就必须因市场而变，因客户而变。他们纷纷将研发工作转型为市场或客户导向的&ldquo;研发服务&rdquo;：客户的需求直接体现在市场调查的结果中，而市场调查的结果决定了企业要研发什么样的产品和技术，研发部门必须紧密围绕着这一原则贡献自己的&ldquo;脑力劳动&rdquo;&mdash;&mdash;所以，这种创新模式也被叫做&ldquo;脑力出租式&rdquo;的创新。</p>
<p>　　这种创新模式的优点是反应速度快，产品设计的针对性强，研发成果转化效率高。但反过来看，因为研发人员几乎直接面对来自市场和客户的压力，在他们的工作中，服务性和定制性的内容越来越多，真正属于&ldquo;创新&rdquo;的部分必然越来越少。</p>
<p>　　<strong>&ldquo;研发互动式&rdquo;的创新</strong></p>
<p>　　为了解决研究与开发的矛盾，一些在PC浪潮中迅速成长起来的公司在产品部门之外专门设立了研究院或类似的研究机构。研究院拥有独立的架构，不需要在市场或产品部门的压力下工作，其使命就是创造出最新的技术；而产品部门则负责响应市场需求，并在适当的时候将研究院获得的成果转化为优秀的产品。同时，公司高层会统一协调研究院和产品部门之间的关系，使二者达到最好的&ldquo;互动&rdquo;状态。</p>
<p>　　&ldquo;研发互动式&rdquo;的创新使许多公司摆脱了研、发脱节的困扰，并同时保持了对市场需求的响应速度以及对未来技术的不懈探索。当然，这种创新模式也有它的问题，比如，研究院和产品部门之间沟通的成本较高，公司对二者的管理投入也相对较大。<br /><br />　　<strong>&ldquo;网络生存&rdquo;的新型创新</strong></p>
<p>　　作为最成功的网络服务和网络产品提供商之一，Google公司从创立的那一天起就走上了一条与传统模式截然不同的创新之路。可以说，Google公司的创新模式在今 <br />天的IT产业中具有重要的典型意义：它既成功地解决了研究与开发脱节的问题，又在管理成本和研发效率上达到了最优&mdash;&mdash;Google公司在因特网上取得的成功就是这种创新模式的价值的最好见证。</p>
<p>　<strong>　研发一体</strong></p>
<p>　　早在1930年代，德国哲学家海德格尔在论述科学与真理的关系时就曾预言：&ldquo;研究者必然自发地涌向根本意义上的技术人员的本质形态的范围中。只有这样，他才能保持活动能力，从而才能在其时代意义上确实地存在，不至于落伍。&rdquo; (马丁&middot;海德格尔，《世界图像的时代》，1938)客观地说，研究与开发之间的界限在最近50年里已经相当模糊了，而这种模糊&mdash;&mdash;更确切地说是&ldquo;融合&rdquo;&mdash;&mdash;正是产业发展的内在需要。</p>
<p>　　在Google公司里，没有截然分开的研究部门和产品部门，所有工程师的头上都戴着R(研究)和D(开发)两顶帽子。Google要求每位工程师既要有不断创新的勇气和才智，又要有把自己的创意变为现实的技能和经验。在这个创新加实践的乐园里，任何人都可以在任何时候提出一个绝妙无比的创意，任何入也都有机会(或有义务)亲手将自己的创意变为现实。这种研发一体的做法彻底消除了创新与实践之间的隔阂，同时也最大限度地节省了管理和沟通成本，提高了工作效率。<br /><strong>个人自由</strong></p>
<p>　　许多人都知道，Google为每一位员工提供了20％可以自主支配的时间。但人们也许并不知道，这20％的时间其实是Google的创新模式中至关重要的一环。一旦有了这20％可支配的时间，蕴藏在工程师头脑中的创意就会层出不穷地&ldquo;奔涌&rdquo;出来，在创造力和想像力的指引下，工程师们的价值可以得到最大的体现&mdash;&mdash;许多令Google引以为豪的产品，如Gmail和Google News，就是由工程师在20％的时间里创造出来的。</p>
<p>　　此外，Google并不会像一般的企业那样，设法将工程师固定在一个项目或一个产品组内。工程师可以随时到自己感兴趣的小组工作，也可以同时加入好几个产品的开发过程。显然，这种管理方式上的灵活性也可以更好地激发大家的创新意识。</p>
<p>　<strong>　平等参与</strong></p>
<p>　　研发过程中的平等参与是Google产品不断创新的另一块基石。Google在公司内部建立了拥有评比和排序机制的&ldquo;点子库&rdquo;。员工们可以将自己想到的产品或技术创意放到&ldquo;点子库&rdquo;里，然后由其他员工投票评选。公司从&ldquo;点子排行榜&rdquo;中选出未来的研发方向，并根据每个&ldquo;点子&rdquo;受欢迎的程度决定该项目的规模和重要性。对每个具体的项目，工程师们不仅可以在&ldquo;点子库&rdquo;中用手投票，还可以直接用&ldquo;脚&rdquo;投票，即亲身参与到该项目的研究与开发中去，与同事&mdash;&mdash;起实现自己的技术梦想。</p>
<p>　　此外，Google几乎每一件产品的用户都是分布在世界各地的&ldquo;网民&rdquo;。产品问世后，立即就会接受全世界数以亿计的用户的考验，用户对产品的好恶马上就能体现到点击率或下载率上。Google深深懂得，这种来自最终用户的&ldquo;投票&rdquo;是最平等也最能指导研发进程的&ldquo;优选法&rdquo;。</p>
<p>　<strong>　尖时高效</strong></p>
<p>以往的产品研发总会经历市场调查、产品设计、开发测试、产品封装、市场推广等诸多流程，不但要消耗大量的时间和资源，工程师们对最终用户的响应速度也不会特别快。</p>
<p>　　Google的产品研发几乎可以被称为&ldquo;实时&rdquo;的过程：工程师们有了新的创意，就立即动手实现产品的最初版本，然后将它放在Google实验室里接受用户的检验就在第一批用户试用产品的同时，用户对产品的感受和建议已经通过网络源源不断地反馈到工程师那里；工程师总是能利用实时获取的信息修正或升级产品，让实验室中的产品尽快成熟；而Google则会根据用户的反馈决定哪些产品可以从实验室中&ldquo;毕业&rdquo;。</p>
<p>　　很多软件企业都遵循用户优先的准则，但&ldquo;用户&rdquo;这个词在Google公司又多了一层含义。Google的员工其实也是因特网的用户，也就是说，工程师们在研发产品的同时，也能够以最终用户的身份审视和评价产品。这样一来，Google绝大多数产品的研发过程都会有最终用户直接地和全程地参与：在产品设计阶段，最终用户的需求可以毫无障碍地反映到研发小组；在开发阶段，处于迭代周期中的软件产品不停地接受着最终用户的测试；在产品稳定和发布阶段，来自公司内部的工程师和来自全世界的用户共同组成了高效的测试团队&hellip;&hellip;由此得到的产品自然会在用户满意度方面取得优异的成绩。</p>
<p>　<strong>　使命清晰</strong></p>
<p>　　和所有最成功的企业一样，Google公司拥有清晰、明确的企业使命，那就是&ldquo;整合全球信息，服务所有用户&rdquo;。</p>
<p>　　面对因特网上数量惊人却明显缺乏有序性的信息内容，普通网络用户总会有无所适从的感觉。如何使最有用的信息以最恰当的形式展现在最需要它的用户面前，这应当是网络时代面临的最大挑战。Google公司正是看到了这一挑战背后蕴藏的巨大机遇，才不遗余力地将研发力量投入到信息整合和网络服务中来。Google的目标是为分布在世界各地的文字、图片、新闻、邮件、商品、音乐、视频等不同形式的信息提供一个统一、便捷的组织方式和检索渠道，这一目标也正是Google在规划和制定创新方向时最为重要的决策依据。</p>
<p>　　让文化成为创新&ldquo;源动力&rdquo;可以说，Google公司的创新模式为网络时代的IT产业开创了一条崭新的发展道路。但是，如果继续探究下去，以便进一步寻找潜藏在这种创新背后的驱动力量，我们又能发现些什么呢?</p>
<p>　　我认为，Google公司对创新的敏感以及对建立新一代创新模式的渴望从根本上源自Google公司特有的企业文化。其实，每家公司的企业文化都会或多或少地影响该公司的行为模式，只不过在Google，许多企业文化本身就有着极强的&ldquo;创新&rdquo;色彩。<br /><br />　　<strong>平等、互重</strong></p>
<p>　　有一次，一位新加入Google的秘书不知道如何使用公司里的传真机，于是就请身后等着发传真的一位先生教自己怎样操作。成功地发出传真后，新来的秘书对那位热心人感谢不已，二 <br />　　人分别报出了自己的姓名。让秘书小姐惊讶万分的是，那位热心人竟然就是Google公司的CEO施密特。</p>
<p>　　在Google，任何人都要亲自动手处理自己的事情。正因为有了这样企业文化，Google公司的研发人员才自然而然地形成了研发一体的创新理念。</p>
<p>　　<strong>创新、实干</strong></p>
<p>　　著名的Google News其实是源自&mdash;位工程师的&ldquo;灵机一动&rdquo;：他希望看到最热门的新闻，但又不满意门户网站编辑的筛选结果，于是就亲自动手，实现了一个由软件自动编选、排序的&ldquo;新闻中心&rdquo;。这种创新加上实干的企业文化直接影响厂Google公司对新产品和新技术的思考方式。</p>
<p>　　<strong>透明，客观</strong></p>
<p>　　在Google，所有员工，所有研发小组的工作进程、工作业绩都会在内部网上公布，每个人都可以看到其他人在做什么，做得怎么样。考核员工业绩时，Google并不仅仅依赖管理者的评价，反而更看重与该员工一同工作的其他人的意见。透明和客观的管理方式可以营造出公平的竞争环境，并进而最大限度地激励员工的创新热情。</p>
<p>　<strong>　利众、不作恶</strong></p>
<p>　　利众、不作恶是Google自成立之初就始终坚守的信条。美国&ldquo;卡特里娜&rdquo;飓风过后，一家与Google Map合作的卫星公司得到了最新的灾区卫星图片，并将图片发给Google。当时，Google Map小组的所有人都一致认为，尽快将这些卫星图片免费发布到网上，可以解决政府机构和灾区民众的燃眉之急。于是，他们彻夜不眠，用最快的速度更新了服务器中的地图信息，为救灾工作做出了贡献。</p>
<p>　<strong>　激情、风趣</strong></p>
<p>　　Google的员工都喜欢在愚人节那天开玩笑。有一年4月1日，居然有位Google员工在eBay上叫卖Google牌的彩色汽水。这种提倡激情和趣味的企业文化体现在研发上面，就成了无数新点子、新创意的最好源泉。</p>
<p>　　当然，开玩笑过多也会留下&ldquo;后遗症&rdquo;。例如，著名的Gmail将发布日期选在了4月1日，结果，许多用户都误认为那又是Google和大家开的愚人节玩笑，因为当时还没有哪个Email服务商可以提供如此大容量的邮箱。</p>
<p>　<strong>　以人为本</strong></p>
<p>　　企业员工是Google的主人，工程师是Google的灵魂。在Google工作的工程师可以享受到最好的开发环境(性能最好的计算机和两台大屏幕的液晶显示器)，可以在工作之余尽情放松(伸手可得的食物、游戏机和健身器材、由知名厨师料理的免费餐点&hellip;&hellip;)，但更为重要的是，工程师可以非常容易地找到机会，以便把自己的技术理想变成千万人使用的热点产品&mdash;&mdash;对那些渴望在轻松、愉悦的环境中实现自身价值的技术天才来说，这样的人文环境该有多么强烈的诱惑呀!</p>
<p>　　正是因为有优秀的企业文化，Google才实践出了一条符合网络时代特点的创新之路。希望这种集研发&mdash;体、个人自由、平等参与、实时高效、用户优先和使命清晰等特点为一身的创新模式能够为更多的IT企业所借鉴，希望大家都能根据企业自身的特点，研发出最适合企业发展需要，也最能满足未来时代要求的新技术和新产品。<br /></p>
<p>&nbsp;</p>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/115308.html</guid>
<subject></subject>
<author>douxiance</author>
<category></category>
<pubDate>Fri, 12 May 2006 21:57:52 CST </pubDate>
</item>

<item>
<title>五步求解PERT图</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/113231.html</link>
<description>
<![CDATA[在以往的项目建设中，编制项目进度计划常常采用甘特图（或称横道图）来表示，甘特图简单明了、形象直观，但不适合用于大型和复杂信息工程项目的建设和监理工作。
<p class="main">　　因为甘特图不反映各项工作之间的逻辑关系，因而难以确定某项工作推迟对完成工期的影响；当实际进度与计划有偏差时也难以调整。另外，甘特图虽然直观清晰，但只是计算的结果，而一项工作什么时候开始，什么时候结束，却是需要通过计算来实现，甘特图并没有给出好的算法。</p>
<p class="main">　　网络计划技术可以有效解决这些问题。目前应用比较广泛的两种计划方法是关键路径法（Critical Path Method，简称CPM）和计划评审技术（Program Evaluation and Review Technique，简称PERT）。</p>
<p class="main">　　CPM和PERT是独立发展起来的计划方法。两者的主要区别在于：CPM是以经验数据为基础来确定各项工作的时间，而PERT则把各项工作的时间作为随机变量来处理。所以，前者往往被称为肯定型网络计划技术，而后者往往被称为非肯定型网络计划技术。前者是以缩短时间、提高投资效益为目的，而后者则能指出缩短时间、节约费用的关键所在。因此，将两者有机结合，可以获得更显著的效果。</p>
<p class="main">　　信息工程项目建设过程中不可预见的因素较多，如新技术、需求变化、到货延迟，以及政策指令性影响等。因此，整体工程进度计划与控制大多采用非肯定型网络计划，即PERT网络模型。</p>
<p class="main">　　信息工程项目应用网络计划技术的步骤如下：①绘制网络图；②网络计划计算；③求关键路径；④计算完工期及其概率；⑤网络计划优化。</p>
<p class="main">　　<strong>步骤1：绘制ERP项目网络图</strong></p>
<p class="main">　　本文主要以某公司（中小型企业）ERP项目建设为例，讲述网络计划技术在信息工程项目监理工作进度控制中的应用。</p>
<p class="main">　　（1） 定义各项工作（作业）</p>
<p class="main">　　恰当地确定各项工作范围，以使网络图复杂程度适中。</p>
<p class="main">　　（2） 编制工作表</p>
<p class="main">　　首先是根据实施厂商的实施方法和业主单位的实际情况，制定ERP项目工作清单（如表1所示），并确定各项工作的先行工作。在工作定义过程中，应考虑有关项目和项目目标的定义、说明以及历史资料。工作定义过程结束时，要提交的成果之一就是工作清单。工作清单必须包括本项目范围内的所有工作，应当对每项工作列出文字说明，保证项目成员准确、完整地理解该项工作。</p>
<p align="center"><img src="http://pm.csai.cn/schedule/images/2006449996.gif" alt="" /></p>
<p class="main">　　其次进行项目描述。项目的特性通常会影响到工作排序的确定，在工作排序的确定过程中更应明确项目的特性。</p>
<p class="main">　　再次，确定或估计各项工作时间。估算的方法在后面介绍。</p>
<p class="main">　　最后，表明各项工作之间的逻辑关系。着重考虑的内容如下：</p>
<p class="main">　　a. 强制性逻辑关系的确定。这是工作排序的基础。逻辑关系是工作之间所存在的内在关系，通常是不可调整的，一般主要依赖于技术方面的限制，因此确定起来较为明确，通常由技术人员同管理人员的交流就可完成。</p>
<p class="main">　　b. 组织关系的确定。对于无逻辑关系的项目工作，由于其工作排序具有随意性，从而将直接影响到项目计划的总体水平。这种关系的确定,通常取决于项目管理人员的知识和经验，它的确定对于项目的成功实施是至关重要的。</p>
<p class="main">　　c. 外部制约关系的确定。项目工作和非项目工作之间通常会存在一定的影响，因此在项目工作计划的安排过程中,也需要考虑到外部工作对项目工作的一些制约及影响，这样才能充分把握项目的发展。</p>
<p class="main">　　d. 实施过程中的限制和假设。为了制定良好的项目计划，必须考虑项目实施过程中可能受到的各种限制，同时还应考虑项目计划制定所依赖的假设和条件。</p>
<p class="main">　　（3）根据工作清单和工作关系绘制网络图</p>
<p class="main">　　根据表1中各工作之间的逻辑关系，可绘制双代号网络图如图1所示</p>
<p align="center"><img src="http://pm.csai.cn/schedule/images/2006448076.gif" alt="" /></p>
<p class="main"><br />　　<strong>步骤2： 网络计划计算</strong></p>
<p class="main">　　（1）工作时间估计</p>
<p class="main">　　工作延续时间的估计是项目计划制定的一项重要的基础工作，它直接关系到各事项、各工作网络时间的计算，和完成整个项目任务所需要的总时间。若工作时间估计的太短，则会在工作中造成被动紧张的局面；相反，就会使整个工程的工期延长。</p>
<p class="main">　　网络中所有工作的进度安排都是由工作的延续时间来推算的，因此，对延续时间的估计要做到客观正确。这就要求在对工作做出时间估计时，不应受到工作重要性及工程完成期限的影响，要把工作置于独立的正常状态下进行估计，要统盘考虑，不可顾此失彼。</p>
<p class="main">　　估计工作时间的方法主要有：</p>
<p class="main">　　a. 专家判断：专家判断主要依赖于历史的经验和信息，当然其时间估计的结果也具有一定的不确定性和风险。</p>
<p class="main">　　b. 类比估计：类比估计意味着以先前的类似的实际项目的工作时间来推测估计当前项目各工作的实际时间。当项目的一些详细信息获得有限的情况下，这是一种最为常用的方法，类比估计可以说是专家判断的一种形式。</p>
<p class="main">　　c. 单一时间估计法：估计一个最可能工作实现时间，对应于CPM网络。</p>
<p class="main">　　d. 三个时间估计法：估计工作执行的三个时间，乐观时间a、悲观时间b、正常时间c，对应于PERT网络:期望时间t＝(a+4c+b)/6。</p>
<p class="main">　　（2）工作最早开始时间</p>
<p class="main">　　工作最早开始时间是到指某个节点前的工作全部完成所需要的时间，它是本项工作刚刚能够开始的时间。</p>
<p class="main">　　（3）工作最迟开始时间</p>
<p class="main">　　工作最迟开始时间是指某项工作为保证其后续工作按时开始，它最迟必须开始的时间。</p>
<p class="main">　　（4）时差的计算</p>
<p class="main">　　时差是指在不影响整个任务完工期的条件下，某项工作从最早开始时间到最迟开始时间，中间可以推迟的最大延迟时间。</p>
<p class="main">　　<strong>步骤3：求关键路径</strong></p>
<p class="main">　　关键路径有两种定义：</p>
<p class="main">　　①在一条路径中，每个工作的时间之和等于工程工期，这条路径就是关键路径。</p>
<p class="main">　　②若在一条路径中，每个工作的时差都是零，这条路径就是关键路径。</p>
<p class="main">　　图1所示的网络图，关键路径所需时间＝3＋16＋10＋15＋1＋30＋15＝90天（图1中加黑部分）。</p>
<p class="main">　　<strong>步骤4：计算完工期及其概率</strong></p>
<p class="main">　　设路径T的总时间（即路径T上各项目工作的时间和）为T（=&sum;t作业路径），标准差为&sigma;T，则在工期D内完工的概率为：</p>
<p align="center"><img src="http://pm.csai.cn/schedule/images/2006446917.gif" alt="" /></p>
<p class="main"><br />　　以表1和图1为例，关键路径D-F-G-I-J-K-L，T=90</p>
<p align="center"><img src="http://pm.csai.cn/schedule/images/2006443321.gif" alt="" /></p>
<p class="main">&nbsp;　　<strong>步骤5：网络计划优化</strong></p>
<p class="main">　　在项目计划管理中，仅仅满足于编制出项目进度计划，并以此来进行资源调配和工期控制是远远不够的，还必须依据各种主、客观条件，在满足工期要求的同时，合理安排时间与资源，力求达到资源消耗合理和经济效益最佳这一目的，这就是进度计划的优化。优化的内容包括：时间（工期）优化；缩短工期，时间（工期）-成本优化。</p>
<p class="main">　　（1）时间优化</p>
<p class="main">　　工期优化包括两方面内容：一是网络计划的计算工期Tc超过要求工期Ts，必须对网络计划进行优化，使其计算工期满足要求工期，且保证因此而增加的费用最少；二是网络计划的计算工期远小于要求工期，也应对网络计划进行优化，使其计算工期接近于要求工期，以达到节约费用的目的。一般前者最为常见。 </p>
<p class="main">　　（2）时间（工期）-成本优化</p>
<p class="main">　　CPM方法是解决时间&mdash;成本优化的一种较科学的方法。它包含两个方面的内容，一是根据计划规定的期限，规划最低成本；二是在满足成本最低的要求下，寻求最佳工期。</p>
<p class="main">　　缩短工期的单位时间成本可用如下公式计算（参见图2）：</p>
<p align="center"><img src="http://pm.csai.cn/schedule/images/2006442724.gif" alt="" /></p>
<p class="main"><br />　　工期-成本优化的步骤是：</p>
<p class="main">　　a. 求关键路径；</p>
<p class="main">　　b. 对关键路径上的工作寻找最优化途径；</p>
<p class="main">　　c. 对途径中K值小的工作进行优化；</p>
<p class="main">　　d. 在优化时，要考虑坐邻右舍。</p>
<p class="main">　　举例说明，参见图3：</p>
<p align="center"><img src="http://pm.csai.cn/schedule/images/2006449139.gif" alt="" /></p>
<p class="main">　　a.如果仅考虑正常工期估计</p>
<p class="main">　　则路径A-B的工期是16，成本是130000；路径C-D的工期是18，成本是70000。因此关键路径是路径C-D，项目总工期为18，总成本是200000。</p>
<p class="main">　　b.如果全部活动均在它们各自的应急时间内完成</p>
<p class="main">　　则路径A-B的工期是11，成本是172000；路径C-D的工期是15，成本是87000。因此关键路径是路径C-D，项目总工期为15，总成本是259000。</p>
<p class="main">　　c.用工期&mdash;成本平衡法压缩那些使总成本增加（斜率）最少的活动的工期，确定项目最短完成时间。</p>
<p class="main">　　第一次压缩，由于关键路径的工期决定着项目的总工期，所以取路径C-D进行优化。计算得KA=6000，KB=10000，KC=5000，KD=6000。为了将项目的工期从18周减至17周，针对关键路径C-D。确定关键路径上哪项活动能以最低的&ldquo;斜率&rdquo;（成本被加速），可以看出KC=5000最小，因此将活动C的工期压缩1周。得出项目周期17周，总成本为205000。</p>
<p class="main">　　第二次压缩，为了再缩短一个时间段，从17周缩短至16周，必须再次找出关键路径，两路径的工期分别是A-B为16周，C-D为17周，因此关键路径仍是C-D，它必须再次被减少。这时，虽然活动C比活动D的&ldquo;斜率&rdquo;（每周加速成本）低，但活动C已达到它的应急时间9周了。因此，仅有的选择是加速活动D的进程。将活动D的工期压缩1周，项目工期为16周，总成本为211000。</p>
<p class="main">　　第三次压缩，再次将项目工期缩短1周，从16周降至15周。有两条关键路径。为了将项目总工期从16周减至15周，必须将每个路径都加速1周。路径A-B压缩活动A，路径C-D压缩活动D，项目周期15周，总成本223000。</p>
<p class="main">　　第四次压缩，从15周降至14周。有两条相同的关键路径。必须将两条路径同时加速1周。路径C-D，均已达到它们的应急时间。加速路径A-B的进程会毫无意义。停止优化过程。</p>
<p class="main">　　d.工期-成本优化结果，如表2：</p>
<p class="main">　　项目总工期减少l周，项目总成本将增加5000元；</p>
<p class="main">　　项目工期减少2周，项目总成本将增加l1000元；</p>
<p class="main">　　项目工期减少3周，项目总成本将增加23000元。</p>
<p align="center"><img src="http://pm.csai.cn/schedule/images/2006443214.gif" alt="" /></p>
<p class="main">　　在运用网络图做计划时，要体现一个系统分析的思想。信息工程项目实施是由多种工作按一定层次组成的复杂系统。其任务由多个部门承担，因而各项控制活动只有组成一个既明确分工，又相互协调配合、紧密衔接的有机整体，才能达到既定的风险、进度、费用控制目标。</p>
<p class="main">　　<strong>链接</strong></p>
<p class="main">　　双代号网络图的五个组成部分</p>
<p class="main">　　网络图是用来表示工作流程的有向、有序的网状图形，由箭线和节点组成。网络图有多种表示方式，最常见的有双代号网络(activity-on-arrow network, AOA)和单代号网络(activity-on-node network, AON)。</p>
<p class="main">　　双代号网络是一种用箭线表示工作、节点表示工作相互关系的网络图方法，在我国这种方法应用较多。双代号网络计划一般仅采用结束到开始的关系表示法。如图是双代号网络图的示例。</p>
<p align="center"><img src="http://pm.csai.cn/schedule/images/2006445863.gif" alt="" /></p>
<p class="main">　　（1）事项（事件、结点）</p>
<p class="main">　　事项是工程（计划）的始点、终点（完成点）或其各项工作的连接点（交接瞬间）。在网络图中，用箭线端部的圆圈或其它形式的封闭图形表示。</p>
<p class="main">　　（2）工作（作业、活动）</p>
<p class="main">　　工作是指一项有具体内容的、需要人力、物力、财力、占用一定空间和时间才能完成的活动过程。例如需求分析、软件架构设计、代码编写、单元测试等。工作由节点和边组成。</p>
<p class="main">　　（3）先行工作和后续工作</p>
<p class="main">　　先行工作和后续工作 如果在工作A完成后才可以开始工作B，则工作A叫作工作B的先行工作，工作B叫作工作A的后续工作。</p>
<p class="main">　　（4）平行工作 </p>
<p class="main">　　如果工作A结束后，工作B和C可以同时开始进行，则工作B和C叫作平行工作。</p>
<p class="main">　　（5）虚拟工作 </p>
<p class="main">　　虚活动（工作）是只表示工作之间相互依存、相互制约、相互衔接的关系，但不需人力、物力、空间和时间的虚设的活动，一般用虚线边表示，虚拟工作的时间为零。<br /></p>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/113231.html</guid>
<subject></subject>
<author>douxiance</author>
<category></category>
<pubDate>Wed, 10 May 2006 15:00:46 CST </pubDate>
</item>

<item>
<title>Windows常用命令集锦</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112365.html</link>
<description>
<![CDATA[在Windows系统中，我们打开一些程序都是通过鼠标一步一步的点击来打开，但是以下列出的这些命令，可以让你在Windows XP的&ldquo;运行&rdquo;窗口中运行应用程序。 <br />运行程序 运行命令 <br />辅助功能选项<br />access.cpl<br />添加硬件向导<br />hdwwiz.cpl<br />添加或删除程序<br />appwiz.cpl<br />管理工具<br />control admintools<br />自动更新<br />wuaucpl.cpl<br />Bluetooth文件传送向导<br />fsquirt<br />计算器<br />calc<br />证书管理控制台<br />certmgr.msc<br />字符映射表<br />charmap<br />磁盘检查工具<br />chkdsk<br />剪贴簿查看器<br />clipbrd<br />命令行提示符<br />cmd<br />组件服务<br />dcomcnfg<br />计算机管理<br />compmgmt.msc<br />日期和时间属性<br />timedate.cpl<br />DDE共享<br />ddeshare<br />设备管理器<br />devmgmt.msc<br />Direct X控制面板(如果已经安装)*<br />directx.cpl<br />Direct X诊断工具<br />dxdiag<br />磁盘清理工具<br />cleanmgr<br />磁盘碎片整理程序<br />dfrg.msc<br />磁盘管理<br />diskmgmt.msc<br />磁盘分区管理器<br />diskpart<br />显示属性<br />control desktop<br />显示属性<br />desk.cpl<br />显示属性的外观选项卡<br />control color<br />Dr. Watson系统诊断工具<br />drwtsn32<br />Driver Verifier Manager <br />verifier<br />事件查看器<br />eventvwr.msc<br />文件签名验证<br />sigverif<br />快速查找<br />findfast.cpl<br />文件夹选项<br />control folders<br />字体文件夹<br />control fonts<br />字体文件夹<br />fonts<br />空档接龙游戏<br />freecell<br />游戏控制<br />joy.cpl<br />组策略编辑器(XP专业版)<br />gpedit.msc<br />红心大战游戏<br />mshearts<br />Iexpress向导<br />iexpress<br />索引服务<br />ciadv.msc<br />Internet属性<br />inetcpl.cpl<br />IP配置实用程序(显示连接配置) ipconfig /all <br />IP配置实用程序(显示DNS缓存内容) ipconfig /displaydns <br />IP配置实用程序(删除DNS缓存内容) ipconfig /flushdns <br />IP配置实用程序(释放全部(或指定)适配器的由DHCP分配的动态IP地址) ipconfig /release <br />IP配置实用程序(为全部适配器重新分配IP地址) ipconfig /renew <br />IP配置实用程序(刷新DHCP并重新注册DNS) ipconfig /registerdns <br />IP配置实用程序(显示DHCP Class ID) ipconfig /showclassid <br />IP配置实用程序(修改DHCP Class ID) ipconfig /setclassid <br />Java控制面板(如果已经安装)<br />jpicpl32.cpl<br />Java控制面板(如果已经安装)<br />javaws<br />键盘属性<br />control keyboard<br />本地安全设置<br />secpol.msc<br />本地用户和组<br />lusrmgr.msc<br />从Windows注销<br />logoff<br />微软聊天程序<br />winchat<br />扫雷游戏<br />winmine<br />鼠标属性<br />control mouse<br />鼠标属性<br />main.cpl<br />网络连接<br />control netconnections<br />网络连接<br />ncpa.cpl<br />网络安装向导<br />netsetup.cpl<br />记事本 notepad <br />Nview桌面管理器(如果已经安装)<br />nvtuicpl.cpl<br />对象包装程序<br />packager<br />ODBC数据源管理器<br />odbccp32.cpl<br />屏幕键盘<br />osk<br />AC3解码器(如果已经安装)<br />ac3filter.cpl<br />密码属性<br />password.cpl<br />性能<br />perfmon.msc<br />性能<br />perfmon<br />电话与调制解调器选项<br />telephon.cpl<br />电源选项属性<br />powercfg.cpl<br />打印机和传真<br />control printers<br />打印机文件夹<br />printers<br />TrueType造字程序<br />eudcedit<br />Quicktime(如果已经安装)<br />QuickTime.cpl<br />区域和语言选项<br />intl.cpl<br />注册表编辑器<br />regedit<br />注册表编辑器<br />regedit32<br />远程桌面 mstsc <br />可移动存储<br />ntmsmgr.msc<br />可移动存储操作请求<br />ntmsoprq.msc<br />策略的结果集 (XP专业版)<br />rsop.msc<br />扫描仪与相机<br />sticpl.cpl<br />任务计划<br />control schedtasks<br />Windows安全中心<br />wscui.cpl<br />服务<br />services.msc<br />共享文件夹<br />fsmgmt.msc<br />关闭Windows<br />shutdown<br />声音和音频设备属性<br />mmsys.cpl<br />蜘蛛牌游戏<br />spider<br />SQL Client客户端网络实用工具<br />cliconfg<br />系统配置编辑器<br />sysedit<br />系统配置实用程序<br />msconfig<br />系统文件检查工具(立即扫描) sfc /scannow <br />系统文件检查工具(下次启动时扫描) sfc /scanonce <br />系统文件检查工具(每次启动时扫描) sfc /scanboot <br />系统文件检查工具(返回默认设置) sfc /revert <br />系统文件检查工具(清除文件缓存) sfc /purgecache <br />系统文件检查工具(设置缓存大小=x)<br />sfc /cachesize=x<br />系统属性<br />sysdm.cpl<br />任务管理器<br />taskmgr<br />Telnet客户端<br />telnet<br />用户帐户管理<br />nusrmgr.cpl<br />辅助工具管理器<br />utilman<br />Windows防火墙<br />firewall.cpl<br />Windows放大镜<br />magnify<br />Windows管理体系结构<br />wmimgmt.msc<br />Windows系统安全工具<br />syskey<br />运行Windows更新<br />wupdmgr<br />漫游Windows XP<br />tourstart<br />写字板<br />write<br />]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112365.html</guid>
<subject></subject>
<author>douxiance</author>
<category></category>
<pubDate>Tue, 09 May 2006 14:13:20 CST </pubDate>
</item>

<item>
<title>剑客vs刀客 Java vs .NET之霸道的.NET</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112359.html</link>
<description>
<![CDATA[刀，无鞘的刀，重三十六斤六两三分，刀重而不大，重而不笨，千年寒铁精炼而成，刀身颀长，刀背轻薄，锋利异常，刀身桔黄色，隐隐泛着青色，刀面嵌龙凤图案，似龙吟，似凤鸣.刀柄带有两环，轻轻撞击会发出&quot;叮呤&quot;的响声，颇为清脆。此乃好刀，通灵的刀-DOTNET。
<p class="main">　　距今五年之前，一少年，金色长发垂肩，手中一把刀横扫波斯，威震西方.号称不败，刀出鞘，必见血而回。但只此昙花一现，伴随着少年的消失，此刀也消声匿迹。.</p>
<p class="main">　　三年后，DOTNET刀重现江湖，京城长安，DOTNET刀横扫京城四大镖局(JSP)，并占据了京城四大镖局。夺得了京师重地。DOTNET刀法强劲，招式简单，无花招，无虚招，上手便是实招，使招架之人躲无可躲，避无可避。倘若功力稍逊，非死即伤。比起其他兵器-以花招配实招，或花招多于实招的兵器，确实强劲凶悍了许多。更重要的是，DOTNET刀法更强调实用性，易学性，不仅适用于有武功功底之人，亦适合毫无基础之人。如此老少皆宜的刀法，却也不失为一流刀法。DOTNET刀的成功并不仅仅是因为刀的特性和独特的刀法，更重要的因为刀的创造者，有着武林第一堡之称的:微软堡!!实力雄厚的微软堡，无论从人力，物力，财力上都全力的支持着DOTNET刀法的完善和发展。尤其是微软堡在全国的各大银号(Windows操作系统)，只要你是DOTNET刀的修习者，便可以优先提供贷款帮助(系统API)。.这也为DOTNET刀成为一流刀法奠定了坚实的基础。</p>
<p class="main">　　做为一把优秀的刀，从威力，技巧，使用方面都不会输给其他兵器。从三年前的一战成名到如今的占有一席之地，站在刀(商业化)的立场上，它是王者之刀.站在江湖(编程语言)的立场上，它是可以与Java剑抗衡的少数几个兵器之一。。。做为后起之秀，在被Java剑和无极棍C/C++瓜分的江湖，刀所要做的事情会更多，面对Java剑已经越来越完善的招数和人数，质量上的优势，刀要做的事情还有很多很多。但是刀也省去了很多需要做的事情，刀偷师Java剑和无极棍C/C++的优点。用他们的成功经验来促使自己的快速的发展和进步。</p>
<p class="main">　　在DOTNET刀扬名京城之时，为何能一举吞并京城四大镖局(JSP)，除了刀法奥妙，熟悉镖局的运作模式和弱点之外，最重要的一点就是，刀法本身就有一个旁支ASP.NET，此旁支早已从事镖局行业十数载，甚至在Java剑未能涉足该领域之前，击败了当时的镖局龙头离魂勾(CGI)，坐上了龙头宝座，堪称至尊地位，并且获得武林内外一致的好评!!ASP.NET旁支做为刀法中重要的旁支之一，不仅在继承了刀法的奥妙同时，更加完善了镖局行业的操作和规范，改进了一系列镖局的运作方式和模式。更因为微软堡为使用DOTNET刀的人，提供了一种北部大漠之地，异常彪捍凶猛的猎犬:VS杀手犬(Visual Studio.Net)，此犬驯服后，对主人异常忠诚，除忠心护主更是勇猛异常，配合DOTNET刀，真的是:夕阳无限好，杀人用此犬啊。</p>
<p class="main">　　然此犬也颇为贵重，比起JBuilder暗器来说有过之而无不极.不过好在因为此犬需要的人甚多，江湖中自然也不乏亡命之士，甘愿冒着得罪微软堡的风险，高价收购纯种的VS杀手犬，经过配种繁殖，再以低于正常的价格出售。生意也非常不错。这不仅解决了一部分人的再就业问题，也帮住底层的DOTNET刀客节约了不少银子。真是一举两得。因为VS杀手犬的出现，从而在根本上完成了减轻，减少了镖师的劳动力，为镖局节约了成本。以前两个镖师小心翼翼的护镖，现在有了VS杀手犬的帮助，镖师就可以完全的放松的带着爱犬，大摇大摆的招摇过市了，也应了一句俗话:家有一犬，犹如一宝。真是居家旅行，必备好宠!</p>
<p class="main">　　DOTNET刀中也不乏能人异士，他们利用与Java剑较量之时，根据自己的领悟，也创造了适合DOTNET刀修炼的轻功:NHibernate，此轻功不仅青出于蓝更胜于蓝.一时间也为熟悉DOTNET刀之人津津乐道，不仅如此，对于千军万马之中，DOTNET刀也有NAnt可以使用，虽不仅完美，但也算得上是纵横沙场，横扫千军。同时针对DOTNET刀的各种辅助招数武功，暗器也是层出不穷，例如:为了检查刀客的武功进展情况，保证练功之后不出现走火入魔的症状(单元测试)，你可以修习NUnit。为了VS杀手犬的健康和茁壮成长，你可能需要每天记录宝宝的成长情况(文档生成)，这个时候你可以修习NDoc。为了在战斗时能保证速战速决，一招退敌的效果(减少代码编写量，代码生成器)，你可以修习CodeSmith，此招如果运用得当，对你在战斗中帮助是巨大的!!</p>
<p class="main">　　另外一个最重要的是暗器，为什么说它是暗器，是因为它阴险，不入流，为行家高手所不嗤，不过那个行家不是从新人过来的呢??放心使用吧!!尽量无耻吧，老一代的人说，无耻过后便是彩虹，你还怕什么呢??说它是暗器，其实它并不是锻造而成，反而它更怕锻造.它原本属于南方苗疆之地的一种虫，后被南苗异人发现此虫的特异之处-它可以记录被它附身之人所发生一切事情!!而后南苗异人将此虫炼制成蛊，以做降头之用!!后经流传到中原，经过多年发展.就成了现今的暗器--DOTNET Reflector了(反编译为源代码的工具)，暗器特点很简单也很实用，就是将此暗器偷偷下于某人身上，等你完成检视之后，再将其召唤，以自己独有的暗语让此蛊吐出监视的全过程，再现中蛊之人的一言一行，从而达到了偷学，偷习，钻研武功的用处。不过无奈此暗器只适合于DOTNET刀客身上，对于其他兵器，只能望尘莫及了(如果要是能用于其他兵器，岂非无敌??)。</p>
<p class="main">　　俗话说:万事万物必定环环相扣，相生相克，才会构成如今的自然界，此暗器的防护也比较简单.只需要随身佩戴另一种与附身蛊相克的蛊-混淆蛊(混淆器)就好了.对于混淆蛊，其种类繁多，有大有小，有简单有复杂，有美有丑，使用混淆蛊后，附身蛊所监视的对象会从人转变为混淆蛊，也就是附身蛊监视的是混淆蛊，呵呵，试问一下你看到的过程一直是一个蛊，你会做何感想呢?有人说混淆蛊和附身蛊本是一对，所以会异性相吸。也有人说，混淆蛊是附身蛊的孩子，孩子出门在外，见到长辈，肯定要低头认错!!不过这些传说无从参考，暂且不去追究了。其他还有很多不错的暗器和奇特招数，在这里暂且略过.留给修习者们自己去发掘和寻找吧。正是因为这些辅助招数武功，暗器。极大的丰富了DOTNET刀的使用和传播。同时也为DOTNET刀法的发扬光大注入了一剂强心针。</p>
<p class="main">　　DOTNET刀的另一特征就是&quot;融&quot;，一个融字足以说明DOTNET刀的霸道之处，习此刀法并非需要重新开始一步一步修习，如果你是无极棍C/C++的使用者，则可以修习C++.NET一门，如果你是Java剑使用着可以修习J#.NET一门，如果你是VB枪的爱好者，则可以修习VB.NET一门。对于武林中人来说，刀法大而深的奥妙在此时方才能显示出来，因为刀法完全照顾到了其他兵器和武功，融合了多家武功之特长。说它是刀法，其实也可以说它中有剑法的灵气存在，说它是易学易通易精的刀法，则它也继承了无极棍C/C++的特点，入门容易精通难!!。正是因为刀法中的&quot;融&quot;字诀，因此也得罪了其他不少兵器，不过好在微软堡正在鼎盛之时，其他兵器除了偶尔发表一下抗议之词外，也奈何不得。</p>
<p class="main">　　微软堡能独霸武林二十余年而不倒，不仅仅依靠强大的实力，也依靠有完善的帮助体系来发展人才和留住人才。微软堡每半年必会有一次热心大奖(MVP最有价值专家)的评选，而大奖的得主除了得到可观的金银财宝之外，更可以得到只有堡内少数长老才可以观阅的独孤秘笈(非公开内部技术文档)，如果你自问武功已经超凡脱俗，不屑一顾，你也可以在年底的微软堡聚会上有机会见到，神龙见首不见尾，智慧与美貌并重，英雄与侠义的化身，玉树临风赛潘安，一朵梨花压海棠的小银宠-微软堡的堡主-独孤盖和独孤鲍。但大凡参加此次大会的年轻一代的目标，无一例外，都是想一睹独孤盖的女儿:独孤烟的芳容，如果能得到独孤烟的青睐，则可以顺理成章的成为微软堡的驸马，不仅有享之不尽，用之不竭的财富，更可以了解到微软堡各大银号的内部秘密(Windows Code)。像这样，江山与美人皆可得的绝佳好事，试问又有几人可以挡的住诱惑呢??</p>
<p class="main">　　纵观DOTNET刀法之道，所感颇多，从刀法上它不逊色，从使用者人数的角度它更是胜人一筹，在以老带新(MVP机制)的帮助下，对于刀法的发扬光大更是功不可没。但面对手Java剑道的飘逸潇洒，无极棍C/C++深厚的功力，刀要走的路还会更长更远。.</p>
<p><span class="main">　　做为我们江湖中人来说，也是个绝佳的锻炼机会，你今天可以挑战Java剑，明天也可以挑战无极棍C/C++，对于我们的积累经验，是非常有帮助的。因为无论是对DOTNET刀，Java剑，无极棍C/C++，或者其他兵器来说来说，它们都存在于武林这个地方(计算机)，他们的最终目标都是为了称霸武林，独步江湖。做为这个目标的实现者，我们不仅要专精于自己的武功，更应该多了解不同的武功，以便将来在碰到对手的时候可以起到知己知彼的作用，以不同思维来思考问题，从而做到知识面广而精通某领域，完成我们武林人士的&quot;十字线&quot;-面广而精!!! </span></p>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112359.html</guid>
<subject></subject>
<author>douxiance</author>
<category></category>
<pubDate>Tue, 09 May 2006 14:01:20 CST </pubDate>
</item>

<item>
<title>酒店版宽带计费系统</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112225.html</link>
<description>
<![CDATA[<p><font face="Verdana"><strong>前言</strong></font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; 今天，速度就意味着一切，在人们的生活中，宽带互联网的应用越来越多的渗透到工作、学习、生活、娱乐中，成为不可或缺的一部分；小区房地产商利用宽带优势增加物业附加值，逐步增设域内定制
<table style="MARGIN: 10px 7px 3px 4px" cellspacing="0" cellpadding="0" align="left" border="0">
    <tbody>
        <tr>
            <td>
             language="JavaScript1.1" src="http://ad.ccw.com.cn/adshow.asp?positionID=38&amp;js=1&amp;innerJs=1" type="text/javascript"></script>
            </td>
        </tr>
    </tbody>
</table>
服务的功能和种类；学校利用校园网资源进行学术研究，普及学生的信息化意识；政府部门实现网上办公，更加全面、准确、及时的听取群众意见；竞争激烈的酒店业也纷纷把目光投向宽带接入和网络增值内容服务上，通过为客人营造的良好网络环境，酒店可以提升服务档次，吸引更多的商务客人，增加更多的营业收入。</font></p>
<p><font face="Verdana"><strong>传统上网方式及问题</strong></font></p>
<p><font face="Verdana">1． 采用拨号上网：客人对当地电信或ISP的特服号或账号不熟悉，打消客人的上网积极性；酒店方面只提供了线路而没有提供相应的服务，不符合星级评定的标准。<br />2．&nbsp; 自由上网难以实现：客人想要上网时需要酒店工程师对计算机的网络配置和浏览器配置进行一定的改动，给双方都带来麻烦；<br />3．&nbsp; 收费不明确：不论是通过抬高房价还是靠收取电话费加服务费的方式，由于收费含糊所以会引起客人和酒店之间的矛盾。<br />4．&nbsp; 不能对网络资源进行有效的管理，为客户提供个性化服务：没有办法对酒店不同的区域和人员的上网进行有效区分和管理，不能形成重点客户重点服务，优质服务优质价格的可运营模式。另外酒店内部局域网与客人上网没有分开进行管理，员工长期占用网络资源，由于带宽的有限，会影响客人上网，破坏酒店的形象。</font></p>
<p><font face="Verdana"><strong>成为可盈利型酒店的可行性方案</strong></font></p>
<p><font face="Verdana">为了解决以上的困扰，酒店不但需要引入宽带上网，而且要对网络资源进行合理而且有效的管理。同时，酒店作为集商务、娱乐于一身的场所，还需要提供多种的网络增值服务给客人（如VOD点播、在线游戏、旅游咨询服务等）。另外一般的酒店商务中心还设有网吧，供其他客人上网使用，而且酒店的员工也可以利用网络资源上网查询信息，体验网络时代。而所有的一切都需要一套完善而成熟的计费管理系统来实现。<br />&nbsp;<br /><strong>CINMS Me的由来</strong></font></p>
<p><font face="Verdana">中太计费系统CINMS在1996年开发出第一个版本CINMS1.0，当时是作为中国电信163/169拨号上网业务管理系统，曾经占有中国电信163/169的30%市场，都是省级网络系统，用户量都在百万级。其后经过逐步完善和升级，在1999年联通发展165数据业务时，又占据了55%的市场。此外，CINMS还在中国移动的8个省安装，用于移动数据业务管理平台。在各个运营商的宽带业务发展起来后，我们又不断推出升级版本，支持客户的宽带业务管理。在这期间，我们也为运营商提供了酒店，小区业务管理模块，以便方便运营商发展酒店小区客户，所以也掌握了大量的酒店，<br />小区业务特点。</font></p>
<p><font face="Verdana">我们也意识到宽带业务的发展不再是原来的窄带拨号那样由运营商控制，其他公司很难参与经营，而是变成了一个白花齐放，百家争鸣的局面。任何一个单位，只要条件具备，都可以发展宽带接入服务。基于这样的考虑，我们把原来的CINMS系统内核基础上，派生出来一个小型化版本，称作CINMS Me（CINMS Mini Edition），主要是简化了一些不必要的功能，增加一些适应酒店，小区等小客户的业务管理模块。目前CINMS的版本是V5.8。</font></p>
<p><font face="Verdana"><strong>CINMS Me能为您做到什么</strong></font></p>
<p><font face="Verdana"><strong>1运营管理多种增值服务</strong></font></p>
<p><font face="Verdana">酒店除了需要对入住的商务客人提供收发邮件、上网浏览等简单的网络服务外，更需要提供一些增值的网络服务来提高酒店的档次和吸引客人入住，例如：VOD点播、在线游戏、旅游资讯服务等，而这些增值服务对带宽的要求很高。但是带宽总是有限的资源，这就需要对各种服务资源进行有效管理和运营，而最有效的管理办法就是针对不同的服务资源执行不同的收费标准，由客户自行选择。这就需要一套完善的管理系统来保障，合理的控制和分配网络资源，否则将阻碍酒店提供宽带上网服务的发展。</font></p>
<p><font face="Verdana"><strong>2进行统一计费、统一结算</strong></font></p>
<p><font face="Verdana">客人一般是在入住时从前台得到一个独立的账号和密码，通过WEB认证或是客户端登录方式在酒店内的任意地点登录互联网，费用统一计入这一账号中，客人离店时可以与房费或其他酒店消费一起在前台结算，并打出统一账单，此时该账号密码作废，不影响下次入住客人的利益。<br />宽带计费系统（CINMS Me V5.8）同时支持包天收费，计时收费、按流量收费、按选择的服务类型收费等多种方式，供普通客人选择，按照实际使用量打出账单，清晰明了；对于常包客人则可以采用有限制的包月方式，即用多少结多少，当总量超过包月金额时按包月的费用支付，使常包客人体会到最直接的实惠。基于增值内容服务的收费是酒店宽带上网收费中不可或缺的。而且酒店宽带上网计费管理可以支持与现有的多种酒店管理系统实现接口互连，打印统一账单，给客人和酒店带来真正的方便。</font></p>
<p><font face="Verdana"><strong>3 有效的上网管理</strong></font></p>
<p><font face="Verdana">宽带计费系统 （CINMS Me V5.8）可以对员工的上网PC机接入点，机器MAC地址，上网时长、带宽等实施组合限制，不仅可以保障客人上网资源，同时也为酒店的管理者解决了后顾之忧。同时通过对一些非法的IP地址过滤功能宏观的控制整个网络的访问目标地址，并可以实时的掌握网络运行情况，随时查看相关信息。</font></p>
<p><font face="Verdana"><strong>4 多种网络运营的盈利方式</strong></font></p>
<p><font face="Verdana">一般来说酒店网络可以通过两种方法实现盈利，一是酒店向运营商租用线路，每个月交固定的月租费，酒店向客人收取的上网费用在刨去线路租用费、前期网络投资的费用之外就是酒店网络运营的盈利；另外一种是与运营商合作，由运营商投资，酒店运营，最后进行利益分成，通过宽带计费系统（酒店版 CINMS Me V5.8）和代理商统一结算模块，酒店和运营商可以同时监控网络运营的实际情况，保障利益分成的合理。<br /></font></p>
<p><font face="Verdana">网络结构图</font></p>
<p><img src="http://www.e-gov.org.cn/jiejuefangan/UploadFiles_3535/200605/20060505084754569.jpg" border="0" alt="" /></p>
<p><font face="Verdana"><strong>适用客户行业</strong></font></p>
<p><font face="Verdana">宽带酒店，商务中心；<br />校园网；<br />智能小区；<br />政府机关内部网络；<br />大中型企业和商业机构，电脑培训中心，网吧等工作站数量比较多，管理要求高的应用场合。<br /><strong>&nbsp;<br />主要功能</strong></font></p>
<p><font face="Verdana"><strong>操作员管理</strong></font></p>
<p><font face="Verdana">我们把酒店里面使用本系统的人员叫做操作员，系统在初始化的时候会创建一个超级的操作员。另外，本系统把每一项功能都可以控制是否能够使用。超级操作员可以根据本企业的使用人员情况，创建新的操作员，并根据实际业务需要赋予相应的权限。本系统主要支持如下功能：</font></p>
<p><font face="Verdana">&agrave;权限管理：可以查询，重新赋予某个操作员的权限。<br />&agrave;角色管理：创建，授权，删除，密码变更。<br /><strong>&nbsp;<br />客房管理</strong></font></p>
<p><font face="Verdana">客房管理主要是管理客房里面与宽带上网相关的资源参数，比如VLAN号，PC机MAC地址，房间号，客房标识等。<br />&nbsp;<br /><strong>用户管理</strong></font></p>
<p><font face="Verdana">用户就是入住客户用来上网登录，计费，以及结算的唯一标识。</font></p>
<p><font face="Verdana">&agrave;对用户账号进行登录认证，授权和计费。<br />&agrave;支持RADIUS Server , RADIUS Client等多种外部认证模式。<br />&agrave;提供用户自服务模块，用户可以实时查询自己的账单和使用纪录，修改资料。<br />&agrave;提供标准的外围系统接口，可以实现与酒店客房管理系统互通，做到与酒店系统同步进行开户和销户。（需要酒店管理系统做相应的功能扩展）<br />&nbsp;<br /><strong>网络策略</strong></font></p>
<p><font face="Verdana">&agrave;支持内网NAT，多段DHCP，地址映射，端口映射，内网路由策略，源地址路由策略，目标地址路由策略。<br />&agrave;将源地址分组，并绑定用户计费组，指定某个计费组的用户只能在这些地址段内才能允许登录。<br />&agrave;支持直通IP策略。<br />&agrave;带宽分组和个人带宽的控制，实现QoS策略。<br />&agrave;支持Web登录和PPPoE登录方式。<br />&agrave;提供完整的设备运行日志。<br />&nbsp;<br /><strong>控制策略</strong></font></p>
<p><font face="Verdana">&agrave;目标地址控制过滤策略<br />&agrave;目标端口控制策略<br />&agrave;源地址控制策略<br />&agrave;每日上网时间和流量控制策略<br />&agrave;完整的登录纪录，访问纪录<br />&agrave;完整的操作权限管理和运行日志<br />&agrave;计费策略<br />&agrave;支持按时间，流量计费方式<br /><strong>&nbsp;<br />收费结账系统</strong></font></p>
<p><font face="Verdana">&agrave;多个操作员同时操作<br />&agrave;开户，销户，收费，查询，修改用户资料功能<br />数据维护工具<br />&agrave;数据维护策略：可以针对用户数据，上网记录，操作日志等系统历史数据制定数据维护策略。<br />&agrave;数据维护工具：可以对上述三类数据进行维护和备份。做到<br />分析统计<br />&agrave;营业数据分析<br />丰富开放的接口实现统一帐单<br />&agrave;提供的接口包括：TCP/IP Socket接口，HTTP URL接口，文件接口</font></p>
<p><font face="Verdana"><strong>竞争优势</strong></font></p>
<p><font face="Verdana">灵活的使用方式</font></p>
<p><font face="Verdana">计费系统采用B/S开发模式，经过授权的PC机，不需要安装任何软件，都可以进入管理系统，进行业务管理。这样大大简化了使用环节，提高了管理效率。</font></p>
<p><font face="Verdana">高性能的稳定的计费系统</font></p>
<p><font face="Verdana">计费系统具有完全的自主开发的知识产权，保证了产品的开发的延续性。另外计费系统采用的是电信级业务系统的内核，稳定可靠，支持长时间不间断工作。</font></p>
<p><font face="Verdana">软硬件一体化解决方案</font></p>
<p><font face="Verdana">提供完整的硬件和软件，将网关的性能和软件的功能最大限度地发挥出来。</font></p>
<p><font face="Verdana">操作简单，维护方便</font></p>
<p><font face="Verdana">软件采用全部的图形化界面，功能强大，操作非常简单，系统自动进行数据维护和备份，实现无人值守，不会给用户带来不必要的负担。</font></p>
<p><font face="Verdana">成熟的产品，完善的服务</font></p>
<p><font face="Verdana">中太公司从1996年就开始为电信运营商提供数据业务管理系统（CINMS），此后公司又跟随运营商的业务变化，不断的推陈出新。系统经过两次大的技术架构创新，和若干次功能升级。客户遍及中国电信，中国移动，中国网通，中国联通，以及长城宽带，中电飞华等电信运营商和宽带运营商。CINMS已经在超过100个电信运营商客户现场运行。<br />面对宽带小区，宽带酒店市场，我们根据业务特点，基于CINMS内核，推出了行业版本。目前已经在10多个客户现场使用。<br />我们有专门的技术支持队伍，提供24小时服务热线，为客户提供完善的售后服务和技术支持。</font></p>
<p><font face="Verdana">产品性能指标<br />产品型号：CINMS Me 5800<br />指标 数字 描述 <br />最大支持用户数 1万 系统可以发展的用户数量，这个用户数不是同时在线用户。 <br />最长保留历史数据时间 3个月 对于用户的历史上网记录，或被删除的用户资料，最长可以保留的时间，这个数字是和系统配置相关的。 <br />最大支持并发上网数 1000个 同时在线的用户数 <br />最大接入管理终端数 10个 一个系统的管理终端是指管理员登录系统进行业务管理的一台PC机。 <br />每秒钟并发的AAA数 20 一个AAA，是指完成一次完整的上网业务过程，包括一次用户认证，一次用户授权，和一次用户计费过程。 </font></p>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112225.html</guid>
<subject></subject>
<author>douxiance</author>
<category></category>
<pubDate>Tue, 09 May 2006 11:16:24 CST </pubDate>
</item>

<item>
<title>某市电子政务建设的病毒防治解决方案</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112221.html</link>
<description>
<![CDATA[<span class="style3">&nbsp;
<p>一.某市信息化建设的现状 <br /><br />　　某市是全国信息化建设的示范单位，通过ATM高速接入INTERNET。骨干光纤网基本上都采Cisco4000系列以上的路由器，主要网段都采用Catalyst4600系列的交换机。目前某市下属的148个单位拥有1000台左右的计算机， 1000台计算机大约划分为50个网段，最大的网段拥有100台左右的计算机。目前拥有的50多台服务器以PC Server为主。某市目前已经建成应用广泛的OA系统，基于Lotus Notes5.0以上平台。另外某市也实施了GIS系统和税务系统，并且基于宽带网的优势，架构实现了VOD视频点播系统。<br /><br />二.某市信息化建设的病毒防治需求<br /><br />　　全区1000多个点仍然采用单机防护为主的方式。全区1000多个点划分为50个左右的网段，大多数采用了金山毒霸标准版等单机防护软件，信息中心对全区不能实现统一的病毒防治管理。基于金山毒霸的反病毒经验，某市的反病毒方案需要满足以下基本几点：<br />1. 必须能够实现集中式的管理，即可以由信息中心统一管理全区1000台节点的反病毒运行。<br />2. 必须能够和现有的系统良好的结合，不影响现有的系统正常运行，安装实施也尽可能的减少对现有系统的配置操作。<br />3. 具有优秀的引擎，对病毒能有效的防护和处理，能够确定病毒的发作源，并且能安全的清除和处<br />理。<br />4. 对OFFICE的宏病毒具有较强的处理能力，能最好的配合政务系统的病毒防治。能够对大多数的感染宏病毒的文件进行病毒清除，必须能够较大程度上保证这些文件不出现损坏和乱码的情况。<br />5. 便于管理和操作，提供先进的管理方式；管理员可以在主控台对全网客户端进行监控和管理，可以直接对客户端下达查毒，杀毒等操作命令。<br />6. 便于维护，具有很高的稳定性，反病毒体系架构后系统本身应该不出现明显的运行问题，并且提供方便的维护操作。<br />7. 能够有优秀的病毒响应机制，出现病毒能在12个小时内反应，并且在24个小时内提供解决方案。<br />8. 能够提供完善高效的后续服务，并且能在5年内保证服务质量。</p>
<p>三.以金山毒霸网络版为核心的病毒防治实施方案 <br /><br />&nbsp;&nbsp;&nbsp; 根据某市目前网络的状况和反病毒的需求，在充分考虑可行性的基础上，金山公司决定以金山毒霸网络版为核心，采用单级管理、多重防护的整体架构，对网络中的邮件、文件等进行全面防护，不给病毒留有任何死角。某市全区1000个点划分为四个反病毒执行区域，每个反病毒执行区配置一台控中心，主控中心均安装在信息中心统一管理。我们的实施方案包含下面8个部分：<br /><br />　　1. 划分反病毒执行区域<br /><br />　　某市全区1000台计算机按照物理连接和网络配置划分为4个反病毒执行区域，每个执行包含250个节点左右，最多不超过300个点。反病毒执行区域的划分需要满足以下几点：<br />&middot;反病毒执行区域内的任何一台计算机都可以访问到位于某市政府的信息中心<br />&middot;反病毒执行区内的计算机都能和信息中心实现稳定全天候的网络连接（不要求客户机端全天候开<br />机，只要求连接具有全天候）<br />&middot;反病毒执行区内可以分配适当的服务器以负载网络反病毒的控制平衡，区域内的人员针对反病毒的要求基本一致。请参考图1提供的反病毒执行区域的划分，由于反病毒执行区只是一个逻辑的概念，主要是为了维护的方便进行的设置，因此可以根据实际情况进行调整： </p>
<p>&nbsp;</p>
<p align="center">&nbsp;<img height="233" src="http://www.e-gov.org.cn/jiejuefangan/UploadFiles_3535/200605/20060509093421873.gif" width="481" border="0" alt="" /><br />图1</p>
<p>　　2. 部署反病毒执行区控管中心<br /><br />　　某市信息中心需要添加4台PC服务器（附性能指标），这4台PC服务器全部安置在信息中心，由信息中心统一管理。4台服务器上分别安装金山毒霸网络版控管中心，按照划分的反病毒执行区域分别负责管理反病毒执行区域内的各个反病毒终端节点的反病毒运行。服务器的部署请参考</p>
<p align="center"><img height="359" src="http://www.e-gov.org.cn/jiejuefangan/UploadFiles_3535/200605/20060509093421515.gif" width="473" border="0" alt="" /><br />图2 </p>
<p align="left">3. 实现普通客户机端的病毒防护 <br />　　通过部署的4台控管中心，管理员通过MAIL或者域脚本和远程安装的方式对4个反病毒执行区域的所有客户机端进行安装。这些客户机节点主要是指工作人员使用的工作用机，不包括服务器和诸如Linux、Unix系统。金山毒霸网络版的客户机端具备实时监控和邮件监控，可以防止病毒的传播和感染，并且可以通过多种方式向控管中心报告病毒试图侵入和感染网络的事件。请参见 </p>
<p>&nbsp;</p>
<p align="center"><img height="366" src="http://www.e-gov.org.cn/jiejuefangan/UploadFiles_3535/200605/20060509093421429.gif" width="481" border="0" alt="" /><br />图3 </p>
<p>4. 实现普通服务器端的病毒防护 <br />　　针对某市网络内散布在各个反病毒执行区域内的文件服务器，域服务器，DNS服务器和FTP服务器，部署安装金山毒霸网络版的服务器端。如果性能要求不是十分必然，推荐安装金山毒霸网络版的客户机端，金山毒霸网络版客户机端具备针对服务器进行防护的功能，能够承担服务器反病毒的要求，并且可以降低企业的采购成本，节约资源。针对 LINUX和UNIX，由于金山毒霸网络版目前还不能提供专门的服务器防护，因此在服务器端不做配置，但是由于金山毒霸网络版的客户机端本身具备完善的监控和过滤功能，因此针对某市网络中少量的 LINUX和UNIX主机流过的文件，完全可以实现在客户端进行的保护。即针对 LINUX和UNIX流入流出的文件，金山毒霸网络版实行的是单重防护请参见</p>
<p align="center"><img height="308" src="http://www.e-gov.org.cn/jiejuefangan/UploadFiles_3535/200605/20060509093421897.gif" width="472" border="0" alt="" /><br />图4 </p>
<p align="left">5. 实现邮件服务器端的病毒防护 <br />　　某市目前实现内部MAIL和外部MAIL两套MAIL机制，内部MAIL主要走 OA流程，基于Lotus Notes<br />实现；外部MAIL主要是基于Socix的MDNA Server，采用专用MAIL服务器实现。针对这两套系统我们采用两种方案实现：针对 Notes的邮件系统，这是我们最关键的病毒防护点。安装金山毒霸提供的ForLotus挂件，该挂件可以在OA服务器上对所有进出的邮件进行过滤，确保到达工作人员邮件客户端（如OE、Outlook、Foxmail、Notes）的邮件处于无毒的安全状态。部署Lotus挂件不需要添加服务器，只需要安装在OA服务器上即可，参见下 </p>
<p>&nbsp;</p>
<p align="center"><img height="335" src="http://www.e-gov.org.cn/jiejuefangan/UploadFiles_3535/200605/20060509093421842.gif" width="481" border="0" alt="" /><br />图5</p>
<p>　　针对Socix的邮件防护，由于采用的是专用MAIL系统，金山毒霸网络版目前不能提供插件防护，因此只能考虑进行引擎嵌入式开发；该方式周期长，且需要软件开发商的二次开发，我们并不推荐。因为在金山毒霸网络版的客户机端已经具备了客户端邮件防护的功能，增加服务器防护只是进行第二重防护。 <br />6. 实现OA系统的文档防护 <br />　　金山毒霸网络版的客户机端和服务器端具备独立的宏病毒防护功能，可以有效的解决OA系统内部文件流传的安全性，保障办公的效率和正常运转。参见图6的文档保护流程：</p>
<p align="center">&nbsp;<img height="286" src="http://www.e-gov.org.cn/jiejuefangan/UploadFiles_3535/200605/20060509093421795.gif" width="472" border="0" alt="" /><br />图6</p>
<p><br />7. 实现统一的管理和维护 <br />　　金山毒霸网络版的方案实施后，管理主要集中在信息中心的4台控管中心， 4台控管中心均采用独立管理和配置的机制，具备较高的稳定性，容易辨别和分析问题。信息中心可以分配3位工程师负责控制其中的几台控管中心，控管中心首次配置完毕后一般不需要再进行特别的维护， 可以充分降低工程师的劳动量。工程师主要通过 WEB 界面维护控管中心，可以实现远程的管理操作，并且基于IE设置，体现移动式管理的架构体系。</p>
<p align="center"><img height="286" src="http://www.e-gov.org.cn/jiejuefangan/UploadFiles_3535/200605/20060509093421247.gif" width="472" border="0" alt="" /><br />图7</p>
<p><br />8. 部署快捷高效的升级机制 <br />　　金山毒霸网络版的升级将主要通过4台控管中心集中操作，4台控管中心独自实行升级，升级完毕后将自动完成各个反病毒执行区的统一升级工作，如果升级出现失败，金山毒霸网络版将提供回滚升级，保证升级的有效性，不间断反病毒体系的正常工作。金山毒霸网络版采用的是命令分发的方式对反病毒区域的各个终端进行升级，可以大大减轻内部网因为统一升级造成的网络拥塞。</p>
<p align="center"><img height="367" src="http://www.e-gov.org.cn/jiejuefangan/UploadFiles_3535/200605/20060509093421538.gif" width="481" border="0" alt="" /><br />图8 </p>
<p>四． 以金山毒霸网络版为核心实施方案的优点 <br />　　由本公司提供的解决方案虽然增加了4台服务器的成本，但是在整个网络的可维护性、安全性上都具有较高的优越性。其主要优点有：<br /><br />　　1. 与原有的系统没有任何冲突，具备较高的独立性和兼容性。安装实施过程中很少的影响原系统的正常工作。<br />　　2. 很好的实现了集中式管理和操作的要求，由于4台控管中心都存放于信息中心，信息中心可以方便对全区的网络进行反病毒的管理。全区其他计算机不需要做硬件上的改动和配置，所有的反病毒操作都可以交由信息中心进行管理，其他区域不在需要做安全方面的投资。<br />　　3. 具备优秀的反病毒能力，该方案的实施中对大部分系统都进行的是双重过滤，即在服务器和客户机端双重过滤，基于优秀的引擎可以有效防止病毒的侵入和破坏。<br />　　4. 方便管理和实施，金山毒霸网络版采用的B/S模式，提供的多种安装方式，可以快速有效的实现安装和管理。<br />　　5. 具备较高的稳定性，金山毒霸网络版能够防范的范围内都可以良好的运行，正常运行过程中很少产生系统本身的错误，即使产生这种错误，也可以根据整个区域的划分和架构实现错误的定位。<br />　　6. 快速可靠的升级机制，快速的响应和解决时间。金山毒霸网络版本身的升级机制可以保证升级的正常进行，并且具有容错性。如果出现最新的病毒，并且造成感染，金山毒霸网络版将在24小时内反应解决，升级完毕后利用方案的区域划分架构和网络版的多点监控功能，快速的定位病毒源，有效的清除病毒。 <br /></p>
</span>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112221.html</guid>
<subject></subject>
<author>douxiance</author>
<category></category>
<pubDate>Tue, 09 May 2006 11:08:08 CST </pubDate>
</item>

<item>
<title>中国确定未来１５年信息化战略</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112192.html</link>
<description>
<![CDATA[人民网北京５月８日讯 据新华社消息：中共中央办公厅、国务院办公厅近日印发《２００６―２０２０年国家信息化发展战略》，提出了到２０２０年我国信息化发展的战略目标。
<p>　　经过多年的发展，我国信息化发展已具备了一定基础，进入了全方位、多层次推进的新阶段。抓住机遇，迎接挑战，适应转变经济增长方式、全面建设小康社会的需要，更新发展理念，破解发展难题，创新发展模式，大力推进信息化发展，已成为我国经济社会发展新阶段重要而紧迫的战略任务。</p>
<p>　　《战略》提出，到２０２０年，我国信息化发展的战略目标是：综合信息基础设施基本普及，信息技术自主创新能力显著增强，信息产业结构全面优化，国家信息安全保障水平大幅提高，国民经济和社会信息化取得明显成效，新型工业化发展模式初步确立，国家信息化发展的制度环境和政策体系基本完善，国民信息技术应用能力显著提高，为迈向信息社会奠定坚实基础。具体目标是：</p>
<p>　　促进经济增长方式的根本转变。广泛应用信息技术，改造和提升传统产业，发展信息服务业，推动经济结构战略性调整。深化应用信息技术，努力降低单位产品能耗、物耗，加大对环境污染的监控和治理，服务循环经济发展。充分利用信息技术，促进我国经济增长方式由主要依靠资本和资源投入向主要依靠科技进步和提高劳动者素质转变，提高经济增长的质量和效益。</p>
<p>　　实现信息技术自主创新、信息产业发展的跨越。有效利用国际国内两个市场、两种资源，增强对引进技术的消化吸收，突破一批关键技术，掌握一批核心技术，实现信息技术从跟踪、引进到自主创新的跨越，实现信息产业由大变强的跨越。</p>
<p>　　提升网络普及水平、信息资源开发利用水平和信息安全保障水平。抓住网络技术转型的机遇，基本建成国际领先、多网融合、安全可靠的综合信息基础设施。确立科学的信息资源观，把信息资源提升到与能源、材料同等重要的地位，为发展知识密集型产业创造条件。信息安全的长效机制基本形成，国家信息安全保障体系较为完善，信息安全保障能力显著增强。</p>
<p>　　增强政府公共服务能力、社会主义先进文化传播能力、中国特色的军事变革能力和国民信息技术应用能力。电子政务应用和服务体系日臻完善，社会管理与公共服务密切结合，网络化公共服务能力显著增强。网络成为先进文化传播的重要渠道，社会主义先进文化的感召力和中华民族优秀文化的国际影响力显著增强。国防和军队信息化建设取得重大进展，信息化条件下的防卫作战能力显著增强。人民群众受教育水平和信息技术应用技能显著提高，为建设学习型社会奠定基础。</p>
<p>　　《战略》提出了我国信息化发展的九大战略重点：一、推进国民经济信息化；二、推行电子政务；三、建设先进网络文化；四、推进社会信息化；五、完善综合信息基础设施；六、加强信息资源的开发利用；七、提高信息产业竞争力；八、建设国家信息安全保障体系；九、提高国民信息技术应用能力，造就信息化人才队伍。</p>
<p>　　为落实国家信息化发展的战略重点，《战略》指出，中国将优先制定和实施六项战略行动计划，它们是：国民信息技能教育培训计划、电子商务行动计划、电子政务行动计划、网络媒体信息资源开发利用计划、缩小数字鸿沟计划、关键信息技术自主创新计划。</p>
<p>　　《战略》还提出了具体的保障措施：完善信息化发展战略研究和政策体系、深化和完善信息化发展领域的体制改革、完善相关投融资政策、加快制定应用规范和技术标准、推进信息化法制建设、加强互联网治理、壮大信息化人才队伍、加强信息化国际交流与合作、完善信息化推进体制。</p>]]>
</description>
<guid isPermaLink="false">http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112192.html</guid>
<subject></subject>
<author>douxiance</author>
<category></category>
<pubDate>Tue, 09 May 2006 10:46:38 CST </pubDate>
</item>

<item>
<title>智能客户端体系结构与设计指南-第 8 章 — 智能客户端应用程序性能</title>
<link>http://www.bokee.net/blogmodule/weblogcomment_viewEntry/112001.html</link>
<description>
<![CDATA[<p><strong>摘要：</strong>本章讨论如何优化您的智能客户端应用程序。本章分析您可以在设计时采取的步骤，并介绍如何调整智能客户端应用程序以及诊断任何性能问题。</p>
<center><img title="" height="6" alt="*" src="http://img.microsoft.com/library/gallery/templates/MNP2.Common/images/3squares.gif" width="30" border="0" /></center>
<div style="HEIGHT: 18px"></div>
<h5 style="PADDING-TOP: 2px">本页内容</h5>
<table style="MARGIN-TOP: 7px; MARGIN-BOTTOM: 12px" cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter8SCAppPerf.mspx#EVC"><img height="9" alt="针对性能进行设计" hspace="4" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" vspace="2" border="0" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter8SCAppPerf.mspx#EVC">针对性能进行设计</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter8SCAppPerf.mspx#EYAAE"><img height="9" alt="性能调整和诊断" hspace="4" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" vspace="2" border="0" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter8SCAppPerf.mspx#EYAAE">性能调整和诊断</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter8SCAppPerf.mspx#EBKAE"><img height="9" alt="小结" hspace="4" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" vspace="2" border="0" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter8SCAppPerf.mspx#EBKAE">小结</a></td>
        </tr>
        <tr valign="top">
            <td><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter8SCAppPerf.mspx#EFKAE"><img height="9" alt="参考资料" hspace="4" src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width="7" vspace="2" border="0" /></a></td>
            <td class="onThisPage"><a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter8SCAppPerf.mspx#EFKAE">参考资料</a></td>
        </tr>
    </tbody>
</table>
<p>智能客户端应用程序可以提供比 Web 应用程序更丰富和响应速度更快的用户界面，并且可以利用本地系统资源。如果应用程序的大部分驻留在用户的计算机上，则应用程序不需要到 Web 服务器的持续的往返行程。这有利于提高性能和响应性。然而，要实现智能客户端应用程序的全部潜能，您应该在应用程序的设计阶段仔细考虑性能问题。通过在规划和设计您的应用程序时解决性能问题，可以帮助您及早控制成本，并减小以后陷入性能问题的可能性。</p>
<p><strong>注</strong>改善智能客户端应用程序的性能并不仅限于应用程序设计问题。您可以在整个应用程序生存期中采取许多个步骤来使 .NET 代码具有更高的性能。虽然 .NET 公共语言运行库 (CLR) 在执行代码方面非常有效，但您可以使用多种技术来提高代码的性能，并防止在代码级引入性能问题。有关这些问题的详细信息，请参阅<strong></strong><a href="http://msdn.microsoft.com/perf" target="_blank">http://msdn.microsoft.com/perf</a>。</p>
<p>在应用程序的设计中定义现实的性能要求并识别潜在的问题显然是重要的，但是性能问题通常只在编写代码之后对其进行测试时出现。在这种情况下，您可以使用一些工具和技术来跟踪性能问题。</p>
<p>本章分析如何设计和调整您的智能客户端应用程序以获得最佳性能。它讨论了许多设计和体系结构问题（包括线程处理和缓存注意事项），并且分析了如何增强应用程序的 Windows 窗体部分的性能。本章还介绍了您可以用来跟踪和诊断智能客户端应用程序性能问题的一些技术和工具。</p>
<a name="EVC"></a>
<h2>针对性能进行设计</h2>
<p>您可以在应用程序设计或体系结构级完成许多工作，以确保智能客户端应用程序具有良好的性能。您应该确保在设计阶段尽可能早地制定现实的且可度量的性能目标，以便评估设计折衷，并且提供最划算的方法来解决性能问题。只要可能，性能目标就应该基于实际的用户和业务要求，因为这些要求受到应用程序所处的操作环境的强烈影响。性能建模是一种结构化的且可重复的过程，您可以使用该过程来管理您的应用程序并确保其实现性能目标。有关详细信息，请参阅 <em>Improving .NET Application Performance and Scalability</em> 中的第 2 章&ldquo;Performance Modeling&rdquo;，网址为：<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt02.asp" target="_blank">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt02.asp</a>。</p>
<p>智能客户端通常是较大的分布式应用程序的组成部分。很重要的一点是在完整应用程序的上下文中考虑智能客户端应用程序的性能，包括该客户端应用程序使用的所有位于网络中的资源。微调并优化应用程序中的每一个组件通常是不必要或不可能的。相反，性能调整应该基于优先级、时间、预算约束和风险。一味地追求高性能通常并不是一种划算的策略。</p>
<p>智能客户端还将需要与用户计算机上的其他应用程序共存。当您设计智能客户端应用程序时，您应该考虑到您的应用程序将需要与客户端计算机上的其他应用程序共享系统资源，例如，内存、CPU 时间和网络利用率。</p>
<p><strong>注</strong>有关设计可伸缩的高性能远程服务的信息，请参阅<strong></strong><em>Improving .NET Performance and Scalability</em>，网址为：<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenet.asp" target="_blank">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenet.asp</a>。本指南包含有关如何优化 .NET 代码以获得最佳性能的详细信息。</p>
<p>要设计高性能的智能客户端，请考虑下列事项： </p>
<table cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>在适当的位置缓存数据</strong>。数据缓存可以显著改善智能客户端应用程序的性能，使您可以在本地使用数据，而不必经常从网络检索数据。但是，敏感数据或频繁更改的数据通常不适合进行缓存。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>优化网络通讯</strong>。如果通过&ldquo;健谈的&rdquo;接口与远程层服务进行通讯，并且借助于多个请求/响应往返行程来执行单个逻辑操作，则可能消耗系统和网络资源，从而导致低劣的应用程序性能。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>有效地使用线程</strong>。如果您使用用户界面 (UI) 线程执行阻塞 I/O 绑定调用，则 UI 似乎不对用户作出响应。因为创建和关闭线程需要系统开销，所以创建大量不必要的线程可能导致低劣的性能。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>有效地使用事务</strong>。如果客户端具有本地数据，则使用原子事务可帮助您确保该数据是一致的。因为数据是本地的，所以事务也是本地的而不是分布式的。对于脱机工作的智能客户端而言，对本地数据进行的任何更改都是暂时的。客户端在重新联机时需要同步更改。对于非本地数据而言，在某些情况下可以使用分布式事务（例如，当服务位于具有良好连接性的同一物理位置并且服务支持它时）。诸如 Web 服务和消息队列之类的服务不支持分布式事务。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>优化应用程序启动时间</strong>。较短的应用程序启动时间使用户可以更为迅速地开始与应用程序交互，从而使用户立刻对应用程序的性能和可用性产生好感。应该对您的应用程序进行适当的设计，以便在应用程序启动时仅加载那些必需的程序集。因为加载每个程序集都会引起性能开销，所以请避免使用大量程序集。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>有效地管理可用资源</strong>。低劣的设计决策（例如，实现不必要的完成器，未能在 <strong>Dispose</strong> 方法中取消终止，或者未能释放非托管资源）可能导致在回收资源时发生不必要的延迟，并且可能造成使应用程序性能降低的资源泄漏。如果应用程序未能正确地释放资源，或者应用程序显式强制进行垃圾回收，则可能会妨碍 CLR 有效地管理内存。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>优化</strong><strong> Windows </strong><strong>窗体性能</strong>。智能客户端应用程序依靠 Windows 窗体来提供内容丰富且响应迅速的用户界面.您可以使用多种技术来确保 Windows 窗体提供最佳性能。这些技术包括降低用户界面的复杂性，以及避免同时加载大量数据。 </p>
            </td>
        </tr>
    </tbody>
</table>
<p>在许多情况下，从用户角度感受到的应用程序性能起码与应用程序的实际性能同样重要。您可以通过对设计进行某些特定的更改来创建在用户看来性能高得多的应用程序，例如：使用后台异步处理（以使 UI 能作出响应）；显示进度栏以指示任务的进度；提供相应的选项以便用户取消长期运行的任务。</p>
<p>本节将专门详细讨论这些问题。</p>
<h3>数据缓存原则</h3>
<p>缓存是一种能够改善应用程序性能并提供响应迅速的用户界面的重要技术。您应该考虑下列选项： </p>
<table cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>缓存频繁检索的数据以减少往返行程</strong>。如果您的应用程序必须频繁地与网络服务交互以检索数据，则应该考虑在客户端缓存数据，从而减少通过网络重复获取数据的需要。这可以极大地提高性能，提供对数据的近乎即时的访问，并且消除了可能对智能客户端应用程序性能造成不利影响的网络延迟和中断风险。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>缓存只读引用数据</strong>。只读引用数据通常是理想的缓存对象。此类数据用于提供进行验证和用户界面显示所需的数据，例如，产品说明、ID 等等。因为客户端无法更改此类数据，所以通常可以在客户端缓存它而无须进行任何进一步的特殊处理。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>缓存要发送给位于网络上的服务的数据</strong>。您应该考虑缓存要发送给位于网络上的服务的数据。例如，如果您的应用程序允许用户输入由在多个窗体中收集的一些离散数据项组成的定单信息，则请考虑允许用户输入全部数据，然后在输入过程的结尾在一个网络调用中发送定单信息。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>尽量少地缓存高度不稳定的数据</strong>。在缓存任何不稳定的数据之前，您需要考虑在其变得陈旧或者由于其他原因变得不可用之前，能够将其缓存多长时间。如果数据高度不稳定并且您的应用程序依赖于最新信息，则或许只能将数据缓存很短一段时间（如果可以缓存）。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>尽量少地缓存敏感数据</strong>。您应该避免在客户端上缓存敏感数据，因为在大多数情况下，您无法保证客户端的物理安全。但是，如果您必须在客户端上缓存敏感数据，则您通常将需要加密数据，该操作本身也会影响性能。 </p>
            </td>
        </tr>
    </tbody>
</table>
<p>有关数据缓存的其他问题的详细信息，请参阅本指南的<a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter2HandlingData.mspx">第 2 章</a>。另请参阅 <em>Improving .NET Application Performance and Scalability</em> 的第 3 章&ldquo;Design Guidelines for Application Performance&rdquo;(<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt03.asp" target="_blank">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt03.asp</a>) 的&ldquo;Caching&rdquo;一节以及 <em>Improving .NET Application Performance and Scalability</em> 的第 4 章&ldquo;Architecture and Design Review of .NET Application for Performance and Scalability&rdquo;(<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt04.asp" target="_blank">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpag/html/scalenetchapt04.asp</a>)。</p>
<h3>网络通讯原则</h3>
<p>您将面临的另一个决策是如何设计和使用网络服务，例如，Web 服务。特别地，您应该考虑与网络服务交互的粒度、同步性和频率。要获得最佳的性能和可伸缩性，您应该在单个调用中发送更多的数据，而不是在多个调用中发送较少量的数据。例如，如果您的应用程序允许用户在定单中输入多个项，则较好的做法是为所有项收集数据，然后将完成的采购定单一次性发送给服务，而不是在多个调用中发送单个项的详细信息。除了降低与进行大量网络调用相关联的系统开销以外，这还可以减少服务和/或客户端内的复杂状态管理的需要。</p>
<p>应该将您的智能客户端应用程序设计为尽可能地使用异步通讯，因为这将有助于使用户界面快速响应以及并行执行任务。有关如何使用 <strong>BeginInvoke</strong> 和 <strong>EndInvoke</strong> 方法异步启动调用和检索数据的详细信息，请参阅&ldquo;Asynchronous Programming Overview&rdquo;(<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpovrasynchronousprogrammingoverview.asp" target="_blank">http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpovrasynchronousprogrammingoverview.asp</a>)。</p>
<p><strong>注</strong>有关设计和构建偶尔连接到网络的智能客户端应用程序的详细信息，请参阅<a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter3GettingConnected.mspx">第 3 章&ldquo;建立连接&rdquo;</a>和<a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter4OccConnSC.mspx">第 4 章&ldquo;偶尔连接的智能客户端&rdquo;</a>。</p>
<h3>线程处理原则</h3>
<p>在应用程序内使用多个线程可能是一种提高其响应性和性能的好方法。特别地，您应该考虑使用线程来执行可以在后台安全地完成且不需要用户交互的处理。通过在后台执行此类工作，可以使用户能够继续使用应用程序，并且使应用程序的主用户界面线程能够维持应用程序的响应性。</p>
<p>适合于在单独的线程上完成的处理包括： </p>
<table cellspacing="0" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>应用程序初始化</strong>。请在后台线程上执行漫长的初始化，以便用户能够尽快地与您的应用程序交互，尤其是在应用程序功能的重要或主要部分并不依赖于该初始化完成时。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>远程服务调用</strong>。请在单独的后台线程上通过网络进行所有远程调用。很难（如果不是无法）保证位于网络上的服务的响应时间。在单独的线程上执行这些调用可以减少发生网络中断或延迟的风险，从而避免对应用程序性能造成不利影响。 </p>
            </td>
        </tr>
        <tr>
            <td class="listBullet" valign="top">&bull;</td>
            <td class="listItem">
            <p><strong>IO </strong><strong>绑定处理</strong>。应该在单独的线程上完成诸如在磁盘上搜索和排序数据之类的处理。通常，这种工作要受到磁盘 I/O 子系统而不是处理器可用性的限制，因此当该工作在后台执行时，您的应用程序可以有效地维持其响应性。 </p>
            </td>
        </tr>
    </tbody>
</table>
<p>尽管使用多个线程的性能好处可能很显著，但需要注意，线程使用它们自己的资源，并且使用太多的线程可能给处理器（它需要管理线程之间的上下文切换）造成负担。要避免这一点，请考虑使用线程池，而不是创建和管理您自己的线程。线程池将为您有效地管理线程，重新使用现有的线程对象，并且尽可能地减小与线程创建和处置相关联的系统开销。</p>
<p>如果用户体验受到后台线程所执行的工作的影响，则您应该总是让用户了解工作的进度。以这种方式提供反馈可以增强用户对您的应用程序的性能的感觉，并且防止他或她假设没有任何事情发生。请努力确保用户可以随时取消漫长的操作。</p>
<p>您还应该考虑使用 <strong>Application</strong> 对象的 <strong>Idle</strong> 事件来执行简单的操作。<strong>Idle</strong> 事件提供了使用单独的线程来进行后台处理的简单替代方案。当应用程序不再有其他用户界面消息需要处理并且将要进入空闲状态时，该事件将激发。您可以通过该事件执行简单的操作，并且利用用户不活动的情况。例如：</p>
<p><strong>[C#]</strong></p>
<pre class="codeSample">public Form1() 
{ 
InitializeComponent(); 
Application.Idle += new EventHandler( OnApplicationIdle ); 
} 
private void OnApplicationIdle( object sender, EventArgs e ) 
{ 
} 
</pre>
<p><strong>[Visual Basic .NET]</strong></p>
<pre class="codeSample">Public Class Form1 
    Inherits System.Windows.Forms.Form 
    Public Sub New() 
        MyBase.New() 
        InitializeComponent() 
        AddHandler Application.Idle, AddressOf OnApplicationIdle 
    End Sub 
    Private Sub OnApplicationIdle(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    End Sub 
End Class 
</pre>
<p><strong>注</strong>有关在智能客户端中使用多个线程的详细信息，请参阅<a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter6UsingMultThr.mspx">第 6 章&ldquo;使用多个线程&rdquo;</a>。</p>
<h3>事务原则</h3>
<p>事务可以提供重要的支持，以确保不会违反业务规则并维护数据一致性。事务可以确保一组相关任务作为一个单元成功或失败。您可以使用事务来维护本地数据库和其他资源（包括消息队列的队列）之间的一致性。</p>
<p>对于需要在网络连接不可用时使用脱机缓存数据的智能客户端应用程序，您应该将事务性数据排队，并且在网络连接可用时将其与服务器进行同步。</p>
<p>您应该避免使用涉及到位于网络上的资源的分布式事务，因为这些情况可能导致与不断变化的网络和资源响应时间有关的性能问题。如果您的应用程序需要在事务中涉及到位于网络上的资源，则应该考虑使用补偿事务，以便使您的应用程序能够在本地事务失败时取消以前的请求。尽管补偿事务在某些情况下可能不适用，但它们使您的应用程序能够按照松耦合方式在事务的上下文内与网络资源交互，从而减少了不在本地计算机控制之下的资源对应用程序的性能造成不利影响的可能性。</p>
<p><strong>注</strong>有关在智能客户端中使用事务的详细信息，请参阅<a href="http://www.microsoft.com/china/msdn/library/architecture/architecture/architecturetopic/SCArchDeGuide/Chapter3GettingConnected.mspx">第 3 章&ldquo;建立连接&rdquo;</a>。</p>
<h3>优化应用程序启动时间</h3>
<p>快速的应用程序启动时间几乎可以使用户立即开始与应用程序交互，从而使用户立刻对应用程序的性能和可用性产生好感。</p>
<p>当应用程序启动时，首先加载 CLR，再加载应用程序的主程序集，随后加载为解析从应用程序的主窗体中引用的对象的类型所需要的所有程序集。CLR 在该阶段<em>不会</em> 加载所有相关程序集；它仅加载包含主窗体类上的成员变量的类型定义的程序集。在加载了这些程序集之后，实时 (JIT) 编译器将在方法运行时编译方法的代码（从 <strong>Main</strong> 方法开始）。同样，JIT 编译器<em>不会</em> 编译您的程序集中的所有代码。相反，将根据需要逐个