国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

“不完美”的VS 2005 Team System

2019-11-17 04:38:29
字體:
供稿:網(wǎng)友

  Visual Studio Team System中新增的生命期治理,無疑是Microsoft在這個(gè)競爭已白熱化的市場(chǎng)中的又一個(gè)重要籌碼。

  Visual Studio與它的競爭對(duì)手Eclipse,都日益吸引著越來越多的開發(fā)者投入到它們中來,作為一個(gè)源代碼編輯器,Eclipse已慢慢成長為一個(gè)功能齊全、反應(yīng)迅速的工具了,但除了重構(gòu)之外(這也是java領(lǐng)先多年之處),其他方面已對(duì)微軟構(gòu)不成什么威脅了,要對(duì)這兩種開發(fā)工具進(jìn)行量化比較是不可能的,但微軟似乎總能在代碼輸入感受及界面效果上技高一籌。

  Visual Studio Team System(VSTS)是首個(gè)交付了軟件生命周期治理工具的Visual Studio版本,而VSTS Team Server中主要的生命周期治理工具是源代碼控制服務(wù)器(source control server)及集成的工作項(xiàng)目跟蹤系統(tǒng)(work-item tracking system),這些產(chǎn)品構(gòu)建于SQL Server 2005之上,因此,能有一系統(tǒng)企業(yè)級(jí)的強(qiáng)大功能,如:備份、復(fù)制及具有可伸縮性。不過,源代碼數(shù)據(jù)庫仍是一個(gè)不成熟的"數(shù)字資源"樣品,它的崩潰仍會(huì)帶來整體上的災(zāi)難,在采用其他的源代碼控制系統(tǒng)時(shí),這也是需重點(diǎn)考慮的一個(gè)因素。

  除去SQL Server 2005的核心健壯性之外,VSTS源代碼控制服務(wù)器也具有某幾項(xiàng)使之區(qū)別于Visual SourceSafe的特性:它工作于HTTP協(xié)議,并對(duì)時(shí)區(qū)敏感,還可把簽出的項(xiàng)目存儲(chǔ)在一個(gè)"架子"上,以便可從多個(gè)地理位置進(jìn)行訪問。這個(gè)"架子"功能非常方便實(shí)用,它可讓你從多部電腦或多個(gè)位置訪問源代碼,而無須簽入目前進(jìn)度中的工作。另一個(gè)相關(guān)的特性是賦予了簽入更嚴(yán)謹(jǐn)?shù)牟呗裕纾泻炄氡仨殞懨饕粋€(gè)已指派的工作項(xiàng)目、運(yùn)行無誤的單元測(cè)試、或者已完成FxCop代碼分析。同樣,也可以特定的角色(如代碼審閱員、安全審計(jì)員等等),請(qǐng)求批準(zhǔn)簽入。

  VSTS中的工程項(xiàng)目治理圍繞于"工作項(xiàng)目"的概念,微軟使用它來查閱軟件缺陷及功能的完成進(jìn)度。VSTS中的工作項(xiàng)目在Microsoft PRoject、Team Server、Exchange、Outlook、SsharePoint,甚至ExcelWord這樣的工具之間流動(dòng),這樣的整合集成也是一把雙刃劍,意味著為了達(dá)到協(xié)作的目的,要付出的價(jià)格可是固定不變的,恐怕買齊所有這些產(chǎn)品的開發(fā)團(tuán)隊(duì),還是少之又少的。

  除去服務(wù)端的特性及它們客戶端的表現(xiàn),VSTS還為IDE自身引入了一些新工具,其中最獨(dú)特之外,是它們構(gòu)建于測(cè)試及建模的新基礎(chǔ)架構(gòu)之上;而VSTS最具爭議的方面,是微軟已創(chuàng)建了單獨(dú)的SKU以加強(qiáng)這些不同的基礎(chǔ)架構(gòu)。大多數(shù)人是從MSDN的訂閱獲得Visual Studio安裝版本的,對(duì)專業(yè)開發(fā)人員來說,一份MSDN宇宙版早已是事實(shí)中的標(biāo)準(zhǔn)。可由于VSTS,訂閱者就必須從三個(gè)SKU中(架構(gòu)師、開發(fā)者、測(cè)試員)選擇一個(gè),或?yàn)榱说玫酵暾墓δ芏冻龈叩膬r(jià)格。

  架構(gòu)師版本

  基礎(chǔ)架構(gòu)的建模是其中頗具爭議的部分,在這里,當(dāng)你提到"建模"時(shí),人們會(huì)自然地想到"UML",統(tǒng)一建模語言(UML)在建模領(lǐng)域已有超過十年的中心地位,其規(guī)范已由ISO組織標(biāo)準(zhǔn)化。微軟對(duì)其的態(tài)度是,UML存在兩個(gè)主要的問題:它以描述程序行為為中心,因此會(huì)與源代碼相沖突;而這些年來表現(xiàn)出的沖突已說明UML太笨拙,難以再擴(kuò)展。以上兩點(diǎn),事實(shí)上的確也存在,但來自競爭對(duì)手IBM的Rational才是真正的問題所在。

  微軟一直在辯駁其在基于Visio的工具中支持UML,并且表示使用新的建模架構(gòu),任意第三方也能開發(fā)出一種UML建模工具,但實(shí)際上卻不完全正確。盡管Visio是一個(gè)非常不錯(cuò)的工具,但微軟的UML工具太簡單,完全與那些真正的UML建模工具,如Rational Software Architect、Borland Together、Visual Paradigm等齊名的產(chǎn)品不在同一水平上。另外,與第三方建模工具相比,如Visual Object Modeler的Visual UML,在這一點(diǎn)上,微軟自身基礎(chǔ)架構(gòu)之上的建模工具還不是很成熟。

  除去UML,VSTS中為軟件架構(gòu)師預(yù)備的可視化建模工具,已為微軟擺出了一個(gè)強(qiáng)制性的姿態(tài),那就是UML并不是它聲稱般那樣有效。但在此發(fā)行版本中,也有一些值得關(guān)注的地方,如邏輯數(shù)據(jù)中心、系統(tǒng)配置及部署的可視化設(shè)計(jì)器,即使對(duì)大公司來說,這些也是非常值得關(guān)注的產(chǎn)品。這些可視化設(shè)計(jì)器可讓你在面向服務(wù)的部署中,指定軟件、硬件及網(wǎng)絡(luò)環(huán)境。那些服務(wù)器剛好裝滿一個(gè)機(jī)架的小型或中型企業(yè),可能不會(huì)把它們當(dāng)作重要的工具,但在中型及大型的數(shù)據(jù)中心部署上,它們的價(jià)值就馬上顯露出來了。其實(shí)還真想知道,這樣的部署設(shè)計(jì)是否真的是在架構(gòu)師的領(lǐng)域范疇之內(nèi)呢。

  別的事不好說,可軟件具體設(shè)計(jì)中唯一清楚的一件事,就是要編寫代碼,這通常意味著要編寫單元測(cè)試代碼。在過去五年中,軟件開發(fā)主流最重要的變化之處,是在托管代碼解決方案的開發(fā)中,集成單元測(cè)試。但在軟件架構(gòu)產(chǎn)品中,VSTS并沒有使測(cè)試工作更輕松,假如無法負(fù)擔(dān)10939美元的Team Suite SKU,就必須在可視化建模工具及其他測(cè)試工具之間做出選擇,在這一點(diǎn)上,其他測(cè)試工具更具有優(yōu)勢(shì)。進(jìn)入討論組討論。
