Hình tương hóa thông tin với .NET
Laurence Moroney
Các vấn đề thảo luận trong bài báo này:
§ Sự hình tượng hóa dữ liệu
§ Xây dựng các dịch vụ dữ liệu bất khả tri(data-agnostic)
§ Xây dựng một sự hình tượng hóa máy chủ
Bài báo này sử dụng các công nghệ: C#, ASP.NET, XML
Nội dung:
Sự hình tượng hóa thông tin đã ở xung quanh trong một thời gian dài, nhưng hỏi những người khác nghĩa của nó là gì, và bạn sẽ có khả năng nhận được nhiều câu trả lời khác nhau cho ví dụ, biểu đồ, có tính chất đổi mới các quan niệm sinh động, hoặc sự biểu diễn chuyên sâu tính toán của các cấu trúc dữ liệu phức tạp. Sự hình tượng hóa thông tin gói gọn tất cả trong các câu trả lời này, và một nền tảng hình tượng hóa thông tin là một thứ mà có thể hỗ trợ từng viễn cảnh này.
Từ một viễn cảnh khoa học, sự hình tượng hóa thông tin thường được dùng để định nghĩa sự nghiên cứu của sự miêu tả hình tượng của bộ sưu tập phạm vi rộng của thông tin cái mà nó không cần thiết bằng số trong tự nhiên, và sử dụng sự biểu diễn đồ họa của dữ liệu này để cho phép dữ liệu được phân tích và được hiểu. Từ viễn cảnh kinh doanh, sự hiện thực hóa thông tin là tất cả suy ra giá trị từ dữ liệu thông qua sự biểu diễn đồ họa của dữ liệu, dùng các công cụ cho phép người dùng cuối tác động vào dữ liệu để tìm những thông tin mà họ cần.
Tất nhiên, có đủ khả năng để vẽ lên các bức họa này thông thường không đủ cho nền tảng hiện thực thông tin tốt; cũng có những cấp độ khác của chức năng cái mà cần được đánh địa chỉ, như là:
· Tính tương tác tính tương tác có thể thay đổi từ hành động náo nhiệt của các khoanh biểu đồ và ở ngoài một biểu đồ khoanh(tròn) để cung cấp cho người dùng với các công cụ cho sự xử lý dữ liệu, như phóng to và thu nhỏ của một chuỗi thời gian
· Sự tạo ra quan hệ lý lịch dữ liệu nhiều biểu đồ có giá trị được thêm vào chúng thông qua quan hệ ngữ cảnh lý lịch dữ liệu. Cho ví dụ, khi bạn xem một biểu đồ chuỗi thời gian, bạn có thể muốn tạo ra một sự di chuyển mức trung bình và ngắt giai đoạn cho sự di chuyển mức trung bình này, hoặc thí nghiệm với cái trong hoàn cảnh cụ thể. Nó không thực hiện chờ đợi một nguồn dữ liệu để tạo ra tất cả của những dữ liệu xem này cho bạn. Nhiều dạng(hình dạng) của sự xử lý dữ liệu là cần thiết của sự trình bày lớp.
· Phủ quan hệ dữ liệu một yêu cầu thông thường cho phân tích biểu đồ là để xem một sự kích thích khác cái mà có thể ảnh hưởng dữ liệu và có sự hiện hình hóa phản xạ này. Xem xét một chuỗi thời gian trình bày một giá trị cổ phiếu của một công ty và sự cung cấp của các chuyện thời sự về những cổ phiếu đặc thù đó. Giá trị thực có thể được thêm vào biểu đồ bằng cách trình bày tin thời sự đã ảnh hưởng đến giá trị như thế nào. Tin tức tốt có thể làm nó tăng lên, tin tức xấu có thể làm nó giảm đi. Có thể thêm dữ liệu này tới biểu đồ chuỗi thời gian quay vòng nó từ một biểu đồ đơn giản trong sự hiện thực hóa thông tin.
Chìa khóa để xây dựng một nền tảng hiện thực hóa là nó có thể cho phép tất cả của cái được nói ở trên để có tính mềm dẻo, để bạn có thể đưa ra mọi dữ liệu trong mọi cách và mọi lúc. Điều này là rất lớn và thông thường chuyên sâu về ứng suất, nhưng một phương pháp cái mà bạn có thể dùng để làm nhẹ đi(làm giảm) ứng suất này để dùng với dữ liệu không thể biết(bất khả tri) được gọi.
Dữ liệu bất khả tri xuất hiện(bắt nguồn) khi bạn định nghĩa một kiến trúc cho việc hiện thực hóa dữ liệu của bạn cái mà không phụ thuộc vào dữ liệu chính nó. Cho ví dụ, nếu bạn xem xét một ví dụ của một biểu đồ chuỗi thời gian cái mà cung cấp quan hệ lý lịch dữ liệu, nó khá dễ dàng để lập trình một ứng dụng để đọc chuỗi thời gian dữ liệu và quan hệ lý lịch dữ liệu(như là một cung cấp tin tức thời sự) và để viết dữ liệu trên màn hình dùng một biểu đồ động cơ. Tuy nhiên, một khi bạn đã làm xong điều này, sự cố gắng của bạn là tốt cho sự miêu tả này và sự đại diện này là một mình. Ứng dụng bạn đã viết là ràng buộc chặt chẽ tới dữ liệu chính nó.
Nguyên tắc của dữ liệu bất khả tri là cho phép bạn chọn một nguồn dữ liệu, định nghĩa dữ liệu bạn muốn, và sau đó báo cho công cụ trực quan để đi và lấy nó ra tuy nhiên bạn muốn nó. Chúng ta sẽ xem xét làm thế nào để xây dựng một phiên bản đơn giản của công cụ này trong bài viết này.
Bắt đầu
Cũng như bất cứ điều gì khác,nó tốt để bắt đầu với dữ liệu.Trong phần này, tôi sẽ đưa ra một tổng quan ngắn gọn của một XML đơn giản qua HTML cái mà cung cấp chuỗi thời gian dữ liệu được cung cấp bởi dịch vụ tài chính Yahoo.
Dịch vụ chuỗi thời gian Yahoo trả về một file CVS bao gồm cơ sở chuỗi thời gian dữ liệu theo sau các trường: ngày, giá mở cửa, giá đóng cửa, cao , thấp, khối lượng, điều chỉnh đóng. API để gọi nó rất đơn giản:
Ichart.finance.yahoo.com/table.csv
Bạn dùng theo sau các tham số:
Hình 1:kích thước và số lần truy cập không khu vực lưu trữ
Giá trị tham số
s Mua bán chịu cổ phiếu (ví dụ, MSFT) a Tháng băt đầu (0-cơ sở; 0=tháng 1, 11=tháng 11) b Ngày bắt đầu c Năm bắt đầu d Tháng kết thúc(0-based; 0=January, 11=December) e Ngày kết thúc f Năm kết thúc g Luôn luôn dùng chữ d ignore Luôn dùng giá tri ‘.cvs’
s
Mua bán chịu cổ phiếu (ví dụ, MSFT)
a
Tháng băt đầu (0-cơ sở; 0=tháng 1, 11=tháng 11)
b
Ngày bắt đầu
c
Năm bắt đầu
d
Tháng kết thúc(0-based; 0=January, 11=December)
e
Ngày kết thúc
f
Năm kết thúc
g
Luôn luôn dùng chữ d
ignore
Luôn dùng giá tri ‘.cvs’
Để có chuỗi thời gian dữ liệu của Microsoft từ tháng 1,ngày 1,2008 đến tháng 1 ngày 1,2009, bạn dùng URL dưới đây:
http://ichart.finance.yahoo.com/table.csv?s=MSFT&a=0&b=1&c=2008&d=0&e=1&f=2009&g=d&ignore=.csv
hình 1 trình bày một hàm C# để lấy các tham số chuỗi cho ticker(mua bán chịu),ngày bắt đầu, và ngày kết thúc và xây dựng URI này.
Hình 1A hàm C# xây dựng một URI để bắt dữ liệu
public string BuildYahooURI(string strTicker,
string strStartDate, string strEndDate)
{
string strReturn = "";
DateTime dStart = Convert.ToDateTime(strStartDate);
DateTime dEnd = Convert.ToDateTime(strEndDate);
string sStartDay = dStart.Day.ToString();
string sStartMonth = (dStart.Month -1).ToString();
string sStartYear = dStart.Year.ToString();
string sEndDay = dEnd.Day.ToString();
string sEndMonth = (dEnd.Month - 1).ToString();
string sEndYear = dEnd.Year.ToString();
StringBuilder sYahooURI =
new StringBuilder("http://ichart.finance.yahoo.com/table.csv?s=");
sYahooURI.Append(strTicker);
sYahooURI.Append("&a=");
sYahooURI.Append(sStartMonth);
sYahooURI.Append("&b=");
sYahooURI.Append(sStartDay);
sYahooURI.Append("&c=");
sYahooURI.Append(sStartYear);
sYahooURI.Append("&d=");
sYahooURI.Append(sEndMonth);
sYahooURI.Append("&e=");
sYahooURI.Append(sEndDay);
sYahooURI.Append("&f=");
sYahooURI.Append(sEndYear);
sYahooURI.Append("&g=d");
sYahooURI.Append("&ignore=.csv");
strReturn = sYahooURI.ToString();
return strReturn;
}
Bây giờ bạn có một URI cho dữ liệu, bạn cần đọc nó và dùng nó.Trong trường hợp này, bạn sẽ chuyển đổi dữ liệu CSV tới XML.Hàm A có thể làm được điều này trong hình 2
Hình 2 chuyển đổi dữ liệu CSV tới XML
public XmlDocument getXML(string strTicker,
XmlDocument xReturn = new XmlDocument();
DataSet result = new DataSet();
string sYahooURI =
BuildYahooURI(strTicker, strStartDate, strEndDate);
WebClient wc = new WebClient();
Stream yData = wc.OpenRead(sYahooURI);
result = GenerateDataSet(yData);
StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlTextwriter = new XmlTextWriter(stringWriter);
result.WriteXml(xmlTextwriter, XmlWriteMode.IgnoreSchema);
XmlNode xRoot = xReturn.CreateElement("root");
xReturn.AppendChild(xRoot);
xReturn.LoadXml(stringWriter.ToString());
return xReturn;
Tôi đặt các hàm này bên trong một lớp được gọi là HelperFuntion và thêm lớp tới một dự án ASP.NET.Để được điều này, tôi thêm một ASP.NET Web Form(ASPX) được gọi là GetPriceHistory và biên tập trang ASPX để gỡ bỏ HTML để nó giống như đoạn này:
%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="GetPriceHistory.aspx.c”Inherits="PriceHistoryService.GetPriceHistory" %
Một điều thú vị về sự tiếp cận này là cái bạn có thể viết mã bây giờ cái viết trực tiếp để trả lời bộ đệm và thiết lập kiểu phản hồi để bạn có thể viết XML qua HTML.
Bởi vì các hàm giúp đỡ lấy các chuỗi cho ticker và các ngày bắt đầu và kết thúc, bạn có thể dùng chúng như là tham số tới ASPX. Sau đó bạn có thể chuyển qua tới các hàm giúp đỡ(helper funtions) để sinh ra XML, cái mà sau đó bạn có thể viết ra tới bộ đệm phản hồi. Trong sự thêm vào, kiểu MIME cần được thiết lập thành”text/xml” để mọi người đọc nhìn thấy nó như là XML và không phải đoạn văn bản trơn.
Hình 3 trình bày mã để làm điều đó.Nhớ rằng HelperFuntion là tên của một lớp bao gồm các hàm xây dựng Yahoo URI và đọc nó và chuyển đổi nó từ dữ liệu CSV tới XML.
Hình 3 mã cho các chức năng Helper
HelperFunctions hlp = new HelperFunctions();
protected void Page_Load(object sender, EventArgs e)
string strTicker, strStartDate, strEndDate;
if(Request.Params["ticker"]!=null)
strTicker = Request.Params["ticker"].ToString();
else
strTicker = "MSFT";
if(Request.Params["startdate"]!=null)
strStartDate = Request.Params["startdate"].ToString();
strStartDate = "1-1-2008";
if(Request.Params["enddate"]!=null)
strEndDate = Request.Params["enddate"].ToString();
strEndDate = "1-1-2009";
XmlDocument xReturn = hlp.getXML(strTicker, strStartDate, strEndDate);
Response.ContentType = "text/xml";
Response.Write(xReturn.OuterXml);
Bạn có một đoạn XML đơn giản qua dịch vụ HTTP cái trả về chuỗi thời gian dữ liệu. hình 4 trình bày ví dụ của nó trong hành động.
Hình 4 một XML đơn giản qua dịch vụ HTTP
Xây dựng một dịch vụ dữ liệu bất khả tri cái mà dùng dữ liệu này
Với máy chủ ảo được tạo ra, một máy khách đưa ra một tấm ảnh, và tất cả quá trính xử lý được hoàn thành trên máy chủ. Nhiều máy chủ ảo rất thông minh cung cấp mã cái mà có thể gửi trở lại máy chủ để cung cấp tính tương tác bằng cách dùng các bản đồ ảnh trong ảnh đó cái mà được đưa trở lại, nhưng như thế này thì vô cùng phức tạp để tạo ra, và chức năng có thể bị giới hạn. Cách tiếp cận này là hữu ích nếu bạn muốn tạo ra các biểu đồ tĩnh cái mà yêu cầu không người dùng cuối thời gian chạy vì trình duyệt có thể đưa ra các định dạng ảnh phổ biến. hình 5 trình bày một kiến trúc đặc trưng cho cách tiếp cận này
Hình 5 đặc trưng máy chủ - hoàn trả hình tượng hóa kiến trúc
Khi bạn xây dựng kiến trúc này, bạn thường viết mã máy chủ để hiểu dữ liệu. Trong trường hợp trước, cho ví dụ, nếu bạn đang viết một biểu đồ chuỗi thời gian cái mà vẽ bản đồ giá trị đóng, bạn sẽ viết mã đọc trong XML và lấy dữ liệu đóng và tải nó vào trong một chuỗi trên biểu đồ để nó có thể vẽ được đồ thị.
Nếu bạn đang dùng Microsoft ASP.NET(cái mà có thể tải về miễn phí; nhìn link phía sau trong bài báo này), bạn muốn định nghĩa đặc trưng của biểu đồ như thế này:
<asp:Chart ID="Chart1" runat="server">
<Series>
<asp:Series Name="Series1">
</asp:Series>
</Series>
<ChartAreas>
<asp:ChartArea Name="ChartArea1">
</asp:ChartArea>
</ChartAreas>
</asp:Chart>
Cách tiếp cận này, tuy nhiên, thường giới hạn bạn phân tích biểu đồ hơn là hiện thực hóa nó(trực quan) vì vậy khả năng để cung cấp tính tương tác là giới han. Khả năng để sinh ra một lý lịch dữ liệu là cũng giới hạn trong diễn tiến này vì tất cả yêu cầu đòi hỏi một sự gửi trả lại tới máy chủ để tạo ra một biểu đồ mới và sẽ giới hạn tới chức năng cái mà được cung cấp trên máy chủ. Khả năng để phủ quan hệ lý lich dữ liệu là cũng giới hạn cho những nguyên nhân giống nhau.
Tuy nhiên, khả năng quan trọng của dữ liệu bất khả tri có thể cho phép bởi diễn tiến này. Nó có quan hệ dễ dàng cho bạn để cấu hình lý lịch dữ liệu về nguồn dữ liệu của bạn và nơi trong nguồn dữ liệu bạn có thể tìm chuỗi dữ liệu của bạn và các dữ liệu bất khả tri. Một máy có thể xử lý lý lịch dữ liệu này và quay vòng nó trong chuỗi và các hạng mục cái mà máy chủ có thể đưa ra, tạo nó dễ dàng để thêm mới sự hiện thực hóa mà không có nhiều chương trình phụ.
Xây dựng một dữ liệu bất khả tri hiện thực hóa máy chủ
Có một số các công nghệ máy chủ phân tích biểu đồ hiện có, và lập trình APIs thay đổi qua chúng,nhưng nguyên tắc cái mà tôi thảo luận ở đây là tương tự qua tất cả của chúng. Trong phần này, tôi sẽ xem xét tự do ASP.NET dụng cụ phân tích biểu đồ từ Microsoft. Bạn cũng cần có Visual Studio add-ins cho máy chủ phân tích biểu đồ.
Hãy nhìn những gì nó nắm giữ(lấy..)để xây dựng một biểu đồ hình tròn với công cụ phân tích biểu đồ này. Câu lệnh(mã) rất đơn giản. Đầu tiên, thêm vào một ví dụ minh họa của biểu đồ điều khiển tới một ASPX Web form. Bạn sẽ thấy nhiều thứ giống thế này trong đoạn mã :
Sau đó viết mã giống như đoạn dưới để đưa ra nhiều dữ liệu trong biểu đồ điều khiển:
double[] yValues = { 20, 10, 24, 23 };
string[] xValues = { "England", "Scotland", "Ireland", "Wales" };
Series mySeries = Chart1.Series[0];
mySeries.Points.DataBindXY(xValues, yValues);
mySeries.ChartType = SeriesChartType.Pie;
Trong trường hợp này, tôi đã cứng mã hóa các giá trị, nhưng bạn sẽ thường xuyên đọc chúng từ môt cơ sở dữ liệu hoặc từ một dịch vụ và sau đó tải chúng vào trong các mảng trước khi dùng chúng để sinh ra biểu đồ. Tất nhiên, sử dụng lại đoạn mã này trở nên khó khăn, và nhiều sự thay đổi trong nguồn dữ liệu có thể làm hỏng nó,nên hãy xem viết một cái gì đó cái mà không cần ràng buộc tới kiểu dữ liệu.
Điều thú vị về sự trình bày dữ liệu trong XML là cái bạn có thể dùng ngôn ngữ XPath để định nghĩa nơi mà trong tài liệu XML dữ liệu tôi muốn để vẽ sơ đồ sẽ đến từ. Dữ liệu được trình bày trong hình 1, câu lệnh XPath cái mà định nghĩa vị trí của giá đóng cửa nhìn giống cái này:
/NewDataSet/TimeSeries/Close
Bây giờ, nếu bạn nghĩ về nó, thay thế viết mã cái mà bao gồm sự định nghĩa cho biểu đồ của bạn, bạn có thể ngoại hiện nó như là sự cấu hình. Tưởng tượng một file cấu hình giống một cái trình bày ở hình 6.
Hình 6 A file cấu hình cái mà định nghĩa biểu đồ
<root>
<Chart Name="PriceHistory1">
<Uri>
<Path>http://localhost/PriceHistoryService/GetPriceHistory.aspx</Path>
<Param Name="ticker">MSFT</Param>
<Param Name="startdate">1-1-2008</Param>
<Param name="enddate">1-1-2009</Param>
</Uri>
<Data>
<SeriesDefinitions>
<Series id="ClosePrice">
<Data>/NewDataSet/TimeSeries/Close</Data>
<Type>Line</Type>
</SeriesDefinitions>
</Data>
</Chart>
</root>
Bây giờ bạn đang định nghĩa một biểu đồ được gọi là PriceHistory1 cái mà lấy dữ liệu của nó từ URL xác định, thêm vào các tham số với các tên xác định và các giá trị xác định. Các giá trị được mã hóa chắc chắn trong trường hợp này, nhưng không có gì ngăn chặn bạn viết mã dùng các tham số đươc sinh ra bởi người dùng cuối.
Thêm nữa, chuỗi các sự định nghĩa phần định nghĩa một số của chuỗi với một câu lệnh XPath chỉ ra nơi dữ liệu đến và làm thế nào để lấy ra nó. Bây giờ nó dùng một sự định nghĩa đơn giản của một kiểu biểu đồ, nhưng bạn có thể kể cả(bao gồm) các tham số phụ ở đây cho màu sắc hay là các yếu tố khác hay cho một chuỗi các định nghĩa phức tạp(nó là XML sau tất cả,nên nó dễ dàng thêm vào các nút phụ) cũng như các loại(hạng mục), các nhãn, hoặc như lý lịch dữ liệu khác. Để minh họa cho sự giải thích này tôi đưa ra nó một cách đơn giản.
Bây giờ mã công cụ phân tích biểu đồ của bạn sẽ thấy cực kỳ khác.Thay cho đoạn mã đang viết là đọc dữ liệu, phân tách dữ liệu, và tải nó trực tiếp trong biểu đồ, bạn có thể viết mã cái mà đọc sự cấu hình, xây dựng dịch vụ gọi URI từ sự cấu hình dữ liệu, gọi là dịch vụ, trả về XML, và dùng các biến XPath trong sự cấu hình để có chuỗi dữ liệu mà bạn muốn.
Theo những điều kiện này, kiến trúc của bạn có thể mạnh hơn.Xem xét, ví dụ, nếu giá trị nguồn dữ liệu của thẻ XML từ giá đóng cửa. Bạn sẽ không chỉnh sửa hoặc biên dịch lại mã của bạn; bạn chỉ đơn giản muốn chỉnh sửa biến XPath trong biểu đồ định nghĩa.
Nó không có nhiều sự mở rộng ra để nghĩ làm thế nào bạn sẽ chỉnh sửa(biên tập) của kết nối này tới những kiểu khác của các nguồn dữ liệu, như một sự kết nối cơ sở dữ liệu hoặc dịch vụ web. Hình 7 trình bày đoạn mã vẽ biểu đồ chuỗi thời gian dữ liệu trên một biểu đồ ASP.NET.
Hình 7 vẽ biểu đồ chuỗi thời gian dữ liệu trên biểu đồ ASP.NET
protected void Button1_Click(object sender, EventArgs e)
// Variable declarations
StringBuilder dataURI = new StringBuilder();
WebClient webClient = new WebClient();
XmlDocument xmlChartConfig = new XmlDocument();
XmlDocument xmlData = new XmlDocument();
// Get the chart config
Uri uri = new Uri(Server.MapPath("ChartConfig.xml"),
UriKind.RelativeOrAbsolute);
Stream configData = webClient.OpenRead(uri);
XmlTextReader xmlText = new XmlTextReader(configData);
xmlChartConfig.Load(xmlText);
// I'm hard coding to read in the chart called 'Price History 1'. In a
// 'real' environment my config would contain multiple charts, and I'd
// pass the desired chart (along with any parameters) in the request
// string. But for simplicity I've kept this hard coded.
XmlNodeList lst =
xmlChartConfig.SelectNodes("/root/Chart[@Name='PriceHistory1']/Uri/*");
// The first child contains the root URI
dataURI.Append(lst.Item(0).InnerText.ToString());
// The rest of the children of this node contain the parameters
// the first parameter is prefixed with ?, the rest with &
// i.e. http://url?firstparam=firstval&secondparam=secondval etc
for (int lp = 1; lp < lst.Count; lp++)
if (lp == 1)
dataURI.Append("?");
dataURI.Append("&");
// In this case the desired parameters are hard coded into the XML.
// in a 'real' server you'd likely accept them as params to this page
dataURI.Append(lst.Item(lp).Attributes.Item(0).Value.ToString());
dataURI.Append("=");
dataURI.Append(lst.Item(lp).InnerText);
// Now that we have the URI, we can call it and get the XML
uri = new Uri(dataURI.ToString());
Stream phData = webClient.OpenRead(uri);
xmlText = new XmlTextReader(phData);
xmlData.Load(xmlText);
// This simple example is hard coded for a particular chart
// ('PriceHistory1') and assumes only 1 series
lst = xmlChartConfig.SelectNodes(
"/root/Chart[@Name='PriceHistory1']/Data/SeriesDefinitions/Series/Data");
// I'm taking the first series, because I only have 1
// A 'real' server would iterate through all the matching nodes on the
// XPath
string xPath = lst.Item(0).InnerText;
// I've read the XPath that determines the data location, so I can
// create a nodelist from that
XmlNodeList data = xmlData.SelectNodes(xPath);
Series series = new Series();
// I'm hard coding for 'Line' here -- the 'real' server should
// read the chart type from the config
series.ChartType = SeriesChartType.Line;
double nCurrent = 0.0;
// I can now iterate through all the values of the node list, and
foreach (XmlNode nd in data)
// .. create a DataPoint from them, which is added to the Series
DataPoint d = new DataPoint(nCurrent, Convert.ToDouble(nd.
InnerText));
series.Points.Add(d);
nCurrent++;
// Finally I add the series to my chart
Chart1.Series.Add(series);
Các kết quả trả về được trình bày trong hình 8. Trên biểu đồ không có sự cấu hình nào đã thực hiện, và nó dùng các giá trị cấu hình mặc định, nhưng dữ liệu đang được đọc và được vẽ.
Hình 8 các kết quả sinh ra bởi chuỗi thời gian dữ liệu
Một sự cải tiến nhỏ file cấu hình để đưa ra cho tôi lượng và sự thiết lập khác của các ngày(1-1-1980 tới 1-1-1990) cung cấp xem trong hình 9 – không thay đổi một dòng của mã trong sự phân tích biểu đồ vì nó là dữ liệu bất khả tri.
Hình 9 các kết quả mới sau khi cải tiến file cấu hình
Tài liệu làm thế nào để xây dựng một máy chủ dữ liệu bất khả tri sẽ có được toàn bộ cuốn sách của riêng nó, và ở đây tôi chỉ lướt qua bề mặt của vấn đề. Nguyên tắc bạn đã thấy ý định áp dụng tới hầu hết APIs bạn làm việc, và đại bộ phận những mã bạn viết nên cho quản lý cấu hình biểu đồ bên ngoài để lấy dữ liệu, làm những cái bạn nhìn thấy ở đây là rất linh động.
Trong bài này, tôi đã thấy các nguyên tắc chủ yếu của sự xây dựng hình tượng hóa dữ liệu – cung cấp một cách để đưa ra dữ liệu của bạn trong phương pháp dữ liệu bất khả tri. Trong một bài tiếp theo, tôi sẽ nghiên cứu dùng các công nghệ hay(phong phú) trên khía cạnh của máy khách để cung cấp khả năng tác động vào dữ liệu của bạn và để tập hợp lại các nguồn dữ liệu khác nhau. Sức mạnh của nền tảng .NET bây giờ hiện hữu trong những trình duyệt đang dùng Microsoft Silverlight, nên chúng ta sẽ dùng nó để giải thích những nguyên tắc này.
Laurence Moroney là một người quảng bá công nghệ cao của Microsoft, đặc biệt là Silverlight. Ông là tác giả của nhiều cuốn sách trong các topic về công máy tính, bao gồm Silverlight, AJAX, sự tương kết và bảo mật.Bạn có thể tìm trong blog của Laurence tại địa chỉ: blogs.msdn.com/webnext.
Bạn cho thêm đường dẫn gốc để mọi người tiện tham khảo.
Xin cảm ơn,
cảm ơn anh đã đọc bài,
mới vài hôm trước thấy anh tại hội thảo "công nghệ web mới "ở thăng long aptech
có gì sai sót mong thông cảm vì đây là lần dịch đầu tiên!!!
cảm ơn!!
Bạn edit trực tiếp trên post đầu tiên nhé. Vào More --> chọn edit. Thanks Huấn nhiều!