2010-09-01 14 views
26

मेरे पास कुछ जवाब हैं! अपने स्वयं के निष्कर्षों का योगदान करने के लिए स्वतंत्र महसूस करें।टीएफएस एसडीके एपीआई का उपयोग कर टीएफएस टीम परियोजनाओं को पुनः प्राप्त करने का सबसे तेज़ तरीका क्या है?

जहाँ तक मुझे पता है, वहाँ TFS से टीम परियोजनाओं का एक सरल सूची प्राप्त करने के 3 मुख्य तरीके हैं:

  • नई सूची सेवा (TFS 2010)
  • VersionControlServer (TFS 2008 का उपयोग का उपयोग करना/2010)
  • ICommonStructureService (TFS 2008/2010)

सरल परीक्षण मैं आयोजित का उपयोग करते हुए तीन तरीकों की तुलना में जब परियोजनाओं की कुल संख्या की गणना के लिए लौट आए।

विधि 1: सूचि सेवा (TFS 2010 केवल)

public IEnumerable<string> GetTeamProjectNamesUsingCatalog() 
    { 
     ReadOnlyCollection<CatalogNode> projectNodes = new TfsTeamProjectCollection(collectionUri).CatalogNode.QueryChildren(
        new[] { CatalogResourceTypes.TeamProject }, 
        false, CatalogQueryOptions.None); 

     foreach (var tp in projectNodes) 
      yield return tp.Resource.DisplayName; 
    } 

विधि 2: VersionControlServer

public IEnumerable<string> GetTeamProjectNamesUsingVCS() 
    { 
     TfsTeamProjectCollection tp = new TfsTeamProjectCollection(collectionUri); 

     foreach (var p in tp.GetService<VersionControlServer>().GetAllTeamProjects(false)) 
      yield return p.Name; 
    } 

विधि 3: ICommonStructureService

public IEnumerable<string> GetTeamProjectNamesUsingStructureService() 
    { 
     var structService = new TfsTeamProjectCollection(collectionUri).GetService<ICommonStructureService>(); 

     foreach (var p in structService.ListAllProjects()) 
      yield return p.Name; 
    } 

मेरे द्वारा चलाए गए यूनिट परीक्षण सुपर सरल थे। मैंने यह सुनिश्चित करने के लिए .ount() विधि का उपयोग किया है कि हम सभी टीम परियोजनाओं को पुन: सक्रिय करते हैं (.ny() तेज़ है क्योंकि यह पहला नाम लौटाए जाने के बाद बंद हो जाएगा)।

परिणाम

TFS 2010 के लिए एक पंक्ति में 3 परीक्षण चलाने के 5 गुना:

TFS 2010 Chart Average Duration

TFS 2010 Duration Results

TFS 2008 के लिए, 2 परीक्षण चलाने (कोई सूची सेवा) पंक्ति में 5 बार:

TFS 2008 Chart Average Duration

TFS 2008 Duration Results

Biases

  • TFS 2010 सर्वर इस के खिलाफ चल रहा था विकास में था, तो शायद ही किसी को भी इसे का उपयोग किया गया था।
  • मैंने किसी भी कम से कम विशेषाधिकार उपयोगकर्ता खातों के साथ इसका परीक्षण नहीं किया; मैं सर्वर पर एक व्यवस्थापक हूँ।
  • मैं कॉर्पोरेट नेटवर्क के भीतर एक टीएफएस सर्वर से संचार कर रहा हूं।
  • टीएफएस 2010 में, आपके पास एकाधिक TfsTeamProjectCollections हो सकते हैं; आपको उन लोगों के माध्यम से भी पुन: प्रयास करना होगा। इस परीक्षण में, मैंने केवल एक संग्रह का उपयोग किया था।
  • मैंने TfsTeamProjectCollection बनाने के लिए निर्माता का उपयोग किया; मैंने TfsTeamProjectCollectionFactory.GetTeamProjectCollection() विधि का उपयोग करने के लिए स्विच किया और यह वास्तव में प्रत्येक टेस्ट रन धीमा था। यदि आप प्रति अनुरोध एकाधिक कॉल करते हैं तो यह तेज़ हो सकता है।
  • टीएफएस 2008 के लिए, सर्वर लोड के तहत एक उत्पादन सर्वर है (यानी असली दुनिया)।

निष्कर्ष

आप देख सकते हैं, यह ICommonStructureService की तरह लगता है काफी तेजी से टीम के सभी ढूँढने में है परियोजनाओं पहले निष्पादन के बाद। नोट: मैंने ICommonStructureService3 (टीएफएस 2010 एपीआई में नया) का उपयोग करके पहले परीक्षण किए थे और वही कोड अन्य दो तरीकों से धीमा था।

यदि लगातार प्रदर्शन महत्वपूर्ण है, तो मुझे लगता है कि मैं इसे करने के लिए VersionControlServer की अनुशंसा करता हूं।

ध्यान रखें कि आप टीम परियोजनाओं के साथ क्या करना चाहते हैं, हालांकि। यदि उन्हें बस सूचीबद्ध करना आवश्यक है, तो आईसीएसएस शायद जाने का रास्ता है। यदि आप नेविगेशन के लिए सूची का उपयोग करना चाहते हैं, तो आपको पथ ($/TeamProject) या उरी की भी आवश्यकता होगी। उस स्थिति में, वीसीएस शायद जाने का सबसे अच्छा तरीका है क्योंकि आप ServerItem संपत्ति का उपयोग कर सकते हैं, जिसमें आइटम का मार्ग होता है। आप आईसीएसएस ("$/" + p.Name) का उपयोग करके सरल स्ट्रिंग कॉन्सटेनेशन से भी दूर हो सकते हैं।

उम्मीद है कि यह कुछ अन्य TFS API डेवलपर्स की सहायता करता है।

+0

हालांकि विषय में प्रदर्शन शामिल है, ध्यान दें कि 'VersionControlServer' हमेशा सभी टीम परियोजनाओं को सूचीबद्ध नहीं करता है। यह परियोजना के नियंत्रण स्रोत का उपयोग करता है या नहीं। –

उत्तर

8

अपने आंकड़ों को देखते हुए, मुझे का सबसे तेज़ खोजने का लाभ नहीं दिखाई देता है। वे सभी स्पष्ट रूप से अविश्वसनीय रूप से तेजी से लगते हैं। क्या यह अनुकूलन पर प्री-प्रोग्रामिंग हो सकता है?

संबंधित मुद्दे