測(cè)試員版本

  并不是說,測(cè)試工具是完美的,NUint的"綠色化、干凈化"的理念使它有一種精煉的純度,使之非常易于集成進(jìn)你的開發(fā)過程中。另一方面,VSTS答應(yīng)以多種方法進(jìn)行測(cè)試,測(cè)試用例能在調(diào)試器下運(yùn)行或單獨(dú)運(yùn)行,也能選擇多個(gè)不同的測(cè)試等等。
悲哀的是,就測(cè)試函數(shù)的可伸縮性及多樣性來說,F(xiàn)IT(測(cè)試用例輸入輸出的表格描述)還未獲得支持。

  開發(fā)人員版本

  對(duì)開發(fā)人員來說,VSTS在基于Visio建模的基礎(chǔ)上,整合了單元測(cè)試。它沒有了架構(gòu)師版本中的,以部署為中心的建模器,并加載了測(cè)試員版本中的測(cè)試用例治理工具。這種平衡真有點(diǎn)難以取舍:假如你能放棄建模器,測(cè)試員版本的VSTS將是更好的SKU。

  包裝盒中的秘密

  在Visual Studio 2005中,微軟支持以下四種語言:C#、Visual Basic、C++、J#,C#與Visual Basic可是 .NET中的重量級(jí)選手。在 .NET 2.0中,最主要變化的是演變?yōu)橥ㄓ谜Z言運(yùn)行時(shí)庫(CLR),而C# 2.0則在其中加入了對(duì)泛型的支持,最常見的是集合類庫、混合了特定類中類型安全的泛型。

  泛型存在的必要性已爭論了很久,支持"動(dòng)態(tài)語言"中隱式類型轉(zhuǎn)換的愛好者,對(duì)類型的安全聲明并不感愛好,其他的,如Java領(lǐng)域,也表示與它們引入的復(fù)雜性相比,所提供的價(jià)值并不明顯。但就個(gè)人來說,還是傾向于顯式類型轉(zhuǎn)換,實(shí)際上,在Visual Basic的世界中,盡管支持泛型,但它們似乎總不是討論的焦點(diǎn)。(所有的 .NET語言至少必須能使用泛型,所有微軟公司的語言都能使用及生成泛型。)

  CLR中泛型的實(shí)現(xiàn),還是有點(diǎn)意思的。在C++中,泛型的實(shí)例化是在編譯時(shí)完成的--編譯器為每個(gè)實(shí)例化的泛型,都生成了一個(gè)不相同的二進(jìn)制類型。在Java 5中,類型安全的語法,由一個(gè)單一的存儲(chǔ)了Object引用的運(yùn)行時(shí)泛型提供支持,遠(yuǎn)比C++所使用的模型簡潔得多,但卻需要對(duì)值類型進(jìn)行裝箱及解箱(轉(zhuǎn)換為及轉(zhuǎn)換自基于Object的引用類型)。在CLR中,假如泛型的類型參數(shù)為一個(gè)值類型,在加載時(shí),一個(gè)確切的泛型會(huì)被實(shí)例化,這讓CLR泛型有了Java泛型中的可伸縮性及簡潔性,且對(duì)值類型來說,也提高了執(zhí)行效率。

  例1是C#及Java的對(duì)比程序,程序用于顯示裝箱帶來的性能損失。編譯并運(yùn)行在一個(gè)2.66G,32位Intel處理器上,系統(tǒng)為VMWare中的Windows Server 2003,并為其分配了1G的內(nèi)存。對(duì)比開發(fā)工具為C# 2.0及Java JDK 5.0 Update 6,C#程序在3.01秒內(nèi)運(yùn)行完畢,而Java程序在10.109秒內(nèi)運(yùn)行完畢。雖然這可能代表了最壞情況下的Java表現(xiàn),但也表明裝箱的性能損失真的是非常大。

  例1:C#及Java的對(duì)比程序

