<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msdnvietnam.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Part II- Chapter 3 --Team Development with Visual Studio Team Foundation Server </title><link>http://msdnvietnam.net/wikis/tfs/part-ii-chapter-3-team-development-with-visual-studio-team-foundation-server.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>Part II- Chapter 3 --Team Development with Visual Studio Team Foundation Server </title><link>http://msdnvietnam.net/wikis/tfs/part-ii-chapter-3-team-development-with-visual-studio-team-foundation-server.aspx</link><pubDate>Fri, 11 Sep 2009 16:32:09 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:111</guid><dc:creator>Nguyễn Thị Như Quỳnh</dc:creator><comments>http://msdnvietnam.net/wikis/tfs/part-ii-chapter-3-team-development-with-visual-studio-team-foundation-server/comments.aspx</comments><description>Current revision posted to TFS - Team Foundation System by Nguyễn Thị Như Quỳnh on 9/12/2009 12:32:09 AM&lt;br /&gt;
&lt;h2&gt;Part II- Chapter 3 --Team Development with Visual Studio Team Foundation Server &lt;/h2&gt;
&lt;p&gt;Download t&amp;agrave;i liệu n&amp;agrave;y &lt;a href="http://cid-c756261140cf0eb3.skydrive.live.com/self.aspx/TFS/Phan%20II%20CHAPTER%203.pdf"&gt;tại đậy.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Chương 3&lt;/b&gt; - Kết cấu c&amp;aacute;c Project&amp;nbsp; v&amp;agrave;
Solution trong Source Control &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Objectives &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Kết cấu c&amp;aacute;c project v&amp;agrave; solution của Microsoft&amp;reg;
Visual Studio&amp;reg; Team System một c&amp;aacute;ch ph&amp;ugrave; hợp. &lt;/li&gt;
&lt;li&gt; Biết được khi n&amp;agrave;o sử dụng multiple solution
v&amp;agrave; khi n&amp;agrave;o sử dụng một single solution. &lt;/li&gt;
&lt;li&gt; X&amp;aacute;c định những cấu tr&amp;uacute;c th&amp;iacute;ch hợp cho những đội
nhỏ, vừa v&amp;agrave; lớn(small, medium-size and very large teams).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Overview &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Chương n&amp;agrave;y
giải th&amp;iacute;ch c&amp;aacute;c t&amp;ugrave;y chọn kh&amp;aacute;c nhau cho cấu tr&amp;uacute;c những tập tin project v&amp;agrave;
solution của Visual Studio trong một sự quản l&amp;yacute; th&amp;iacute;ch hợp đối với nh&amp;oacute;m ph&amp;aacute;t triển.
Visual Studio sử dụng những file solution (.sln) để nh&amp;oacute;m c&amp;aacute;c file dự &amp;aacute;n Visual
Studio (.csproj and .vbproj) lại với nhau. Quyết định để kết cấu những project
v&amp;agrave; solution như thế n&amp;agrave;o l&amp;agrave; một quyết định quan trọng v&amp;igrave; c&amp;aacute;c pattern(m&amp;ocirc; h&amp;igrave;nh) m&amp;agrave;
bạn chọn c&amp;oacute; một số c&amp;aacute;c hiệu ứng phụ. Th&amp;iacute; dụ, c&amp;aacute;c th&amp;agrave;nh vi&amp;ecirc;n của những nh&amp;oacute;m ph&amp;aacute;t
triển t&amp;aacute;c động dễ d&amp;agrave;ng đến việc k&amp;eacute;o v&amp;agrave; đẫy(push and pull) c&amp;aacute;c solution v&amp;agrave;
project đến v&amp;agrave; từ source control, cơ chế m&amp;agrave; bạn sử dụng để tham chiếu(reference)
c&amp;aacute;c dependency v&amp;agrave; cũng như l&amp;agrave; c&amp;aacute;c processes.&lt;/p&gt;
&lt;p&gt;Nếu bạn đang
l&amp;agrave;m việc tr&amp;ecirc;n một dự &amp;aacute;n nhỏ bạn c&amp;oacute; thể sử dụng một single solution để chứa tất
cả c&amp;aacute;c file project của bạn. Nếu bạn đang l&amp;agrave;m việc tr&amp;ecirc;n một dự &amp;aacute;n ph&amp;aacute;t triển phần
mềm với một số lượng lớn c&amp;aacute;c file project , bạn n&amp;ecirc;n sử dụng những file multiple
solution để nh&amp;oacute;m c&amp;aacute;c project c&amp;oacute; li&amp;ecirc;n quan m&amp;agrave; tương ứng với nh&amp;oacute;m c&amp;aacute;c chức năng của
bạn trong tổng thể dự &amp;aacute;n nh&amp;oacute;m. T&amp;ugrave;y thuộc v&amp;agrave;o kịch bản cụ thể bạn c&amp;oacute; thể cũng cần
một tập tin single solution để nh&amp;oacute;m tất cả c&amp;aacute;c file project lại với nhau.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Sử dụng chương n&amp;agrave;y như thế n&amp;agrave;o&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sử dụng chương
n&amp;agrave;y để chọn một phương ph&amp;aacute;p tiếp cận cho việc kết cấu Visual Studio solution v&amp;agrave;
&amp;nbsp;project của bạn. Để đạt được lợi &amp;iacute;ch tốt
nhất từ chương n&amp;agrave;y, bạn n&amp;ecirc;n: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Use
the strategies list&lt;/b&gt;(&lt;b&gt;Sử dụng danh
s&amp;aacute;ch c&amp;aacute;c chiến thuật)&lt;/b&gt;. Sử dụng danh
s&amp;aacute;ch c&amp;aacute;c chiến lược khởi đầu như: single solution, partitioned solution, v&amp;agrave; multiple
solutions để nhanh ch&amp;oacute;ng đ&amp;aacute;nh gi&amp;aacute; phương ph&amp;aacute;p tiếp cận tốt nhất cho kịch bản của
bạn.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc những
phần kịch bản m&amp;agrave; c&amp;oacute; li&amp;ecirc;n quan nhiều nhất đến nhu cầu của bạn&lt;/b&gt;. Đọc phần m&amp;ocirc; tả
l&amp;agrave;m thế n&amp;agrave;o để triển khai c&amp;aacute;c t&amp;ugrave;y chọn m&amp;agrave; chọn đ&amp;atilde; chọn.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc
chương 4, &amp;quot;Structuring Projects and Solutions in Team Foundation Server Source
Control&amp;quot; kế tiếp&lt;/b&gt;. Chương 4 giới thiệu
cho bạn những c&amp;acirc;n nhắc quan trọng n&amp;ecirc;n nhớ khi lưu trữ code trong Team
Foundation Server (TFS) source control. &lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc
chương 6, &amp;quot;Managing Source Control Dependencies in Visual Studio Team System&amp;quot;&lt;/b&gt;.
Kết cấu project t&amp;aacute;c động đến c&amp;aacute;c chiến
lược c&amp;oacute; sẵn cho bạn khi quản l&amp;yacute; những th&amp;agrave;nh phần phụ thuộc qua c&amp;aacute;c project v&amp;agrave; solution. Để biết th&amp;ecirc;m th&amp;ocirc;ng
tin về bằng c&amp;aacute;ch n&amp;agrave;o để quản l&amp;yacute; c&amp;aacute;c phụ thuộc, h&amp;atilde;y đọc chương 6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;&amp;bull; Đọc c&amp;aacute;c chủ đề How To k&amp;egrave;m theo&lt;/b&gt;. Đọc c&amp;aacute;c chủ đề How To (L&amp;agrave;m như thế
n&amp;agrave;o để ) v&amp;agrave; đi theo từng bước c&amp;aacute;c thao t&amp;aacute;c kh&amp;aacute;c nhau được thảo luận trong
chương n&amp;agrave;y:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
How To: Kết cấu &amp;nbsp;ASP.NET
Applications trong Visual Studio Team Foundation Server. &lt;/li&gt;
&lt;li&gt; &amp;nbsp;
How To: Kết cấu&amp;nbsp; Windows
Applications trong Visual Studio Team Foundation Server. &lt;/li&gt;
&lt;li&gt; &amp;nbsp;
How To: Kết cấu những thư mục &amp;nbsp;Source Control của bạn trong &amp;nbsp;Visual Studio Team &amp;nbsp;Foundation Server. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Những chiến lược cho cấu tr&amp;uacute;c
Solution v&amp;agrave; Project &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ba chiến lược
chung nhất được sử dụng cho việc kết cấu c&amp;aacute;c file solution v&amp;agrave; project l&amp;agrave;:&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Single
solution.&lt;/b&gt; Nếu bạn l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống nhỏ, h&amp;atilde;y tạo một single
solution v&amp;agrave; đặt tất cả c&amp;aacute;c file dự &amp;aacute;n của bạn tr&amp;ecirc;n đ&amp;oacute;.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Partitioned
solution.&lt;/b&gt; Nếu bạn l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống lớn, sử dụng những multiple
solution để nh&amp;oacute;m c&amp;aacute;c project li&amp;ecirc;n quan lại với nhau. Tạo c&amp;aacute;c solution để nh&amp;oacute;m một
c&amp;aacute;ch hợp l&amp;yacute; c&amp;aacute;c nh&amp;oacute;m nhỏ project m&amp;agrave; một nh&amp;agrave; ph&amp;aacute;t triển hầu như muốn chỉnh sửa
như l&amp;agrave; một tập hợp, v&amp;agrave; sau đ&amp;oacute; tạo một master Solution (solution chủ) để chứa tất
cả c&amp;aacute;c dự &amp;aacute;n của bạn.Phương ph&amp;aacute;p tiếp cận n&amp;agrave;y l&amp;agrave;m giảm bớt số lượng data cần được lấy từ
source control khi bạn chỉ cần l&amp;agrave;m việc
tr&amp;ecirc;n những project cụ thể.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;
Multiple solutions&lt;/b&gt;. Nếu bạn đang l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống rất lớn m&amp;agrave; y&amp;ecirc;u cầu h&amp;agrave;ng chục&amp;nbsp; project hay nhiều hơn , h&amp;atilde;y sử dụng multiple
solution để l&amp;agrave;m việc tr&amp;ecirc;n c&amp;aacute;c sub-systems(hệ thống con) nhưng đối với dependency
mapping v&amp;agrave; performance reasons kh&amp;ocirc;ng tạo một master solution m&amp;agrave; chứa tất cả c&amp;aacute;c
project. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;N&amp;oacute;i chung, bạn n&amp;ecirc;n: &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Sử dụng chiến lược một single solution nếu kết
quả solution kh&amp;ocirc;ng qu&amp;aacute; lớn để load v&amp;agrave;o Visual Studio. &lt;/li&gt;
&lt;li&gt; Sử dụng multiple solutions để tạo những specific
views tr&amp;ecirc;n c&amp;aacute;c sub-systems của ứng dụng của bạn. &lt;/li&gt;
&lt;li&gt; Sử dụng multiple solutions để giảm thời gian
load một solution v&amp;agrave; giảm thời gian build cho c&amp;aacute;c nh&amp;agrave; lập tr&amp;igrave;nh. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;H&amp;atilde;y nhớ những
điều sau khi thiết kế một cấu tr&amp;uacute;c project v&amp;agrave; solution:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Mỗi project đều tạo ra một assembly tại thời
gian build. Bắt đầu bởi việc x&amp;aacute;c định assembly n&amp;agrave;o bạn muốn tạo v&amp;agrave; sau đ&amp;oacute; sử dụng
n&amp;oacute; để quyết định những project n&amp;agrave;o bạn cần. Sử dụng n&amp;oacute; để quyết định phần code
cơ bản n&amp;agrave;o của bạn được xem như l&amp;agrave; nh&amp;acirc;n tố trong c&amp;aacute;c project. &lt;/li&gt;
&lt;li&gt; Bắt đầu với cấu tr&amp;uacute;c single solution đơn giản
nhất. Chỉ th&amp;ecirc;m c&amp;aacute;c phần phức tạp v&amp;agrave;o kết cấu của bạn khi n&amp;oacute; thật sự cần thiết.&lt;/li&gt;
&lt;li&gt; Khi thiết kế một kết cấu &lt;b&gt;multi-solution&lt;/b&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t t&amp;iacute;nh độc lập của dự &amp;aacute;n.&lt;/b&gt; H&amp;atilde;y thử nh&amp;oacute;m c&amp;aacute;c project&amp;nbsp;
c&amp;oacute; phụ thuộc v&amp;agrave;o nhau như l&amp;agrave; những phần của c&amp;ugrave;ng một solution. Điều n&amp;agrave;y
cho ph&amp;eacute;p bạn sử dụng c&amp;aacute;c tham chiếu project &amp;nbsp;trong phạm vi solution của bạn. Bằng c&amp;aacute;ch sử dụng
c&amp;aacute;c project &amp;nbsp;references thay v&amp;igrave; &amp;nbsp;file references, cho ph&amp;eacute;p Visual Studio để x&amp;acirc;y
dựng cấu h&amp;igrave;nh (debug/release) được đồng bộ ho&amp;aacute; , v&amp;agrave; để theo d&amp;otilde;i c&amp;aacute;c version để
x&amp;aacute;c định xem khi n&amp;agrave;o th&amp;igrave; c&amp;aacute;c project cần được built lại. Cố gắng giảm thiểu số
lượng c&amp;aacute;c tham chiếu qua c&amp;aacute;c solution v&amp;agrave; project.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t sự chia sẻ source.&lt;/b&gt; Đặt những project được chia sẻ c&amp;ugrave;ng một source trong c&amp;ugrave;ng một
solution. &lt;/li&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t cấu tr&amp;uacute;c đội.&lt;/b&gt; Kết cấu những solution của bạn để thực hiện n&amp;oacute; một c&amp;aacute;ch dễ d&amp;agrave;ng cho c&amp;aacute;c
đội l&amp;agrave;m việc c&amp;ugrave;ng nhau tr&amp;ecirc;n một tập c&amp;aacute;c project. &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt; Giữ một d&amp;atilde;y kết cấu project để dễ d&amp;agrave;ng nh&amp;oacute;m
c&amp;aacute;c project v&amp;agrave;o trong c&amp;aacute;c solution m&amp;agrave; kh&amp;ocirc;ng cần phải thay đổi cấu tr&amp;uacute;c file hệ
thống hay thư mục source control .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Single
Solution &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc trong một hệ thống nhỏ, h&amp;atilde;y xem x&amp;eacute;t sử dụng một &amp;nbsp;single Visual Studio solution để chứa tất cả
c&amp;aacute;c project của bạn.&amp;nbsp; Cấu tr&amp;uacute;c n&amp;agrave;y đơn giản
ho&amp;aacute; việc ph&amp;aacute;t triển, v&amp;igrave; tất cả c&amp;aacute;c code đ&amp;atilde; c&amp;oacute; sẵn khi bạn mở c&amp;aacute;c solution. Chiến
lược n&amp;agrave;y cũng gi&amp;uacute;p bạn dễ d&amp;agrave;ng để thiết lập references, bởi v&amp;igrave; tất cả c&amp;aacute;c &amp;nbsp;references đều nằm giữa những project trong solution
của bạn. Bạn c&amp;oacute; thể vẫn c&amp;ograve;n cần phải sử dụng c&amp;aacute;c tập tin references để tham chiếu
đến c&amp;aacute;c assembly của b&amp;ecirc;n thứ ba, như l&amp;agrave; mua c&amp;aacute;c th&amp;agrave;nh phần(component) , m&amp;agrave; ở
b&amp;ecirc;n ngo&amp;agrave;i solution của bạn. H&amp;igrave;nh 3.1 hiển thị phương ph&amp;aacute;p tiếp cận single
solution .&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3518/3909446867_1f8d90f469_o.png" width="628" height="297" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.1 &amp;nbsp;Single Solution Approach&lt;/p&gt;
&lt;p&gt;Những l&amp;iacute; do
ch&amp;iacute;nh để chọn cấu tr&amp;uacute;c n&amp;agrave;y bao gồm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Bạn c&amp;oacute; thể giữ c&amp;aacute;c build script đơn giản. &lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể map(&amp;aacute;nh xạ) dể d&amp;agrave;ng c&amp;aacute;c project c&amp;oacute; t&amp;iacute;nh phụ thuộc ngang
nhau trong solution. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;Bạn n&amp;ecirc;n sử dụng cấu tr&amp;uacute;c n&amp;agrave;y nếu tất cả c&amp;aacute;c lập
tr&amp;igrave;nh vi&amp;ecirc;n sử dụng c&amp;ugrave;ng một solution v&amp;agrave; c&amp;oacute; c&amp;ugrave;ng một tập c&amp;aacute;c project. Điều n&amp;agrave;y
c&amp;oacute; thể l&amp;agrave; một vấn đề cho c&amp;aacute;c hệ thống thống lớn nơi m&amp;agrave; bạn muốn tổ chức c&amp;aacute;c project
bằng c&amp;aacute;c hệ thống con hay c&amp;aacute;c chức năng . &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Partitioned Solution &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc với một hệ thống lớn, xem x&amp;eacute;t việc sử dụng&amp;nbsp;
c&amp;aacute;c multiple solution, mỗi c&amp;aacute;i đại diện một hệ thống con trong ứng dụng
của bạn. Những solution n&amp;agrave;y c&amp;oacute; thể được&amp;nbsp;
c&amp;aacute;c lập tr&amp;igrave;nh vi&amp;ecirc;n sử dụng để l&amp;agrave;m việc tr&amp;ecirc;n những phần nhỏ hơn của hệ thống
m&amp;agrave; kh&amp;ocirc;ng c&amp;oacute; việc load tất cả c&amp;aacute;c code tr&amp;ecirc;n tất cả c&amp;aacute;c&amp;nbsp; project. Thiết kế cấu tr&amp;uacute;c solution của bạn với
bất k&amp;igrave; project n&amp;agrave;o m&amp;agrave; c&amp;oacute; phụ thuộc giữa c&amp;aacute;c nh&amp;oacute;m với nhau. Điều n&amp;agrave;y cho ph&amp;eacute;p bạn
sử dụng c&amp;aacute;c project&amp;nbsp; reference hơn l&amp;agrave; c&amp;aacute;c
file reference. H&amp;atilde;y xem x&amp;eacute;t lu&amp;ocirc;n việc tạo một tập tin master solution để chứa tất
cả c&amp;aacute;c project. Bạn c&amp;oacute; thể sử dụng điều n&amp;agrave;y để build to&amp;agrave;n bộ ứng dụng của bạn.&lt;/p&gt;
&lt;p&gt;Lưu &amp;yacute;: Kh&amp;ocirc;ng
như phi&amp;ecirc;n bản trước của Visual Studio, Visual Studio 2005&amp;nbsp; dựa theo MSBuild. Hiện thời n&amp;oacute; cho ph&amp;eacute;p tạo
những cấu tr&amp;uacute;c solution m&amp;agrave; kh&amp;ocirc;ng bao gồm tất cả c&amp;aacute;c project reference v&amp;agrave; vẫn
c&amp;ograve;n build kh&amp;ocirc;ng c&amp;oacute; c&amp;aacute;c error. Miển l&amp;agrave; master solution được build trước, tạo ra
c&amp;aacute;c binary output&amp;nbsp; từ c&amp;aacute;c project,
MSBuild c&amp;oacute; thể theo sau c&amp;aacute;c&amp;nbsp; project
references b&amp;ecirc;n ngo&amp;agrave;i những sự r&amp;agrave;ng buộc của solution v&amp;agrave; build th&amp;agrave;nh c&amp;ocirc;ng của bạn.
N&amp;oacute; chỉ l&amp;agrave;m việc nếu bạn sử dụng project references, kh&amp;ocirc;ng phải l&amp;agrave; file
references. Bạn c&amp;oacute; thể build th&amp;agrave;nh c&amp;ocirc;ng c&amp;aacute;c solution được tạo bằng phương ph&amp;aacute;p
n&amp;agrave;y từ Visual Studio build theo c&amp;aacute;c d&amp;ograve;ng lệnh v&amp;agrave; từ IDE, nhưng mặc định l&amp;agrave;
kh&amp;ocirc;ng được với Team Build . Để build th&amp;agrave;nh c&amp;ocirc;ng với&amp;nbsp; Team Build&amp;nbsp;
h&amp;atilde;y sử dụng master solution bao gồm tất cả c&amp;aacute;c project v&amp;agrave; c&amp;aacute;c phụ thuộc.&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.2 Hiển
thị phương ph&amp;aacute;p tiếp cận partitioned solution.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3087/3910230724_162da82349_o.png" width="628" height="417" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.2
Partitioned Solution Approach&lt;/p&gt;
&lt;p&gt;Khi l&amp;agrave;m việc
với c&amp;aacute;c multiple solution, sử dụng một d&amp;atilde;y cấu tr&amp;uacute;c c&amp;aacute;c&amp;nbsp; file cho tất cả c&amp;aacute;c project của bạn. Một th&amp;iacute;
dụ điển h&amp;igrave;nh l&amp;agrave; một ứng dụng&amp;nbsp; c&amp;oacute; một&amp;nbsp; Microsoft Windows&amp;reg; Forms project, một&amp;nbsp; ASP.NET project, một&amp;nbsp; Windows service, v&amp;agrave; một tập c&amp;aacute;c class library
project&amp;nbsp; được chia sẻ bởi một hay tất cả
c&amp;aacute;c project n&amp;agrave;y.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Bạn c&amp;oacute; thể sử
dụng d&amp;atilde;y c&amp;aacute;c cấu tr&amp;uacute;c sau cho tất cả c&amp;aacute;c project:&lt;/p&gt;
&lt;p&gt;&amp;sect;&amp;nbsp; /Source &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; /WinFormsProject &lt;/li&gt;
&lt;li&gt; /WebProject &lt;/li&gt;
&lt;li&gt; /WindowsServiceProject &lt;/li&gt;
&lt;li&gt; /ClassLibrary1 &lt;/li&gt;
&lt;li&gt; /ClassLibrary2 &lt;/li&gt;
&lt;li&gt; /ClassLibrary3 &lt;/li&gt;
&lt;li&gt; Web.sln &lt;/li&gt;
&lt;li&gt; Service.sln &lt;/li&gt;
&lt;li&gt; All.sln &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Giữ d&amp;atilde;y c&amp;aacute;c
cấu tr&amp;uacute;c n&amp;agrave;y cung cấp nhiều sự linh hoạt v&amp;agrave; khả năng để sử dụng c&amp;aacute;c solution
cho c&amp;aacute;c tr&amp;igrave;nh b&amp;agrave;y kh&amp;aacute;c nhau tr&amp;ecirc;n những project. Cấu tr&amp;uacute;c thư mục&amp;nbsp; vật l&amp;yacute; xung quanh c&amp;aacute;c file solution n&amp;agrave;y thay
đổi rất kh&amp;oacute;, đặc biệt nếu bạn nhận ra l&amp;agrave; bạn cần t&amp;aacute;i sử dụng lại một class
library từ một solution kh&amp;aacute;c.&lt;/p&gt;
&lt;p&gt;L&amp;iacute; do để sử
dụng cấu tr&amp;uacute;c n&amp;agrave;y bao gồm: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Hiệu suất được cải thiện khi tải v&amp;agrave; x&amp;acirc;y dựng
c&amp;aacute;c ứng dụng sub-solution .&lt;/li&gt;
&lt;li&gt; C&amp;aacute;c sub-solution c&amp;oacute; thể được sử dụng để tạo
c&amp;aacute;c &amp;yacute; định tr&amp;ecirc;n c&amp;aacute;c tập project dựa tr&amp;ecirc;n c&amp;aacute;c đội ph&amp;aacute;t triển con hay c&amp;aacute;c ranh giới của việc chia sẻ code.&lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể sử dụng master solution để build to&amp;agrave;n
bộ ứng dụng. &lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể dễ d&amp;agrave;ng map(&amp;aacute;nh xạ) c&amp;aacute;c phần dependency tr&amp;ecirc;n c&amp;aacute;c
project trong mỗi sub-solution. &lt;/li&gt;
&lt;li&gt; N&amp;oacute; giảm sự phức tạp nếu c&amp;aacute;c solution broken
up một c&amp;aacute;ch logic. Th&amp;iacute; dụ sự ph&amp;aacute; vỡ c&amp;aacute;c
solution c&amp;ugrave;ng với c&amp;aacute;c tuyến kĩ thuật v&amp;agrave;
chức năng đ&amp;atilde; l&amp;agrave;m cho c&amp;aacute;c lập tr&amp;igrave;nh vi&amp;ecirc;n
mới hiểu được một c&amp;aacute;ch dễ d&amp;agrave;ng solution n&amp;agrave;o đang được thực thi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;iacute; do ch&amp;iacute;nh
để kh&amp;ocirc;ng sử dụng cấu tr&amp;uacute;c n&amp;agrave;y : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Tăng chi ph&amp;iacute; cho sự bảo tr&amp;igrave; c&amp;aacute;c solution. Th&amp;ecirc;m một project mới c&amp;oacute; thể đề
ra y&amp;ecirc;u cầu phải thay đổi c&amp;aacute;c tập tin multiple solution .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Multiple
Solutions&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc tr&amp;ecirc;n một&amp;nbsp; solution rất lớn, y&amp;ecirc;u cầu
h&amp;agrave;ng&amp;nbsp; t&amp;aacute; c&amp;aacute;c&amp;nbsp; project, bạn c&amp;oacute; thể gặp phải việc mở rộng &amp;nbsp;giới hạn của c&amp;aacute;c solution . Trong kịch bản
n&amp;agrave;y, di chuyển ứng dụng của bạn v&amp;agrave;o những multiple solution nhưng kh&amp;ocirc;ng tạo một
master solution cho to&amp;agrave;n bộ ứng dụng application bởi v&amp;igrave; tất cả c&amp;aacute;c reference
b&amp;ecirc;n trong &amp;nbsp;mỗi solution l&amp;agrave; c&amp;aacute;c project
references. Những tham chiếu đến c&amp;aacute;c&amp;nbsp;
project b&amp;ecirc;n ngo&amp;agrave;i mỗi solution (th&amp;iacute; dụ cho c&amp;aacute;c libraries hay &amp;nbsp;project của b&amp;ecirc;n thứ ba trong sub-solution kh&amp;aacute;c)
l&amp;agrave; c&amp;aacute;c file references. Điều n&amp;agrave;y c&amp;oacute; nghĩa l&amp;agrave; kh&amp;ocirc;ng thể c&amp;oacute; &amp;quot;master&amp;quot;
solution.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Thay v&amp;agrave;o đ&amp;oacute;,
bạn phải sử dụng một script hiểu trật tự cần phải được built của c&amp;aacute;c solution. Một
trong những nhiệm vụ bảo tr&amp;igrave; li&amp;ecirc;n quan đến một kết cấu multiple-solution l&amp;agrave; chắc
chắn rằng những lập tr&amp;igrave;nh vi&amp;ecirc;n kh&amp;ocirc;ng cố &amp;yacute; tạo ra c&amp;aacute;c v&amp;ograve;ng tr&amp;ograve;n tham chiếu(reference)
giữa c&amp;aacute;c solution. Kết cấu n&amp;agrave;y y&amp;ecirc;u cầu những script(tập lệnh) được thiết kế phức
tạp v&amp;agrave; những mối quan hệ phụ thuộc r&amp;otilde; r&amp;agrave;ng. Trong kết cấu n&amp;agrave;y kh&amp;ocirc;ng thể build ứng
dụng trong n&amp;oacute; với Visual Studio. Thay v&amp;agrave;o đ&amp;oacute;, bạn c&amp;oacute; thể sử dụng &amp;nbsp;TFS Team Build hay &amp;nbsp;MSBuild một c&amp;aacute;ch trực tiếp.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.3 hiển
thị phương ph&amp;aacute;p tiếp cận multiple solutions.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3428/3909447043_211305de40_o.png" width="628" height="406" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh&amp;nbsp; 3.3&amp;nbsp;
Multiple Solution Approach &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bạn n&amp;ecirc;n sử dụng
kết cấu n&amp;agrave;y để giải quyết sự thực thi Visual Studio IDE v&amp;agrave; mở rộng c&amp;aacute;c giới hạn
cho c&amp;aacute;c ứng dụng rất lớn. &lt;/p&gt;
&lt;p&gt;Một l&amp;iacute; do
cho việc kh&amp;ocirc;ng sử dụng cấu tr&amp;uacute;c n&amp;agrave;y l&amp;agrave; v&amp;igrave; n&amp;oacute; y&amp;ecirc;u cầu một build script phức tạp
để xử l&amp;yacute; c&amp;aacute;c phụ thuộc giữa c&amp;aacute;c sub-solutions bằng c&amp;aacute;ch build c&amp;aacute;c &amp;nbsp;solutions theo một tr&amp;igrave;nh tự đ&amp;uacute;ng. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Large Project Considerations &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ph&amp;acirc;n biệt những
nh&amp;oacute;m ph&amp;aacute;t triển lớn với c&amp;aacute;c nh&amp;oacute;m nhỏ hơn theo nhiều c&amp;aacute;ch:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;bull;&amp;nbsp; Họ
đ&amp;ograve;i hỏi một kết cấu chi tiết v&amp;agrave; tổng hợp phức tạp hơn.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Họ c&amp;oacute; nhiều khả năng hơn về quản l&amp;yacute; c&amp;aacute;c th&amp;agrave;nh
phần phụ thuộc tr&amp;ecirc;n c&amp;aacute;c solutions v&amp;agrave; c&amp;aacute;c nh&amp;oacute;m projects. &lt;/li&gt;
&lt;li&gt; Họ c&amp;oacute; nhiều khả năng duy tr&amp;igrave; c&amp;aacute;c thiết kế cho
c&amp;aacute;c th&amp;agrave;nh phần v&amp;agrave; c&amp;aacute;c nh&amp;oacute;m.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Một phương
ph&amp;aacute;p tiếp cận partitioned solution l&amp;agrave;m việc tốt với hầu hết c&amp;aacute;c dự &amp;aacute;n lớn v&amp;igrave; n&amp;oacute;
cung cấp c&amp;aacute;c solution một c&amp;aacute;ch mềm dẻo trong khi duy tr&amp;igrave; một single solution m&amp;agrave;
bạn c&amp;oacute; thể sử dụng để build c&amp;aacute;c ứng dụng. Nếu ứng dụng của bạn đủ lớn để bạn thực
hiện mở rộng giới hạn solution, h&amp;atilde;y sử dụng phương ph&amp;aacute;p multiple solution. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tổng kết&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sử dụng một
single solution cho c&amp;aacute;c project nhỏ m&amp;agrave; c&amp;aacute;c project đ&amp;oacute; kh&amp;ocirc;ng cần để ph&amp;acirc;n
v&amp;ugrave;ng&amp;nbsp; source của bạn v&amp;agrave;o c&amp;aacute;c solution con
ri&amp;ecirc;ng biệt.&lt;/p&gt;
&lt;p&gt;Sử dụng một
partitioned solution cho tập c&amp;aacute;c nh&amp;oacute;m project con m&amp;agrave; một lập tr&amp;igrave;nh vi&amp;ecirc;n c&amp;oacute; thể
chỉnh sửa n&amp;oacute; như l&amp;agrave; một tập hợp, v&amp;agrave; sau đ&amp;oacute; tạo một master solution chứa tất cả
c&amp;aacute;c project của bạn. &lt;/p&gt;
&lt;p&gt;Sử dụng &amp;nbsp;multiple solutions để tạo một c&amp;aacute;i nh&amp;igrave;n cụ thể
tr&amp;ecirc;n những hệ thống con v&amp;agrave; để giảm việc load v&amp;agrave; thời gian build của ứng dụng của
bạn. &lt;/p&gt;
&lt;p&gt;Một partitioned
solution l&amp;agrave;m việc tốt với hầu hết c&amp;aacute;c dự &amp;aacute;n lớn v&amp;igrave; n&amp;oacute; cung cấp c&amp;aacute;c solution một
c&amp;aacute;ch mềm dẻo trong khi duy tr&amp;igrave; một single solution m&amp;agrave; bạn c&amp;oacute; thể sử dụng để
build c&amp;aacute;c ứng dụng.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Additional Resources &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Để c&amp;oacute; th&amp;ecirc;m th&amp;ocirc;ng tin về cấu tr&amp;uacute;c project v&amp;agrave; solution (mặc dầu kh&amp;ocirc;ng được &amp;aacute;p dụng trực tiếp
trong Team Foundation Server), h&amp;atilde;y xem &amp;quot;Team Development with Visual Studio .NET and
Visual SourceSafe&amp;quot; tại đ&amp;acirc;y: &lt;span style="text-decoration:underline;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms998208.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms998208.aspx&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Part II- Chapter 3 --Team Development with Visual Studio Team Foundation Server </title><link>http://msdnvietnam.net/wikis/tfs/part-ii-chapter-3-team-development-with-visual-studio-team-foundation-server/revision/3.aspx</link><pubDate>Fri, 11 Sep 2009 16:27:30 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:99</guid><dc:creator>Nguyễn Thị Như Quỳnh</dc:creator><comments>http://msdnvietnam.net/wikis/tfs/part-ii-chapter-3-team-development-with-visual-studio-team-foundation-server/comments.aspx</comments><description>Revision 3 posted to TFS - Team Foundation System by Nguyễn Thị Như Quỳnh on 9/12/2009 12:27:30 AM&lt;br /&gt;
&lt;h2&gt;Part II- Chapter 3 --Team Development with Visual Studio Team Foundation Server &lt;/h2&gt;
&lt;p&gt;&lt;span style="background: SpringGreen;"&gt;Download&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;t&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;&amp;agrave;i&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;liệu&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;n&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;&amp;agrave;y&lt;/span&gt; &lt;a href="http://cid-c756261140cf0eb3.skydrive.live.com/self.aspx/TFS/Ph%E1%BA%A7n%20II%20Ch%C6%B0%C6%A1ng%203.pdf"&gt;&lt;span style="background: SpringGreen;"&gt;tại&lt;/span&gt; &lt;span style="background: SpringGreen;"&gt;đậy&lt;/span&gt;&lt;/a&gt;&lt;span style="background: SpringGreen;"&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Chương 3&lt;/b&gt; - Kết cấu c&amp;aacute;c Project&amp;nbsp; v&amp;agrave;
Solution trong Source Control &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Objectives &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Kết cấu c&amp;aacute;c project v&amp;agrave; solution của Microsoft&amp;reg;
Visual Studio&amp;reg; Team System một c&amp;aacute;ch ph&amp;ugrave; hợp. &lt;/li&gt;
&lt;li&gt; Biết được khi n&amp;agrave;o sử dụng multiple solution
v&amp;agrave; khi n&amp;agrave;o sử dụng một single solution. &lt;/li&gt;
&lt;li&gt; X&amp;aacute;c định những cấu tr&amp;uacute;c th&amp;iacute;ch hợp cho những đội
nhỏ, vừa v&amp;agrave; lớn(small, medium-size and very large teams).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Overview &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Chương n&amp;agrave;y
giải th&amp;iacute;ch c&amp;aacute;c t&amp;ugrave;y chọn kh&amp;aacute;c nhau cho cấu tr&amp;uacute;c những tập tin project v&amp;agrave;
solution của Visual Studio trong một sự quản l&amp;yacute; th&amp;iacute;ch hợp đối với nh&amp;oacute;m ph&amp;aacute;t triển.
Visual Studio sử dụng những file solution (.sln) để nh&amp;oacute;m c&amp;aacute;c file dự &amp;aacute;n Visual
Studio (.csproj and .vbproj) lại với nhau. Quyết định để kết cấu những project
v&amp;agrave; solution như thế n&amp;agrave;o l&amp;agrave; một quyết định quan trọng v&amp;igrave; c&amp;aacute;c pattern(m&amp;ocirc; h&amp;igrave;nh) m&amp;agrave;
bạn chọn c&amp;oacute; một số c&amp;aacute;c hiệu ứng phụ. Th&amp;iacute; dụ, c&amp;aacute;c th&amp;agrave;nh vi&amp;ecirc;n của những nh&amp;oacute;m ph&amp;aacute;t
triển t&amp;aacute;c động dễ d&amp;agrave;ng đến việc k&amp;eacute;o v&amp;agrave; đẫy(push and pull) c&amp;aacute;c solution v&amp;agrave;
project đến v&amp;agrave; từ source control, cơ chế m&amp;agrave; bạn sử dụng để tham chiếu(reference)
c&amp;aacute;c dependency v&amp;agrave; cũng như l&amp;agrave; c&amp;aacute;c processes.&lt;/p&gt;
&lt;p&gt;Nếu bạn đang
l&amp;agrave;m việc tr&amp;ecirc;n một dự &amp;aacute;n nhỏ bạn c&amp;oacute; thể sử dụng một single solution để chứa tất
cả c&amp;aacute;c file project của bạn. Nếu bạn đang l&amp;agrave;m việc tr&amp;ecirc;n một dự &amp;aacute;n ph&amp;aacute;t triển phần
mềm với một số lượng lớn c&amp;aacute;c file project , bạn n&amp;ecirc;n sử dụng những file multiple
solution để nh&amp;oacute;m c&amp;aacute;c project c&amp;oacute; li&amp;ecirc;n quan m&amp;agrave; tương ứng với nh&amp;oacute;m c&amp;aacute;c chức năng của
bạn trong tổng thể dự &amp;aacute;n nh&amp;oacute;m. T&amp;ugrave;y thuộc v&amp;agrave;o kịch bản cụ thể bạn c&amp;oacute; thể cũng cần
một tập tin single solution để nh&amp;oacute;m tất cả c&amp;aacute;c file project lại với nhau.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Sử dụng chương n&amp;agrave;y như thế n&amp;agrave;o&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sử dụng chương
n&amp;agrave;y để chọn một phương ph&amp;aacute;p tiếp cận cho việc kết cấu Visual Studio solution v&amp;agrave;
&amp;nbsp;project của bạn. Để đạt được lợi &amp;iacute;ch tốt
nhất từ chương n&amp;agrave;y, bạn n&amp;ecirc;n: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Use
the strategies list&lt;/b&gt;(&lt;b&gt;Sử dụng danh
s&amp;aacute;ch c&amp;aacute;c chiến thuật)&lt;/b&gt;. Sử dụng danh
s&amp;aacute;ch c&amp;aacute;c chiến lược khởi đầu như: single solution, partitioned solution, v&amp;agrave; multiple
solutions để nhanh ch&amp;oacute;ng đ&amp;aacute;nh gi&amp;aacute; phương ph&amp;aacute;p tiếp cận tốt nhất cho kịch bản của
bạn.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc những
phần kịch bản m&amp;agrave; c&amp;oacute; li&amp;ecirc;n quan nhiều nhất đến nhu cầu của bạn&lt;/b&gt;. Đọc phần m&amp;ocirc; tả
l&amp;agrave;m thế n&amp;agrave;o để triển khai c&amp;aacute;c t&amp;ugrave;y chọn m&amp;agrave; chọn đ&amp;atilde; chọn.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc
chương 4, &amp;quot;Structuring Projects and Solutions in Team Foundation Server Source
Control&amp;quot; kế tiếp&lt;/b&gt;. Chương 4 giới thiệu
cho bạn những c&amp;acirc;n nhắc quan trọng n&amp;ecirc;n nhớ khi lưu trữ code trong Team
Foundation Server (TFS) source control. &lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc
chương 6, &amp;quot;Managing Source Control Dependencies in Visual Studio Team System&amp;quot;&lt;/b&gt;.
Kết cấu project t&amp;aacute;c động đến c&amp;aacute;c chiến
lược c&amp;oacute; sẵn cho bạn khi quản l&amp;yacute; những th&amp;agrave;nh phần phụ thuộc qua c&amp;aacute;c project v&amp;agrave; solution. Để biết th&amp;ecirc;m th&amp;ocirc;ng
tin về bằng c&amp;aacute;ch n&amp;agrave;o để quản l&amp;yacute; c&amp;aacute;c phụ thuộc, h&amp;atilde;y đọc chương 6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;&amp;bull; Đọc c&amp;aacute;c chủ đề How To k&amp;egrave;m theo&lt;/b&gt;. Đọc c&amp;aacute;c chủ đề How To (L&amp;agrave;m như thế
n&amp;agrave;o để ) v&amp;agrave; đi theo từng bước c&amp;aacute;c thao t&amp;aacute;c kh&amp;aacute;c nhau được thảo luận trong
chương n&amp;agrave;y:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
How To: Kết cấu &amp;nbsp;ASP.NET
Applications trong Visual Studio Team Foundation Server. &lt;/li&gt;
&lt;li&gt; &amp;nbsp;
How To: Kết cấu&amp;nbsp; Windows
Applications trong Visual Studio Team Foundation Server. &lt;/li&gt;
&lt;li&gt; &amp;nbsp;
How To: Kết cấu những thư mục &amp;nbsp;Source Control của bạn trong &amp;nbsp;Visual Studio Team &amp;nbsp;Foundation Server. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Những chiến lược cho cấu tr&amp;uacute;c
Solution v&amp;agrave; Project &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ba chiến lược
chung nhất được sử dụng cho việc kết cấu c&amp;aacute;c file solution v&amp;agrave; project l&amp;agrave;:&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Single
solution.&lt;/b&gt; Nếu bạn l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống nhỏ, h&amp;atilde;y tạo một single
solution v&amp;agrave; đặt tất cả c&amp;aacute;c file dự &amp;aacute;n của bạn tr&amp;ecirc;n đ&amp;oacute;.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Partitioned
solution.&lt;/b&gt; Nếu bạn l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống lớn, sử dụng những multiple
solution để nh&amp;oacute;m c&amp;aacute;c project li&amp;ecirc;n quan lại với nhau. Tạo c&amp;aacute;c solution để nh&amp;oacute;m một
c&amp;aacute;ch hợp l&amp;yacute; c&amp;aacute;c nh&amp;oacute;m nhỏ project m&amp;agrave; một nh&amp;agrave; ph&amp;aacute;t triển hầu như muốn chỉnh sửa
như l&amp;agrave; một tập hợp, v&amp;agrave; sau đ&amp;oacute; tạo một master Solution (solution chủ) để chứa tất
cả c&amp;aacute;c dự &amp;aacute;n của bạn.Phương ph&amp;aacute;p tiếp cận n&amp;agrave;y l&amp;agrave;m giảm bớt số lượng data cần được lấy từ
source control khi bạn chỉ cần l&amp;agrave;m việc
tr&amp;ecirc;n những project cụ thể.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;
Multiple solutions&lt;/b&gt;. Nếu bạn đang l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống rất lớn m&amp;agrave; y&amp;ecirc;u cầu h&amp;agrave;ng chục&amp;nbsp; project hay nhiều hơn , h&amp;atilde;y sử dụng multiple
solution để l&amp;agrave;m việc tr&amp;ecirc;n c&amp;aacute;c sub-systems(hệ thống con) nhưng đối với dependency
mapping v&amp;agrave; performance reasons kh&amp;ocirc;ng tạo một master solution m&amp;agrave; chứa tất cả c&amp;aacute;c
project. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;N&amp;oacute;i chung, bạn n&amp;ecirc;n: &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Sử dụng chiến lược một single solution nếu kết
quả solution kh&amp;ocirc;ng qu&amp;aacute; lớn để load v&amp;agrave;o Visual Studio. &lt;/li&gt;
&lt;li&gt; Sử dụng multiple solutions để tạo những specific
views tr&amp;ecirc;n c&amp;aacute;c sub-systems của ứng dụng của bạn. &lt;/li&gt;
&lt;li&gt; Sử dụng multiple solutions để giảm thời gian
load một solution v&amp;agrave; giảm thời gian build cho c&amp;aacute;c nh&amp;agrave; lập tr&amp;igrave;nh. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;H&amp;atilde;y nhớ những
điều sau khi thiết kế một cấu tr&amp;uacute;c project v&amp;agrave; solution:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Mỗi project đều tạo ra một assembly tại thời
gian build. Bắt đầu bởi việc x&amp;aacute;c định assembly n&amp;agrave;o bạn muốn tạo v&amp;agrave; sau đ&amp;oacute; sử dụng
n&amp;oacute; để quyết định những project n&amp;agrave;o bạn cần. Sử dụng n&amp;oacute; để quyết định phần code
cơ bản n&amp;agrave;o của bạn được xem như l&amp;agrave; nh&amp;acirc;n tố trong c&amp;aacute;c project. &lt;/li&gt;
&lt;li&gt; Bắt đầu với cấu tr&amp;uacute;c single solution đơn giản
nhất. Chỉ th&amp;ecirc;m c&amp;aacute;c phần phức tạp v&amp;agrave;o kết cấu của bạn khi n&amp;oacute; thật sự cần thiết.&lt;/li&gt;
&lt;li&gt; Khi thiết kế một kết cấu &lt;b&gt;multi-solution&lt;/b&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t t&amp;iacute;nh độc lập của dự &amp;aacute;n.&lt;/b&gt; H&amp;atilde;y thử nh&amp;oacute;m c&amp;aacute;c project&amp;nbsp;
c&amp;oacute; phụ thuộc v&amp;agrave;o nhau như l&amp;agrave; những phần của c&amp;ugrave;ng một solution. Điều n&amp;agrave;y
cho ph&amp;eacute;p bạn sử dụng c&amp;aacute;c tham chiếu project &amp;nbsp;trong phạm vi solution của bạn. Bằng c&amp;aacute;ch sử dụng
c&amp;aacute;c project &amp;nbsp;references thay v&amp;igrave; &amp;nbsp;file references, cho ph&amp;eacute;p Visual Studio để x&amp;acirc;y
dựng cấu h&amp;igrave;nh (debug/release) được đồng bộ ho&amp;aacute; , v&amp;agrave; để theo d&amp;otilde;i c&amp;aacute;c version để
x&amp;aacute;c định xem khi n&amp;agrave;o th&amp;igrave; c&amp;aacute;c project cần được built lại. Cố gắng giảm thiểu số
lượng c&amp;aacute;c tham chiếu qua c&amp;aacute;c solution v&amp;agrave; project.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t sự chia sẻ source.&lt;/b&gt; Đặt những project được chia sẻ c&amp;ugrave;ng một source trong c&amp;ugrave;ng một
solution. &lt;/li&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t cấu tr&amp;uacute;c đội.&lt;/b&gt; Kết cấu những solution của bạn để thực hiện n&amp;oacute; một c&amp;aacute;ch dễ d&amp;agrave;ng cho c&amp;aacute;c
đội l&amp;agrave;m việc c&amp;ugrave;ng nhau tr&amp;ecirc;n một tập c&amp;aacute;c project. &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt; Giữ một d&amp;atilde;y kết cấu project để dễ d&amp;agrave;ng nh&amp;oacute;m
c&amp;aacute;c project v&amp;agrave;o trong c&amp;aacute;c solution m&amp;agrave; kh&amp;ocirc;ng cần phải thay đổi cấu tr&amp;uacute;c file hệ
thống hay thư mục source control .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Single
Solution &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc trong một hệ thống nhỏ, h&amp;atilde;y xem x&amp;eacute;t sử dụng một &amp;nbsp;single Visual Studio solution để chứa tất cả
c&amp;aacute;c project của bạn.&amp;nbsp; Cấu tr&amp;uacute;c n&amp;agrave;y đơn giản
ho&amp;aacute; việc ph&amp;aacute;t triển, v&amp;igrave; tất cả c&amp;aacute;c code đ&amp;atilde; c&amp;oacute; sẵn khi bạn mở c&amp;aacute;c solution. Chiến
lược n&amp;agrave;y cũng gi&amp;uacute;p bạn dễ d&amp;agrave;ng để thiết lập references, bởi v&amp;igrave; tất cả c&amp;aacute;c &amp;nbsp;references đều nằm giữa những project trong solution
của bạn. Bạn c&amp;oacute; thể vẫn c&amp;ograve;n cần phải sử dụng c&amp;aacute;c tập tin references để tham chiếu
đến c&amp;aacute;c assembly của b&amp;ecirc;n thứ ba, như l&amp;agrave; mua c&amp;aacute;c th&amp;agrave;nh phần(component) , m&amp;agrave; ở
b&amp;ecirc;n ngo&amp;agrave;i solution của bạn. H&amp;igrave;nh 3.1 hiển thị phương ph&amp;aacute;p tiếp cận single
solution .&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3518/3909446867_1f8d90f469_o.png" width="628" height="297" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.1 &amp;nbsp;Single Solution Approach&lt;/p&gt;
&lt;p&gt;Những l&amp;iacute; do
ch&amp;iacute;nh để chọn cấu tr&amp;uacute;c n&amp;agrave;y bao gồm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Bạn c&amp;oacute; thể giữ c&amp;aacute;c build script đơn giản. &lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể map(&amp;aacute;nh xạ) dể d&amp;agrave;ng c&amp;aacute;c project c&amp;oacute; t&amp;iacute;nh phụ thuộc ngang
nhau trong solution. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;Bạn n&amp;ecirc;n sử dụng cấu tr&amp;uacute;c n&amp;agrave;y nếu tất cả c&amp;aacute;c lập
tr&amp;igrave;nh vi&amp;ecirc;n sử dụng c&amp;ugrave;ng một solution v&amp;agrave; c&amp;oacute; c&amp;ugrave;ng một tập c&amp;aacute;c project. Điều n&amp;agrave;y
c&amp;oacute; thể l&amp;agrave; một vấn đề cho c&amp;aacute;c hệ thống thống lớn nơi m&amp;agrave; bạn muốn tổ chức c&amp;aacute;c project
bằng c&amp;aacute;c hệ thống con hay c&amp;aacute;c chức năng . &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Partitioned Solution &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc với một hệ thống lớn, xem x&amp;eacute;t việc sử dụng&amp;nbsp;
c&amp;aacute;c multiple solution, mỗi c&amp;aacute;i đại diện một hệ thống con trong ứng dụng
của bạn. Những solution n&amp;agrave;y c&amp;oacute; thể được&amp;nbsp;
c&amp;aacute;c lập tr&amp;igrave;nh vi&amp;ecirc;n sử dụng để l&amp;agrave;m việc tr&amp;ecirc;n những phần nhỏ hơn của hệ thống
m&amp;agrave; kh&amp;ocirc;ng c&amp;oacute; việc load tất cả c&amp;aacute;c code tr&amp;ecirc;n tất cả c&amp;aacute;c&amp;nbsp; project. Thiết kế cấu tr&amp;uacute;c solution của bạn với
bất k&amp;igrave; project n&amp;agrave;o m&amp;agrave; c&amp;oacute; phụ thuộc giữa c&amp;aacute;c nh&amp;oacute;m với nhau. Điều n&amp;agrave;y cho ph&amp;eacute;p bạn
sử dụng c&amp;aacute;c project&amp;nbsp; reference hơn l&amp;agrave; c&amp;aacute;c
file reference. H&amp;atilde;y xem x&amp;eacute;t lu&amp;ocirc;n việc tạo một tập tin master solution để chứa tất
cả c&amp;aacute;c project. Bạn c&amp;oacute; thể sử dụng điều n&amp;agrave;y để build to&amp;agrave;n bộ ứng dụng của bạn.&lt;/p&gt;
&lt;p&gt;Lưu &amp;yacute;: Kh&amp;ocirc;ng
như phi&amp;ecirc;n bản trước của Visual Studio, Visual Studio 2005&amp;nbsp; dựa theo MSBuild. Hiện thời n&amp;oacute; cho ph&amp;eacute;p tạo
những cấu tr&amp;uacute;c solution m&amp;agrave; kh&amp;ocirc;ng bao gồm tất cả c&amp;aacute;c project reference v&amp;agrave; vẫn
c&amp;ograve;n build kh&amp;ocirc;ng c&amp;oacute; c&amp;aacute;c error. Miển l&amp;agrave; master solution được build trước, tạo ra
c&amp;aacute;c binary output&amp;nbsp; từ c&amp;aacute;c project,
MSBuild c&amp;oacute; thể theo sau c&amp;aacute;c&amp;nbsp; project
references b&amp;ecirc;n ngo&amp;agrave;i những sự r&amp;agrave;ng buộc của solution v&amp;agrave; build th&amp;agrave;nh c&amp;ocirc;ng của bạn.
N&amp;oacute; chỉ l&amp;agrave;m việc nếu bạn sử dụng project references, kh&amp;ocirc;ng phải l&amp;agrave; file
references. Bạn c&amp;oacute; thể build th&amp;agrave;nh c&amp;ocirc;ng c&amp;aacute;c solution được tạo bằng phương ph&amp;aacute;p
n&amp;agrave;y từ Visual Studio build theo c&amp;aacute;c d&amp;ograve;ng lệnh v&amp;agrave; từ IDE, nhưng mặc định l&amp;agrave;
kh&amp;ocirc;ng được với Team Build . Để build th&amp;agrave;nh c&amp;ocirc;ng với&amp;nbsp; Team Build&amp;nbsp;
h&amp;atilde;y sử dụng master solution bao gồm tất cả c&amp;aacute;c project v&amp;agrave; c&amp;aacute;c phụ thuộc.&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.2 Hiển
thị phương ph&amp;aacute;p tiếp cận partitioned solution.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3087/3910230724_162da82349_o.png" width="628" height="417" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.2
Partitioned Solution Approach&lt;/p&gt;
&lt;p&gt;Khi l&amp;agrave;m việc
với c&amp;aacute;c multiple solution, sử dụng một d&amp;atilde;y cấu tr&amp;uacute;c c&amp;aacute;c&amp;nbsp; file cho tất cả c&amp;aacute;c project của bạn. Một th&amp;iacute;
dụ điển h&amp;igrave;nh l&amp;agrave; một ứng dụng&amp;nbsp; c&amp;oacute; một&amp;nbsp; Microsoft Windows&amp;reg; Forms project, một&amp;nbsp; ASP.NET project, một&amp;nbsp; Windows service, v&amp;agrave; một tập c&amp;aacute;c class library
project&amp;nbsp; được chia sẻ bởi một hay tất cả
c&amp;aacute;c project n&amp;agrave;y.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Bạn c&amp;oacute; thể sử
dụng d&amp;atilde;y c&amp;aacute;c cấu tr&amp;uacute;c sau cho tất cả c&amp;aacute;c project:&lt;/p&gt;
&lt;p&gt;&amp;sect;&amp;nbsp; /Source &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; /WinFormsProject &lt;/li&gt;
&lt;li&gt; /WebProject &lt;/li&gt;
&lt;li&gt; /WindowsServiceProject &lt;/li&gt;
&lt;li&gt; /ClassLibrary1 &lt;/li&gt;
&lt;li&gt; /ClassLibrary2 &lt;/li&gt;
&lt;li&gt; /ClassLibrary3 &lt;/li&gt;
&lt;li&gt; Web.sln &lt;/li&gt;
&lt;li&gt; Service.sln &lt;/li&gt;
&lt;li&gt; All.sln &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Giữ d&amp;atilde;y c&amp;aacute;c
cấu tr&amp;uacute;c n&amp;agrave;y cung cấp nhiều sự linh hoạt v&amp;agrave; khả năng để sử dụng c&amp;aacute;c solution
cho c&amp;aacute;c tr&amp;igrave;nh b&amp;agrave;y kh&amp;aacute;c nhau tr&amp;ecirc;n những project. Cấu tr&amp;uacute;c thư mục&amp;nbsp; vật l&amp;yacute; xung quanh c&amp;aacute;c file solution n&amp;agrave;y thay
đổi rất kh&amp;oacute;, đặc biệt nếu bạn nhận ra l&amp;agrave; bạn cần t&amp;aacute;i sử dụng lại một class
library từ một solution kh&amp;aacute;c.&lt;/p&gt;
&lt;p&gt;L&amp;iacute; do để sử
dụng cấu tr&amp;uacute;c n&amp;agrave;y bao gồm: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Hiệu suất được cải thiện khi tải v&amp;agrave; x&amp;acirc;y dựng
c&amp;aacute;c ứng dụng sub-solution .&lt;/li&gt;
&lt;li&gt; C&amp;aacute;c sub-solution c&amp;oacute; thể được sử dụng để tạo
c&amp;aacute;c &amp;yacute; định tr&amp;ecirc;n c&amp;aacute;c tập project dựa tr&amp;ecirc;n c&amp;aacute;c đội ph&amp;aacute;t triển con hay c&amp;aacute;c ranh giới của việc chia sẻ code.&lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể sử dụng master solution để build to&amp;agrave;n
bộ ứng dụng. &lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể dễ d&amp;agrave;ng map(&amp;aacute;nh xạ) c&amp;aacute;c phần dependency tr&amp;ecirc;n c&amp;aacute;c
project trong mỗi sub-solution. &lt;/li&gt;
&lt;li&gt; N&amp;oacute; giảm sự phức tạp nếu c&amp;aacute;c solution broken
up một c&amp;aacute;ch logic. Th&amp;iacute; dụ sự ph&amp;aacute; vỡ c&amp;aacute;c
solution c&amp;ugrave;ng với c&amp;aacute;c tuyến kĩ thuật v&amp;agrave;
chức năng đ&amp;atilde; l&amp;agrave;m cho c&amp;aacute;c lập tr&amp;igrave;nh vi&amp;ecirc;n
mới hiểu được một c&amp;aacute;ch dễ d&amp;agrave;ng solution n&amp;agrave;o đang được thực thi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;iacute; do ch&amp;iacute;nh
để kh&amp;ocirc;ng sử dụng cấu tr&amp;uacute;c n&amp;agrave;y : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Tăng chi ph&amp;iacute; cho sự bảo tr&amp;igrave; c&amp;aacute;c solution. Th&amp;ecirc;m một project mới c&amp;oacute; thể đề
ra y&amp;ecirc;u cầu phải thay đổi c&amp;aacute;c tập tin multiple solution .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Multiple
Solutions&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc tr&amp;ecirc;n một&amp;nbsp; solution rất lớn, y&amp;ecirc;u cầu
h&amp;agrave;ng&amp;nbsp; t&amp;aacute; c&amp;aacute;c&amp;nbsp; project, bạn c&amp;oacute; thể gặp phải việc mở rộng &amp;nbsp;giới hạn của c&amp;aacute;c solution . Trong kịch bản
n&amp;agrave;y, di chuyển ứng dụng của bạn v&amp;agrave;o những multiple solution nhưng kh&amp;ocirc;ng tạo một
master solution cho to&amp;agrave;n bộ ứng dụng application bởi v&amp;igrave; tất cả c&amp;aacute;c reference
b&amp;ecirc;n trong &amp;nbsp;mỗi solution l&amp;agrave; c&amp;aacute;c project
references. Những tham chiếu đến c&amp;aacute;c&amp;nbsp;
project b&amp;ecirc;n ngo&amp;agrave;i mỗi solution (th&amp;iacute; dụ cho c&amp;aacute;c libraries hay &amp;nbsp;project của b&amp;ecirc;n thứ ba trong sub-solution kh&amp;aacute;c)
l&amp;agrave; c&amp;aacute;c file references. Điều n&amp;agrave;y c&amp;oacute; nghĩa l&amp;agrave; kh&amp;ocirc;ng thể c&amp;oacute; &amp;quot;master&amp;quot;
solution.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Thay v&amp;agrave;o đ&amp;oacute;,
bạn phải sử dụng một script hiểu trật tự cần phải được built của c&amp;aacute;c solution. Một
trong những nhiệm vụ bảo tr&amp;igrave; li&amp;ecirc;n quan đến một kết cấu multiple-solution l&amp;agrave; chắc
chắn rằng những lập tr&amp;igrave;nh vi&amp;ecirc;n kh&amp;ocirc;ng cố &amp;yacute; tạo ra c&amp;aacute;c v&amp;ograve;ng tr&amp;ograve;n tham chiếu(reference)
giữa c&amp;aacute;c solution. Kết cấu n&amp;agrave;y y&amp;ecirc;u cầu những script(tập lệnh) được thiết kế phức
tạp v&amp;agrave; những mối quan hệ phụ thuộc r&amp;otilde; r&amp;agrave;ng. Trong kết cấu n&amp;agrave;y kh&amp;ocirc;ng thể build ứng
dụng trong n&amp;oacute; với Visual Studio. Thay v&amp;agrave;o đ&amp;oacute;, bạn c&amp;oacute; thể sử dụng &amp;nbsp;TFS Team Build hay &amp;nbsp;MSBuild một c&amp;aacute;ch trực tiếp.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.3 hiển
thị phương ph&amp;aacute;p tiếp cận multiple solutions.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3428/3909447043_211305de40_o.png" width="628" height="406" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh&amp;nbsp; 3.3&amp;nbsp;
Multiple Solution Approach &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bạn n&amp;ecirc;n sử dụng
kết cấu n&amp;agrave;y để giải quyết sự thực thi Visual Studio IDE v&amp;agrave; mở rộng c&amp;aacute;c giới hạn
cho c&amp;aacute;c ứng dụng rất lớn. &lt;/p&gt;
&lt;p&gt;Một l&amp;iacute; do
cho việc kh&amp;ocirc;ng sử dụng cấu tr&amp;uacute;c n&amp;agrave;y l&amp;agrave; v&amp;igrave; n&amp;oacute; y&amp;ecirc;u cầu một build script phức tạp
để xử l&amp;yacute; c&amp;aacute;c phụ thuộc giữa c&amp;aacute;c sub-solutions bằng c&amp;aacute;ch build c&amp;aacute;c &amp;nbsp;solutions theo một tr&amp;igrave;nh tự đ&amp;uacute;ng. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Large Project Considerations &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ph&amp;acirc;n biệt những
nh&amp;oacute;m ph&amp;aacute;t triển lớn với c&amp;aacute;c nh&amp;oacute;m nhỏ hơn theo nhiều c&amp;aacute;ch:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;bull;&amp;nbsp; Họ
đ&amp;ograve;i hỏi một kết cấu chi tiết v&amp;agrave; tổng hợp phức tạp hơn.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Họ c&amp;oacute; nhiều khả năng hơn về quản l&amp;yacute; c&amp;aacute;c th&amp;agrave;nh
phần phụ thuộc tr&amp;ecirc;n c&amp;aacute;c solutions v&amp;agrave; c&amp;aacute;c nh&amp;oacute;m projects. &lt;/li&gt;
&lt;li&gt; Họ c&amp;oacute; nhiều khả năng duy tr&amp;igrave; c&amp;aacute;c thiết kế cho
c&amp;aacute;c th&amp;agrave;nh phần v&amp;agrave; c&amp;aacute;c nh&amp;oacute;m.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Một phương
ph&amp;aacute;p tiếp cận partitioned solution l&amp;agrave;m việc tốt với hầu hết c&amp;aacute;c dự &amp;aacute;n lớn v&amp;igrave; n&amp;oacute;
cung cấp c&amp;aacute;c solution một c&amp;aacute;ch mềm dẻo trong khi duy tr&amp;igrave; một single solution m&amp;agrave;
bạn c&amp;oacute; thể sử dụng để build c&amp;aacute;c ứng dụng. Nếu ứng dụng của bạn đủ lớn để bạn thực
hiện mở rộng giới hạn solution, h&amp;atilde;y sử dụng phương ph&amp;aacute;p multiple solution. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tổng kết&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sử dụng một
single solution cho c&amp;aacute;c project nhỏ m&amp;agrave; c&amp;aacute;c project đ&amp;oacute; kh&amp;ocirc;ng cần để ph&amp;acirc;n
v&amp;ugrave;ng&amp;nbsp; source của bạn v&amp;agrave;o c&amp;aacute;c solution con
ri&amp;ecirc;ng biệt.&lt;/p&gt;
&lt;p&gt;Sử dụng một
partitioned solution cho tập c&amp;aacute;c nh&amp;oacute;m project con m&amp;agrave; một lập tr&amp;igrave;nh vi&amp;ecirc;n c&amp;oacute; thể
chỉnh sửa n&amp;oacute; như l&amp;agrave; một tập hợp, v&amp;agrave; sau đ&amp;oacute; tạo một master solution chứa tất cả
c&amp;aacute;c project của bạn. &lt;/p&gt;
&lt;p&gt;Sử dụng &amp;nbsp;multiple solutions để tạo một c&amp;aacute;i nh&amp;igrave;n cụ thể
tr&amp;ecirc;n những hệ thống con v&amp;agrave; để giảm việc load v&amp;agrave; thời gian build của ứng dụng của
bạn. &lt;/p&gt;
&lt;p&gt;Một partitioned
solution l&amp;agrave;m việc tốt với hầu hết c&amp;aacute;c dự &amp;aacute;n lớn v&amp;igrave; n&amp;oacute; cung cấp c&amp;aacute;c solution một
c&amp;aacute;ch mềm dẻo trong khi duy tr&amp;igrave; một single solution m&amp;agrave; bạn c&amp;oacute; thể sử dụng để
build c&amp;aacute;c ứng dụng.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Additional Resources &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Để c&amp;oacute; th&amp;ecirc;m th&amp;ocirc;ng tin về cấu tr&amp;uacute;c project v&amp;agrave; solution (mặc dầu kh&amp;ocirc;ng được &amp;aacute;p dụng trực tiếp
trong Team Foundation Server), h&amp;atilde;y xem &amp;quot;Team Development with Visual Studio .NET and
Visual SourceSafe&amp;quot; tại đ&amp;acirc;y: &lt;span style="text-decoration:underline;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms998208.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms998208.aspx&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Part II- Chapter 3 --Team Development with Visual Studio Team Foundation Server </title><link>http://msdnvietnam.net/wikis/tfs/part-ii-chapter-3-team-development-with-visual-studio-team-foundation-server/revision/2.aspx</link><pubDate>Fri, 11 Sep 2009 16:23:54 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:98</guid><dc:creator>Nguyễn Thị Như Quỳnh</dc:creator><comments>http://msdnvietnam.net/wikis/tfs/part-ii-chapter-3-team-development-with-visual-studio-team-foundation-server/comments.aspx</comments><description>Revision 2 posted to TFS - Team Foundation System by Nguyễn Thị Như Quỳnh on 9/12/2009 12:23:54 AM&lt;br /&gt;
&lt;h2&gt;Part II- Chapter 3 --Team Development with Visual Studio Team Foundation Server &lt;/h2&gt;
&lt;p&gt;&lt;b&gt;Chương 3&lt;/b&gt; - Kết cấu c&amp;aacute;c Project&lt;span style="text-decoration: line-through; color: red;"&gt;(&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;dự&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;&amp;aacute;n)&lt;/span&gt; &amp;nbsp; v&amp;agrave;
Solution &lt;span style="text-decoration: line-through; color: red;"&gt;(&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;giải&lt;/span&gt; &lt;span style="text-decoration: line-through; color: red;"&gt;ph&lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;aacute;p)&lt;/span&gt; trong Source Control &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Objectives &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Kết cấu c&amp;aacute;c project v&amp;agrave; solution của Microsoft&amp;reg;
Visual Studio&amp;reg; Team System một c&amp;aacute;ch ph&amp;ugrave; hợp. &lt;/li&gt;
&lt;li&gt; Biết được khi n&amp;agrave;o sử dụng multiple solution
v&amp;agrave; khi n&amp;agrave;o sử dụng một single solution. &lt;/li&gt;
&lt;li&gt; X&amp;aacute;c định những cấu tr&amp;uacute;c th&amp;iacute;ch hợp cho những đội
nhỏ, vừa v&amp;agrave; lớn(small, medium-size and very large teams).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Overview &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Chương n&amp;agrave;y
giải th&amp;iacute;ch c&amp;aacute;c t&amp;ugrave;y chọn kh&amp;aacute;c nhau cho cấu tr&amp;uacute;c những tập tin project v&amp;agrave;
solution của Visual Studio trong một sự quản l&amp;yacute; th&amp;iacute;ch hợp đối với nh&amp;oacute;m ph&amp;aacute;t triển.
Visual Studio sử dụng những file solution (.sln) để nh&amp;oacute;m c&amp;aacute;c file dự &amp;aacute;n Visual
Studio (.csproj and .vbproj) lại với nhau. Quyết định để kết cấu những project
v&amp;agrave; solution như thế n&amp;agrave;o l&amp;agrave; một quyết định quan trọng v&amp;igrave; c&amp;aacute;c pattern(m&amp;ocirc; h&amp;igrave;nh) m&amp;agrave;
bạn chọn c&amp;oacute; một số c&amp;aacute;c hiệu ứng phụ. Th&amp;iacute; dụ, c&amp;aacute;c th&amp;agrave;nh vi&amp;ecirc;n của những nh&amp;oacute;m ph&amp;aacute;t
triển t&amp;aacute;c động dễ d&amp;agrave;ng đến việc k&amp;eacute;o v&amp;agrave; đẫy(push and pull) c&amp;aacute;c solution v&amp;agrave;
project đến v&amp;agrave; từ source control, cơ chế m&amp;agrave; bạn sử dụng để tham chiếu(reference)
c&amp;aacute;c dependency v&amp;agrave; cũng như l&amp;agrave; c&amp;aacute;c processes.&lt;/p&gt;
&lt;p&gt;Nếu bạn đang
l&amp;agrave;m việc tr&amp;ecirc;n một dự &amp;aacute;n nhỏ bạn c&amp;oacute; thể sử dụng một single solution để chứa tất
cả c&amp;aacute;c file project của bạn. Nếu bạn đang l&amp;agrave;m việc tr&amp;ecirc;n một dự &amp;aacute;n ph&amp;aacute;t triển phần
mềm với một số lượng lớn c&amp;aacute;c file project , bạn n&amp;ecirc;n sử dụng những file multiple
solution để nh&amp;oacute;m c&amp;aacute;c project c&amp;oacute; li&amp;ecirc;n quan m&amp;agrave; tương ứng với nh&amp;oacute;m c&amp;aacute;c chức năng của
bạn trong tổng thể dự &amp;aacute;n nh&amp;oacute;m. T&amp;ugrave;y thuộc v&amp;agrave;o kịch bản cụ thể bạn c&amp;oacute; thể cũng cần
một tập tin single solution để nh&amp;oacute;m tất cả c&amp;aacute;c file project lại với nhau.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Sử dụng chương n&amp;agrave;y như thế n&amp;agrave;o&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sử dụng chương
n&amp;agrave;y để chọn một phương ph&amp;aacute;p tiếp cận cho việc kết cấu Visual Studio solution v&amp;agrave;
&amp;nbsp;project của bạn. Để đạt được lợi &amp;iacute;ch tốt
nhất từ chương n&amp;agrave;y, bạn n&amp;ecirc;n: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Use
the strategies list&lt;/b&gt;(&lt;b&gt;Sử dụng danh
s&amp;aacute;ch c&amp;aacute;c chiến thuật)&lt;/b&gt;. Sử dụng danh
s&amp;aacute;ch c&amp;aacute;c chiến lược khởi đầu như: single solution, partitioned solution, v&amp;agrave; multiple
solutions để nhanh ch&amp;oacute;ng đ&amp;aacute;nh gi&amp;aacute; phương ph&amp;aacute;p tiếp cận tốt nhất cho kịch bản của
bạn.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc những
phần kịch bản m&amp;agrave; c&amp;oacute; li&amp;ecirc;n quan nhiều nhất đến nhu cầu của bạn&lt;/b&gt;. Đọc phần m&amp;ocirc; tả
l&amp;agrave;m thế n&amp;agrave;o để triển khai c&amp;aacute;c t&amp;ugrave;y chọn m&amp;agrave; chọn đ&amp;atilde; chọn.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc
chương 4, &amp;quot;Structuring Projects and Solutions in Team Foundation Server Source
Control&amp;quot; kế tiếp&lt;/b&gt;. Chương 4 giới thiệu
cho bạn những c&amp;acirc;n nhắc quan trọng n&amp;ecirc;n nhớ khi lưu trữ code trong Team
Foundation Server (TFS) source control. &lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc
chương 6, &amp;quot;Managing Source Control Dependencies in Visual Studio Team System&amp;quot;&lt;/b&gt;.
Kết cấu project t&amp;aacute;c động đến c&amp;aacute;c chiến
lược c&amp;oacute; sẵn cho bạn khi quản l&amp;yacute; những th&amp;agrave;nh phần phụ thuộc qua c&amp;aacute;c project v&amp;agrave; solution. Để biết th&amp;ecirc;m th&amp;ocirc;ng
tin về bằng c&amp;aacute;ch n&amp;agrave;o để quản l&amp;yacute; c&amp;aacute;c phụ thuộc, h&amp;atilde;y đọc chương 6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;&amp;bull; Đọc c&amp;aacute;c chủ đề How To k&amp;egrave;m theo&lt;/b&gt;. Đọc c&amp;aacute;c chủ đề How To (L&amp;agrave;m như thế
n&amp;agrave;o để ) v&amp;agrave; đi theo từng bước c&amp;aacute;c thao t&amp;aacute;c kh&amp;aacute;c nhau được thảo luận trong
chương n&amp;agrave;y:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
How To: Kết cấu &amp;nbsp;ASP.NET
Applications trong Visual Studio Team Foundation Server. &lt;/li&gt;
&lt;li&gt; &amp;nbsp;
How To: Kết cấu&amp;nbsp; Windows
Applications trong Visual Studio Team Foundation Server. &lt;/li&gt;
&lt;li&gt; &amp;nbsp;
How To: Kết cấu những thư mục &amp;nbsp;Source Control của bạn trong &amp;nbsp;Visual Studio Team &amp;nbsp;Foundation Server. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Những chiến lược cho cấu tr&amp;uacute;c
Solution v&amp;agrave; Project &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ba chiến lược
chung nhất được sử dụng cho việc kết cấu c&amp;aacute;c file solution v&amp;agrave; project l&amp;agrave;:&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Single
solution.&lt;/b&gt; Nếu bạn l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống nhỏ, h&amp;atilde;y tạo một single
solution v&amp;agrave; đặt tất cả c&amp;aacute;c file dự &amp;aacute;n của bạn tr&amp;ecirc;n đ&amp;oacute;.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Partitioned
solution.&lt;/b&gt; Nếu bạn l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống lớn, sử dụng những multiple
solution để nh&amp;oacute;m c&amp;aacute;c project li&amp;ecirc;n quan lại với nhau. Tạo c&amp;aacute;c solution để nh&amp;oacute;m một
c&amp;aacute;ch hợp l&amp;yacute; c&amp;aacute;c nh&amp;oacute;m nhỏ project m&amp;agrave; một nh&amp;agrave; ph&amp;aacute;t triển hầu như muốn chỉnh sửa
như l&amp;agrave; một tập hợp, v&amp;agrave; sau đ&amp;oacute; tạo một master Solution (solution chủ) để chứa tất
cả c&amp;aacute;c dự &amp;aacute;n của bạn.Phương ph&amp;aacute;p tiếp cận n&amp;agrave;y l&amp;agrave;m giảm bớt số lượng data cần được lấy từ
source control khi bạn chỉ cần l&amp;agrave;m việc
tr&amp;ecirc;n những project cụ thể.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;
Multiple solutions&lt;/b&gt;. Nếu bạn đang l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống rất lớn m&amp;agrave; y&amp;ecirc;u cầu h&amp;agrave;ng chục&amp;nbsp; project hay nhiều hơn , h&amp;atilde;y sử dụng multiple
solution để l&amp;agrave;m việc tr&amp;ecirc;n c&amp;aacute;c sub-systems(hệ thống con) nhưng đối với dependency
mapping v&amp;agrave; performance reasons kh&amp;ocirc;ng tạo một master solution m&amp;agrave; chứa tất cả c&amp;aacute;c
project. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;N&amp;oacute;i chung, bạn n&amp;ecirc;n: &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Sử dụng chiến lược một single solution nếu kết
quả solution kh&amp;ocirc;ng qu&amp;aacute; lớn để load v&amp;agrave;o Visual Studio. &lt;/li&gt;
&lt;li&gt; Sử dụng multiple solutions để tạo những specific
views tr&amp;ecirc;n c&amp;aacute;c sub-systems của ứng dụng của bạn. &lt;/li&gt;
&lt;li&gt; Sử dụng multiple solutions để giảm thời gian
load một solution v&amp;agrave; giảm thời gian build cho c&amp;aacute;c nh&amp;agrave; lập tr&amp;igrave;nh. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;H&amp;atilde;y nhớ những
điều sau khi thiết kế một cấu tr&amp;uacute;c project v&amp;agrave; solution:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Mỗi project đều tạo ra một assembly tại thời
gian build. Bắt đầu bởi việc x&amp;aacute;c định assembly n&amp;agrave;o bạn muốn tạo v&amp;agrave; sau đ&amp;oacute; sử dụng
n&amp;oacute; để quyết định những project n&amp;agrave;o bạn cần. Sử dụng n&amp;oacute; để quyết định phần code
cơ bản n&amp;agrave;o của bạn được xem như l&amp;agrave; nh&amp;acirc;n tố trong c&amp;aacute;c project. &lt;/li&gt;
&lt;li&gt; Bắt đầu với cấu tr&amp;uacute;c single solution đơn giản
nhất. Chỉ th&amp;ecirc;m c&amp;aacute;c phần phức tạp v&amp;agrave;o kết cấu của bạn khi n&amp;oacute; thật sự cần thiết.&lt;/li&gt;
&lt;li&gt; Khi thiết kế một kết cấu &lt;b&gt;multi-solution&lt;/b&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t t&amp;iacute;nh độc lập của dự &amp;aacute;n.&lt;/b&gt; H&amp;atilde;y thử nh&amp;oacute;m c&amp;aacute;c project&amp;nbsp;
c&amp;oacute; phụ thuộc v&amp;agrave;o nhau như l&amp;agrave; những phần của c&amp;ugrave;ng một solution. Điều n&amp;agrave;y
cho ph&amp;eacute;p bạn sử dụng c&amp;aacute;c tham chiếu project &amp;nbsp;trong phạm vi solution của bạn. Bằng c&amp;aacute;ch sử dụng
c&amp;aacute;c project &amp;nbsp;references thay v&amp;igrave; &amp;nbsp;file references, cho ph&amp;eacute;p Visual Studio để x&amp;acirc;y
dựng cấu h&amp;igrave;nh (debug/release) được đồng bộ ho&amp;aacute; , v&amp;agrave; để theo d&amp;otilde;i c&amp;aacute;c version để
x&amp;aacute;c định xem khi n&amp;agrave;o th&amp;igrave; c&amp;aacute;c project cần được built lại. Cố gắng giảm thiểu số
lượng c&amp;aacute;c tham chiếu qua c&amp;aacute;c solution v&amp;agrave; project.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t sự chia sẻ source.&lt;/b&gt; Đặt những project được chia sẻ c&amp;ugrave;ng một source trong c&amp;ugrave;ng một
solution. &lt;/li&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t cấu tr&amp;uacute;c đội.&lt;/b&gt; Kết cấu những solution của bạn để thực hiện n&amp;oacute; một c&amp;aacute;ch dễ d&amp;agrave;ng cho c&amp;aacute;c
đội l&amp;agrave;m việc c&amp;ugrave;ng nhau tr&amp;ecirc;n một tập c&amp;aacute;c project. &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt; Giữ một d&amp;atilde;y kết cấu project để dễ d&amp;agrave;ng nh&amp;oacute;m
c&amp;aacute;c project v&amp;agrave;o trong c&amp;aacute;c solution m&amp;agrave; kh&amp;ocirc;ng cần phải thay đổi cấu tr&amp;uacute;c file hệ
thống hay thư mục source control .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Single
Solution &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc trong một hệ thống nhỏ, h&amp;atilde;y xem x&amp;eacute;t sử dụng một &amp;nbsp;single Visual Studio solution để chứa tất cả
c&amp;aacute;c project của bạn.&amp;nbsp; Cấu tr&amp;uacute;c n&amp;agrave;y đơn giản
ho&amp;aacute; việc ph&amp;aacute;t triển, v&amp;igrave; tất cả c&amp;aacute;c code đ&amp;atilde; c&amp;oacute; sẵn khi bạn mở c&amp;aacute;c solution. Chiến
lược n&amp;agrave;y cũng gi&amp;uacute;p bạn dễ d&amp;agrave;ng để thiết lập references, bởi v&amp;igrave; tất cả c&amp;aacute;c &amp;nbsp;references đều nằm giữa những project trong solution
của bạn. Bạn c&amp;oacute; thể vẫn c&amp;ograve;n cần phải sử dụng c&amp;aacute;c tập tin references để tham chiếu
đến c&amp;aacute;c assembly của b&amp;ecirc;n thứ ba, như l&amp;agrave; mua c&amp;aacute;c th&amp;agrave;nh phần(component) , m&amp;agrave; ở
b&amp;ecirc;n ngo&amp;agrave;i solution của bạn. H&amp;igrave;nh 3.1 hiển thị phương ph&amp;aacute;p tiếp cận single
solution .&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3518/3909446867_1f8d90f469_o.png" width="628" height="297" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.1 &amp;nbsp;Single Solution Approach&lt;/p&gt;
&lt;p&gt;Những l&amp;iacute; do
ch&amp;iacute;nh để chọn cấu tr&amp;uacute;c n&amp;agrave;y bao gồm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Bạn c&amp;oacute; thể giữ c&amp;aacute;c build script đơn giản. &lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể map(&amp;aacute;nh xạ) dể d&amp;agrave;ng c&amp;aacute;c project c&amp;oacute; t&amp;iacute;nh phụ thuộc ngang
nhau trong solution. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;Bạn n&amp;ecirc;n sử dụng cấu tr&amp;uacute;c n&amp;agrave;y nếu tất cả c&amp;aacute;c lập
tr&amp;igrave;nh vi&amp;ecirc;n sử dụng c&amp;ugrave;ng một solution v&amp;agrave; c&amp;oacute; c&amp;ugrave;ng một tập c&amp;aacute;c project. Điều n&amp;agrave;y
c&amp;oacute; thể l&amp;agrave; một vấn đề cho c&amp;aacute;c hệ thống thống lớn nơi m&amp;agrave; bạn muốn tổ chức c&amp;aacute;c project
bằng c&amp;aacute;c hệ thống con hay c&amp;aacute;c chức năng . &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Partitioned Solution &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc với một hệ thống lớn, xem x&amp;eacute;t việc sử dụng&amp;nbsp;
c&amp;aacute;c multiple solution, mỗi c&amp;aacute;i đại diện một hệ thống con trong ứng dụng
của bạn. Những solution n&amp;agrave;y c&amp;oacute; thể được&amp;nbsp;
c&amp;aacute;c lập tr&amp;igrave;nh vi&amp;ecirc;n sử dụng để l&amp;agrave;m việc tr&amp;ecirc;n những phần nhỏ hơn của hệ thống
m&amp;agrave; kh&amp;ocirc;ng c&amp;oacute; việc load tất cả c&amp;aacute;c code tr&amp;ecirc;n tất cả c&amp;aacute;c&amp;nbsp; project. Thiết kế cấu tr&amp;uacute;c solution của bạn với
bất k&amp;igrave; project n&amp;agrave;o m&amp;agrave; c&amp;oacute; phụ thuộc giữa c&amp;aacute;c nh&amp;oacute;m với nhau. Điều n&amp;agrave;y cho ph&amp;eacute;p bạn
sử dụng c&amp;aacute;c project&amp;nbsp; reference hơn l&amp;agrave; c&amp;aacute;c
file reference. H&amp;atilde;y xem x&amp;eacute;t lu&amp;ocirc;n việc tạo một tập tin master solution để chứa tất
cả c&amp;aacute;c project. Bạn c&amp;oacute; thể sử dụng điều n&amp;agrave;y để build to&amp;agrave;n bộ ứng dụng của bạn.&lt;/p&gt;
&lt;p&gt;Lưu &amp;yacute;: Kh&amp;ocirc;ng
như phi&amp;ecirc;n bản trước của Visual Studio, Visual Studio 2005&amp;nbsp; dựa theo MSBuild. Hiện thời n&amp;oacute; cho ph&amp;eacute;p tạo
những cấu tr&amp;uacute;c solution m&amp;agrave; kh&amp;ocirc;ng bao gồm tất cả c&amp;aacute;c project reference v&amp;agrave; vẫn
c&amp;ograve;n build kh&amp;ocirc;ng c&amp;oacute; c&amp;aacute;c error. Miển l&amp;agrave; master solution được build trước, tạo ra
c&amp;aacute;c binary output&amp;nbsp; từ c&amp;aacute;c project,
MSBuild c&amp;oacute; thể theo sau c&amp;aacute;c&amp;nbsp; project
references b&amp;ecirc;n ngo&amp;agrave;i những sự r&amp;agrave;ng buộc của solution v&amp;agrave; build th&amp;agrave;nh c&amp;ocirc;ng của bạn.
N&amp;oacute; chỉ l&amp;agrave;m việc nếu bạn sử dụng project references, kh&amp;ocirc;ng phải l&amp;agrave; file
references. Bạn c&amp;oacute; thể build th&amp;agrave;nh c&amp;ocirc;ng c&amp;aacute;c solution được tạo bằng phương ph&amp;aacute;p
n&amp;agrave;y từ Visual Studio build theo c&amp;aacute;c d&amp;ograve;ng lệnh v&amp;agrave; từ IDE, nhưng mặc định l&amp;agrave;
kh&amp;ocirc;ng được với Team Build . Để build th&amp;agrave;nh c&amp;ocirc;ng với&amp;nbsp; Team Build&amp;nbsp;
h&amp;atilde;y sử dụng master solution bao gồm tất cả c&amp;aacute;c project v&amp;agrave; c&amp;aacute;c phụ thuộc.&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.2 Hiển
thị phương ph&amp;aacute;p tiếp cận partitioned solution.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3087/3910230724_162da82349_o.png" width="628" height="417" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.2
Partitioned Solution Approach&lt;/p&gt;
&lt;p&gt;Khi l&amp;agrave;m việc
với c&amp;aacute;c multiple solution, sử dụng một d&amp;atilde;y cấu tr&amp;uacute;c c&amp;aacute;c&amp;nbsp; file cho tất cả c&amp;aacute;c project của bạn. Một th&amp;iacute;
dụ điển h&amp;igrave;nh l&amp;agrave; một ứng dụng&amp;nbsp; c&amp;oacute; một&amp;nbsp; Microsoft Windows&amp;reg; Forms project, một&amp;nbsp; ASP.NET project, một&amp;nbsp; Windows service, v&amp;agrave; một tập c&amp;aacute;c class library
project&amp;nbsp; được chia sẻ bởi một hay tất cả
c&amp;aacute;c project n&amp;agrave;y.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Bạn c&amp;oacute; thể sử
dụng d&amp;atilde;y c&amp;aacute;c cấu tr&amp;uacute;c sau cho tất cả c&amp;aacute;c project:&lt;/p&gt;
&lt;p&gt;&amp;sect;&amp;nbsp; /Source &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; /WinFormsProject &lt;/li&gt;
&lt;li&gt; /WebProject &lt;/li&gt;
&lt;li&gt; /WindowsServiceProject &lt;/li&gt;
&lt;li&gt; /ClassLibrary1 &lt;/li&gt;
&lt;li&gt; /ClassLibrary2 &lt;/li&gt;
&lt;li&gt; /ClassLibrary3 &lt;/li&gt;
&lt;li&gt; Web.sln &lt;/li&gt;
&lt;li&gt; Service.sln &lt;/li&gt;
&lt;li&gt; All.sln &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Giữ d&amp;atilde;y c&amp;aacute;c
cấu tr&amp;uacute;c n&amp;agrave;y cung cấp nhiều sự linh hoạt v&amp;agrave; khả năng để sử dụng c&amp;aacute;c solution
cho c&amp;aacute;c tr&amp;igrave;nh b&amp;agrave;y kh&amp;aacute;c nhau tr&amp;ecirc;n những project. Cấu tr&amp;uacute;c thư mục&amp;nbsp; vật l&amp;yacute; xung quanh c&amp;aacute;c file solution n&amp;agrave;y thay
đổi rất kh&amp;oacute;, đặc biệt nếu bạn nhận ra l&amp;agrave; bạn cần t&amp;aacute;i sử dụng lại một class
library từ một solution kh&amp;aacute;c.&lt;/p&gt;
&lt;p&gt;L&amp;iacute; do để sử
dụng cấu tr&amp;uacute;c n&amp;agrave;y bao gồm: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Hiệu suất được cải thiện khi tải v&amp;agrave; x&amp;acirc;y dựng
c&amp;aacute;c ứng dụng sub-solution .&lt;/li&gt;
&lt;li&gt; C&amp;aacute;c sub-solution c&amp;oacute; thể được sử dụng để tạo
c&amp;aacute;c &amp;yacute; định tr&amp;ecirc;n c&amp;aacute;c tập project dựa tr&amp;ecirc;n c&amp;aacute;c đội ph&amp;aacute;t triển con hay c&amp;aacute;c ranh giới của việc chia sẻ code.&lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể sử dụng master solution để build to&amp;agrave;n
bộ ứng dụng. &lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể dễ d&amp;agrave;ng map(&amp;aacute;nh xạ) c&amp;aacute;c phần dependency tr&amp;ecirc;n c&amp;aacute;c
project trong mỗi sub-solution. &lt;/li&gt;
&lt;li&gt; N&amp;oacute; giảm sự phức tạp nếu c&amp;aacute;c solution broken
up một c&amp;aacute;ch logic. Th&amp;iacute; dụ sự ph&amp;aacute; vỡ c&amp;aacute;c
solution c&amp;ugrave;ng với c&amp;aacute;c tuyến kĩ thuật v&amp;agrave;
chức năng đ&amp;atilde; l&amp;agrave;m cho c&amp;aacute;c lập tr&amp;igrave;nh vi&amp;ecirc;n
mới hiểu được một c&amp;aacute;ch dễ d&amp;agrave;ng solution n&amp;agrave;o đang được thực thi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;iacute; do ch&amp;iacute;nh
để kh&amp;ocirc;ng sử dụng cấu tr&amp;uacute;c n&amp;agrave;y : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Tăng chi ph&amp;iacute; cho sự bảo tr&amp;igrave; c&amp;aacute;c solution. Th&amp;ecirc;m một project mới c&amp;oacute; thể đề
ra y&amp;ecirc;u cầu phải thay đổi c&amp;aacute;c tập tin multiple solution .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Multiple
Solutions&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc tr&amp;ecirc;n một&amp;nbsp; solution rất lớn, y&amp;ecirc;u cầu
h&amp;agrave;ng&amp;nbsp; t&amp;aacute; c&amp;aacute;c&amp;nbsp; project, bạn c&amp;oacute; thể gặp phải việc mở rộng &amp;nbsp;giới hạn của c&amp;aacute;c solution . Trong kịch bản
n&amp;agrave;y, di chuyển ứng dụng của bạn v&amp;agrave;o những multiple solution nhưng kh&amp;ocirc;ng tạo một
master solution cho to&amp;agrave;n bộ ứng dụng application bởi v&amp;igrave; tất cả c&amp;aacute;c reference
b&amp;ecirc;n trong &amp;nbsp;mỗi solution l&amp;agrave; c&amp;aacute;c project
references. Những tham chiếu đến c&amp;aacute;c&amp;nbsp;
project b&amp;ecirc;n ngo&amp;agrave;i mỗi solution (th&amp;iacute; dụ cho c&amp;aacute;c libraries hay &amp;nbsp;project của b&amp;ecirc;n thứ ba trong sub-solution kh&amp;aacute;c)
l&amp;agrave; c&amp;aacute;c file references. Điều n&amp;agrave;y c&amp;oacute; nghĩa l&amp;agrave; kh&amp;ocirc;ng thể c&amp;oacute; &amp;quot;master&amp;quot;
solution.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Thay v&amp;agrave;o đ&amp;oacute;,
bạn phải sử dụng một script hiểu trật tự cần phải được built của c&amp;aacute;c solution. Một
trong những nhiệm vụ bảo tr&amp;igrave; li&amp;ecirc;n quan đến một kết cấu multiple-solution l&amp;agrave; chắc
chắn rằng những lập tr&amp;igrave;nh vi&amp;ecirc;n kh&amp;ocirc;ng cố &amp;yacute; tạo ra c&amp;aacute;c v&amp;ograve;ng tr&amp;ograve;n tham chiếu(reference)
giữa c&amp;aacute;c solution. Kết cấu n&amp;agrave;y y&amp;ecirc;u cầu những script(tập lệnh) được thiết kế phức
tạp v&amp;agrave; những mối quan hệ phụ thuộc r&amp;otilde; r&amp;agrave;ng. Trong kết cấu n&amp;agrave;y kh&amp;ocirc;ng thể build ứng
dụng trong n&amp;oacute; với Visual Studio. Thay v&amp;agrave;o đ&amp;oacute;, bạn c&amp;oacute; thể sử dụng &amp;nbsp;TFS Team Build hay &amp;nbsp;MSBuild một c&amp;aacute;ch trực tiếp.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.3 hiển
thị phương ph&amp;aacute;p tiếp cận multiple solutions.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3428/3909447043_211305de40_o.png" width="628" height="406" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh&amp;nbsp; 3.3&amp;nbsp;
Multiple Solution Approach &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bạn n&amp;ecirc;n sử dụng
kết cấu n&amp;agrave;y để giải quyết sự thực thi Visual Studio IDE v&amp;agrave; mở rộng c&amp;aacute;c giới hạn
cho c&amp;aacute;c ứng dụng rất lớn. &lt;/p&gt;
&lt;p&gt;Một l&amp;iacute; do
cho việc kh&amp;ocirc;ng sử dụng cấu tr&amp;uacute;c n&amp;agrave;y l&amp;agrave; v&amp;igrave; n&amp;oacute; y&amp;ecirc;u cầu một build script phức tạp
để xử l&amp;yacute; c&amp;aacute;c phụ thuộc giữa c&amp;aacute;c sub-solutions bằng c&amp;aacute;ch build c&amp;aacute;c &amp;nbsp;solutions theo một tr&amp;igrave;nh tự đ&amp;uacute;ng. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Large Project Considerations &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ph&amp;acirc;n biệt những
nh&amp;oacute;m ph&amp;aacute;t triển lớn với c&amp;aacute;c nh&amp;oacute;m nhỏ hơn theo nhiều c&amp;aacute;ch:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;bull;&amp;nbsp; Họ
đ&amp;ograve;i hỏi một kết cấu chi tiết v&amp;agrave; tổng hợp phức tạp hơn.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Họ c&amp;oacute; nhiều khả năng hơn về quản l&amp;yacute; c&amp;aacute;c th&amp;agrave;nh
phần phụ thuộc tr&amp;ecirc;n c&amp;aacute;c solutions v&amp;agrave; c&amp;aacute;c nh&amp;oacute;m projects. &lt;/li&gt;
&lt;li&gt; Họ c&amp;oacute; nhiều khả năng duy tr&amp;igrave; c&amp;aacute;c thiết kế cho
c&amp;aacute;c th&amp;agrave;nh phần v&amp;agrave; c&amp;aacute;c nh&amp;oacute;m.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Một phương
ph&amp;aacute;p tiếp cận partitioned solution l&amp;agrave;m việc tốt với hầu hết c&amp;aacute;c dự &amp;aacute;n lớn v&amp;igrave; n&amp;oacute;
cung cấp c&amp;aacute;c solution một c&amp;aacute;ch mềm dẻo trong khi duy tr&amp;igrave; một single solution m&amp;agrave;
bạn c&amp;oacute; thể sử dụng để build c&amp;aacute;c ứng dụng. Nếu ứng dụng của bạn đủ lớn để bạn thực
hiện mở rộng giới hạn solution, h&amp;atilde;y sử dụng phương ph&amp;aacute;p multiple solution. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tổng kết&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sử dụng một
single solution cho c&amp;aacute;c project nhỏ m&amp;agrave; c&amp;aacute;c project đ&amp;oacute; kh&amp;ocirc;ng cần để ph&amp;acirc;n
v&amp;ugrave;ng&amp;nbsp; source của bạn v&amp;agrave;o c&amp;aacute;c solution con
ri&amp;ecirc;ng biệt.&lt;/p&gt;
&lt;p&gt;Sử dụng một
partitioned solution cho tập c&amp;aacute;c nh&amp;oacute;m project con m&amp;agrave; một lập tr&amp;igrave;nh vi&amp;ecirc;n c&amp;oacute; thể
chỉnh sửa n&amp;oacute; như l&amp;agrave; một tập hợp, v&amp;agrave; sau đ&amp;oacute; tạo một master solution chứa tất cả
c&amp;aacute;c project của bạn. &lt;/p&gt;
&lt;p&gt;Sử dụng &amp;nbsp;multiple solutions để tạo một c&amp;aacute;i nh&amp;igrave;n cụ thể
tr&amp;ecirc;n những hệ thống con v&amp;agrave; để giảm việc load v&amp;agrave; thời gian build của ứng dụng của
bạn. &lt;/p&gt;
&lt;p&gt;Một partitioned
solution l&amp;agrave;m việc tốt với hầu hết c&amp;aacute;c dự &amp;aacute;n lớn v&amp;igrave; n&amp;oacute; cung cấp c&amp;aacute;c solution một
c&amp;aacute;ch mềm dẻo trong khi duy tr&amp;igrave; một single solution m&amp;agrave; bạn c&amp;oacute; thể sử dụng để
build c&amp;aacute;c ứng dụng.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Additional Resources &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Để c&amp;oacute; th&amp;ecirc;m th&amp;ocirc;ng tin về cấu tr&amp;uacute;c project v&amp;agrave; solution (mặc dầu kh&amp;ocirc;ng được &amp;aacute;p dụng trực tiếp
trong Team Foundation Server), h&amp;atilde;y xem &amp;quot;Team Development with Visual Studio .NET and
Visual SourceSafe&amp;quot; tại đ&amp;acirc;y: &lt;span style="text-decoration:underline;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms998208.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms998208.aspx&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Part II- Chapter 3 --Team Development with Visual Studio Team Foundation Server </title><link>http://msdnvietnam.net/wikis/tfs/part-ii-chapter-3-team-development-with-visual-studio-team-foundation-server/revision/1.aspx</link><pubDate>Fri, 11 Sep 2009 16:23:07 GMT</pubDate><guid isPermaLink="false">019a604b-fb74-42d5-8a6d-7cedfb08f61c:97</guid><dc:creator>Nguyễn Thị Như Quỳnh</dc:creator><comments>http://msdnvietnam.net/wikis/tfs/part-ii-chapter-3-team-development-with-visual-studio-team-foundation-server/comments.aspx</comments><description>Revision 1 posted to TFS - Team Foundation System by Nguyễn Thị Như Quỳnh on 9/12/2009 12:23:07 AM&lt;br /&gt;
&lt;p&gt;&lt;b&gt;Chương 3&lt;/b&gt; - Kết cấu c&amp;aacute;c Project (dự &amp;aacute;n) v&amp;agrave;
Solution( giải ph&amp;aacute;p) trong Source Control &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Objectives &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Kết cấu c&amp;aacute;c project v&amp;agrave; solution của Microsoft&amp;reg;
Visual Studio&amp;reg; Team System một c&amp;aacute;ch ph&amp;ugrave; hợp. &lt;/li&gt;
&lt;li&gt; Biết được khi n&amp;agrave;o sử dụng multiple solution
v&amp;agrave; khi n&amp;agrave;o sử dụng một single solution. &lt;/li&gt;
&lt;li&gt; X&amp;aacute;c định những cấu tr&amp;uacute;c th&amp;iacute;ch hợp cho những đội
nhỏ, vừa v&amp;agrave; lớn(small, medium-size and very large teams).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Overview &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Chương n&amp;agrave;y
giải th&amp;iacute;ch c&amp;aacute;c t&amp;ugrave;y chọn kh&amp;aacute;c nhau cho cấu tr&amp;uacute;c những tập tin project v&amp;agrave;
solution của Visual Studio trong một sự quản l&amp;yacute; th&amp;iacute;ch hợp đối với nh&amp;oacute;m ph&amp;aacute;t triển.
Visual Studio sử dụng những file solution (.sln) để nh&amp;oacute;m c&amp;aacute;c file dự &amp;aacute;n Visual
Studio (.csproj and .vbproj) lại với nhau. Quyết định để kết cấu những project
v&amp;agrave; solution như thế n&amp;agrave;o l&amp;agrave; một quyết định quan trọng v&amp;igrave; c&amp;aacute;c pattern(m&amp;ocirc; h&amp;igrave;nh) m&amp;agrave;
bạn chọn c&amp;oacute; một số c&amp;aacute;c hiệu ứng phụ. Th&amp;iacute; dụ, c&amp;aacute;c th&amp;agrave;nh vi&amp;ecirc;n của những nh&amp;oacute;m ph&amp;aacute;t
triển t&amp;aacute;c động dễ d&amp;agrave;ng đến việc k&amp;eacute;o v&amp;agrave; đẫy(push and pull) c&amp;aacute;c solution v&amp;agrave;
project đến v&amp;agrave; từ source control, cơ chế m&amp;agrave; bạn sử dụng để tham chiếu(reference)
c&amp;aacute;c dependency v&amp;agrave; cũng như l&amp;agrave; c&amp;aacute;c processes.&lt;/p&gt;
&lt;p&gt;Nếu bạn đang
l&amp;agrave;m việc tr&amp;ecirc;n một dự &amp;aacute;n nhỏ bạn c&amp;oacute; thể sử dụng một single solution để chứa tất
cả c&amp;aacute;c file project của bạn. Nếu bạn đang l&amp;agrave;m việc tr&amp;ecirc;n một dự &amp;aacute;n ph&amp;aacute;t triển phần
mềm với một số lượng lớn c&amp;aacute;c file project , bạn n&amp;ecirc;n sử dụng những file multiple
solution để nh&amp;oacute;m c&amp;aacute;c project c&amp;oacute; li&amp;ecirc;n quan m&amp;agrave; tương ứng với nh&amp;oacute;m c&amp;aacute;c chức năng của
bạn trong tổng thể dự &amp;aacute;n nh&amp;oacute;m. T&amp;ugrave;y thuộc v&amp;agrave;o kịch bản cụ thể bạn c&amp;oacute; thể cũng cần
một tập tin single solution để nh&amp;oacute;m tất cả c&amp;aacute;c file project lại với nhau.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Sử dụng chương n&amp;agrave;y như thế n&amp;agrave;o&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sử dụng chương
n&amp;agrave;y để chọn một phương ph&amp;aacute;p tiếp cận cho việc kết cấu Visual Studio solution v&amp;agrave;
&amp;nbsp;project của bạn. Để đạt được lợi &amp;iacute;ch tốt
nhất từ chương n&amp;agrave;y, bạn n&amp;ecirc;n: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Use
the strategies list&lt;/b&gt;(&lt;b&gt;Sử dụng danh
s&amp;aacute;ch c&amp;aacute;c chiến thuật)&lt;/b&gt;. Sử dụng danh
s&amp;aacute;ch c&amp;aacute;c chiến lược khởi đầu như: single solution, partitioned solution, v&amp;agrave; multiple
solutions để nhanh ch&amp;oacute;ng đ&amp;aacute;nh gi&amp;aacute; phương ph&amp;aacute;p tiếp cận tốt nhất cho kịch bản của
bạn.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc những
phần kịch bản m&amp;agrave; c&amp;oacute; li&amp;ecirc;n quan nhiều nhất đến nhu cầu của bạn&lt;/b&gt;. Đọc phần m&amp;ocirc; tả
l&amp;agrave;m thế n&amp;agrave;o để triển khai c&amp;aacute;c t&amp;ugrave;y chọn m&amp;agrave; chọn đ&amp;atilde; chọn.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc
chương 4, &amp;quot;Structuring Projects and Solutions in Team Foundation Server Source
Control&amp;quot; kế tiếp&lt;/b&gt;. Chương 4 giới thiệu
cho bạn những c&amp;acirc;n nhắc quan trọng n&amp;ecirc;n nhớ khi lưu trữ code trong Team
Foundation Server (TFS) source control. &lt;/li&gt;
&lt;li&gt; &lt;b&gt;Đọc
chương 6, &amp;quot;Managing Source Control Dependencies in Visual Studio Team System&amp;quot;&lt;/b&gt;.
Kết cấu project t&amp;aacute;c động đến c&amp;aacute;c chiến
lược c&amp;oacute; sẵn cho bạn khi quản l&amp;yacute; những th&amp;agrave;nh phần phụ thuộc qua c&amp;aacute;c project v&amp;agrave; solution. Để biết th&amp;ecirc;m th&amp;ocirc;ng
tin về bằng c&amp;aacute;ch n&amp;agrave;o để quản l&amp;yacute; c&amp;aacute;c phụ thuộc, h&amp;atilde;y đọc chương 6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;&amp;bull; Đọc c&amp;aacute;c chủ đề How To k&amp;egrave;m theo&lt;/b&gt;. Đọc c&amp;aacute;c chủ đề How To (L&amp;agrave;m như thế
n&amp;agrave;o để ) v&amp;agrave; đi theo từng bước c&amp;aacute;c thao t&amp;aacute;c kh&amp;aacute;c nhau được thảo luận trong
chương n&amp;agrave;y:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
How To: Kết cấu &amp;nbsp;ASP.NET
Applications trong Visual Studio Team Foundation Server. &lt;/li&gt;
&lt;li&gt; &amp;nbsp;
How To: Kết cấu&amp;nbsp; Windows
Applications trong Visual Studio Team Foundation Server. &lt;/li&gt;
&lt;li&gt; &amp;nbsp;
How To: Kết cấu những thư mục &amp;nbsp;Source Control của bạn trong &amp;nbsp;Visual Studio Team &amp;nbsp;Foundation Server. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Những chiến lược cho cấu tr&amp;uacute;c
Solution v&amp;agrave; Project &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ba chiến lược
chung nhất được sử dụng cho việc kết cấu c&amp;aacute;c file solution v&amp;agrave; project l&amp;agrave;:&amp;nbsp; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Single
solution.&lt;/b&gt; Nếu bạn l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống nhỏ, h&amp;atilde;y tạo một single
solution v&amp;agrave; đặt tất cả c&amp;aacute;c file dự &amp;aacute;n của bạn tr&amp;ecirc;n đ&amp;oacute;.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Partitioned
solution.&lt;/b&gt; Nếu bạn l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống lớn, sử dụng những multiple
solution để nh&amp;oacute;m c&amp;aacute;c project li&amp;ecirc;n quan lại với nhau. Tạo c&amp;aacute;c solution để nh&amp;oacute;m một
c&amp;aacute;ch hợp l&amp;yacute; c&amp;aacute;c nh&amp;oacute;m nhỏ project m&amp;agrave; một nh&amp;agrave; ph&amp;aacute;t triển hầu như muốn chỉnh sửa
như l&amp;agrave; một tập hợp, v&amp;agrave; sau đ&amp;oacute; tạo một master Solution (solution chủ) để chứa tất
cả c&amp;aacute;c dự &amp;aacute;n của bạn.Phương ph&amp;aacute;p tiếp cận n&amp;agrave;y l&amp;agrave;m giảm bớt số lượng data cần được lấy từ
source control khi bạn chỉ cần l&amp;agrave;m việc
tr&amp;ecirc;n những project cụ thể.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;
Multiple solutions&lt;/b&gt;. Nếu bạn đang l&amp;agrave;m việc tr&amp;ecirc;n một hệ thống rất lớn m&amp;agrave; y&amp;ecirc;u cầu h&amp;agrave;ng chục&amp;nbsp; project hay nhiều hơn , h&amp;atilde;y sử dụng multiple
solution để l&amp;agrave;m việc tr&amp;ecirc;n c&amp;aacute;c sub-systems(hệ thống con) nhưng đối với dependency
mapping v&amp;agrave; performance reasons kh&amp;ocirc;ng tạo một master solution m&amp;agrave; chứa tất cả c&amp;aacute;c
project. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;N&amp;oacute;i chung, bạn n&amp;ecirc;n: &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Sử dụng chiến lược một single solution nếu kết
quả solution kh&amp;ocirc;ng qu&amp;aacute; lớn để load v&amp;agrave;o Visual Studio. &lt;/li&gt;
&lt;li&gt; Sử dụng multiple solutions để tạo những specific
views tr&amp;ecirc;n c&amp;aacute;c sub-systems của ứng dụng của bạn. &lt;/li&gt;
&lt;li&gt; Sử dụng multiple solutions để giảm thời gian
load một solution v&amp;agrave; giảm thời gian build cho c&amp;aacute;c nh&amp;agrave; lập tr&amp;igrave;nh. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;H&amp;atilde;y nhớ những
điều sau khi thiết kế một cấu tr&amp;uacute;c project v&amp;agrave; solution:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Mỗi project đều tạo ra một assembly tại thời
gian build. Bắt đầu bởi việc x&amp;aacute;c định assembly n&amp;agrave;o bạn muốn tạo v&amp;agrave; sau đ&amp;oacute; sử dụng
n&amp;oacute; để quyết định những project n&amp;agrave;o bạn cần. Sử dụng n&amp;oacute; để quyết định phần code
cơ bản n&amp;agrave;o của bạn được xem như l&amp;agrave; nh&amp;acirc;n tố trong c&amp;aacute;c project. &lt;/li&gt;
&lt;li&gt; Bắt đầu với cấu tr&amp;uacute;c single solution đơn giản
nhất. Chỉ th&amp;ecirc;m c&amp;aacute;c phần phức tạp v&amp;agrave;o kết cấu của bạn khi n&amp;oacute; thật sự cần thiết.&lt;/li&gt;
&lt;li&gt; Khi thiết kế một kết cấu &lt;b&gt;multi-solution&lt;/b&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t t&amp;iacute;nh độc lập của dự &amp;aacute;n.&lt;/b&gt; H&amp;atilde;y thử nh&amp;oacute;m c&amp;aacute;c project&amp;nbsp;
c&amp;oacute; phụ thuộc v&amp;agrave;o nhau như l&amp;agrave; những phần của c&amp;ugrave;ng một solution. Điều n&amp;agrave;y
cho ph&amp;eacute;p bạn sử dụng c&amp;aacute;c tham chiếu project &amp;nbsp;trong phạm vi solution của bạn. Bằng c&amp;aacute;ch sử dụng
c&amp;aacute;c project &amp;nbsp;references thay v&amp;igrave; &amp;nbsp;file references, cho ph&amp;eacute;p Visual Studio để x&amp;acirc;y
dựng cấu h&amp;igrave;nh (debug/release) được đồng bộ ho&amp;aacute; , v&amp;agrave; để theo d&amp;otilde;i c&amp;aacute;c version để
x&amp;aacute;c định xem khi n&amp;agrave;o th&amp;igrave; c&amp;aacute;c project cần được built lại. Cố gắng giảm thiểu số
lượng c&amp;aacute;c tham chiếu qua c&amp;aacute;c solution v&amp;agrave; project.&lt;/li&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t sự chia sẻ source.&lt;/b&gt; Đặt những project được chia sẻ c&amp;ugrave;ng một source trong c&amp;ugrave;ng một
solution. &lt;/li&gt;
&lt;li&gt; &lt;b&gt;Xem x&amp;eacute;t cấu tr&amp;uacute;c đội.&lt;/b&gt; Kết cấu những solution của bạn để thực hiện n&amp;oacute; một c&amp;aacute;ch dễ d&amp;agrave;ng cho c&amp;aacute;c
đội l&amp;agrave;m việc c&amp;ugrave;ng nhau tr&amp;ecirc;n một tập c&amp;aacute;c project. &lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt; Giữ một d&amp;atilde;y kết cấu project để dễ d&amp;agrave;ng nh&amp;oacute;m
c&amp;aacute;c project v&amp;agrave;o trong c&amp;aacute;c solution m&amp;agrave; kh&amp;ocirc;ng cần phải thay đổi cấu tr&amp;uacute;c file hệ
thống hay thư mục source control .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Single
Solution &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc trong một hệ thống nhỏ, h&amp;atilde;y xem x&amp;eacute;t sử dụng một &amp;nbsp;single Visual Studio solution để chứa tất cả
c&amp;aacute;c project của bạn.&amp;nbsp; Cấu tr&amp;uacute;c n&amp;agrave;y đơn giản
ho&amp;aacute; việc ph&amp;aacute;t triển, v&amp;igrave; tất cả c&amp;aacute;c code đ&amp;atilde; c&amp;oacute; sẵn khi bạn mở c&amp;aacute;c solution. Chiến
lược n&amp;agrave;y cũng gi&amp;uacute;p bạn dễ d&amp;agrave;ng để thiết lập references, bởi v&amp;igrave; tất cả c&amp;aacute;c &amp;nbsp;references đều nằm giữa những project trong solution
của bạn. Bạn c&amp;oacute; thể vẫn c&amp;ograve;n cần phải sử dụng c&amp;aacute;c tập tin references để tham chiếu
đến c&amp;aacute;c assembly của b&amp;ecirc;n thứ ba, như l&amp;agrave; mua c&amp;aacute;c th&amp;agrave;nh phần(component) , m&amp;agrave; ở
b&amp;ecirc;n ngo&amp;agrave;i solution của bạn. H&amp;igrave;nh 3.1 hiển thị phương ph&amp;aacute;p tiếp cận single
solution .&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3518/3909446867_1f8d90f469_o.png" width="628" height="297" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.1 &amp;nbsp;Single Solution Approach&lt;/p&gt;
&lt;p&gt;Những l&amp;iacute; do
ch&amp;iacute;nh để chọn cấu tr&amp;uacute;c n&amp;agrave;y bao gồm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Bạn c&amp;oacute; thể giữ c&amp;aacute;c build script đơn giản. &lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể map(&amp;aacute;nh xạ) dể d&amp;agrave;ng c&amp;aacute;c project c&amp;oacute; t&amp;iacute;nh phụ thuộc ngang
nhau trong solution. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;Bạn n&amp;ecirc;n sử dụng cấu tr&amp;uacute;c n&amp;agrave;y nếu tất cả c&amp;aacute;c lập
tr&amp;igrave;nh vi&amp;ecirc;n sử dụng c&amp;ugrave;ng một solution v&amp;agrave; c&amp;oacute; c&amp;ugrave;ng một tập c&amp;aacute;c project. Điều n&amp;agrave;y
c&amp;oacute; thể l&amp;agrave; một vấn đề cho c&amp;aacute;c hệ thống thống lớn nơi m&amp;agrave; bạn muốn tổ chức c&amp;aacute;c project
bằng c&amp;aacute;c hệ thống con hay c&amp;aacute;c chức năng . &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Partitioned Solution &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc với một hệ thống lớn, xem x&amp;eacute;t việc sử dụng&amp;nbsp;
c&amp;aacute;c multiple solution, mỗi c&amp;aacute;i đại diện một hệ thống con trong ứng dụng
của bạn. Những solution n&amp;agrave;y c&amp;oacute; thể được&amp;nbsp;
c&amp;aacute;c lập tr&amp;igrave;nh vi&amp;ecirc;n sử dụng để l&amp;agrave;m việc tr&amp;ecirc;n những phần nhỏ hơn của hệ thống
m&amp;agrave; kh&amp;ocirc;ng c&amp;oacute; việc load tất cả c&amp;aacute;c code tr&amp;ecirc;n tất cả c&amp;aacute;c&amp;nbsp; project. Thiết kế cấu tr&amp;uacute;c solution của bạn với
bất k&amp;igrave; project n&amp;agrave;o m&amp;agrave; c&amp;oacute; phụ thuộc giữa c&amp;aacute;c nh&amp;oacute;m với nhau. Điều n&amp;agrave;y cho ph&amp;eacute;p bạn
sử dụng c&amp;aacute;c project&amp;nbsp; reference hơn l&amp;agrave; c&amp;aacute;c
file reference. H&amp;atilde;y xem x&amp;eacute;t lu&amp;ocirc;n việc tạo một tập tin master solution để chứa tất
cả c&amp;aacute;c project. Bạn c&amp;oacute; thể sử dụng điều n&amp;agrave;y để build to&amp;agrave;n bộ ứng dụng của bạn.&lt;/p&gt;
&lt;p&gt;Lưu &amp;yacute;: Kh&amp;ocirc;ng
như phi&amp;ecirc;n bản trước của Visual Studio, Visual Studio 2005&amp;nbsp; dựa theo MSBuild. Hiện thời n&amp;oacute; cho ph&amp;eacute;p tạo
những cấu tr&amp;uacute;c solution m&amp;agrave; kh&amp;ocirc;ng bao gồm tất cả c&amp;aacute;c project reference v&amp;agrave; vẫn
c&amp;ograve;n build kh&amp;ocirc;ng c&amp;oacute; c&amp;aacute;c error. Miển l&amp;agrave; master solution được build trước, tạo ra
c&amp;aacute;c binary output&amp;nbsp; từ c&amp;aacute;c project,
MSBuild c&amp;oacute; thể theo sau c&amp;aacute;c&amp;nbsp; project
references b&amp;ecirc;n ngo&amp;agrave;i những sự r&amp;agrave;ng buộc của solution v&amp;agrave; build th&amp;agrave;nh c&amp;ocirc;ng của bạn.
N&amp;oacute; chỉ l&amp;agrave;m việc nếu bạn sử dụng project references, kh&amp;ocirc;ng phải l&amp;agrave; file
references. Bạn c&amp;oacute; thể build th&amp;agrave;nh c&amp;ocirc;ng c&amp;aacute;c solution được tạo bằng phương ph&amp;aacute;p
n&amp;agrave;y từ Visual Studio build theo c&amp;aacute;c d&amp;ograve;ng lệnh v&amp;agrave; từ IDE, nhưng mặc định l&amp;agrave;
kh&amp;ocirc;ng được với Team Build . Để build th&amp;agrave;nh c&amp;ocirc;ng với&amp;nbsp; Team Build&amp;nbsp;
h&amp;atilde;y sử dụng master solution bao gồm tất cả c&amp;aacute;c project v&amp;agrave; c&amp;aacute;c phụ thuộc.&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.2 Hiển
thị phương ph&amp;aacute;p tiếp cận partitioned solution.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3087/3910230724_162da82349_o.png" width="628" height="417" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.2
Partitioned Solution Approach&lt;/p&gt;
&lt;p&gt;Khi l&amp;agrave;m việc
với c&amp;aacute;c multiple solution, sử dụng một d&amp;atilde;y cấu tr&amp;uacute;c c&amp;aacute;c&amp;nbsp; file cho tất cả c&amp;aacute;c project của bạn. Một th&amp;iacute;
dụ điển h&amp;igrave;nh l&amp;agrave; một ứng dụng&amp;nbsp; c&amp;oacute; một&amp;nbsp; Microsoft Windows&amp;reg; Forms project, một&amp;nbsp; ASP.NET project, một&amp;nbsp; Windows service, v&amp;agrave; một tập c&amp;aacute;c class library
project&amp;nbsp; được chia sẻ bởi một hay tất cả
c&amp;aacute;c project n&amp;agrave;y.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Bạn c&amp;oacute; thể sử
dụng d&amp;atilde;y c&amp;aacute;c cấu tr&amp;uacute;c sau cho tất cả c&amp;aacute;c project:&lt;/p&gt;
&lt;p&gt;&amp;sect;&amp;nbsp; /Source &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; /WinFormsProject &lt;/li&gt;
&lt;li&gt; /WebProject &lt;/li&gt;
&lt;li&gt; /WindowsServiceProject &lt;/li&gt;
&lt;li&gt; /ClassLibrary1 &lt;/li&gt;
&lt;li&gt; /ClassLibrary2 &lt;/li&gt;
&lt;li&gt; /ClassLibrary3 &lt;/li&gt;
&lt;li&gt; Web.sln &lt;/li&gt;
&lt;li&gt; Service.sln &lt;/li&gt;
&lt;li&gt; All.sln &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Giữ d&amp;atilde;y c&amp;aacute;c
cấu tr&amp;uacute;c n&amp;agrave;y cung cấp nhiều sự linh hoạt v&amp;agrave; khả năng để sử dụng c&amp;aacute;c solution
cho c&amp;aacute;c tr&amp;igrave;nh b&amp;agrave;y kh&amp;aacute;c nhau tr&amp;ecirc;n những project. Cấu tr&amp;uacute;c thư mục&amp;nbsp; vật l&amp;yacute; xung quanh c&amp;aacute;c file solution n&amp;agrave;y thay
đổi rất kh&amp;oacute;, đặc biệt nếu bạn nhận ra l&amp;agrave; bạn cần t&amp;aacute;i sử dụng lại một class
library từ một solution kh&amp;aacute;c.&lt;/p&gt;
&lt;p&gt;L&amp;iacute; do để sử
dụng cấu tr&amp;uacute;c n&amp;agrave;y bao gồm: &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Hiệu suất được cải thiện khi tải v&amp;agrave; x&amp;acirc;y dựng
c&amp;aacute;c ứng dụng sub-solution .&lt;/li&gt;
&lt;li&gt; C&amp;aacute;c sub-solution c&amp;oacute; thể được sử dụng để tạo
c&amp;aacute;c &amp;yacute; định tr&amp;ecirc;n c&amp;aacute;c tập project dựa tr&amp;ecirc;n c&amp;aacute;c đội ph&amp;aacute;t triển con hay c&amp;aacute;c ranh giới của việc chia sẻ code.&lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể sử dụng master solution để build to&amp;agrave;n
bộ ứng dụng. &lt;/li&gt;
&lt;li&gt; Bạn c&amp;oacute; thể dễ d&amp;agrave;ng map(&amp;aacute;nh xạ) c&amp;aacute;c phần dependency tr&amp;ecirc;n c&amp;aacute;c
project trong mỗi sub-solution. &lt;/li&gt;
&lt;li&gt; N&amp;oacute; giảm sự phức tạp nếu c&amp;aacute;c solution broken
up một c&amp;aacute;ch logic. Th&amp;iacute; dụ sự ph&amp;aacute; vỡ c&amp;aacute;c
solution c&amp;ugrave;ng với c&amp;aacute;c tuyến kĩ thuật v&amp;agrave;
chức năng đ&amp;atilde; l&amp;agrave;m cho c&amp;aacute;c lập tr&amp;igrave;nh vi&amp;ecirc;n
mới hiểu được một c&amp;aacute;ch dễ d&amp;agrave;ng solution n&amp;agrave;o đang được thực thi.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;iacute; do ch&amp;iacute;nh
để kh&amp;ocirc;ng sử dụng cấu tr&amp;uacute;c n&amp;agrave;y : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Tăng chi ph&amp;iacute; cho sự bảo tr&amp;igrave; c&amp;aacute;c solution. Th&amp;ecirc;m một project mới c&amp;oacute; thể đề
ra y&amp;ecirc;u cầu phải thay đổi c&amp;aacute;c tập tin multiple solution .&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Multiple
Solutions&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Nếu bạn l&amp;agrave;m
việc tr&amp;ecirc;n một&amp;nbsp; solution rất lớn, y&amp;ecirc;u cầu
h&amp;agrave;ng&amp;nbsp; t&amp;aacute; c&amp;aacute;c&amp;nbsp; project, bạn c&amp;oacute; thể gặp phải việc mở rộng &amp;nbsp;giới hạn của c&amp;aacute;c solution . Trong kịch bản
n&amp;agrave;y, di chuyển ứng dụng của bạn v&amp;agrave;o những multiple solution nhưng kh&amp;ocirc;ng tạo một
master solution cho to&amp;agrave;n bộ ứng dụng application bởi v&amp;igrave; tất cả c&amp;aacute;c reference
b&amp;ecirc;n trong &amp;nbsp;mỗi solution l&amp;agrave; c&amp;aacute;c project
references. Những tham chiếu đến c&amp;aacute;c&amp;nbsp;
project b&amp;ecirc;n ngo&amp;agrave;i mỗi solution (th&amp;iacute; dụ cho c&amp;aacute;c libraries hay &amp;nbsp;project của b&amp;ecirc;n thứ ba trong sub-solution kh&amp;aacute;c)
l&amp;agrave; c&amp;aacute;c file references. Điều n&amp;agrave;y c&amp;oacute; nghĩa l&amp;agrave; kh&amp;ocirc;ng thể c&amp;oacute; &amp;quot;master&amp;quot;
solution.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Thay v&amp;agrave;o đ&amp;oacute;,
bạn phải sử dụng một script hiểu trật tự cần phải được built của c&amp;aacute;c solution. Một
trong những nhiệm vụ bảo tr&amp;igrave; li&amp;ecirc;n quan đến một kết cấu multiple-solution l&amp;agrave; chắc
chắn rằng những lập tr&amp;igrave;nh vi&amp;ecirc;n kh&amp;ocirc;ng cố &amp;yacute; tạo ra c&amp;aacute;c v&amp;ograve;ng tr&amp;ograve;n tham chiếu(reference)
giữa c&amp;aacute;c solution. Kết cấu n&amp;agrave;y y&amp;ecirc;u cầu những script(tập lệnh) được thiết kế phức
tạp v&amp;agrave; những mối quan hệ phụ thuộc r&amp;otilde; r&amp;agrave;ng. Trong kết cấu n&amp;agrave;y kh&amp;ocirc;ng thể build ứng
dụng trong n&amp;oacute; với Visual Studio. Thay v&amp;agrave;o đ&amp;oacute;, bạn c&amp;oacute; thể sử dụng &amp;nbsp;TFS Team Build hay &amp;nbsp;MSBuild một c&amp;aacute;ch trực tiếp.&amp;nbsp;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh 3.3 hiển
thị phương ph&amp;aacute;p tiếp cận multiple solutions.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3428/3909447043_211305de40_o.png" width="628" height="406" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;H&amp;igrave;nh&amp;nbsp; 3.3&amp;nbsp;
Multiple Solution Approach &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Bạn n&amp;ecirc;n sử dụng
kết cấu n&amp;agrave;y để giải quyết sự thực thi Visual Studio IDE v&amp;agrave; mở rộng c&amp;aacute;c giới hạn
cho c&amp;aacute;c ứng dụng rất lớn. &lt;/p&gt;
&lt;p&gt;Một l&amp;iacute; do
cho việc kh&amp;ocirc;ng sử dụng cấu tr&amp;uacute;c n&amp;agrave;y l&amp;agrave; v&amp;igrave; n&amp;oacute; y&amp;ecirc;u cầu một build script phức tạp
để xử l&amp;yacute; c&amp;aacute;c phụ thuộc giữa c&amp;aacute;c sub-solutions bằng c&amp;aacute;ch build c&amp;aacute;c &amp;nbsp;solutions theo một tr&amp;igrave;nh tự đ&amp;uacute;ng. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Large Project Considerations &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ph&amp;acirc;n biệt những
nh&amp;oacute;m ph&amp;aacute;t triển lớn với c&amp;aacute;c nh&amp;oacute;m nhỏ hơn theo nhiều c&amp;aacute;ch:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;bull;&amp;nbsp; Họ
đ&amp;ograve;i hỏi một kết cấu chi tiết v&amp;agrave; tổng hợp phức tạp hơn.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Họ c&amp;oacute; nhiều khả năng hơn về quản l&amp;yacute; c&amp;aacute;c th&amp;agrave;nh
phần phụ thuộc tr&amp;ecirc;n c&amp;aacute;c solutions v&amp;agrave; c&amp;aacute;c nh&amp;oacute;m projects. &lt;/li&gt;
&lt;li&gt; Họ c&amp;oacute; nhiều khả năng duy tr&amp;igrave; c&amp;aacute;c thiết kế cho
c&amp;aacute;c th&amp;agrave;nh phần v&amp;agrave; c&amp;aacute;c nh&amp;oacute;m.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Một phương
ph&amp;aacute;p tiếp cận partitioned solution l&amp;agrave;m việc tốt với hầu hết c&amp;aacute;c dự &amp;aacute;n lớn v&amp;igrave; n&amp;oacute;
cung cấp c&amp;aacute;c solution một c&amp;aacute;ch mềm dẻo trong khi duy tr&amp;igrave; một single solution m&amp;agrave;
bạn c&amp;oacute; thể sử dụng để build c&amp;aacute;c ứng dụng. Nếu ứng dụng của bạn đủ lớn để bạn thực
hiện mở rộng giới hạn solution, h&amp;atilde;y sử dụng phương ph&amp;aacute;p multiple solution. &lt;/p&gt;
&lt;p&gt;&lt;b&gt;Tổng kết&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Sử dụng một
single solution cho c&amp;aacute;c project nhỏ m&amp;agrave; c&amp;aacute;c project đ&amp;oacute; kh&amp;ocirc;ng cần để ph&amp;acirc;n
v&amp;ugrave;ng&amp;nbsp; source của bạn v&amp;agrave;o c&amp;aacute;c solution con
ri&amp;ecirc;ng biệt.&lt;/p&gt;
&lt;p&gt;Sử dụng một
partitioned solution cho tập c&amp;aacute;c nh&amp;oacute;m project con m&amp;agrave; một lập tr&amp;igrave;nh vi&amp;ecirc;n c&amp;oacute; thể
chỉnh sửa n&amp;oacute; như l&amp;agrave; một tập hợp, v&amp;agrave; sau đ&amp;oacute; tạo một master solution chứa tất cả
c&amp;aacute;c project của bạn. &lt;/p&gt;
&lt;p&gt;Sử dụng &amp;nbsp;multiple solutions để tạo một c&amp;aacute;i nh&amp;igrave;n cụ thể
tr&amp;ecirc;n những hệ thống con v&amp;agrave; để giảm việc load v&amp;agrave; thời gian build của ứng dụng của
bạn. &lt;/p&gt;
&lt;p&gt;Một partitioned
solution l&amp;agrave;m việc tốt với hầu hết c&amp;aacute;c dự &amp;aacute;n lớn v&amp;igrave; n&amp;oacute; cung cấp c&amp;aacute;c solution một
c&amp;aacute;ch mềm dẻo trong khi duy tr&amp;igrave; một single solution m&amp;agrave; bạn c&amp;oacute; thể sử dụng để
build c&amp;aacute;c ứng dụng.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Additional Resources &lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Để c&amp;oacute; th&amp;ecirc;m th&amp;ocirc;ng tin về cấu tr&amp;uacute;c project v&amp;agrave; solution (mặc dầu kh&amp;ocirc;ng được &amp;aacute;p dụng trực tiếp
trong Team Foundation Server), h&amp;atilde;y xem &amp;quot;Team Development with Visual Studio .NET and
Visual SourceSafe&amp;quot; tại đ&amp;acirc;y: &lt;span style="text-decoration:underline;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms998208.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms998208.aspx&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>
