<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_flyingfish</title><subtitle type="text">——天下大事必做于细</subtitle><id>http://feed.cnblogs.com/blog/u/22124/rss</id><updated>2011-04-27T06:28:49Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/22124/rss"/><entry><id>http://www.cnblogs.com/flyingfish/archive/2011/04/27/2030377.html</id><title type="text">基于陕西省地理信息公共服务平台的2011西安世园会电子地图正式发布</title><summary type="text">2011西安世园会电子地图 http://emap.shasm.gov.cn:88/expomap/基于陕西省地理信息公共服务平台的2011西安世园会电子地图正式发布，前端开发采用ArcGIS Server Silverlight API。欢迎技术网友提出改进意见。----------------------------------------------------------------------陕西测绘局针对世园会推出在线电子地图http://www.sbsm.gov.cn/article/chyw/201104/20110400081951.shtml来源：陕西测绘局 时间：2011</summary><published>2011-04-27T06:26:00Z</published><updated>2011-04-27T06:26:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2011/04/27/2030377.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2011/04/27/2030377.html"/><content type="html">&lt;p&gt;&lt;a href="http://emap.shasm.gov.cn:88/expomap/"&gt;2011西安世园会电子地图 http://emap.shasm.gov.cn:88/expomap/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;基于陕西省地理信息公共服务平台的2011西安世园会电子地图正式发布，前端开发采用ArcGIS Server Silverlight API。&lt;/p&gt;&lt;p&gt;欢迎技术网友提出改进意见。&lt;/p&gt;&lt;p&gt;----------------------------------------------------------------------&lt;/p&gt;&lt;p&gt;陕西测绘局针对世园会推出在线电子地图&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sbsm.gov.cn/article/chyw/201104/20110400081951.shtml"&gt;http://www.sbsm.gov.cn/article/chyw/201104/20110400081951.shtml&lt;/a&gt;&lt;/p&gt;&lt;div class="sourcebg"&gt;&lt;center&gt;来源：&lt;script language="JavaScript"&gt;// &lt;![CDATA[document.write(author);// ]]&gt;&lt;/script&gt;陕西测绘局 时间：&lt;script language="JavaScript"&gt;// &lt;![CDATA[document.write(tm);// ]]&gt;&lt;/script&gt;2011-04-26 12:28 &lt;/center&gt;&lt;script language="JavaScript"&gt;// &lt;![CDATA[function doZoom(size){document.getElementById('zoom').style.fontSize=size+'px';}// ]]&gt;&lt;/script&gt;&lt;/div&gt;&lt;!----&gt;&lt;table cellpadding="0" cellspacing="0" class="aarticle"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="content" id="zoom"&gt;&lt;br /&gt;西安世园会开幕在即，为了让社会公众更直观地了解世园会，满足公众对世园会园区及周边交通、餐饮、住宿等方面的信息需求，陕西测绘局推出&lt;a target="-blank" href="http://emap.shasm.gov.cn:88/expomap/"&gt;西安世园会专版在线电子地图系统&lt;/a&gt;。目前，公众可在陕西测绘局门户网站通过该系统查看、打印西安世园会专版在线电子地图。&lt;p class="contentarticle"&gt;&amp;nbsp;&lt;/p&gt;&lt;p class="contentarticle"&gt;西安世园会专版在线电子地图系统以陕西省地理信息公共服务平台的地理底图为背景，以省测绘局制作的遥感影像图为核心，为公众游览世园会提供方便、快捷的电子地图服务。通过该系统，公众可以掌握世园会场馆分布、周边路况信息，以及停车场、饮水处、餐厅、银行等园内设施的信息。此外，陕西测绘局重视该系统的地图界面制作交互性和用户体验，公众可以从电子地图中直接获取四大主题建筑、三大服务区、多个展园的图片和介绍和园区内的路线图。 &lt;/p&gt;&lt;p class="contentarticle"&gt;世园会专版电子地图的推出，是陕西测绘局利用陕西省地理信息公共服务平台为世园会这一国际盛会提供的针对性服务，填补了世园会专版电子地图的空白。今后，陕西测绘局将不定期更新航拍影像图，添加园区的相应资料，更好的为公众提供地图服务。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/2030377.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2011/04/27/2030377.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flyingfish/archive/2011/02/24/1963864.html</id><title type="text">Toad  Connecting: &amp;quot;cannot load OCI DLL: C:\oracle\product\10.2.0\db_2\BIN\oci.dll&amp;quot;</title><summary type="text">http://toadfororacle.com/thread.jspa?threadID=24227Thread: Connecting: "揅annot load OCI DLL: C:\oracle\product\10.2.0\db_2\BIN\oci.dll" Reply to this Thread Search Forum Recommend as KB Document --&gt; Back to Thread List Replies: 5 - Pages: 1 - Last Post: Apr 30, 2010 1:13 PM by: Frank_As</summary><published>2011-02-24T07:16:00Z</published><updated>2011-02-24T07:16:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2011/02/24/1963864.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2011/02/24/1963864.html"/><content type="html">&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="99%"&gt;&lt;p class="jive"&gt;&lt;a href="http://toadfororacle.com/thread.jspa?threadID=24227"&gt;http://toadfororacle.com/thread.jspa?threadID=24227&lt;/a&gt;&lt;/p&gt;&lt;p class="jive"&gt;Thread: Connecting: "揅annot load OCI DLL: C:\oracle\product\10.2.0\db_2\BIN\oci.dll" &lt;/p&gt;&lt;/td&gt;&lt;td width="1%"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="jive"&gt;&lt;table cellpadding="0" summary="Buttons" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?threadID=24227"&gt;&lt;img height="16" width="16" src="http://www.cnblogs.cc2/images/reply-16x16.gif" alt="Reply to this Thread" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?threadID=24227" id="jive-reply-thread"&gt;Reply to this Thread&lt;/a&gt; &lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/search!default.jspa?objID=f1096"&gt;&lt;img height="16" width="16" src="http://www.cnblogs.cc2/images/search-16x16.gif" alt="Search Forum" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/search!default.jspa?objID=f1096"&gt;Search Forum&lt;/a&gt; &lt;/td&gt;&lt;!--&lt;td class="jive-icon"&gt;                    &lt;a href="recommendationCreate!default.jspa?forumID=1096&amp;amp;threadID=24227" _mce_href="recommendationCreate!default.jspa?forumID=1096&amp;amp;threadID=24227"                     title="Click to recommend this thread to become a new knowledge base document."                     &gt;&lt;img src="images/recommend-16x16.gif" _mce_src="images/recommend-16x16.gif" width="16" height="16" border="0" alt="Click to recommend this thread to become a new knowledge base document."&gt;&lt;/a&gt;                &lt;/td&gt;&lt;td class="jive-icon-label"&gt;                    &lt;a href="recommendationCreate!default.jspa?forumID=1096&amp;amp;threadID=24227" _mce_href="recommendationCreate!default.jspa?forumID=1096&amp;amp;threadID=24227"                     title="Click to recommend this thread to become a new knowledge base document."                     &gt;Recommend as KB Document&lt;/a&gt;                &lt;/td&gt;--&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/forum.jspa?forumID=1096"&gt;&lt;img height="16" width="16" src="http://www.cnblogs.cc2/images/arrow-left-16x16.gif" alt="Back to Thread List" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/forum.jspa?forumID=1096"&gt;Back to Thread List&lt;/a&gt; &lt;/td&gt;&lt;td&gt;&lt;a href="http://www.cnblogs.cc2/rss.jspa?feed=rss/rssmessages.jspa?threadID=24227" title="Point your RSS reader here for a feed of the latest messages in this thread"&gt;&lt;img height="16" width="16" src="http://www.cnblogs.cc2/images/feed-icon-16x16.gif" alt="Point your RSS reader here for a feed of the latest messages in all forums" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="99%"&gt;&lt;div class="jive"&gt;&lt;div class="jive"&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th class="jive"&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;thead&gt;&lt;tr&gt;&lt;th width="1%"&gt;&lt;a href="http://www.cnblogs.cc2/thread.jspa?threadID=24227" title="Permlink"&gt;&lt;img height="16" width="16" src="http://www.cnblogs.cc2/images/permlink-16x16.gif" alt="Permlink" border="0" /&gt;&lt;/a&gt; &lt;/th&gt;&lt;th width="97%"&gt;&lt;nobr&gt;Replies: 5 &lt;/nobr&gt;- &lt;nobr&gt;Pages: 1 &lt;/nobr&gt;- &lt;nobr&gt;&lt;a href="http://www.cnblogs.cc2/thread.jspa?threadID=24227&amp;amp;tstart=0&amp;amp;messageID=99800#99800" title="by: Frank_Assis"&gt;Last Post&lt;/a&gt;: Apr 30, 2010 1:13 PM by: Frank_Assis &lt;/nobr&gt;&lt;/th&gt;&lt;th nowrap="nowrap" width="1%"&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div id="jive-message-holder"&gt;&lt;div class="jive"&gt;&lt;div class="jive"&gt;&lt;div class="jive"&gt;&lt;table width="100%" cellpadding="0" summary="Message" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top" class="jive" id="jive-message-89365"&gt;&lt;td width="1%" class="jive"&gt;&lt;table width="210" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="210"&gt;&lt;span class="jive"&gt;elkeja99 &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td width="99%" class="jive"&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="1%"&gt;&lt;/td&gt;&lt;td width="97%"&gt;&lt;span class="jive"&gt;&lt;a name="89365"&gt;&lt;/a&gt;Connecting: "揅annot load OCI DLL: C:\oracle\product\10.2.0\db_2\BIN\oci.dll" &lt;/span&gt;&lt;br /&gt;&lt;span class="jive"&gt;Posted: Dec 11, 2009 9:40 AM &lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap" width="1%" class="jive"&gt;&lt;/td&gt;&lt;td width="1%"&gt;&lt;div class="jive"&gt;&lt;table cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?messageID=89365" title="Click to reply to this thread"&gt;&lt;img height="16" width="16" src="http://www.cnblogs.cc2/images/reply-16x16.gif" alt="Click to reply to this thread" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?messageID=89365" title="Click to reply to this thread"&gt;Reply&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4" style="border-top: #ccc 1px solid;"&gt;&lt;br /&gt;64 bit Vista loaded with 64 bit Oracle Database 10.2.0.4 for Windows and Toad For Oracle 10.0.0.41. Toad Install appears to go fine. But when attempting to connect to the db, I get "Cannot load OCI DLL: C:\oracle\product\10.2.0\db_2\BIN\oci.dll". The file is there. I have googled on this and found some saying Toad is 32 bit and does not work with 64 bit Oracle, but have found other entries saying Toad works with both 32 bit and 64 bit Oracle. I've searched asktoad.com for "OCI dll" and "Cannot load OCI DLL" but finding nothing about this error. There is an entry about an error "Could not locate OCI DLL" during installation ?but that's a different error message and different operation. Using SQL*Plus, I can connect to and use the db with no issues. I see in asktoad that "Toad is supported on Windows NT 4.0, 2000, XP, and 2003 clients" ?is this error a symptom of Toad not being supported on Vista? Any advice is appreciated. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4" style="border-top: #ccc 1px solid;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="jive"&gt;&lt;div class="jive"&gt;&lt;div class="jive"&gt;&lt;table width="100%" cellpadding="0" summary="Message" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top" class="jive" id="jive-message-89366"&gt;&lt;td width="1%" class="jive"&gt;&lt;table width="210" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="210"&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="1%" style="padding: 0px;"&gt;&lt;nobr&gt;&lt;a href="http://www.cnblogs.cc2/profile.jspa?userID=410" title="HillbillyToad"&gt;HillbillyToad&lt;/a&gt; &lt;/nobr&gt;&lt;/td&gt;&lt;td width="99%" style="padding: 0px;"&gt;&lt;img src="http://www.cnblogs.cc2/images/status/enthusiast_icon.gif" border="0" title="Enthusiast" class="jive" /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.cc2/avatar-display.jspa?avatarID=94&amp;amp;file=av.png" border="0" class="jive" /&gt; &lt;br /&gt;&lt;br /&gt;&lt;span class="jive"&gt;Posts: 589 &lt;br /&gt;Registered: 8/10/06 &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td width="99%" class="jive"&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="1%"&gt;&lt;/td&gt;&lt;td width="97%"&gt;&lt;span class="jive"&gt;&lt;a name="89366"&gt;&lt;/a&gt;RE: Connecting: ""Cannot load OCI DLL: &lt;br /&gt;C:\oracle\product\10.2.0\db_2\BIN\oci.dll" &lt;/span&gt;&lt;br /&gt;&lt;span class="jive"&gt;Posted: Dec 11, 2009 9:51 AM &amp;nbsp; &lt;nobr&gt;&lt;a href="http://www.cnblogs.cc2/message.jspa?messageID=89365#89365" title="in response to: elkeja99"&gt;&lt;img height="10" width="10" src="http://www.cnblogs.cc2/images/up-10x10.gif" border="0" /&gt;&lt;/a&gt; in response to: &lt;a href="http://www.cnblogs.cc2/message.jspa?messageID=89365#89365" title="Go to message"&gt;elkeja99&lt;/a&gt; &lt;/nobr&gt;&lt;nobr&gt;&lt;/nobr&gt;&lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap" width="1%" class="jive"&gt;&lt;/td&gt;&lt;td width="1%"&gt;&lt;div class="jive"&gt;&lt;table cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?messageID=89366" title="Click to reply to this thread"&gt;&lt;img height="16" width="16" src="http://www.cnblogs.cc2/images/reply-16x16.gif" alt="Click to reply to this thread" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?messageID=89366" title="Click to reply to this thread"&gt;Reply&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4" style="border-top: #ccc 1px solid;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Toad works with both 32 and 64 bit DATABASE&lt;br /&gt;&lt;br /&gt;Toad only works with 32 bit CLIENT&lt;br /&gt;&lt;br /&gt;If you need 64 bit client for other apps, you can install both 32 and 64 bit&lt;br /&gt;client on a single machine and just tell Toad to use the 32 bit one.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4" style="border-top: #ccc 1px solid;"&gt;Follow me on twitter &lt;a href="http://twitter.com/hillbillyToad"&gt;@hillbillyToad&lt;/a&gt; &lt;br /&gt;Check out &lt;a href="http://www.thatjeffsmith.com/"&gt;my blog&lt;/a&gt; &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="jive"&gt;&lt;div class="jive"&gt;&lt;div class="jive"&gt;&lt;table width="100%" cellpadding="0" summary="Message" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top" class="jive" id="jive-message-89367"&gt;&lt;td width="1%" class="jive"&gt;&lt;table width="210" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="210"&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="1%" style="padding: 0px;"&gt;&lt;nobr&gt;&lt;a href="http://www.cnblogs.cc2/profile.jspa?userID=21395" title="jdorlon"&gt;jdorlon&lt;/a&gt; &lt;/nobr&gt;&lt;/td&gt;&lt;td width="99%" style="padding: 0px;"&gt;&lt;img src="http://www.cnblogs.cc2/images/status/guru_icon.gif" border="0" title="Guru" class="jive" /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span class="jive"&gt;Posts: 503 &lt;br /&gt;Registered: 10/30/09 &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td width="99%" class="jive"&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="1%"&gt;&lt;/td&gt;&lt;td width="97%"&gt;&lt;span class="jive"&gt;&lt;a name="89367"&gt;&lt;/a&gt;RE: Connecting: ""Cannot load OCI DLL: &lt;br /&gt;C:\oracle\product\10.2.0\db_2\BIN\oci.dll" &lt;/span&gt;&lt;br /&gt;&lt;span class="jive"&gt;Posted: Dec 11, 2009 9:52 AM &amp;nbsp; &lt;nobr&gt;&lt;a href="http://www.cnblogs.cc2/message.jspa?messageID=89365#89365" title="in response to: elkeja99"&gt;&lt;img height="10" width="10" src="http://www.cnblogs.cc2/images/up-10x10.gif" border="0" /&gt;&lt;/a&gt; in response to: &lt;a href="http://www.cnblogs.cc2/message.jspa?messageID=89365#89365" title="Go to message"&gt;elkeja99&lt;/a&gt; &lt;/nobr&gt;&lt;nobr&gt;&lt;/nobr&gt;&lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap" width="1%" class="jive"&gt;&lt;/td&gt;&lt;td width="1%"&gt;&lt;div class="jive"&gt;&lt;table cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?messageID=89367" title="Click to reply to this thread"&gt;&lt;img height="16" width="16" src="http://www.cnblogs.cc2/images/reply-16x16.gif" alt="Click to reply to this thread" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?messageID=89367" title="Click to reply to this thread"&gt;Reply&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4" style="border-top: #ccc 1px solid;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Vista is no problem.?Toad can work with a 64 bit Oracle server, but you have&lt;br /&gt;to use a 32 bit Oracle client.?We won&amp;rsquo;t have the ability to use a 64 bit&lt;br /&gt;client until our development environment (Delphi) has a 64 bit version.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4" style="border-top: #ccc 1px solid;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="jive"&gt;&lt;div class="jive"&gt;&lt;div class="jive"&gt;&lt;table width="100%" cellpadding="0" summary="Message" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top" class="jive" id="jive-message-89368"&gt;&lt;td width="1%" class="jive"&gt;&lt;table width="210" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="210"&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="1%" style="padding: 0px;"&gt;&lt;nobr&gt;&lt;a href="http://www.cnblogs.cc2/profile.jspa?userID=7596" title="GTDG"&gt;GTDG&lt;/a&gt; &lt;/nobr&gt;&lt;/td&gt;&lt;td width="99%" style="padding: 0px;"&gt;&lt;img src="http://www.cnblogs.cc2/images/status/enthusiast_icon.gif" border="0" title="Enthusiast" class="jive" /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.cc2/avatar-display.jspa?avatarID=387&amp;amp;file=av.png" border="0" class="jive" /&gt; &lt;br /&gt;&lt;br /&gt;&lt;span class="jive"&gt;Posts: 112 &lt;br /&gt;Registered: 11/30/07 &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td width="99%" class="jive"&gt;&lt;table width="100%" cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td width="1%"&gt;&lt;/td&gt;&lt;td width="97%"&gt;&lt;span class="jive"&gt;&lt;a name="89368"&gt;&lt;/a&gt;RE: Connecting: ""Cannot load OCI DLL: &lt;br /&gt;C:\oracle\product\10.2.0\db_2\BIN\oci.dll" &lt;/span&gt;&lt;br /&gt;&lt;span class="jive"&gt;Posted: Dec 11, 2009 9:52 AM &amp;nbsp; &lt;nobr&gt;&lt;a href="http://www.cnblogs.cc2/message.jspa?messageID=89365#89365" title="in response to: elkeja99"&gt;&lt;img height="10" width="10" src="http://www.cnblogs.cc2/images/up-10x10.gif" border="0" /&gt;&lt;/a&gt; in response to: &lt;a href="http://www.cnblogs.cc2/message.jspa?messageID=89365#89365" title="Go to message"&gt;elkeja99&lt;/a&gt; &lt;/nobr&gt;&lt;nobr&gt;&lt;/nobr&gt;&lt;/span&gt;&lt;/td&gt;&lt;td nowrap="nowrap" width="1%" class="jive"&gt;&lt;/td&gt;&lt;td width="1%"&gt;&lt;div class="jive"&gt;&lt;table cellpadding="0" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?messageID=89368" title="Click to reply to this thread"&gt;&lt;img height="16" width="16" src="http://www.cnblogs.cc2/images/reply-16x16.gif" alt="Click to reply to this thread" border="0" /&gt;&lt;/a&gt; &lt;/td&gt;&lt;td class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/post!reply.jspa?messageID=89368" title="Click to reply to this thread"&gt;Reply&lt;/a&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4"&gt;&lt;div class="jive"&gt;&lt;table width="100%" cellpadding="3" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="1%"&gt;&lt;a href="http://www.cnblogs.cc2/servlet/JiveServlet/download/1096-24227-89368-7704/Picture%20(Device%20Independent%20Bitmap)%201.jpg"&gt;&lt;img src="http://www.cnblogs.cc2/servlet/JiveServlet?attachImage=true&amp;amp;contentType=image%2Fjpeg&amp;amp;attachment=7704" alt="Attachment" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td width="98%" class="jive"&gt;&lt;a href="http://www.cnblogs.cc2/servlet/JiveServlet/download/1096-24227-89368-7704/Picture%20(Device%20Independent%20Bitmap)%201.jpg"&gt;Picture (Device Independent Bitmap) 1.jpg&lt;/a&gt; (26.6 K) &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="4" style="border-top: #ccc 1px solid;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Toad requires a 32 bit Oracle client.&lt;br /&gt;&lt;br /&gt;From the Toad Getting Started Guide:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/1963864.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2011/02/24/1963864.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flyingfish/archive/2011/02/24/1963852.html</id><title type="text">ArcSDE启动遇到ORA-12560: TNS: 协议适配器错误解决办法</title><summary type="text">ArcSDE启动遇到ORA-12560: TNS: 协议适配器错误解决办法http://forums.esri.com/Thread.asp?c=158&amp;f=2285&amp;t=243013Installation of ArcSDE 9.2 on 64 bit Oracle 10gR2AuthorDejan KrstevskiDateJan 08, 2008MessageI have problem starting ArcSDE service on the following configuration: Operating System: Windows 2003 64bit</summary><published>2011-02-24T07:05:00Z</published><updated>2011-02-24T07:05:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2011/02/24/1963852.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2011/02/24/1963852.html"/><content type="html">&lt;p&gt;ArcSDE启动遇到ORA-12560: TNS: 协议适配器错误解决办法&lt;/p&gt;&lt;p&gt;&lt;a href="http://forums.esri.com/Thread.asp?c=158&amp;amp;f=2285&amp;amp;t=243013"&gt;http://forums.esri.com/Thread.asp?c=158&amp;amp;f=2285&amp;amp;t=243013&lt;/a&gt;&lt;/p&gt;&lt;table class="forum"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="postvalue"&gt;Installation of ArcSDE 9.2 on 64 bit Oracle 10&lt;span&gt;g&lt;/span&gt;R2&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Author&lt;/th&gt;&lt;td class="postvalue"&gt;Dejan Krstevski&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Date&lt;/th&gt;&lt;td class="postvalue"&gt;Jan 08, 2008&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Messa&lt;span&gt;g&lt;/span&gt;e&lt;/th&gt;&lt;td class="postvalue"&gt;&lt;p&gt;I have problem startin&lt;span&gt;g&lt;/span&gt; ArcSDE service on the followin&lt;span&gt;g&lt;/span&gt; confi&lt;span&gt;g&lt;/span&gt;uration: &lt;br /&gt;&lt;br /&gt;Operatin&lt;span&gt;g&lt;/span&gt; System: Windows 2003 64bit R2 &lt;br /&gt;Database: Oracle 10&lt;span&gt;g&lt;/span&gt;R2 10.0.2.0.3 64bit and 32bit client on the same machine. &lt;br /&gt;Patches for Oracle 5500954, 5337014(up&lt;span&gt;g&lt;/span&gt;rade to 10.0.2.0.3) &lt;br /&gt;Oracle SID: sdedb &lt;br /&gt;Oracle 32bit Net service name: sdecl &lt;br /&gt;Installed ArcSDE; &lt;br /&gt;Post instalation completed; &lt;br /&gt;Direct connect is workin&lt;span&gt;g&lt;/span&gt;; &lt;br /&gt;Cannot start ArcSDE service, with followin&lt;span&gt;g&lt;/span&gt; error: &lt;br /&gt;&lt;br /&gt;Please check event lo&lt;span&gt;g&lt;/span&gt; or error lo&lt;span&gt;g&lt;/span&gt; files. &lt;br /&gt;Error startin&lt;span&gt;g&lt;/span&gt; esri_sde service(0) &lt;br /&gt;Could not start ArcSDE -- Check Network, $SDEHOME disk, DBMS settin&lt;span&gt;g&lt;/span&gt;s and dbinit &lt;br /&gt;.sde. &lt;br /&gt;&lt;br /&gt;Event viewer: &lt;br /&gt;&lt;br /&gt;The description for Event ID ( 110 ) in Source ( esri_sde ) cannot be found. The local computer may not have the necessary re&lt;span style="background-color: #ffd700;"&gt;gis&lt;/span&gt;try information or messa&lt;span&gt;g&lt;/span&gt;e DLL files to display messa&lt;span&gt;g&lt;/span&gt;es from a remote computer. You may be able to use the /AUXSOURCE= fla&lt;span&gt;g&lt;/span&gt; to retrieve this description; see Help and Support for details. The followin&lt;span&gt;g&lt;/span&gt; information is part of the event: esri_sde, Connection to RDBMS failed. &lt;br /&gt;&lt;br /&gt;sde_esri_sde.lo&lt;span&gt;g&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;------------------------------------------------------- &lt;br /&gt;ArcSDE 9.2 for Oracle10&lt;span&gt;g&lt;/span&gt; Build 1206 Fri Oct 19 08:31:29 2007 &lt;br /&gt;------------------------------------------------------- &lt;br /&gt;DB_open_instance()::db_connect (OCI8) error: &lt;span style="background-color: #ffd700;"&gt;12560&lt;/span&gt; &lt;br /&gt;init_DB DB_instance_open_as_dba: -51 &lt;br /&gt;DBMS error code: &lt;span style="background-color: #ffd700;"&gt;12560&lt;/span&gt; &lt;br /&gt;ORA-&lt;span style="background-color: #ffd700;"&gt;12560&lt;/span&gt;: TNS:protocol adapter error &lt;br /&gt;&lt;br /&gt;&lt;span&gt;gi&lt;/span&gt;om&lt;span&gt;g&lt;/span&gt;r_esri_sde.lo&lt;span&gt;g&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Tue Jan 08 14:41:09 2008 - ****** Spatial Database I/O Mana&lt;span&gt;g&lt;/span&gt;er ****** &lt;br /&gt;Tue Jan 08 14:41:09 2008 - SDE System Startup Initiated . . . &lt;br /&gt;Tue Jan 08 14:41:09 2008 - Validated System Paths. &lt;br /&gt;Tue Jan 08 14:41:09 2008 - SDE IOM&lt;span&gt;G&lt;/span&gt;R &lt;span&gt;g&lt;/span&gt;oin&lt;span&gt;g&lt;/span&gt; into back&lt;span&gt;g&lt;/span&gt;round . . . &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PATH = C:\oracle\product\10.2.0\client_1\bin;C:\oracle\product\10.2.0\db_1\bin; &lt;br /&gt;&lt;br /&gt;So Dirrect Connect is workin&lt;span&gt;g&lt;/span&gt; without any problems, but I cannot start the ArcSDE Service. ANY Ideas? &lt;br /&gt;&lt;br /&gt;Thank You!!!&amp;nbsp;&lt;/p&gt;&lt;p&gt;解决办法如下，关键是32-bit Oracle Client端安装情况下要更改dbinit.sde中的Oracle_SID为Local，并且不要在再用Post Install来启动服务。因为PostInstall又会把dbinit.sde改回去：&lt;/p&gt;&lt;table class="forum"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="postvalue"&gt;Re: Installation of ArcSDE 9.2 on 64 bit Oracle 10&lt;span&gt;g&lt;/span&gt;R2&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Author&lt;/th&gt;&lt;td class="postvalue"&gt;Dejan Krstevski&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Date&lt;/th&gt;&lt;td class="postvalue"&gt;Jan 25, 2008&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;Messa&lt;span&gt;g&lt;/span&gt;e&lt;/th&gt;&lt;td class="postvalue"&gt;Yes, actually all it was needed was to set LOCAL variable to 32 bit client on server, instead of ORACLE_SID variable in dbinit.sde.&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/1963852.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2011/02/24/1963852.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flyingfish/archive/2011/01/03/1925038.html</id><title type="text">【转】Javascript 获取链接(url)参数的方法</title><summary type="text">代码</summary><published>2011-01-03T14:38:00Z</published><updated>2011-01-03T14:38:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2011/01/03/1925038.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2011/01/03/1925038.html"/><content type="html">&lt;p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show('0e5ffc87-9bbb-477d-aa69-a54fda800aab')"&gt;&lt;div id="cnblogs_code_open_0e5ffc87-9bbb-477d-aa69-a54fda800aab" class="cnblogs_code_hide"&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #000000;"&gt;Javascript 获取链接(url)参数的方法&lt;br /&gt;作者: YITU.org     来源: YITU.org     时间: &lt;/span&gt;&lt;span style="color: #000000;"&gt;2007&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;02&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;26&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #000000;"&gt;34&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #000000;"&gt;58&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;摘要: 有时我们需要在客户端获取链接参数，一个常见的方法是将链接当做字符串，按照链接的格式分解，然后获取对应的参数值。本文给出的就是这个流程的具体实现方法。&lt;br /&gt;&lt;br /&gt;当然，我们也可以用正则直接匹配，文章中也给出了一个正则的例子。&lt;br /&gt;归类: Javascript,&lt;br /&gt;关键词: parameter, 参数, location.href, url, 链接, javascript,&lt;br /&gt;收藏本页到：&lt;br /&gt;有时我们需要在客户端获取链接参数，一个常见的方法是将链接当做字符串，按照链接的格式分解，然后获取对应的参数值。本文给出的就是这个流程的具体实现方法。&lt;br /&gt;&lt;br /&gt;当然，我们也可以用正则直接匹配，文章中也给出了一个正则的例子。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;--------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;点此浏览示例文件&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;--------------------------------------------------------------&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;分解链接的方式：&lt;br /&gt;Javascript:&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;script type&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;text/javascript&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 说明：Javascript 获取链接(url)参数的方法 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 整理：http://www.CodeBit.cn &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; getQueryString(name) &lt;br /&gt;{ &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 如果链接没有参数，或者链接中不存在我们要获取的参数，直接返回空 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(location.href.indexOf(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;==-&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;||&lt;/span&gt;&lt;span style="color: #000000;"&gt; location.href.indexOf(name&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;==-&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;    { &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;    } &lt;br /&gt; &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 获取链接中参数部分 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; queryString &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; location.href.substring(location.href.indexOf(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt; &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 分离参数对 ?key=value&amp;amp;key2=value2 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; parameters &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; queryString.split(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt; &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; pos, paraName, paraValue; &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;parameters.length; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;    { &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 获取等号位置 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        pos &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; parameters[i].indexOf(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(pos &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) { &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;continue&lt;/span&gt;&lt;span style="color: #000000;"&gt;; } &lt;br /&gt; &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 获取name 和 value &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        paraName &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; parameters[i].substring(&lt;/span&gt;&lt;span style="color: #000000;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;, pos); &lt;br /&gt;        paraValue &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; parameters[i].substring(pos &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt; &lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; 如果查询的name等于当前name，就返回当前值，同时，将链接中的+号还原成空格 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(paraName &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; name) &lt;br /&gt;        { &lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; unescape(paraValue.replace(&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;\+&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;g, &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)); &lt;br /&gt;        } &lt;br /&gt;    } &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;''&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;}; &lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;http://localhost/test.html?aa=bb&amp;amp;test=cc+dd&amp;amp;ee=ff &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;alert(getQueryString(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;test&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)); &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;script&amp;gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;用正则匹配的方式：&lt;br /&gt;Javascript:&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;script type&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;text/javascript&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;function&lt;/span&gt;&lt;span style="color: #000000;"&gt; getQueryStringRegExp(name) &lt;br /&gt;{ &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;var&lt;/span&gt;&lt;span style="color: #000000;"&gt; reg &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; RegExp(&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;(^|\\?|&amp;amp;)&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; name &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;=([^&amp;amp;]*)(\\s|&amp;amp;|$)&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;);   &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (reg.test(location.href)) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; unescape(RegExp.$&lt;/span&gt;&lt;span style="color: #000000;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;.replace(&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;\+&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;g, &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;)); &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;}; &lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;http://localhost/test.html?aa=bb&amp;amp;test=cc+dd&amp;amp;ee=ff &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;alert(getQueryStringRegExp(&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;test&lt;/span&gt;&lt;span style="color: #000000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;)); &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;--&amp;gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;script&amp;gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;script type="text/javascript"&gt;// &lt;![CDATA[ function getQueryStringRegExp(name) {     var reg = new RegExp("(^|\\?|&amp;)"+ name +"=([^&amp;]*)(\\s|&amp;|$)", "i");       if (reg.test(location.href)) return unescape(RegExp.$2.replace(/\+/g, " ")); return ""; };  //http://localhost/test.html?aa=bb&amp;test=cc+dd&amp;ee=ff alert(getQueryStringRegExp('test'));// ]]&gt;&lt;/script&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/1925038.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2011/01/03/1925038.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924320.html</id><title type="text">[转]VisualStudio LightSwitch 7大顶级功能</title><summary type="text">VisualStudio LightSwitch 7大顶级功能 2010年11月10日00:05 it168网站原创 作者：IT168 黄永兵译 编辑：胡铭娅 评论：0条 本文Tag： Visual Studio ASP.NET .NET   【IT168 专稿】微软最近发布了LightSwitch，它可以和Microsoft Visual Studio集成，成为Microsoft ...</summary><published>2011-01-02T15:22:00Z</published><updated>2011-01-02T15:22:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924320.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924320.html"/><content type="html">&lt;p&gt;VisualStudio LightSwitch 7大顶级功能&lt;/p&gt;  &lt;p&gt;2010年11月10日00:05 &lt;a href="http://www.it168.com/"&gt;it168网站&lt;/a&gt;原创&amp;#160; 作者：IT168 黄永兵译&amp;#160; 编辑：&lt;a href="http://archive.it168.com/user/%ba%fa%c3%fa%e6%ab/"&gt;胡铭娅&lt;/a&gt; 评论：&lt;a href="http://comment.it168.com/view/1/1123798-all-1.html"&gt;0条&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;本文Tag： &lt;a href="http://tech.it168.com/lists/5874/0/5874.shtml"&gt;Visual Studio&lt;/a&gt; &lt;a href="http://tech.it168.com/lists/5921/0/5921.shtml"&gt;ASP.NET&lt;/a&gt; &lt;a href="http://tech.it168.com/lists/10246/0/10246.shtml"&gt;.NET&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;#160;&amp;#160;&amp;#160; 【IT168 专稿】&lt;/b&gt;微软最近发布了LightSwitch，它可以和Microsoft Visual Studio集成，成为Microsoft Visual Studio 2010 IDE的一部分，也可以完全独立于Visual Studio 2010，引入LightSwitch是为了更好地创建以数据为中心的商业应用。&lt;/p&gt;  &lt;p&gt;大多数以数据为中心的商业应用CRUD(创建，读取，更新和删除)操作基本上都是相同的，在这种应用程序中，开发人员要一遍又一遍重复着相同的代码和类似的UI。&lt;/p&gt;  &lt;p&gt;Microsoft Visual Studio LightSwitch以屏幕类型的选择和屏幕数据的定义为中心，下面是LightSwitch提供的屏幕类型名单：&lt;/p&gt;  &lt;p&gt;1、新建数据屏幕&lt;/p&gt;  &lt;p&gt;2、搜索数据屏幕&lt;/p&gt;  &lt;p&gt;3、详细信息屏幕&lt;/p&gt;  &lt;p&gt;4、编辑网格屏幕&lt;/p&gt;  &lt;p&gt;5、列表和详细信息屏幕&lt;/p&gt;  &lt;p&gt;Lightswitch简化了数据源的定义，只需要添加合适的屏幕就可以了，有时也许要自定义业务逻辑。&lt;/p&gt;  &lt;p&gt;Microsoft Visual Studio Lightswitch可从这里&lt;a href="http://www.microsoft.com/visualstudio/en-us/lightswitch"&gt;下载&lt;/a&gt;，目前只发布了Beta版。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;· 快速开发以数据为中心的应用程序&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;使用LightSwitch开发时可以大大减少开发时间，开发人员在UI和数据访问上不用花费太多时间，因为数据屏幕都是现成的，它本身就可以实现数据访问，只有需要自定义时才需要开发人员的干预，这确保了两件事：&lt;/p&gt;  &lt;p&gt;1、以数据为中心的商业应用软件的快速和稳定地开发。&lt;/p&gt;  &lt;p&gt;2、最终产品可以很快交付给用户。&lt;/p&gt;  &lt;p&gt;下面是创建一个示例工作屏幕的步骤：&lt;/p&gt;  &lt;p&gt;1、创建存储数据的表，定义结构。&lt;/p&gt;  &lt;p&gt;2、选择“添加新屏幕”，在选择需要的屏幕，如图1所示。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="1" src="http://image20.it168.com/201011_500x375/325/89d9fb71ce6ffca7.jpg" /&gt;     &lt;br /&gt;图 1 添加新屏幕&lt;/p&gt;  &lt;p&gt;3、运行程序，你可以添加新的或基于你选择的搜索模块。&lt;/p&gt;  &lt;p&gt;综合考虑上述信息，你会明白使用LightSwitch开发以数据为中心的应用程序有多快。&lt;/p&gt;  &lt;p&gt;更易于决定应用程序是基于浏览器还是桌面应用程序&lt;/p&gt;  &lt;p&gt;只需要一次点击，即可确定你的应用程序是运行在桌面环境还是浏览器上，你一定会感到不可思议，在这个项目出现之前，这曾经是一个让人很纠结的问题，一旦确定是桌面应用程序，想要发布相应的基于浏览器的版本就很难了，只有靠开发人员自己动手修改，现在你只需要到项目的“属性”对话窗口中选择应用程序的类型即可，如图2所示。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="1" src="http://image20.it168.com/201011_500x375/325/6244e1cd6e23ad63.jpg" /&gt;     &lt;br /&gt;图 2 选择应用程序的类型&lt;/p&gt;  &lt;p&gt;图3显示了所选应用程序以桌面客户端运行时的截图。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="1" src="http://image20.it168.com/201011_500x375/325/4fb8669c801caa69.jpg" width="500" height="384" /&gt;     &lt;br /&gt;图 3 桌面客户端类型&lt;/p&gt;  &lt;p&gt;图4显示了所选应用程序在浏览器中运行时的截图。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="1" src="http://image20.it168.com/201011_500x375/325/eb4769b77b57297f.jpg" /&gt;     &lt;br /&gt;图 4 浏览器类型&lt;/p&gt;  &lt;p&gt;&lt;b&gt;· 支持多数据源&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;除了基本的数据源，如普通数据库外，你还可以在LightSwitch开发的应用程序中使用下列数据源：&lt;/p&gt;  &lt;p&gt;1、Sharepoint&lt;/p&gt;  &lt;p&gt;2、WCF RIA服务&lt;/p&gt;  &lt;p&gt;3、外部数据库&lt;/p&gt;  &lt;p&gt;4、SQL Azure&lt;/p&gt;  &lt;p&gt;图5显示了添加其它数据源的屏幕截图。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="支持多数据源" src="http://image20.it168.com/201011_500x375/325/bf265e36803dd7c.jpg" /&gt;     &lt;br /&gt;图 5 添加数据源向导&lt;/p&gt;  &lt;p&gt;&lt;b&gt;· 数据完整性和验证变得很简单&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;当你创建数据表时，你会发现有一些商业域数据类型，如EmailAddress，Money和PhoneNumber，这些商业域数据类型增强了数据完整性，因为这些字段的格式会很特殊，如@.com。&lt;/p&gt;  &lt;p&gt;另一个关于LightSwitch很美妙的事情是数据验证，验证是在屏幕上根据底层数据类型完成的，并会显示恰到好处的提示信息，如图6所示。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="支持多数据源" src="http://image20.it168.com/201011_500x375/325/4fc6b74d88669f9f.jpg" /&gt;     &lt;br /&gt;图 6 直接在屏幕上验证数据&lt;/p&gt;  &lt;p&gt;如果开发人员喜欢自定义特殊类型的验证方法，可以点击该列属性窗口中的CustomValidation链接，图7显示了一个示例。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="支持多数据源" src="http://image20.it168.com/201011_500x375/325/b64efff99f1cddf9.jpg" /&gt;     &lt;br /&gt;图 7 自定义验证方法&lt;/p&gt;  &lt;p&gt;&lt;b&gt;· 应用程序自定义&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;和传统的.NET程序一样，为了自定义UI，开发人员不用关闭运行中的应用程序，在输出屏幕上有一个选项叫做“自定义屏幕”，如图8所示，只需要点击它，就可以自定义屏幕了。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="支持多数据源" src="http://image20.it168.com/201011_500x375/325/1c9bdf5beb018ca6.jpg" /&gt;     &lt;br /&gt;图 8 自定义屏幕&lt;/p&gt;  &lt;p&gt;注意：仅当应用程序以调试模式运行时才可以使用此选项，当程序分发给最终用户使用时，这个选项是不可见的。 &lt;/p&gt;  &lt;p&gt;&lt;b&gt;· 构建在.NET框架之上&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;LightSwitch最值得称道的是它整个都是构建在.NET框架之上的，它的名字中包含了一个Light，暗示应用程序的UI是使用Silverlight生成的，数据检索是使用WCF RIA服务实现的，这给开发人员使用C#或Visual Basic编程提供了很大的灵活性。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;· 应用程序安全 – 认证&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Visual Studio LightSwitch应用程序支持下面的认证方法：&lt;/p&gt;  &lt;p&gt;1、表单&lt;/p&gt;  &lt;p&gt;2、窗口&lt;/p&gt;  &lt;p&gt;3、无&lt;/p&gt;  &lt;p&gt;转到项目属性窗口，选择“访问控制”，你应该看到了可选择的认证类型，如图9所示。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="1" src="http://image20.it168.com/201011_500x375/325/c073b7201f95e675.jpg" /&gt;     &lt;br /&gt;图 9 选择认证类型&lt;/p&gt;  &lt;p&gt;如果选中了图9所示的“授予调试”，开发人员还可以添加用户，图10显示了添加用户的屏幕截图。&lt;/p&gt;  &lt;p&gt;&lt;img border="1" alt="1" src="http://image20.it168.com/201011_500x375/325/b7d8a76d2f8d12b.jpg" /&gt;     &lt;br /&gt;图 10 添加用户&lt;/p&gt;  &lt;p&gt;&lt;b&gt;· 小结&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;本文只是对Microsoft Visual Studio LightSwitch的一个概述，只列举了LightSwitch七个最有用的功能，我希望这是一个好的开始，更多的功能还需要大家一起来发现，使用LightSwitch让大多数开发人员可以快速开发出拿得出手的以数据为中心的应用程序，如果你有什么想法和意见，欢迎在评论中回复。&lt;/p&gt;  &lt;p&gt;相关阅读：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://tech.it168.com/a2010/0816/1090/000001090983.shtml"&gt;VS LightSwitch能否敲开非程序员心门？&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://tech.it168.com/a2010/0823/1093/000001093625.shtml"&gt;VS LightSwitch初体验 定位非专业人员&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://tech.it168.com/a2010/1102/1120/000001120811.shtml"&gt;Visual Studio不如Eclipse的十五个细节&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/1924320.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924320.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924287.html</id><title type="text">[转]Silverlight 之轻</title><summary type="text">Silverlight 之轻 投递人 itwriter 发布于 2010-12-29 15:40 评论(9) 有1095人阅读 原文链接 [收藏] 在企业应用的前端开发中，Ajax、Flash和Silverlight争奇斗艳，各有千秋。这次InfoQ中文站有幸邀请到来自中国人寿的Silverlight专家吴磊先生，为读者分享他的Silverlight在企业应用开发中的丰富经验。 就在笔者写下本文...</summary><published>2011-01-02T14:45:00Z</published><updated>2011-01-02T14:45:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924287.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924287.html"/><content type="html">&lt;p&gt;&lt;a href="http://news.cnblogs.com/n/86656/"&gt;Silverlight 之轻&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;投递人 &lt;a href="http://home.cnblogs.com/u/itwriter/"&gt;itwriter&lt;/a&gt; 发布于 2010-12-29 15:40 &lt;a href="http://news.cnblogs.com/n/86656/#comment"&gt;评论(9)&lt;/a&gt; 有1095人阅读 &lt;a href="http://www.infoq.com/cn/articles/wl-silverlight-light"&gt;原文链接&lt;/a&gt; &lt;a href="http://news.cnblogs.com/n/86656/#"&gt;[收藏]&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://news.cnblogs.com/n/topic_63.htm"&gt;&lt;img alt="" src="http://news.cnblogs.com/images/logo/Silverlight.gif" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; 在企业应用的前端开发中，Ajax、Flash和Silverlight争奇斗艳，各有千秋。这次InfoQ中文站有幸邀请到来自中国人寿的Silverlight专家吴磊先生，为读者分享他的Silverlight在企业应用开发中的丰富经验。&lt;/p&gt;  &lt;p&gt; 就在笔者写下本文的当天，第二届Silverlight Firestarter 发布会在美国召开，微软企业副总裁 Scott Guthrie 发布了Silverlight 5 的一系列新特性，并宣布Silverlight 5 将注重丰富的媒体体验与企业应用开发两大方面的改进。其中针对媒体方面的改进包括GPU硬解码、H.264等5项功能，而针对企业应用方面的改进包括64位操作系统支持、IE 9硬件加速、向量打印、文本清晰度、调用非托管代码等30多项功能，可以看出Silverlight已经逐渐将其未来重心转向企业级应用方面（一直以来，笔者都认为Silverlight的强项应该是企业应用）。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://pic003.cnblogs.com/2010/66372/201012/2010122915390723.jpg" /&gt;&lt;/p&gt;  &lt;p&gt; Silverlight作为微软“三屏一云”战略中展现层的重要技术，越来越引起企业开发者的注意。新浪财经、腾讯、淘宝、口碑网等互联网企业已经尝试使用Silverlight开发交互性较强的商业应用，而一贯谨慎保守的大型金融公司陆续开始使用Silverlight来提高企业应用的用户体验，比如中国人寿（网上服务应用）、中国人保（商务智能应用）已经有相关应用，而像花旗银行、工商银行这样的大型银行也在尝试使用Silverlight来实现未来网上银行一些功能。&lt;/p&gt;  &lt;p&gt; 为什么Silverlight在推出短短三年左右时间内就能触动企业开发者呢？原因很简单，Silverlight具有良好的后台语言框架支持，这就是基于.Net高级语言的精简运行环境。具体而言原因有三：&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Silverlight之轻，即较之WPF、Java Swing、Delphi等C\S架构有更加轻量的运行环境与零维护的特点：使用轻量的CLR Core运行时环境，不依赖于客户端环境（无须安装体积庞大的.Net Framework，这一点太棒了）。 &lt;/li&gt;    &lt;li&gt;Silverlight之重，即较之Html+JavaScript等B/S架构有更优越的客户端弹性：使用C#高级语言代替JavaScript来实现强大的客户端计算能力、支持多线程，继承了WPF丰富的样式、控件、特效与动画，更可控的浏览器适应性，更安全的沙箱模式，客户端嵌入式数据库等。 &lt;/li&gt;    &lt;li&gt;Silverlight之美，即较之传统应用有更友好的交互性，更酷的效果。支持完全面向用户体验的开发过程，其快速原型工具使需求与交付物更为明确，用户体验驱动开发，设计与编码分离。&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt; 在本文中，笔者要着重强调的是&lt;strong&gt;“Silverlight之轻！”&lt;/strong&gt;， Silverlight是企业应用展现层的轻量级解决方案，从本文开始，笔者将采用连载的方式与大家一起探讨Silverlight在企业级应用解决方案与特性。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://pic003.cnblogs.com/2010/66372/201012/2010122915390088.jpg" /&gt;&lt;/p&gt;  &lt;p&gt; 现在越来越多的企业已经开始考虑将原有“竖井状”的C/S与B/S架构通过SOA等理念进行重构与集成，譬如建立以客户、产品、合同为中心的主数据管理平台（MDM），采用数据即服务的方式对逻辑层提供服务，使用企业服务总线（ESB）对这些服务进行消息路由、转换、监控及生命期管理，通过业务流程管理平台（BPM）混编服务实现业务流程自动化，通过业务规则管理平台（BRM）实现对业务逻辑自动化，最后这些应用层服务形成了企业应用的服务器端处理逻辑。而展现层就是企业应用中实现人机交互的最后一步，即信息的输入与展现。现在的企业应用解决方案中基于窗体的C/S与基于浏览器的B/S架构几乎构成了企业应用的全部，但两者都有其优缺点，C/S架构在客户端的处理能力与交互性较强，但维护性极差；相反，B/S架构在客户端的维护性极高，但对信息的处理能力、交互性、跨浏览器一致性方面都有不足。&lt;/p&gt;  &lt;p&gt; 正是如此，相对C/S架构更为轻型的Silverlight技术就成为了未来高度集成化的企业应用中理想的展现层的候选方案。传统的C/S架构，无论是VC++、Delphi、Java的Swing、还是.Net的WinForm、WPF都需要安装体积笨重的运行时环境，即使客户端程序永远不会使用运行环境中的特殊组件，但使用者也只能被动接受这些组件占用计算机资源。而Silverlight有着更为轻便的运行式环境（Silverlight3的运行时环境4.3M，Silverlight4为6M），在如此小的运行环境下面有着B/S无法比拟的高级语言支持，也就是说Silverlight具有一颗.Net的心脏—CoreCLR。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://pic003.cnblogs.com/2010/66372/201012/2010122915385070.jpg" /&gt;&lt;/p&gt;  &lt;p&gt; CoreCLR简单来说就是CLR for Silverlight，是专门为Silverlight量身打造的轻型CLR，用来执行Silverlight代码。Silverlight基于C#高级语言，使用同样的托管机制与MSIL中间语言，CoreCLR自备编译环境、内存管理器，不依赖于外部环境。打造这个轻型“心脏”的过程并不容易，对于轻型的RIA框架来说Silverlight运行时环境要考虑两大问题：大小与兼容性。&lt;/p&gt;  &lt;p&gt; 大小就是运行时环境的大小，从用户的角度来看，下载必须非常小。这就要求将功能集减至最少，目前 Silverlight4运行时环境大小为6M，CoreCLR中的DLL文件在CLR和WPF的类库中几乎都能找到，只不过大大裁剪了尺寸。这其中就包括对基类库（BCL）的消减，.Net BCL中的很多功能在 Web 客户端上都没有任何意义，例如：由于 Silverlight 不支持 CAS，因此大部分 System.Security 都不是必要的，System.Console 等许多桌面类在 Web 中也没有任何意义。因此，CoreCLR删减了大量服务器端类库（如ADO.NET），去除非泛型集合类（如ArrayList，完全可以通过泛型集合类代替），同时将复杂的桌面类也一并去除（如PLINQ和一些动态类），但保留了.NET Compact Framework 和 Silverlight 间的兼容性。&lt;/p&gt;  &lt;p&gt; 对于兼容性而言，从编程人员的角度来看，针对 CLR 的编码应该始终相同。因此，Silverlight堆栈底部的各个组件使用了与桌面CLR相同的代码，执行引擎和虚拟机都必须相同，这部件包括类型系统、元数据、垃圾回收器 (GC)、JIT 编译器、线程池以及运行时引擎的其他核心部件。但为了适应 Web 应用程序，CoreCLR进行了一些更改，如富 Internet 应用程序通常简单且运行时间短，JIT 编译器主要侧重于减少启动时间，而非执行更复杂的优化操作，同样，服务器垃圾回收模式可以对使用相似分配模式的多个工作线程进行优化，而对 Web 托管应用程序则行不通，因此，Silverlight 只包含针对交互式应用程序进行优化的标准工作站 GC。&lt;/p&gt;  &lt;p&gt; 现在的.NET Framework里有一万个类，十万个方法，但CoreCLR中减少到了46个命名空间下不超过一千个类。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://pic003.cnblogs.com/2010/66372/201012/2010122915383374.jpg" /&gt;&lt;/p&gt;  &lt;p&gt; C#之父（同时也是Turbo Pascal与Delphi之父）Anders Hejlsberg认为未来编程语言的发展趋势及未来方向应该朝着框架与工具发展。笔者认为未来的语言发展方向不是朝着大而全的运行时框架方向发展，而是朝着“轻框架、重工具组件”的方向发展。当我们使用Visual Studio开发应用程序时，我们首先选择的是“语言”，然后是“运行时框架”，再引入我们需要的“工具组件”。而精干的“运行时框架”与丰富的可选“工具组件”将为企业应用提供更大的弹性、减轻程序大小、优化响应性能。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://pic003.cnblogs.com/2010/66372/201012/2010122915393513.jpg" /&gt;&lt;/p&gt;  &lt;p&gt; 事实上，目前很多金融企业的核心应用已经在朝着“去客户化”、“去产品化”的小核心方向发展，“小核心”+“大外围”使企业内部核心具有更加持久的生命力、更加灵活的扩展性和更快的反应能力。而企业应用展现层也越来越青睐于使用小而灵活的运行时环境，开发者完全可以根据实际需求挑选合适的工具组件，提供更富弹性的展现层应用。Silverlight的未来应该更加关注适用性，而不应该过度考虑基本功能的强大，否则将发展成为另一个WPF，而失去自己的方向。Silverlight4将Silverlight3的身躯加大了1.7M，加入了一些诸如集合接口ISet&amp;lt;T&amp;gt;、延迟初始化类Lazy&amp;lt;T&amp;gt;、元组对象工厂类Tuple等复杂类型，加重了Silverlight内核。因此，在Silverlight5的Wish List中，笔者强烈要求Silverlight5关注解决跨设备的问题，而不要过度考虑加重基础类库的强大功能，加重Silverlight的包袱，使原本轻便的Silverlight CoreCLR变得更加臃肿，无法起飞。&lt;/p&gt;  &lt;p&gt; “对于未来，希望Silverlight仍能轻舞飞扬！”&lt;/p&gt;  &lt;p&gt; 注：部分内容取材于笔者即将发布的新书《-企业级RIA应用与Silverlight开发全流程实战》，敬请关注。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;关于作者&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; 吴磊，中国人寿IT高级技术主管、高级工程师，拥有7年企业级应用开发经验，负责过多个业务系统的开发工作。曾获得系统分析师、 PMP等认证，2003年开始接触RIA技术，并不遗余力的在企业应用中推广RIA技术， 2008年带领团队成功研发了国内首个Silverlight企业级应用—中国人寿养老金咨询系统 (PACS)，该项目先后在 Silverlight3 发布会、Teched09 技术大会、QCON2010全球企业开发大会上作为成功案例进行展示。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;来自: &lt;a href="http://www.infoq.com/cn/articles/wl-silverlight-light"&gt;InfoQ&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/1924287.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924287.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924260.html</id><title type="text">有关敏捷软件测试的文章</title><summary type="text">1、自动化测试——敏捷测试的基石http://kb.cnblogs.com/page/86100/ 2、什么是敏捷软件测试 3、应用Visual Studio 2010辅助敏捷测试（上） 4、应用Visual Studio 2010辅助敏捷测试（下）   应用Visual Studio 2010辅助敏捷测试（上） 来源: InfoQ 发布时间: 2010-12-05 20:42 阅...</summary><published>2011-01-02T13:44:00Z</published><updated>2011-01-02T13:44:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924260.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924260.html"/><content type="html">&lt;p&gt;&lt;strong&gt;1、自动化测试——敏捷测试的基石&lt;a href="http://kb.cnblogs.com/page/86100/"&gt;http://kb.cnblogs.com/page/86100/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;2、&lt;a href="http://kb.cnblogs.com/page/84256/"&gt;什么是敏捷软件测试&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;3、&lt;a href="http://kb.cnblogs.com/page/83531/"&gt;应用Visual Studio 2010辅助敏捷测试（上）&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;4、&lt;a href="http://kb.cnblogs.com/page/83532/"&gt;应用Visual Studio 2010辅助敏捷测试（下）&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;应用Visual Studio 2010辅助敏捷测试（上）&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;来源: InfoQ&amp;#160; 发布时间: 2010-12-05 20:42&amp;#160; 阅读: 73 次&amp;#160; &lt;a href="http://www.infoq.com/cn/articles/visual-studio-2010-help-agile-test-1"&gt;原文链接&lt;/a&gt; &lt;a href="http://archive.cnblogs.com/kb/83531/"&gt;全屏阅读&lt;/a&gt; &lt;a href="http://kb.cnblogs.com/"&gt;[收藏]&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;编辑点评：本文将从工具角度出发， 介绍Visual Studio 2010如何帮助测试人员更胜任敏捷项目中的测试工作。&lt;/p&gt;  &lt;p&gt; 敏捷软件开发是近些年来比较热门的话题，《敏捷宣言》四条主要精神和十二条基本准则概括了敏捷开发的基本思想。围绕着这些基本概念和思想，产生了一系列的轻量级方法，如：极限编程、测试驱动开发、Scrum、特性驱动开发等。虽然具体名称、过程和侧重点不尽相同，但是相对于非敏捷的开发方法而言，它们都更强调面对面的沟通、团队不同角色之间的紧密协作、频繁交付新的可用的软件版本、紧凑而自我组织型的团队等。敏捷开发只是提供了一个思想和方法论,而要在实际的工程中正确运用它，并真正显现出它的优点和产生实际的效果，这对于每个团队而言一开始都是一个挑战，尤其是对那些那些习惯了传统瀑布模式的团队。&lt;/p&gt;  &lt;p&gt; 敏捷是整个团队的敏捷，不只是团队中某个角色或者某个阶段的敏捷，开发、测试和项目经理等所有角色都要敏捷起来。敏捷方法的采用对团队每个成员都提出了新的挑战，尤其是测试人员。之所以这样说，是因为相对于传统的瀑布模型，敏捷开发所要求的频繁交付，给测试所留出的时间更为紧迫，要求测试人员更早的介入和更及时地完成测试任务。如何在这么短的时间内完成测试的计划和实施呢？如何有效地避免回归问题的出现？手工测试人员如何能更好的融入到敏捷团队？等等问题接踵而至，这都需要需要测试人员不断的思考和尝试。&lt;/p&gt;  &lt;p&gt; 无论是哪种开发模式，软件的开发过程都可以归结为：人、工具和过程这三个因素，三者的有机结合才能更高效的完成任务。有人会说：《敏捷宣言》四条主旨精神的第一条就是“个体和交互重于过程和工具”，工具还有那么重要吗？回答是肯定的，工具很重要，这条主旨所提到的是“重于”而不是不要。为了支持敏捷开发，Visual Studio 2010（以下简称为VS 2010）应用程序生命周期管理中引入了MSF for Agile Software Development v5.0过程模板，用于辅助敏捷团队在实际工程中进行敏捷实践，它支持Scrum敏捷开发过程框架。&lt;/p&gt;  &lt;p&gt; 本文将从工具角度出发， 介绍Visual Studio 2010如何帮助测试人员更胜任敏捷项目中的测试工作。对于工具与人的关系而言，好的工具应该是将人从重复和机械的劳动中解脱出来，让人有更多的精力和时间花在有创造性地劳动上，而由工具去完成将繁琐和冗余的事务性操作；而对于工具和过程的关系，工具是过程能够得到确实落实和准确执行的基石，很多时候我们总是依赖于人去执行某个过程或者流程要求，但人的执行往往带有一定不稳定性和主观性，而工具则可以帮助我们准确客观的执行。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt; 团队有效协作的基石——Team Foundation Server&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; 敏捷开发强调人与人之间的有效沟通和紧密的团队协作。对于测试团队和测试人员而言，首先应该需要考虑的是：如何让测试工作更有效的集成整个敏捷开发的活动中去？而不是将测试工作仅作为一个“附件”或者可有可无的副产品。当然，这会受到团队组织形式和开发过程的限制，例如：采用功能小组模型的团队，所有角色成员（PM、开发人员、测试人员）隶属于同一个功能团队，客观上其沟通就更为方便；而对于采用纵向按职能划分团队的公司而言，测试和开发在隶属关系上是分开的，相对在沟通上障碍就会更多些。&lt;/p&gt;  &lt;p&gt; 无论是哪种组织形式，好的工具能帮助促进和统一各个角色间的信息互通和共享，而不是要让他们彼此之间更为孤立、工作在各自的一亩三分地（Silo）中。Team Foundation Server 2010（以下简称为TFS 2010）就是这样的工具，作为整个团队协作的核心，它统一了团队不同角色信息、实现了信息之间的有效互联互通、彼此之间的共享和关联，例如：TFS 2010定义6种默认的工作项类型，如下图所示。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-1/zh/resources/agiletest1.JPG" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图1：&lt;/strong&gt;TFS 2010定义6种默认的工作项类型&lt;/p&gt;  &lt;p&gt; 其中，Test Case和 Shared Steps是2010专门为测试新加入的。不要小看这些工作项，它们之间有着丰富的关联关系，这种关系背后所代表是角色之间的关系。对于测试而言，它将测试和团队紧密的结合在一起。例如：Test Case工作项用来详细定义和管理测试用例，它还可以和User Story相关联，也就是将测试和用户需求进行了关联，用户可以从需求追溯到覆盖的它的测试用例，这背后体现的是测试人员和需求人员/PM的协作；Test Case还可以与Bug关联，通过这种关联可以挖掘出哪些 Bug被测试用例覆盖，哪些还没有，这种关联体现了测试人员与开发人员的写作，如果是自动化测试用例，则体现了手工测试人员和自动化工程师的协作；Bug还可以可以和签入集（Change-set）关联，可以找到为了修复Bug，开发人员修改过哪些产品代码，这体现了测试人员和开发的关联。&lt;/p&gt;  &lt;p&gt; 敏捷开发频繁的迭代和较短的迭代周期，对项目管理的精确性、透明性和可见性都提出了更高的要求， 尤其对于那些项目复杂和人员较多的团队。Task是另一个重要的工作项类型，它用于管理开发过过程中的所有任务项，包括：开发、测试以及需求等任务，统一管理开发中的所有任务，统一计算项目的开销和剩余工作量等。例如，项目的燃尽图就是由它产生出来的。现在，人们虽然在理论和概念上已经非常认同软件测试的在工程中的重要地位，但在具体实际操作中，测试却仍然被看作是低于开发和需求分析等的“二等公民”。&lt;/p&gt;  &lt;p&gt; 当然这是由于多方面的综合因素造成的，从管理技术角度讲，这是由于测试工作本身缺乏可度量性和可见性，从导致了测试工作的透明性的缺失，团队往往看不到测试工作的进度和所带来的成果，从而意识不到测试的真正作用。对于测试人员自身而言，缺乏可度量性也让自己无法对工作进度准确把握，进而失去了对自己工作的目标感和认同感。将测试工作同其他工作一样的用Task工作项管理起来，增加了它的可度量性和可见性。&lt;/p&gt;  &lt;p&gt; 将测试工作和其它任务一起统筹，时刻确保测试被作为整体中的一部分进行考虑，所有的测试任务都被作为Task工作项记录下来，例如：编写测试计划、设计测试用例、自动化测试用例等等，每项任务都有三个默认时间估计数据需要填写，它们是：Original Estimate、Remaining和Completed，分别代表了任务的预估时间、剩余工作量和完成工作量。&lt;/p&gt;  &lt;p&gt; 为了增强敏捷过程的透明性和可见性，TFS 2010定义了很多的报表和仪表板（Dashboard），它们会自动生成各种报表，以可见的方式描述敏捷项目的健康状况，这其中就有很多反映测试工作的报表，如下面所示。Stories Overview展示了用户故事的进展情况，包括了每个用户故事的测试用例覆盖数量和执行结果，以及相应的Bug数量；Test Dashboard显示了测试用例的状态，包括正在设计的用例以及设计完毕可以执行的用例数量，现实当前Bug的状况，包括未被修复和以修复Bug的数量。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-1/zh/resources/agiletest2.JPG" width="594" height="408" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图2：&lt;/strong&gt;Stories Overview展示了用户故事的进展情况&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-1/zh/resources/agiletest3.JPG" width="548" height="406" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图3：&lt;/strong&gt;Test Dashboard显示了测试用例的状态&lt;/p&gt;  &lt;p&gt;&lt;strong&gt; 集成测试环境——Microsoft Test Manager&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; 在过去的十几年中，为了适应了软件项目的复杂度和规模的不断膨胀，软件开发工具和框架得到了长足的发展，而测试工具则始终是块短板 ，特别是对于那些需要手工完成的测试任务而言，进展就更为缓慢，例如：现在很多团队仍然使用Word或者Excel这样“原始”工具来管理测试用例。通过对业界的调查和分析，我们发现70%的软件测试工作仍然是通过手工或者简单的脚本来完成的，在测试团队中不具备编程能力和仅有基本脚本编写能力的测试人员仍然是测试的主力。&lt;/p&gt;  &lt;p&gt; 要让你的项目敏捷起来，对于那些仍以手工测试为主的团队而言是一个非常大的挑战，如何提高手工测试工作的效率将是实现敏捷的成败关键。在VS 2010中，微软首次为测试人员设计了一款专用的集成测试环境，称为微软测试管理器2010（Microsoft Test Manager 2010，以下简称为MTM）。之所以称之为集成测试环境，是因为MTM的功能涵盖了测试计划、测试用例、手动测试用例的执行和录制回放、自动测试用例执行、创建信息丰富的Bug、验证Bug、以及与测试实验室管理相关的对策是自动化相关的功能等。下图展示的是MTM测试计划的操作界面，它以树形的层次结构来组织测试用例。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-1/zh/resources/agiletest4.JPG" width="579" height="352" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图4：&lt;/strong&gt;MTM测试计划的操作界面&lt;/p&gt;  &lt;p&gt; 《敏捷序言》强调：“可工作的软件重于完备的文档”，那么是不是意味着敏捷测试也不需要测试计划呢？当然不是。敏捷的本质是要去除软件过程所有造成时间浪费地方，不需要的是那些动辄就几十或上百页的文档。敏捷对文档要求是要简明扼要，一两页列出测试要点计划还是必须的，较短迭代周期（1-4周）也不可能要求文档面面俱到。敏捷需要更快的对功能进行验证，是不是不需要编写测试用例直接根据用户故事或者功能需求进行探索性测试就可以了？&lt;/p&gt;  &lt;p&gt; 当然也不是。功能需求和用户故事勾画出的是一棵大树躯干和主要枝杈，而那测试用例则不但要准确描述出躯干和主枝，还要描述出细小的枝杈和绿叶的正确位置。从某种意义上讲，测试用例在敏捷中的作用和地位应该更为加强，它扮演着详细功能文档的角色。功能需求和设计文档可以简单，但测试用例可不是这样，相反我认为敏捷对测试用例的设计和管理要求更高。&lt;/p&gt;  &lt;p&gt; 每个迭代周期，团队都会专注于实现不同的产品功能，用户故事虽然描述了功能的内容，但并不足以覆盖所有相关的内容。很多由用户故事展开和关联的功能一般在文档中会体现出来，需要测试人员在早期围绕着用户故事测试展开需求文档测试（需求评审），已明确那些未严格定义出来的内容，以测试用例的形式明确和记录下来。由1个简单用户故事就有可能扩展为1+N用户可能执行的执行片段，也就我们测试用例。当你有M个用故事，需要Ｍ个迭代周期来完成产品，那么就会有 ( M + N&lt;sub&gt;1 &lt;/sub&gt;+ N&lt;sub&gt;2 &lt;/sub&gt;&lt;sub&gt;… &lt;/sub&gt;+ N&lt;sub&gt;M&lt;/sub&gt;) 个测试用例，不把它们落实到笔头上，很容易就会丢失一些重要的测试细节。此外，在敏捷方法中需求变化比较快，随着多个迭代的深入，文档的变化往往赶不上产品功能的变化，这时唯一能够赶上这个变化的只有测试用例，应为只有它准确地反映了产品的变化，否则测试用例就是无法通过的。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-1/zh/resources/agiletest5.JPG" width="592" height="463" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图5：&lt;/strong&gt;测试用例&lt;/p&gt;  &lt;p&gt; 在MTM 中，测试用例被分类至各个测试用例集，结构十分清晰。测试用例只是逻辑上从属于某个测试用例集，并没有物理从属关系，即一个测试用例可以同时被分在多个测试用例集内，比如某个测试用例性质上是一个性能测试，但是由于该用户故事的诉求就是性能改进，我们也就很自然得可以将其作为该用户故事的验收测试，此时我们就可以将此测试用例添加到验收测试和性能测试两个测试用例集中；另一个例子是给每个用户故事都定义了不少测试，这些测试用例都应该能在用户故事测试用例集下找到，但是这些测试既可能是手动测试也可能是自动化测试用例，所以它们又会被本别归类至这两个测试用例集。&lt;/p&gt;  &lt;p&gt; 在这种逻辑分类的支持下，我们可以很容易的根据需要指定运行测试集中一部分测试用例。比如，我们可以定义一个签入测试的测试用例集，挑选最基本的若干个测试置入其中，这样在每次签入前通过运行这个测试用例集就能帮助我们确保签入的代码不至于破坏最基本的功能，即保证了版本随时可运行可测试，这无疑为测试带来了更多的方便。具体如何创建测试用例集的结构，团队可以根据自己项目的特点，灵活运用此功能，制定分类规则以提高工作的效率。&lt;/p&gt;  &lt;p&gt; 很多测试团队仍然在使用Word或者是Excel管理测试用例，有些是使用专门的测试用例管理工具，使用独立的数据库来存储测试用例信息。MTM相对于这些工具的优点在于，它的所有数据都是存储在TFS上，测试用例使用的是Test Case工作项。由于同存储在TFS 上，所以可以轻松的实现与其它数据项的关联，例如：在上一部分我们介绍的不同类型工作项之间关联，此外还可以把Test Case与代码关联，即将测试用例与自动化测试代码关联。这样在MTM中，也可以直接管理和运行自动化测试用例，使MTM兼具了管理手工测试用例和自动化测试用例的能力。&lt;/p&gt;  &lt;p&gt; 探索性测试（Exploratory Testing）是测试人员在对被测试系统的功能进行不断了解和学习的过程中进行测试，包括：设计测试用例、执行测试、以及汇报测试结果。与传统的测试相比，它不需要事先定义好的齐备的测试文档，更强调测试人员在对系统不断地学习中，边了解边测试，它在很大程度上给测试人员更多地自由和想象空间，充分发挥他们的创造力，在不断地学习中找到测试的灵感和快乐。&lt;/p&gt;  &lt;p&gt; 这种测试的灵感和快乐对于组建和培养一支热爱测试的团队是非常非常重要，它会让测试人员觉得自己不是执行重复测试劳动机器，而是一个有着创造力和灵光的团队成员。MTM也支持探索测试功能，用户可以使用MTM创建一个仅有一个测试步骤的测试用例，然后执行它，Test Runner工具会辅助执行手动测试。它会记录下所有用户的操作，一旦发现有Bug时候，可以直接选择‘Create exploratory bug’直接创建一个Bug。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-1/zh/resources/agiletest6.JPG" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图6：&lt;/strong&gt;创建一个Bug&lt;/p&gt;  &lt;p&gt; Bug是测试工作最重要的产出之一，也是测试和开发人员之间重要接触点。每个提交的Bug都应该详细记录下如何重现（reproduce）的步骤，这是衡量Bug质量的重要因素之一。因为不可重现的Bug是没有意义的，只会耽误开发人员和项目经理的时间。偶尔出现不可重现的Bug还是可以理解的，但如果经常出现，那就会引来开发人员的抱怨和不满，久而久之会造成开发和测试之间的不信任。 好的Bug应该是有清晰和详细的重现步骤，期望的结果和实际得到结果，并提供尽可能多的信息，例如：出现问题的产品版本编号、语言、操作系统的版本以及日志信息等。大多数情况下，用文字进行描述的内容就可以了，但如果能配上一张问题现场截图，或者对于更为复杂的Bug，配上一段小的录像，这样的Bug会给开发人员快速诊断和修复产品问题带来很大帮助，大大提升测试和开发人员之间的协作效率，避免了不可重现Bug在开发和测试之间推来推去的“Bug乒乓”现象。&lt;/p&gt;  &lt;p&gt; 然而要收工创建这样一个信息丰富的Bug，是需要很多时间的。MTM提供了这样的功能为帮助测试人员创建这样高质量Bug，它实现了多种诊断数据适配器（Diagnostic Data Adapters），在测试确认Bug的过程中，这些适配器会在后台运行收集大量的数据，包括：执行操作、系统配置、IntelliTrace已经操作过程的录像等，当测试人员要创建一个Bug时，这些信息会被自动添加的Bug中，如下图所示，测试仅需填写很少的内容就可以创建好一个信息丰富的Bug。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-1/zh/resources/agiletest7.JPG" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图7：&lt;/strong&gt;信息丰富的Bug&lt;/p&gt;  &lt;p&gt;&lt;strong&gt; 关于作者&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; 周京生，微软亚太研发集团服务器与开发工具事业部软件开发测试工程师，目前主要负责Visual Studio 生命周期管理工具对C/C++支持工具的测试工作。自2006年加入事业部以来，一直致力于架构工具的设计开发以及如何使用架构工具促进软件开发生命周期管理。周京生先后参与了 Visual Studio 2005 SDK 和 Visual Studio 2008 的测试工作。在刚刚发布的Visual Studio 2010 旗舰版中，周京生和团队共同完成了多种UML建模工具的开发和测试工作。&lt;/p&gt;  &lt;p&gt; 相关文章：&lt;a href="http://kb.cnblogs.com/page/83532/"&gt;应用Visual Studio 2010辅助敏捷测试（下）&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;应用Visual Studio 2010辅助敏捷测试（下）&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;来源: InfoQ&amp;#160; 发布时间: 2010-12-05 20:46&amp;#160; 阅读: 38 次&amp;#160; &lt;a href="http://www.infoq.com/cn/articles/visual-studio-2010-help-agile-test-2"&gt;原文链接&lt;/a&gt; &lt;a href="http://archive.cnblogs.com/kb/83532/"&gt;全屏阅读&lt;/a&gt; &lt;a href="http://kb.cnblogs.com/"&gt;[收藏]&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;编辑点评：本文将从工具角度出发， 介绍Visual Studio 2010如何帮助测试人员更胜任敏捷项目中的测试工作。&lt;/p&gt;  &lt;p&gt; 随着需求的不断变化和迭代的深入，代码库不可避免的会有频繁的签入和签出，此时测试人员一项很重要的任务就是要预防回归问题发生。执行手工测试用例可以帮助我们预防及和发现回归问题，但是它的执行效率太低，无法胜任频繁执行的要求。这时就我们需要考虑采用自动化测试用例完成这项工作。决定是否采用自动化测试是有很多因素决定，其中很重要的一条就是自动测试的收益，下面的公式从概念上解释了如何来计算这个收益，当收益值大于1的时候，实施自动化测试就是合算的；否则，就是不合算的。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-2/zh/resources/agiletest00.JPG" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图1：&lt;/strong&gt;计算收益公式&lt;/p&gt;  &lt;p&gt; 这其中，开发和维护自动测试的成本是影响这个收益的重要因素，为此VS 2010提供了一整套的解决方案，帮助测试团队减少这部分成本，这包括前面我们所提到的测试计划和用力管理工具，以及后面将会要介绍的生成和实验室管理。此外，Visual Studio 提供了多种测试工程模板，帮助测试人员开发自动化的测试用例，如下图所示。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-2/zh/resources/agiletest8.JPG" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图2：&lt;/strong&gt;Visual Studio提供的多种测试模板&lt;/p&gt;  &lt;p&gt; 这些测试工程模板可以帮助测试自动化工程师，在Visual Studio 集成开发环境中创建和管理单元测试、功能测试、Web性能测试、负载测试等等一系列的自动化测试用例。这其中，编码的UI测试（Coded UI Test，以下简称为CUIT）是首次出现，是VS 2010测试部分一大亮点。测试人员可以通过它使用C#或者 VB.NET语言编写自动化测试用例，从用户界面层驱动Web、Winform或者是WPF的应用。&lt;/p&gt;  &lt;p&gt; CUIT为测试用例的自动化提供了一个框架、API和可扩展的接口，测试人员可以很轻松地开发出所要的自动化测试用例。其实CUIT背后的测试自动化实现技术对大家并不陌生，下面列出针对Web、WinForm和WPF应用的测试技术基础。对每种技术的支持采用的是插件的形式实现的，VS 2010包括了如下的三种插件：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Document Object Model（DOM）插件 : IE 7/8 HTML/AJAX &lt;/li&gt;    &lt;li&gt;User Interface Automation（UIA）插件 : WPF &lt;/li&gt;    &lt;li&gt;Microsoft Active Accessibility（MSAA）插件 : Winform，Win32和MFC 。MSAA插件是默认选项，用来支持出其它两者之外的任何应用。&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; CUIT 现在支持主要的微软平台，详细的内容可以参见&lt;a href="http://msdn.microsoft.com/en-us/library/dd380742.aspx"&gt;MSDN : Supported Configuration and Platforms for Coded UI Tests and Action Recordings&lt;/a&gt;。对于那些尚不支持的平台或者UI控件，CUIT提供了很好的扩展机制，允许大家针对自己的特殊应用进行扩充，下图就是CUIT框架的体系结构图 。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-2/zh/resources/agiletest9.JPG" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图3：&lt;/strong&gt;CUIT框架的体系结构&lt;/p&gt;  &lt;p&gt; 开发自动化测试用例对于有效预防回归问题的出现时非常必要，在实际应用中应该特别注意它的合理比例关系和灵活的策略，包括：自动化用例和手工用例的比例、UI和非UI测试用例的比例关系。自动化测试用例、执行、分析和维护它们都是需要一定投入的，对于敏捷项目而言时间资源的紧缺尤为突出，所以在任何时候团队都要根据自身的资源，有选择性进行测试用例的自动化，通常情况下应该优先自动化那些高优先级的测试用例。&lt;/p&gt;  &lt;p&gt; 对于UI和非UI的自动化测试用例而言，应该是以非UI 的单元测试和功能测试为主，UI测试未必要的补充。基于UI自动化测试用例有它独特优点，例如：它从真实用户角度出发进行测试，即涵盖了界面层、逻辑层和数据层，自动化人员不需要了解被测试应用的代码实现细节等；但是相对于非UI测试它也有着先天的不足，包括：执行速度相对比较慢、易受干扰不稳定等。所以在自动化过程中，能用非UI测试覆盖的功能尽可能采用非UI的测试覆盖，如：API单元测试等，UI测试用例只用来实现最基本用户故事的验收测试（Acceptance Test）。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt; 早测试和经常测试——封闭签入和滚动生成&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; 敏捷开发中最可怕的事情莫过于在迭代最后一两天进行测试，结果发现了严重功能缺陷或者回归缺陷，导致不能按计划发布给用户试用。要想彻底解决这样的问题，一方面要在迭代开发阶段测试人员就要参与进来，从客户的角度出发对功能需求和设计文档进行文档测试，即文档评审。测试人员和开发还有项目经理一起从源头上保障将要实现的功能是用户想要的。另一方面就是要在迭代的早期就开始就开始测试，特别前几个迭代已经实现好的自动化测试用例，尽早的执行它们可以有效地避免回归问题的出现。在TFS 2010上专门提供封闭签入（Gated Check-in）、滚动生成（Rolling Builds）和持续集成（Continuous Integration）等功能，帮助敏捷团队实现早测试和经常测试。这其中封闭签入和滚动生成是对敏捷团队比较实用的功能。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-2/zh/resources/agiletest10.JPG" width="650" height="317" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图4：&lt;/strong&gt;选择签入方式&lt;/p&gt;  &lt;p&gt; 封闭签入是TFS 2010提供的一种新的代码签入方式，在配置这项功能后，当用户要签入任何代码时，系统会先将用户本地要签入的代码打包成一个搁置集（shelve-set），然后提交到服务器端，TFS生成（Build）服务先从TFS源代码控制器中同步项目的最新代码，再将提交的代码与之进行自动合并，然后进行编译，如果编译成功，则执行配置的自动化测试用例，如果测试用例全部通过则代码会被自动签入到代码库中，否则返回错误信息给用户，代码是不会进入到代码库。表面上看是与产品测试没有直接关系，但实际上它和测试以及最终产品质量的密不可分。&lt;/p&gt;  &lt;p&gt; 因为代码签入是整个开发过程中发生最为频繁的操作，每次签入代码的质量直接影响着日常的开发活动。对于绝大多数的开发团队来说，check in代码前不仅要保证编译通过，同时还要最大限度的保证新代码不会破坏已有的功能，也就是要执行测试用例去验证。Gated Check-in中提到的“Build成功”，实际上包含两部分内容：编译成功和测试用例执行成功，有了它作为保护代码库的第一道屏障，就可以保证它在任何适合都是可编译，并且达到一定质量标准的。&lt;/p&gt;  &lt;p&gt; 滚动生成是在VS 2008种就有的功能，当TFS检测到在它所监控的范围内有任何新的代码变化被签入后，它就启动对最新的代码库进行生成验证，该验证包括编译和运行指定的自动化测试用例。之所以称之为“滚动”，因为它是在一个生成验证操作完成后再去探测有没有新的签入发生，对这期间发生的所有新签入进行新的生成验证。这里需要再强调一下滚动生成的重要意义：它看似只是一个自动生成代码的功能，但实际上起着协调整个开发团队、时刻监控代码库质量、以及尽早暴露产品问题的作用。&lt;/p&gt;  &lt;p&gt; 因为滚动生成时刻都在不停的运转着，对于任何代码签入它都保持着警觉，会去自动验证编译是否成功，自动化测试用例是否都能通过。它就像一个不知疲倦的“代码守护者”一样监控着代码库，第一时间发现其中的任何问题，将问题通知给整个团队，从而避免了问题的积累和拖延。这非常符合敏捷开发中“今日问题今日解决，不要拖到以后”的原则，它帮你最早的发现问题、报告问题，开发团队则应该建立制度要及时响应滚动生成所报告的问题，把它作为Priority 为0或1的高优先级问题去对待和解决。&lt;/p&gt;  &lt;p&gt; 封闭签入和滚动生成都是来保护代码库的正确性和产品质量，它们是否在功能上重复反而让我们不敏捷了呢？其实两者并不重复，只是各有侧重，将它们搭配使用才会发挥其最大效能。封闭签入是在代码进入代码库之前进行验证，签入提交者一般希望竟快知道结果，以便决定下一步的工作，所以封闭签入的时间（编译和运行测试用例）不要太长（10-20分钟）。这也就决定了我们加入的测试用例不能太多，只添加那些高优先级的测试用例，保证主要的用户故事不被破坏。&lt;/p&gt;  &lt;p&gt; 滚动生成是在代码签入后在后台执行的，由于不存在着与用户的交互等待，所以它执行时间可以更长（几个小时），可以为它加入更多的测试用例，从而全面验证代码库的质量，一旦有任何问题它可以及时通知团队进行修复，这种验证是在几个小时或者每天都在发生的，保证了敏捷对频繁测试的。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt; 完整的自动化测试解决方案——实验室管理&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; 在谈到软件自动化测试的时候，很多人会误以为实现了自动化测试用例就是自动化测试，其实不然，自动化测试仅是测试自动化的一个重要步骤，绝对不等同于自动化测试。一个完整的自动化测试应该包括：构建、部署、执行测试用例、分析测试结果并作出结论。在前面的自动测试的收益公式中，我们可以看到减少自动测试的维护成本，是提高自动测试收益的重要因素之一。VS 2010的实验室管理（Lab Management）与测试用例管理、生成管理、源代码控制、工作项管理等功能相结合，为自动化测试提供了这样一个完整的解决方案，目标就是要降低了自动测试的运营和非维护成本，下面这张图展示了实验室环境的系统构架图。&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-2/zh/resources/agiletest11.JPG" width="594" height="360" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图5：&lt;/strong&gt;实验室环境的系统构架图&lt;/p&gt;  &lt;p&gt; 实验室管理功能充分利用了微软的虚拟化技术，包括：Hyper-V和 System Center Virtual Machine Manager （SCVMM），快速创建干净的虚拟测试环境并进行产品生成和部署，然后执行指定的测试用例集，将结果以报表的形式呈现出来，方便对此产品质量进行分析，如下图所示：&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-2/zh/resources/agiletest12.JPG" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图6：&lt;/strong&gt;虚拟测试环境&lt;/p&gt;  &lt;p&gt;&lt;img alt="" src="http://www.infoq.com/resource/articles/visual-studio-2010-help-agile-test-2/zh/resources/agiletest13.JPG" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;图7：&lt;/strong&gt;测试结果&lt;/p&gt;  &lt;p&gt; 同时，利用虚拟技术的环境快照功能，对于那些难于复现或者环境相关的Bug，利用虚拟环境的快照技术，可以为开发人员准确的复现Bug出现的环境，从而能够快速的进行诊断和及时修复。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt; 总结&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt; Visual Studio 2010作为Visual Studio系列中一个非常重要的版本，为测试人员和团队提供了一整套解决方案，包括：测试计划和用例管理、创建自动化测试用例、测试用例的自动执行、以及实验室管理等。这些功能强调了测试作为整个软件过程的重要角色的作用，促进了测试人员与其它角色的有效沟通与协作，非常适合于敏捷团队使用来完成测试工作。&lt;/p&gt;  &lt;p&gt; 工具不是万能的，但没有合适的工具辅助也是万万不能的。对于工具在敏捷开发的作用，应该用辩证的观点来看待。不能片面唯工具论，毕竟软件开发过程是人、工具和过程三者共同作用的结果，工具影响着人和过程，同时人和过程也影响着工具所能发挥的效力。所以这决定了工具的引入和部署应该是一个渐进的和逐步适应的过程，特别是对Visual Studio 2010这样比较大型和综合性的工具。下面是三个向大家推荐的与Visual Studio测试相关的微软论坛，希望能够对大家有所帮助。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/1924260.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924260.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924238.html</id><title type="text">[转]SSL应用系列之三：去掉讨厌的证书提示警告（多图精解）</title><summary type="text">许一君的原创技术博客 http://jeffyyko.blog.51cto.com 【订阅】   http://jeffyyko.blog.51cto.com/28563/142280 SSL应用系列之三：去掉讨厌的证书提示警告（多图精解） 2009-03-25 12:14:14 标签：证书 CA 警告 提示窗口 晒文章 原创作品，允许转载，转载时请务必以超链接形式标明文章 原始出处 ...</summary><published>2011-01-02T12:47:00Z</published><updated>2011-01-02T12:47:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924238.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924238.html"/><content type="html">&lt;p&gt;&lt;a href="http://jeffyyko.blog.51cto.com/"&gt;&lt;/a&gt;    &lt;p&gt;&lt;strong&gt;许一君的原创技术博客&lt;/strong&gt;&lt;/p&gt;   &lt;a href="http://jeffyyko.blog.51cto.com"&gt;http://jeffyyko.blog.51cto.com&lt;/a&gt; &lt;a href="http://jeffyyko.blog.51cto.com/rss.php?uid=28563"&gt;【订阅】&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://jeffyyko.blog.51cto.com/28563/142280"&gt;http://jeffyyko.blog.51cto.com/28563/142280&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;SSL应用系列之三：去掉讨厌的证书提示警告（多图精解）&lt;/p&gt;  &lt;p&gt;2009-03-25 12:14:14&lt;/p&gt;  &lt;p&gt;标签：&lt;a href="http://blog.51cto.com/tagindex.php?keyword=%D6%A4%CA%E9"&gt;证书&lt;/a&gt; &lt;a href="http://blog.51cto.com/tagindex.php?keyword=CA"&gt;CA&lt;/a&gt; &lt;a href="http://blog.51cto.com/tagindex.php?keyword=%BE%AF%B8%E6"&gt;警告&lt;/a&gt; &lt;a href="http://blog.51cto.com/tagindex.php?keyword=%CC%E1%CA%BE%B4%B0%BF%DA"&gt;提示窗口&lt;/a&gt; &lt;a href="http://blog.51cto.com/tagindex.php?keyword=%C9%B9%CE%C4%D5%C2"&gt;晒文章&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;原创作品，允许转载，转载时请务必以超链接形式标明文章 &lt;a href="http://jeffyyko.blog.51cto.com/28563/142280"&gt;原始出处&lt;/a&gt; 、作者信息和本声明。否则将追究法律责任。&lt;a href="http://jeffyyko.blog.51cto.com/28563/142280"&gt;http://jeffyyko.blog.51cto.com/28563/142280&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 其实，本节讨论的内容应该归属于CA系列的，但其中涉及到的内容和SSL应用系列之二比较紧密，在之二一文中未能详细描述，所以就把这个内容作为SSL应用系列之三来讲解了，其实，SSL、CA、IIS等这些东西都是相互关联，很难独立存在。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 废话不多说，今天主要和大家讨论一下为什么会有证书提示警告及如何取消。&lt;/p&gt;  &lt;p&gt;阅读本文，你将了解到以下内容&lt;/p&gt;  &lt;p&gt;◆为什么会有证书提示窗口&lt;/p&gt;  &lt;p&gt;◆什么情况下会出现提示窗口&lt;/p&gt;  &lt;p&gt;◆2种导入根证书的方法&lt;/p&gt;  &lt;p&gt;◆如何取消窗口提示&lt;/p&gt;  &lt;p&gt;本文导读目录&lt;/p&gt;  &lt;p&gt;一、分析证书出现提示框的原因&lt;/p&gt;  &lt;p&gt;二、分三种情况进行讨论&lt;/p&gt;  &lt;p&gt;三、依据三个提示分析解决步骤&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 第一个提示：证书不被信任，分析与解决&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 第二个提示：证书时间过期，分析与解决&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 第三个提示：证书名称无效或不匹配，分析与解决&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 我们还是以SSL应用系列之二里的一个website的例子作为开始。&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;一、为什么会有证书提示窗口&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 我们知道，在证书提示窗口上，一共会体现出三个信息如图：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238051105578.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;第一个提示：此证书是否由受信任的证书颁发机构颁发&lt;/p&gt;  &lt;p&gt;如果是，则为绿色√，否则就会出现黄色叹号&lt;/p&gt;  &lt;p&gt;第二个提示：此证书是否在有效期内&lt;/p&gt;  &lt;p&gt;如果是，则为绿色√，否则就会出现黄色叹号&lt;/p&gt;  &lt;p&gt;第三个提示：证书上的名称与站点名称是否匹配&lt;/p&gt;  &lt;p&gt;如果是，则为绿色√，否则就会出现黄色叹号&lt;/p&gt;  &lt;p&gt;OK，如果三个提示的结果均为绿色√，那么就直接解析后面的网页，而不会有任何提示。反之，有任何一个不满足，则会出现类似上述的提示。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 现在大家应该知道，为什么会出现提示了吧，其实这也是微软处于安全考虑的一项措施，因为如果我们忽略这些提示，一样可以顺利的访问网站。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OK，现在我们就上面的提示，一个个来讲解。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;第一个提示：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 为什么会有此提示？ 其实，在我们安装好Windows后，系统就会内置100多个证书，其实这些证书都是世界知名公司、企业、或机构的根证书，我们在访问某些由&lt;/p&gt;  &lt;p&gt;这部分证书颁发机构颁发的证书加密的网站时，就不会出现第一个提示错误的情况，为什么这么说？因为本机里的受信任根证书颁发机构里有了这些根证书，也就相当于，本机信任这些根证书机构颁发的证书。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 不知道大家有没有理解这句话 。我来举个例子，比如证书颁发机构相当于公安部，每个人的身份证则相当于自己的一份独有的证书，在很多场合或环境下，为了表明自己的身份，就需要出示自己的身份证，因为上面有我们的一些很基本信息，这些信息足以证明我就是本人，对方在查看身份证的时候，就类似浏览器在检查某个证书是否合法，因为我们都知道身份证是由公安部这个权威部门，由这个部门颁发的身份证一定是真实有效的，所以就自然认定你就是本人。类似的，本机里预装的100多个可信任的根证书颁发机构就等同于我们的脑海里的公安部。当浏览器检测到一个新证书时，它回去查看证书的颁发者是否在自己的信任机构内，如果是，则就会信任这份证书，否则就不信任，此时就会弹出这样的提示，告诉你，浏览器检测到的这份证书并不是受信任的根证书颁发机构。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 说了那么一大段，希望可以帮助你理解第一个提示出现的原因。可能有朋友要问怎么查看这些根机构？ 其实很简单，打开IE浏览器，选择 【工具】/【internet属性】/【内容】/【证书】/【受信任的根证书颁发机构】，如下图：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238053948312.jpg" width="650" /&gt;&lt;/p&gt;  &lt;p&gt;这些便是预设的受信任的根证书颁发机构。&lt;/p&gt;  &lt;p&gt;知道原因，问题就好解决了。&lt;/p&gt;  &lt;p&gt;为了方便实验，我已经将环境搭建完毕，如下图：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238071043390.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;如果我们把根证书加到本机的受信任的根证书颁发机构内，问题不就解决了么！&lt;/p&gt;  &lt;p&gt;OK，这里我会告诉大家2种方法来将此证书添加至本地的受信任证书机构内。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;方法一：证书链安装法&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;这个应该是最简单的方法了，下列是操作步骤：&lt;/p&gt;  &lt;p&gt;首先进入&lt;a href="http://ip/certsrv"&gt;[url]http://ip/certsrv[/url]&lt;/a&gt;&amp;#160; 也就是证书的网页申请页面，然后依照图示操作：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238074340406.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238074484875.jpg" width="650" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238074652953.jpg" width="650" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238074682250.jpg" width="650" /&gt;&lt;/p&gt;  &lt;p&gt;点击【Y】之后，根证书就导入到当前用户的证书里了。但请注意，没有说导入到本地计算机，而是当前用户，为什么呢？我们知道，默认使用certmgr.msc打开的就是当前用户的证书管理器，如果想打开本地计算机的证书管理器，需要用到mmc命令来添加，具体操作就不详述了，这个会放到CA系列里再讲。&lt;/p&gt;  &lt;p&gt;我们到证书管理器里看有没有这个证书，用certmgr.msc打开，然后找到下列位置：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238075153718.jpg" width="650" /&gt;&lt;/p&gt;  &lt;p&gt;从指纹码上我们可以看到，这个就是刚才导入的根证书，我们导入根CA的证书链，里面就包含了根证书。&lt;/p&gt;  &lt;p&gt;OK，根证书已导入完毕，我们来看看效果：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238074969984.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;大家可以看到，安装了根证书后，第一个叹号就去掉了。&lt;/p&gt;  &lt;p&gt;可能有网友会问，当前用户和本地计算机有什么区别呢？一句话，将证书导入到当前用户的根信任区域只能在此用户下得到信任，而导入到本地计算机则是针对本机的，所以是个应用范围大小的问题。&lt;/p&gt;  &lt;p&gt;这个方法有一定的局限性，一般内网用的比较多，当然你也可以把证书申请页面发布出去，这样外网也可以直接导入了。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;方法二：根证书导入法&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;获取根证书的方法有很多，这里只说一种，其余方法会在CA系列里详述。&lt;/p&gt;  &lt;p&gt;我们可以直接到CA颁发机构里导出根证书。&lt;/p&gt;  &lt;p&gt;在【运行】输入certsrv.msc，打开CA&lt;/p&gt;  &lt;p&gt;右键CA名称，选择属性。&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238077850546.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238077930812.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238078009250.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238078076078.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238078184640.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;点击【Finish】即可完成证书的导出。&lt;/p&gt;  &lt;p&gt;证书导出后，剩下的就是导入的操作了。&lt;/p&gt;  &lt;p&gt;点击【运行】，输入mmc，打开控制台后&lt;/p&gt;  &lt;p&gt;选择【文件】/【添加/删除管理单元】，然后依图所示&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238078517312.jpg" width="650" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238078565031.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;之后一直确定即可完成添加。&lt;/p&gt;  &lt;p&gt;然后，如下图：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238080831140.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;然后浏览到刚才保存的根证书文件，导入即可。&lt;/p&gt;  &lt;p&gt;我们来看一下效果。&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238081200062.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;OK，这样第一个提示叹号的问题就解决了。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;第二个提示：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;这个应该是最不容易出问题的了，如果当前时间在证书的有效期内，就没问题。这里只想和大家说一点，就是需要区分证书颁发机构的有效期和证书有效期。咋一看很相似，其实还是有一定区别的。不知道大家是否记得，在安装CA的时候，会提示让我们设置一个时间，如下图：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238058815156.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;这个时间就是证书颁发机构的有效期，默认为5年，请注意企业根CA和独立根CA机构的默认期限均为5年。但所申请的证书，前者默认为2年，后者则默认为1年。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;第三个提示：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 最后一个应该是老生常谈的问题了，论坛里也有不少解决办法，但都很零星，这里做个小结希望可以帮到大家。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 我们来举一个例子，这里我们来搭建一个SSL加密的网站环境。由于在SSL应用之二中已经有较详细的步骤说明，这里就只截取一些重要的图进行讲解，望见谅。&lt;/p&gt;  &lt;p&gt;首先交代一下环境&lt;/p&gt;  &lt;p&gt;计算机名称：DC01&lt;/p&gt;  &lt;p&gt;CA机构名称:CA01&lt;/p&gt;  &lt;p&gt;本机的一个IP：10.0.0.25&lt;/p&gt;  &lt;p&gt;这里我们用上一篇文章的第二种方法为这个站点申请证书，如下图示：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238062211343.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;请大家注意红色框里的内容，这里让我们输入的是这个证书的common name，也就是通用名。这个名称非常重要，因为在生成的证书的Issued to 后面的就是这里的通用名，默认为该计算机的名称。&lt;/strong&gt;请大家记住这里的ca01，后面会用的到。&lt;/p&gt;  &lt;p&gt;这里不做修改，直接继续，后面的步骤省略。&lt;/p&gt;  &lt;p&gt;申请完成后，证书就是这样的：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238062548109.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;颁发的对象就是我们在common name 里填写的名称，是一模一样的。&lt;/p&gt;  &lt;p&gt;OK，我们来试着访问一下。&lt;/p&gt;  &lt;p&gt;我们先用&lt;a href="https://10.0.0.25/"&gt;[url]https://10.0.0.25[/url]&lt;/a&gt; 来试一下，如下图：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238062770929.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;大家可以看到，此时出现的这个提示，就告诉我们安全证书上的名称无效，或者与站点名称不匹配。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;为什么会出现这个提示呢？？？？ 其实图中的提示已经说的很清楚了。&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;告诉你。你的安全证书上的名称无效、 或者是有效但是与站点名称不匹配。&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;其实，上图中所指的安全证书是的名称就是Issed to 后面的名称，即dc01&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;而站点名称又是什么呢？ 正是我们在地址栏里输入的名称，即10.0.0.25&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;显然，2个名称都有效，只是不匹配而已，那，如果我们都把这个名称写成一样的，是不是这个叹号就消失了呢？ 来试试吧&lt;/p&gt;  &lt;p&gt;由于我的网卡上设置了2个IP，如果把地址栏里的改成&lt;a href="https://dc01/"&gt;[url]https://dc01[/url]&lt;/a&gt;，这样肯定无法访问。所以我打算把证书的common name改成和地址栏里的一样，即把证书颁发给10.0.0.25。OK，开始做吧：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238063327453.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;其余步骤省略，证书申请完后，查看到的属性如下图：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238063480656.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;我们再来访问一下，还是以&lt;a href="https://10.0.0.25/"&gt;[url]https://10.0.0.25[/url]&lt;/a&gt; 作为访问地址，来看一下访问结果：&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="" src="http://img1.51cto.com/attachment/200903/200903261238063632127.jpg" /&gt;&lt;/p&gt;  &lt;p&gt;OK，大家可以看到，此时不再提示名称不匹配，第三个提示的问题搞定了。&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;当然，生产环境下，一般不使用IP作为通用名称。&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;现在大家应该知道为什么你的站点 会有这个提示了吧，其实很简单，不是么。&lt;/p&gt;  &lt;p&gt;说明：因为我的测试环境是装的英文系统，所以不少图都是英文的。还有些中文图，那是我在客户端上抓的，请见谅！&lt;/p&gt;  &lt;p&gt;本文出自 “&lt;a href="http://jeffyyko.blog.51cto.com/"&gt;许一君的原创技术博客&lt;/a&gt;” 博客，请务必保留此出处&lt;a href="http://jeffyyko.blog.51cto.com/28563/142280"&gt;http://jeffyyko.blog.51cto.com/28563/142280&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/1924238.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2011/01/02/1924238.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flyingfish/archive/2010/11/18/1881316.html</id><title type="text">【转】Skyline软件介绍</title><summary type="text">一、软件性能总览Skyline软件是利用航空影像、卫星数据、数字高程模型和其它的2D或3D信息源，包括GIS数据集层等创建的一个交互式环境。它能够允许用户快速的融合数据、更新数据库，并且有效地支持大型数据库和实时信息流通讯技术，此系统还能够快速和实时地展现给用户3D地理空间影像。Skyline是独立于硬件之外、多平台、多功能一套软件系统。Skyline软件系列产品为网络和非网络环境提供了一个三维交...</summary><published>2010-11-18T15:51:00Z</published><updated>2010-11-18T15:51:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2010/11/18/1881316.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2010/11/18/1881316.html"/><content type="html">&lt;div class="PostList"&gt;&lt;div class="PostBody"&gt;&lt;p&gt;&lt;strong&gt;一、软件性能总览&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Skyline&amp;nbsp;&amp;nbsp;软件是利用航空影像&amp;nbsp;、卫星数据、数字高程模型和其它的2D或3D信息源，包括GIS数据集层等创建的一个交互式环境。它能够允许用户快速的融合数据、更新数据库，并且有效地支持大型数据库和实时信息流通讯技术，此系统还能够快速和实时地展现给用户3D地理空间影像。Skyline是独立于硬件之外、多平台、多功能一套软件系统。&lt;/p&gt;&lt;p&gt;Skyline软件系列产品为网络和非网络环境提供了一个三维交互世界的窗口。以下的工作流程能够指导你在本地或网络环境下进行基本数据生成，数据传输，数据可视化和数据分析等。产品能够分离开或根据用户需求进行用户化的特殊定制。初始化界面和在线帮助工具能够帮助你设定适合自己的三维世界窗口来解决你特殊的商业案例。从生成飞行文件的地表数据集或从你的GIS投资在二维/三维的knowledgebase简单的传送地表数据。Skyline软件能够使你在一个新的视角又基于你已有的IT和GIS构架来观看你的商业案例。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、&lt;span style="font-family: Arial;"&gt;Skyline&lt;/span&gt;软件系列产品&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（一）、&lt;/strong&gt;&lt;strong&gt;TerraExplorer Suite&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;TerraExplorer Pro&amp;nbsp;&lt;br /&gt;TerraExplorer Developer&amp;nbsp;&lt;br /&gt;TerraExplorer Run Time Pro&amp;nbsp;&lt;br /&gt;TerraExplorer Viewer&lt;br /&gt;&lt;strong&gt;（二）、&lt;/strong&gt;&lt;strong&gt;TerraGate Suite&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;TerraGate&amp;nbsp;&lt;br /&gt;Internet&amp;nbsp;&amp;nbsp;License&amp;nbsp;&lt;br /&gt;TerraPhoto3D Server&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（三）、&lt;/strong&gt;&lt;strong&gt;TerraBuilder Suite&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;TerraBuilder&amp;nbsp;&lt;br /&gt;TerraBuilder Enterprise Edition&amp;nbsp;&lt;br /&gt;TerraBuilder DirectConnect&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、产品性能介绍&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（一）、&lt;span style="font-family: Arial;"&gt;TerraBuilder&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;mdash;&amp;mdash;&lt;em&gt;允许用户快速创建编辑和获得&lt;/em&gt;&lt;em&gt;&lt;span style="font-family: Arial;"&gt;Skyline&lt;/span&gt;&lt;/em&gt;&lt;em&gt;三维地表数据集。&lt;/em&gt;&lt;em&gt;&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraBuilder&amp;nbsp;可以使用户为他们的地理参考的应用创建一个现实影像的、地理的、精确的地球三维模型。Skyline软件产品系列的模块能够利用其中的编辑工具集合数据为地物的覆盖或附加创建三维背景，如TerraExplorer Pro.&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraBuilder能够结合大量的航片、卫星影像、地理地表信息、数字高程模型、和矢量数据，简洁、快速地创建大量三维地表数据集。它支持多种输入格式，能够合并不同分辨率和大小的数据，将数据进行重新投影生成相同投影参考的数据。它还能够为最后生成数据集对选择的源数据进行区域裁减。TerraBuilder能够生成任意大小的现实的、详细的视景。视景生成后，合成的网络支持的3D地表数据集能够添加二维和三维动态或静态物体，并且能够传送给终端用户。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Builder&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;特点：&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;有效处理大量数据集&lt;/p&gt;&lt;p&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;多处理器，应用TerraBuilder Agents，当地网络的多个电脑能够分担工作量&lt;/p&gt;&lt;p&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;为最小化磁盘存储进行数据压缩&lt;/p&gt;&lt;p&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;支持大多数源数据的标准数据格式&lt;/p&gt;&lt;p&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;通过插件程序界面附加支持新的数据源格式&lt;/p&gt;&lt;p&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;64字节文件指示器允许快速访问达到GB数据量文件的数据库&lt;/p&gt;&lt;p&gt;7.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自动合并不同空间分辨率的源数据&lt;/p&gt;&lt;p&gt;8.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;高级用户界面能够实现自动或手工定制用户化数据集&lt;/p&gt;&lt;p&gt;9.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;强大的预演示选项和特性&lt;/p&gt;&lt;p&gt;10.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;大量的编辑工具允许用户定义层的扩展&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（二）、&lt;/strong&gt;&lt;strong&gt;TerraBuilder&lt;/strong&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;Enterprise Edition&lt;/strong&gt;&lt;strong&gt;（&lt;/strong&gt;&lt;strong&gt;企业版）&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最新的企业版本允许用户在若干台电脑和多个CPU中同时分担生成大量3D数据集的负荷。通过使用最新版本的TerraBuilder Agent，网络上的每台电脑都能够进行MPT文件的生成。TerraBuilder能够从含有更大量的影像和高程数据源数据中直接导入新的工业标准格式如ECW,IMG和NIMA&amp;rsquo;s CIB，CADRG和DTED。对软件内部设置的修改和大量用户界面的修改功能使得应用TerraBuilder创建数据集更加有效和得心应手。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraBuilder企业版是根据用户创建精细的数据集的需要设计的。它结合了TerraBuilder已有的所有特性，比如加载多种不同格式不限大小和分辨率的源数据，对这些源数据进行操作将它们合并成为单一的、压缩的、优化的3D数据集进行传输。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraBuilder企业版是根据用户创建即时数据集的需要设计的。大量的数据档案能够短时间内被调到3D视景中。它结合了TerraBuilder已有的所有特性，比如加载多种不同格式不限大小和分辨率的源数据，企业版在企业里也采用多处理器和多个电脑共同运转的能力来分担工作量。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对企业版进行操作就好像多个TerraBuilder拷贝在数据集中共同工作来进行进程。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（三）、&lt;span style="font-family: Arial;"&gt;TerraBuilder DirectConnect:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraBuilder DirectConnect与TerraGate相连接，它能够将航空和高程数据本身格式的文件（如ECW,Mr，SID）传送给TerraBuilder用户。它能够通过网络应用TerraGate服务器把原数据直接传送给TerraExplorer和TerraExplorer Pro&amp;nbsp;客户，使你免于创建3D地表数据集，从而节省了你的时间和资源。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;新版本的TerraBuilder DirectConnect和TerraGate连接，使用户能够在TerraBuilder工程中直接飞行，减少了创建MPT文件的需要。你可以把你的源数据加载到一个TerraBuilder工程中，演示所有需要的操作，并使它能够被TerraGate客户所应用。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（四）、&lt;span style="font-family: Arial;"&gt;TerraExplorer Pro&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;mdash;&amp;mdash;&lt;em&gt;是一个强大的便于应用的工具，它用来编辑，注释和发布现实影像的交互的&lt;/em&gt;&lt;em&gt;&lt;span style="font-family: Arial;"&gt;3D&lt;/span&gt;&lt;/em&gt;&lt;em&gt;环境&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;strong&gt;TerraExplorer Pro&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;用自己的影像来构建数字世界。通过TerraBuilder对地理参考的三维模型进行编辑和标记，用户可以定制Terra experience&amp;nbsp;使当地地理地物高亮显示。在3D地图上叠加用户自有的专题信息，能够创建一个令人激动的交互式应用成果，来突出一个地区的特征，显示其功能、相互关系以及从一个独特的视点展示该地区。&lt;/p&gt;&lt;p&gt;TerraExplorer Pro的所有产品都是基于一种技术建立的。TerraExplorer Viewer提供基本的观看功能。TerraExplorer Pro GIS Edition增加了编辑、分析和控制工具。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;TerraExplorer Pro&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;特性：&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;通过网络有效为地表传输数据或进行叠加&lt;/p&gt;&lt;p&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;为生成公开的丰富的3D地表可视化场景提供所有需要的工具&lt;/p&gt;&lt;p&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;包含交互式的画图工具在三维地表模型上创建和添加几何图形，用户定义的物体，建筑物，文本，位图等&lt;/p&gt;&lt;p&gt;4.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;能够生成和导入静态和动态二维和三维物体，符号和地理参考信息层&lt;/p&gt;&lt;p&gt;5.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;能够加载标准在线和无线的GIS层&lt;/p&gt;&lt;p&gt;6.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;将层保存为GIS标准文件格式&lt;/p&gt;&lt;p&gt;7.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;采用标准COM界面与外面本地和网络应用程序相连接&lt;/p&gt;&lt;p&gt;8.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;能够控制其中所有的静态和动态物体，信息层和应用程序。&lt;/p&gt;&lt;p&gt;9.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;拥有一系列测量和地表分析工具&lt;/p&gt;&lt;p&gt;10.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自动驾驶特征能够在TerraExplorer中创建预定义路线并进行重复播放&lt;/p&gt;&lt;p&gt;11.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;采用鼠标、键盘和飞行控制板的结合来控制速度、高度和视角&lt;/p&gt;&lt;p&gt;12.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;能够通过已经记录的飞行路径创建飞行动画（AVI格式）或一组帧文件&lt;/p&gt;&lt;p&gt;13.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;能够生成三维窗口的快照并保存为另外的文件&lt;/p&gt;&lt;p&gt;14.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;超链接特征能够把特定区域、物体连接到网页、应用程序和数据集上&lt;/p&gt;&lt;p&gt;15.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;能够集合文本和网络内容上的信息&lt;/p&gt;&lt;p&gt;16.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;发布工具能够将视景输出给Inter网或局域网的用户&lt;/p&gt;&lt;p&gt;17.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;为本地和远程用户提供改良级的安全设置&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="PostList"&gt;&lt;div class="PostTop"&gt;&lt;div class="PostAuthor"&gt;chxbj&lt;/div&gt;&lt;div class="PostTime"&gt;2008-6-8 22:38:46&lt;/div&gt;&lt;/div&gt;&lt;div class="PostBody"&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（五）、&lt;/strong&gt;&lt;strong&gt;TerraDeveloper&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraDeveloper添加的用户界面定制功能能够和TerraExplorer Run Time Pro一起应用。TerraExplorer Pro还包括一套全面的工具和扩展模块。所有的工具都是用TerraExplorer Pro API开发的，这些工具都能够被TerraExplorer Pro, TerraExplorer Run Time Pro&amp;nbsp;和TerraExplorer Viewer激活，当然要有特殊的许可。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraDeveloper能够创建定制的&lt;strong&gt;&lt;span style="font-family: Arial;"&gt;TerraExplorer Pro&lt;/span&gt;应用程序。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraDeveloper软件开发包是一套ActiveX&amp;nbsp;控件，它给开发者提供全面的用户化的TerraExplorer Pro应用软件。利用TerraExplorer Pro的环境，开发者能够在三维中通过在任意应用或HTML网页上合并TerraExplorer Pro构建自己的应用程序。TerraDeveloper允许在基于PC机的系统上，向任何应用程序中添加强大的三维地理空间界面，包括桌上型电脑，膝上型电脑，网络和无线设备。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（六）、&lt;/strong&gt;&lt;strong&gt;TerraExplorer&lt;/strong&gt;&amp;nbsp;&lt;strong&gt;Viewer&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;mdash;&amp;mdash;&lt;em&gt;允许用户在三维地表环境中自由的飞行&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraExplorer打开了通向数字星球的大门。现在，个人PC机用户能够预先充分地体验交互地表可视场景，而不用等到昂贵的三维可视化系统建立完成以后。应用Skyline的&amp;nbsp;TerraExplorer，在由Skyline的Terra产品创建的高分辨率的三维世界环境中,&amp;nbsp;用户能够自由地进行漫游。这些现实的基于地表的航空影像能够通过Inter网或者局域网进行传输，并且能够存储到DVD/CD-ROM中。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraExplorer能够从任何视角或者视点显示高清晰的详细的现实视景，并且能够对其中的部分区域以相当好的清晰程度进行近距离的观看。另外，所有叠加在地表的信息（如由Pro创建或者导入的文本，标签，图形和三维物体）都能够在TerraExplorer中看到。用户也能够激活放在地表上的链接自动进入特定的网址，搜索数据库或调用外部PC的应用程序。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraExplorer的网络功能允许用户通过网络进入全球三维地表可视化场景，为多种多样的商业和专业应用创造商业机会。TerraExplorer的简易操作和灵活性使它适合诸如直播现场运动会，房地产，观光旅游，教育，娱乐，商业策划和跟踪，也可以应用于军事，航空和仿真模拟。TerraExplorer把数字地球带到了你的家里和办公室。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（七）、&lt;span style="font-family: Arial;"&gt;TerraExplorer Run Time Pro&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style="font-family: Arial;"&gt;TerraExplorer Run Time Pro&lt;/span&gt;是为了运行由&lt;/strong&gt;TerraDeveloper开发的程序而设计的&lt;strong&gt;一个应用程序部件，它充分应用&lt;/strong&gt;TerraExplorer Pro API。由TerraDeveloper开发的程序能够被有成本效益的TerraExplorer Run Time Pro分配。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（八）、&lt;span style="font-family: Arial;"&gt;The TerraExplorer extensions&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&lt;span style="font-family: Arial;"&gt;TerraExplorer extensions&lt;/span&gt;是一套可选的能够被添加到&lt;/strong&gt;&lt;span style="font-family: Arial;"&gt;TerraExplorer Pro, TerraExplorer Viewer,&lt;/span&gt;和&lt;span style="font-family: Arial;"&gt;TerraExplorer Run Time Pro&lt;/span&gt;&lt;strong&gt;的工具和应用程序集，需要特殊许可。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（九）、TerraGate&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: Arial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;TerraGate&lt;/strong&gt;&lt;strong&gt;是一种强大的网络数据服务器技术，它能够现时传送&lt;/strong&gt;&lt;strong&gt;3D&lt;/strong&gt;&lt;strong&gt;地理数据。&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;TerraGate&lt;/strong&gt;&lt;strong&gt;能够同时向数以千计的客户传送&lt;/strong&gt;&lt;strong&gt;Skyline&lt;/strong&gt;&lt;strong&gt;数字地球数据。它提供一个平台，这个平台使由&lt;/strong&gt;&lt;strong&gt;Terra&lt;/strong&gt;&lt;strong&gt;开发和编辑工具创建的多个应用程序运行。通过和&lt;/strong&gt;TerraBuilder, TerraDeveloper,&amp;nbsp;和TerraExplorer Pro进行连接，TerraGate使得数字地球能够实现，并实现了地理参考的背景和基于网络的应用程序。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraGate和视频流技术有着明显的不同，因为它的运行是基于网络无缝可变带宽的，并且不会被连通性的潜伏和中断而影响。&lt;strong&gt;当初始影像以低分辨率被用户所接收，用户就能够开始进行三维显示，而不用等到所有的数据集都传输完毕。这项技术的突破为平滑和更有用的用户经历展示了无缝的三维图像。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对&lt;span style="font-family: Arial;"&gt;TerraGate&lt;/span&gt;客户服务器模型进行优化，它能够使数以千计的用户接收带宽由低到高的实质的，无限制量的数据集，给每个用户不间断的观看效果。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="font-family: Arial;"&gt;TerraGate&lt;/span&gt;的技术是可以无限升级的，它允许位于不同地区的多个服务器共同分担负荷同时传输三维数据集。在多处理器的环境下，&lt;span style="font-family: Arial;"&gt;TerraGate&lt;/span&gt;能够在所有的可用的处理器中自动分配负荷。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-family: Arial;"&gt;TerraGate&amp;nbsp;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;的特点&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;1.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;通过内部网络或&lt;span style="font-family: Arial;"&gt;Inter&lt;/span&gt;网进行&lt;span style="font-family: Arial;"&gt;3D&lt;/span&gt;数据的传输&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;2.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对低带宽的情况能够进行最优化&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;3.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;简单的可测量性设计&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;4.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;采用&lt;span style="font-family: Arial;"&gt;TCP/IP&lt;/span&gt;协议&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;5.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;与防火墙和代理服务器共同工作&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;6.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;充分利用多处理器服务器的硬件优势&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;7.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;有效处理大量数据集&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;8.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;地表数据的大小只被磁盘媒质所限制&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（十）、&lt;/strong&gt;&lt;strong&gt;Internet&amp;nbsp;&amp;nbsp;License&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Skyline技术将用户网络数据集和应用程序连接到数字地球环境下。&lt;strong&gt;Internet&amp;nbsp;&amp;nbsp;License&lt;/strong&gt;提供一个简单的方法生成指令来指导或提高用户在三维世界中的经历。例如，用户搜索房地产清单，这些清单在我们的数字地球中被转换为相匹配的地址，带给用户的是目标的准确定位，并圈出目标。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;Internet&amp;nbsp;&amp;nbsp;License&lt;/strong&gt;扩展部件，应用它的脚本语言，通过在网络上创建TerraExplorer&amp;reg; FLY文件生成特定的，目标的现时的飞行经历。&lt;strong&gt;Internet&amp;nbsp;&amp;nbsp;License&lt;/strong&gt;系统基于客户的要求创建定制的Skyline TerroExplorer文件。客户的特殊要求以HTML的形式提供给&lt;strong&gt;Internet&amp;nbsp;&amp;nbsp;License&lt;/strong&gt;，这其中包括&lt;strong&gt;Internet&amp;nbsp;&amp;nbsp;License&lt;/strong&gt;脚本命令，它被转换成为可识别的TerraExplorer FLY文件。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TerraExplorer FLY文件包含飞行期间的设置。它存储了飞行区域的信息（采用什么三维地表数据集），标识（影像，文本等），路线，二维和三维物体等。&lt;strong&gt;Internet&amp;nbsp;&amp;nbsp;License&lt;/strong&gt;所应用的脚本语言几乎支持FLY文件每个方面的功能。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;（十一）、&lt;/strong&gt;&lt;strong&gt;TerraPhoto3D&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Skyline的TerraPhoto3D是一个用来在网络上生成流畅的、引人注目的可视化场景的易于展开、便于应用的三维环境。TerraPhoto3D提供不用扩展复杂的程序，快速展开现时的、三维的基于HTML的地表影像。它能够轻松与任何网址或者第三方的产品结合，易于进行用户化定制。因为它所要求的带宽很低，用户能够从任何PC机、网络浏览器和任何手持无线设备上访问TerraPhoto3D。不需要插件，也不需要下载任何东西。动态可视特征和交互飞行不仅能够简单实现，而且他们也给用户提供一个丰富的、独特的在线经历，这在网络上是无可匹敌的。&lt;/p&gt;&lt;p&gt;l&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对那些要求高质量区域影像或那些提供给他们的用户形象化产品和服务的想要有竞争优势的人来说，&lt;span style="font-family: Arial;"&gt;TerraPhoto3D&lt;/span&gt;是一个在行业范围内比较理想商业软件。添加&lt;span style="font-family: Arial;"&gt;TerraPhoto3D&lt;/span&gt;影像能够增加访问量和查询，最终推进销售和收入。在网址上应用&lt;span style="font-family: Arial;"&gt;TerraPhoto3D&lt;/span&gt;给你的用户一个独特的经历。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;工作流程：&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首先，采用正摄航空或卫星影像和地表高程数据，在TerraBuilder中生成地表数据集（MPT文件）。&lt;/p&gt;&lt;p&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;然后将地表数据集文件加载到TerraExplorer桌面应用程序，并用编辑工具从本地数据库或网络上的扩展GIS数据库中添加2D和3D信息，预定制路线、位置和GIS文件&lt;/p&gt;&lt;p&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最后保存工程文件或者打包输出，使它能够被分配到CD/DVD ROM或发布到网页上。Basic kit包含工程中用到的所有的资源，因此它相对于源文件是独立的。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;基于网络的工作流程：&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;采用TerraGate服务器，任何TerraExplorer客户都能够通过网络获取地表数据集（MPT文件）。对TerraGate进行设置限制基于用户名/密码可以实现几个级别。TerraGate也能够与TerraBuilder DirectConnect连接来读取源影像和地表数据本身的格式，前面所述的预处理数据的需要。采用DirectConnect选项，所需要的所有文件都被加载到TerraBuilder中影像和地表数据，并保存工程而不用生成MPT文件。然后TerraGate能够直接与这个工程文件连接并通过网络把数据传送给TerraExplorer。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/1881316.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2010/11/18/1881316.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flyingfish/archive/2010/11/18/1881297.html</id><title type="text">【转】TB（TerraBuilder）转换日志：解决影像数据坐标转换后，在Skyline平台不能显示的问题</title><summary type="text">http://www.cnblogs.com/shaoge/articles/1553484.htmlTB转换日志发现问题：原始快鸟影像，坐标不正确，并且不能添加到TB中。问题导致的原因：TB不支持16bit格式的影像数据，只支持8bit的。解决办法：第一步：转换坐标使用ArcGIS中的调出工具箱使用Data Management Tools -&gt; Projections and Trans...</summary><published>2010-11-18T15:14:00Z</published><updated>2010-11-18T15:14:00Z</updated><author><name>flyingfish</name><uri>http://www.cnblogs.com/flyingfish/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flyingfish/archive/2010/11/18/1881297.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flyingfish/archive/2010/11/18/1881297.html"/><content type="html">&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;a href="http://www.cnblogs.com/shaoge/articles/1553484.html"&gt;http://www.cnblogs.com/shaoge/articles/1553484.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;a href="http://www.cnblogs.com/shaoge/articles/1553484.html"&gt;&lt;/a&gt;TB转换日志&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: Arial;"&gt;发现问题：原始快鸟影像，坐标不正确，并且不能添加到TB中。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;问题导致的原因：TB不支持16bit格式的影像数据，只支持8bit的。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;解决办法：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;第一步：转换坐标&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;使用ArcGIS中的&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image001.png" alt="" /&gt;&amp;nbsp;调出工具箱&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;使用Data Management Tools -&amp;gt; Projections and Transformations -&amp;gt; Project Raster工具&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: Arial;"&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image003.png" alt="" /&gt;&lt;br /&gt;在打开对话框&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image005.png" alt="" /&gt;&lt;br /&gt;在input raster中选择要转换的文件。&lt;/p&gt;&lt;p&gt;在Output raster中选择输出文件保存的路径。&lt;/p&gt;&lt;p&gt;Output coordinate system会打开对话框&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image007.png" alt="" /&gt;&lt;br /&gt;选择Select&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image009.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image011.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;Geographic Coordinate Systems -&amp;gt; World -&amp;gt; WG S1984 .prj&lt;/p&gt;&lt;p&gt;后点OK即可。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第二步：从16bit转换到8bit&lt;/p&gt;&lt;p&gt;使用ArcGIS中的&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image002.jpg" alt="" /&gt;&amp;nbsp;调出工具箱&lt;/p&gt;&lt;p&gt;使用Data Management Tools -&amp;gt; Raster -&amp;gt;Copy Raster工具&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image004.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;在弹出的对话框中&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image016.png" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image018.png" alt="" /&gt;&lt;/p&gt;&lt;p&gt;Input Raster选择要转换的文件&lt;/p&gt;&lt;p&gt;&amp;nbsp;Output Raster DataSet选择要输出的路径名称&lt;/p&gt;&lt;p&gt;&amp;nbsp;在Pixel Type （optional）中选择转换格式&lt;/p&gt;&lt;p&gt;应选择8_BIT_UNSIGNED&lt;/p&gt;&lt;p&gt;然后点击OK即可完成转换。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;第三步：输出Tif格式文件&lt;/p&gt;&lt;p&gt;把刚才转换成功的文件，使用&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image020.png" alt="" /&gt;&amp;nbsp;添加到ArcMap中&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image022.png" alt="" /&gt;&lt;br /&gt;右键点击，在弹出的菜单中使用&lt;/p&gt;&lt;p&gt;Data -&amp;gt;&amp;nbsp; Export Data&amp;hellip;命令将弹出对话框&lt;/p&gt;&lt;p&gt;&lt;img src="http://www.hfdigg.com/UploadFile/TBPhoto/image024.png" alt="" /&gt;&lt;br /&gt;在对话框的Name框中输入要输出的文件名称&lt;/p&gt;&lt;p&gt;在Format下拉框中选中TIFF格式&lt;/p&gt;&lt;p&gt;在Location中选择文件输出的路径&lt;/p&gt;&lt;p&gt;一切选择好后点Save按钮完成即可&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div id="digg_block"&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/flyingfish/aggbug/1881297.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flyingfish/archive/2010/11/18/1881297.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