//Program.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace Consoleapplication1
{
 class Program
 {
  static void Main(string[] args)
  {
   RunIt();
   DateTime start = DateTime.Now;
   for (int i = 0; i < 5; i++)
   {
    RunIt();
   }
   TimeSpan elapsed = DateTime.Now - start;
   Console.WriteLine("Elapsed time: {0} ms", elapsed);
   Console.ReadLine();
  }
  static void RunIt()
  {
   List<int>[] n = new List<int>[5];
   for (int i = 0; i < n.Length; i++)
   {
    n[i] = new List<int>();
   }
   for (int i = 0; i < 1000000; i++)
   {
    n[0].Add(1);
   }
   for (int i = 1; i < n.Length; i++)
   {
    List<int> newArray = n[i];
    List<int> oldArray = n[i - 1];
    foreach (int j in oldArray)
    {
     newArray.Add(oldArray[j] * 2);
   }
  }
  for (int i = 0; i < n.Length; i++)
  {
   List<int> array = n[i];
   foreach (int j in array)
   {
    int number = j;
   }
  }
 }
 }
}

//GenericValueArrayListTest.java
import java.util.*;

public class GenericValueArrayListTest {
 public static void main(String[] args) {
  RunIt();
  Date start = new Date();
  for(int i = 0; i < 5; i++){
   RunIt();
  }

  Date finish = new Date();
  System.out.printf("Elapsed time: %d ms", finish.getTime() -
   start.getTime());
 }

 static void RunIt()
 {
  ArrayList<Integer>[] n = new ArrayList[5];
  for(int i = 0; i < n.length; i++){
   n[i] = new ArrayList<Integer>();
  }
  for (int i = 0; i < 1000000; i++) {
   n[0].add(1);
  }
  for(int i = 1; i < n.length; i++){
   ArrayList<Integer> newArray = n[i];
   ArrayList<Integer> oldArray = n[i - 1];
   for(int j : oldArray){
    newArray.add(j * 2);
   }
  }
  for (int i = 0; i < n.length; i++) {
   ArrayList<Integer> array = n[i];

   for(int j : array){
    int number = j;
   }
  }
 }
}
  除了泛型,C# 2.0主要是通達(dá)LINQ(Language Integrated Query 語言集成查詢)的一塊踏腳石。這又是一種橫跨微軟公司語言產(chǎn)品的功能,但這次是由C#充當(dāng)開路先鋒。LINQ整合lambda函數(shù)、類型推論及智能庫,設(shè)計(jì)的目的是為了使查詢--不只是數(shù)據(jù)庫而是任意集合--能成為主流編程語言中的第一類要素。

  回過頭來看Visual Basic.NET,這個(gè)版本試圖在抗拒轉(zhuǎn)向完全面向?qū)ο笳Z言的社區(qū)中,重拾對(duì)VB的激情。誠然,比較以前的版本,這次的VB.NET無疑是一次巨大的進(jìn)步,但社區(qū)中的很多人也感到,即使不能帶來任何好處,也必須重寫以往工作正常的程序,所以我們看到,一些人繼續(xù)使用VB.NET,而更多的人轉(zhuǎn)向了C#,還有一些人則全然抗拒 .NET。另外,Visual Basic引入了"My"命名空間,其目的是為了降低基類庫(Base Class Library)的復(fù)雜性及提供對(duì)對(duì)象的即時(shí)訪問,還加強(qiáng)了"編輯并繼續(xù)"這個(gè)深受大家喜愛的功能。

  在2005年秋天的專業(yè)開發(fā)者大會(huì)上,微軟展示了代號(hào)為"Visual Basic Orcas"的部分功能,包括了LINQ及在語言字面上直接整合xml。如同C#一樣,這個(gè)版本的VB看起來會(huì)有重大的改變了。

  最后來看一下C++,此次Visual Studio中最重要的變化無疑是C++/CLI了,這是一個(gè)對(duì)C++語言的擴(kuò)展,并為托管對(duì)象添加了"句柄"作為第一類語言實(shí)體,在某種意義上來說,其與指針的語法非常相似。并且,使用gcnew要害字來實(shí)例化可垃圾回收的托管對(duì)象,另外,確定性最終清理也是一大亮點(diǎn)。相比Visual Studio 2003通過雙下劃線來訪問托管對(duì)象,句柄的語法似乎更輕易使用一些。

  另一方面,Visual C++ 2005在編寫橋接或混合托管與非托管代碼的程序上,顯示出了無與倫比的可伸縮性:你可編寫完全控制進(jìn)入點(diǎn)的DLL、在各種字符串表示法之間進(jìn)行轉(zhuǎn)換、還可充分挖掘Win32的性能,并且,在托管領(lǐng)域,微軟可能會(huì)說:"對(duì)CLR而言,沒有比C++更低級(jí)的語言了,包括CLR自身。"(雖然有點(diǎn)夸大,但也可看出微軟在重心在何處。)

  對(duì)本地程序(native program)開發(fā)者來說,Visual C++ 2005也有幾項(xiàng)讓人感愛好的特性,比如:標(biāo)準(zhǔn)庫中增強(qiáng)了安全的函數(shù)實(shí)現(xiàn)--strcpy_s()以及其他;OpenMP的實(shí)現(xiàn)--其答應(yīng)對(duì)特定類型的操作,以共享內(nèi)存的方式并行處理(一般運(yùn)用于數(shù)組算法上);可支持更多的設(shè)備等等;最后,要提一下,對(duì)基于Windows的SmartPhone本地程序開發(fā),現(xiàn)在可在Visual Studio中完成了。

  既然說到設(shè)備,就講得再開一點(diǎn),Visual Studio 2005擴(kuò)大了語言可支持設(shè)備的范圍,.NET Compact Framework也有了P/Invoke功能,假如缺少它,那將是開發(fā)中的一個(gè)重大障礙。現(xiàn)在,.NET Framework已有了32位及64位版本,在64位Windows上將會(huì)并行運(yùn)行,以避免"DLL Hell"。當(dāng)然了,Visual C++ 2005也能進(jìn)行本地64位程序開發(fā)。進(jìn)入討論組討論。
IDE

  唯一能與Visual Studio 2005中窗體構(gòu)建器相抗衡的,也就是同一陣營中Visual Studio 2003的了。
Windows Form是生成基于窗體的本地應(yīng)用程序的最好的"高產(chǎn)出"庫,而asp.net 2.0也是一名不容小覷的選手,假如功力不深,恐怕如今也不會(huì)在動(dòng)態(tài)網(wǎng)站方面得到廣泛的應(yīng)用。雖然有點(diǎn)主觀,但微軟的設(shè)計(jì)時(shí)體驗(yàn),似乎反應(yīng)越來越快,也越貼近用戶,基類庫(Base Class Library)的廣泛應(yīng)用,價(jià)值無法估量,其龐大的體積,在很大程度上,也因?yàn)橛辛舜a智能感知(Intellisense),已不再是什么問題了。

  另一個(gè)不得不提的地方就是重構(gòu),不幸的是,微軟在這個(gè)領(lǐng)域的第一次努力,并不怎么讓人滿足,C#只有一小撮的重構(gòu)功能,與IDEA或Eclipse相比,無疑顯得有點(diǎn)蒼白,而此時(shí)選擇JetBrain的ReSharper或Refactor! Pro作為Visual Studio的外接程序(add-ins)時(shí),仍是物超所值。

  微軟把更多的心思,放在了"代碼段"(snippets)上面,其實(shí)質(zhì)上是模板化的代碼塊以用于自動(dòng)化普通(或復(fù)雜)任務(wù)。這看上去是一個(gè)好想法,但在日常的開發(fā)中,仍需要親自把它們合并進(jìn)源代碼,也許再過一段時(shí)間,它所帶來的方便才會(huì)日益浮現(xiàn)出來,因?yàn)榘褜?shí)質(zhì)上一樣的屬性(property)代碼編寫上一百萬遍,并不是一個(gè)什么值得鼓勵(lì)的好方法。

  盡管Visual Studio 2005最大的問題似乎存在于重構(gòu)及代碼智能感知(Intellisense)方面,但有關(guān)于穩(wěn)定性,仍存在著不少抱怨--雖然我們對(duì)它的穩(wěn)定性也缺乏比較。就個(gè)人所知已有三個(gè)嚴(yán)重的缺陷,它們幾乎都與重構(gòu)或智能感知有關(guān):在C#中,傳遞一個(gè)繼續(xù)類型作為類型參數(shù)給一個(gè)泛型超類(super-class)--這是一個(gè)合法但很少會(huì)碰到的情況,能導(dǎo)致CPU自旋鎖(spinlock);在VB中,在ToString方法中結(jié)合使用移位操作,會(huì)讓IDE崩潰;在ASP.Net中,隨著網(wǎng)站內(nèi)頁面的增多,會(huì)導(dǎo)致C#的重構(gòu)成指數(shù)級(jí)惡化。另外還有報(bào)道指,設(shè)計(jì)時(shí)異常,如由數(shù)據(jù)綁定控件產(chǎn)生的,也會(huì)導(dǎo)致IDE崩潰。

  微軟宣稱計(jì)劃為Visual Studio 2005發(fā)布兩個(gè)service pack,第一個(gè)于2006年的12月份已經(jīng)發(fā)布,致力于解決穩(wěn)定性問題;而第二個(gè)有傳言指為一個(gè)主要的service pack,將帶來新的功能,可能會(huì)包括現(xiàn)在CTP版本中的WPF設(shè)計(jì)器、為特定語言改良過的工具、甚至很可能把IronPython提升至主流開發(fā)語言的位置。

  結(jié)論

  Visual Studio Team Suite實(shí)質(zhì)上包括了一大堆的新技術(shù),2.0版本的通用語言運(yùn)行時(shí)庫及它所用的語言也都在穩(wěn)定性及執(zhí)行效率方面,經(jīng)過了改良提高,但只有C++/CLI,才是本質(zhì)上新增的改進(jìn)。而IDE也在建模及測(cè)試基礎(chǔ)架構(gòu)方面,有了兩個(gè)主要的組件:建模架構(gòu),其發(fā)展?jié)摿o可限量,但目前仍不及測(cè)試架構(gòu)那般充分開發(fā)利用;而測(cè)試架構(gòu)幾乎馬上就吸引了人們的注重力。Visual Studio Team Server是微軟一個(gè)重要的新服務(wù)器產(chǎn)品,其發(fā)展?jié)摿薮螅坪跻膊粫?huì)只把重心放在單一的開發(fā)論上。無論如何,微軟所作出帶來嶄新技術(shù)的承諾及建立對(duì)此版本產(chǎn)品的信心,都需要充分利用Team Server。

  當(dāng)然了,對(duì)大多數(shù)微軟產(chǎn)品零售商及開發(fā)者來說,升級(jí)至這一新的Visual Studio版本,大概只是時(shí)間的問題。以下是正反方觀點(diǎn):

  正方:

  ·CLR及基類庫(Base Class Library)執(zhí)行效率及穩(wěn)定性的提高。

  ·高產(chǎn)出庫,如ASP.NET及Windows Forms。

  ·可支持目標(biāo)設(shè)備的范圍擴(kuò)大:如64位及移動(dòng)設(shè)備。

  ·工作項(xiàng)目跟蹤的可伸縮性及實(shí)用性。

  反方:

  ·建模工具仍不完整全面。

  ·可疑的穩(wěn)定性。

  ·未證實(shí)的服務(wù)器組件。

  ·價(jià)格。進(jìn)入討論組討論。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鄂州市| 宾阳县| 凤台县| 武邑县| 延川县| 尚义县| 赣州市| 抚顺市| 永德县| 昌乐县| 沙湾县| 乐业县| 巴东县| 临汾市| 增城市| 浮梁县| 开封市| 孝感市| 舟山市| 和林格尔县| 左云县| 斗六市| 昭通市| 扎赉特旗| 木里| 特克斯县| 永仁县| 崇仁县| 平凉市| 高唐县| 九龙城区| 渑池县| 蒲城县| 侯马市| 巴彦县| 盘锦市| 两当县| 芮城县| 曲松县| 抚州市| 富源县|