Archive

Archive for the ‘Phát triển ứng dụng’ Category

Truy xuất dữ liệu từ Cube với MDX và ADOMD.NET


Trong bài viết trước, Phong có chia sẻ về việc kết nối tới SSAS của SQL Server với ADOMD.NET, với bài viết này, Phong sẽ giúp các bạn cách thức truy vấn dữ liệu từ Cubes với AdomdCommand và AdomdDataReader.

Trước tiên, các bạn cần nắm cú pháp truy vấn của MDX, về MDX thì các bạn có thể hiểu đơn giản rằng đây là một câu truy vấn Analysis Services, tương tự như SQL truy vân trên Database Engine, có thể tham khảo thêm tại:

Về căn bản thì cú pháp MDX cũng không khác nhiều so với cú pháp SQL nhiều, các bạn nên tiến hành viết câu truy vấn MDX trên SQL Server Management Studiodưới đây là một ví dụ cơ bản về câu truy vấn với MDX.

image

image

Các bạn có thể hiểu cơ bản câu truy vấn trên là lấy ra giá trị “Total Sales Amount” theo “Product by Category” và “Calendar Year” từ Cube “AdventureWorks”; về chi tiết thì sẽ có một bài chuyên sâu hơn về MDX.

Sau khi xác định được chính xác câu truy vấn dữ liệu cần có từ SSAS, các bạn tiến hành sử dụng ADOMD.NET để tạo kết nối đến với SSAS và truy vấn gọi dữ liệu.

Khi thực hiện kết nối thành công, các bạn tiến hành việc khai báo AdomdCommand để lấy dữ liệu từ câu truy vấn

image

Các bạn sử dụng chế độ Debug để kiểm tra giá trị trả về từ đoạn code trên, kết quả như sau:

image

image

Các bạn có thể kiểm chứng tính bằng cách đối chiếu giá trị trong cửa sổ Watch với giá trị mà các bạn thực hiện câu truy vấn MDX tại SSMS ở trên.

Advertisements

Thao tác cơ bản với ADOMD.NET trong việc kết nối và truy xuất Metadata từ SSAS


Như trong bài viết trước, Phong có chia sẻ với các bạn về một số vấn đề cần chú ý trong việc tự phát triển ứng dụng retreive dữ liệu từ SSAS, các bạn sẽ sử dụng bộ thư viện Microsoft.AnalysisServices.adomdClient.dll (có thể tải về trong bộ Feature Pack của SQL Server 2008 từ website của Microsoft http://www.microsoft.com/downloads/en/details.aspx?FamilyID=228DE03F-3B5A-428A-923F-58A033D316E1)

Mô phỏng hiện tại các bạn có Analysis Database: Adventure Works DW 2008R2 như sau:

image

Sau khi cài đặt bộ thư viện ADOMD.NET thì các bạn có thể reference thư viện vào project của mình.

image

Kết nối đến Analysis Database và lấy một số thông tin cơ bản của kết nối

image

Kết quả:

image

Lấy Metadata đặc tả Cube và Cube Perspective của Analysis Database

image

Kết quả:

image

Tuy nhiên các bạn chú ý, hiện tại nếu mặc định các bạn sử dụng .Net Framework để phát triển thì sẽ gặp lỗi như sau (tuy nhiên lỗi này không xuất hiện nếu các bạn sử dụng các phiên bản .Net Framework 2.0, 3.x)

image

Nguyên nhân của việc này là do Visual Studio 2010 mặc định sử dụng .Net 4.0 Client Profile khi compile Console Application, do đó các bạn chỉ cần thực hiện việc thay đổi Target Framework sang .Net 4.0

image

Các bạn có thể download mã nguồn tham khảo tại http://www.mediafire.com/?5xmtozf50r802

Các bài lab đơn giản giúp tự học kỹ thuật kết nối dữ liệu trong .Net Framework 4.0–Entity Framework

September 7, 2010 Leave a comment

Phong gửi các bạn một số bài hướng dẫn cơ bản từng bước để thực hành phát triển một ứng dụng cơ bản ứng dụng kỹ thuật kết nối cơ sở dữ liệu Entity Framework có trong .Net Framework 4.0

  1. Tạo Entity Database Model từ cơ sở dữ liệu có sẵn:
    http://msdn.microsoft.com/en-us/data/ff191186.aspx
  2. Tạo cấu trúc cơ sở dữ liệu từ Entity Database Model:
    http://msdn.microsoft.com/en-us/data/ff628199.aspx
  3. Tìm hiểu kiến trúc của Entity Database Model:
    http://msdn.microsoft.com/en-us/data/ff628209.aspx
  4. Module hóa thành phần Data Access với Entity Framework trong .Net 4.0:
    http://msdn.microsoft.com/en-us/data/ff628208.aspx
  5. Tiếp cận cơ bản với LINQ:
    http://msdn.microsoft.com/en-us/data/ff628210.aspx
  6. Xử lí dữ liệu với LINQ:
    http://msdn.microsoft.com/en-us/data/ff629457.aspx
  7. Ứng dụng Store Procedure trong Entity Framework:
    http://msdn.microsoft.com/en-us/data/ff657848.aspx
  8. Xây dựng ứng dụng Winform cơ bản xử lí dữ liệu với Entity Framework:
    http://msdn.microsoft.com/en-us/data/ff706685.aspx

Architecture


This subtopic describes the overall architecture of services built using the Service Factory. The architecture is an aggregation of the three layers described later in this topic.

The service architecture is comprised of the following elements:

  • Service interface layer. This layer defines the operations provided by the service, the messages required to interact with each operation, and the patterns by which these messages interact—these patterns are referred to as message exchange patterns. The service interface layer is described by a service contract, which specifies the service behavior and the messages required as the basis for interaction. The service interface layer contains service adapters, which implement the service contract and expose its functionality to endpoints. It also implements the translation between data outside the service and data within the service.
  • Business layer. This layer incorporates components that implement the business logic of the service. Some services often require only a simple business action, but services with more complex requirements may implement a Controller pattern or business rules for implementing service behavior. The business layer also includes business entities that represent objects specific to a business domain. These entities represent both state and behavior. This layer can also include business workflows. These define and coordinate long-running, multi-step business processes, and they can be implemented using business process management tools, such as Windows Workflow Foundation in the .NET Framework 3.5.
  • Resource access layer. This layer contains the logic necessary to access data. The layer also contains service agents, which isolate the idiosyncrasies of calling diverse services from your application and can provide additional services, such as basic mapping between the format of the data exposed by the service and the format your application requires.
  • Components to address cross-cutting concerns. These components address functionality common to multiple layers of the architecture. Exception management and instrumentation are examples of this common functionality.

Figure 1 illustrates these layers of the service and shows the interaction between the service and the client applications and the interaction between the service and other services. Services built using the Web Service Software Factory help you create the service interface layer.

Figure 1
The high level architecture of a service

Logical View

Figure 2
Logical view of a service

Figure 2 illustrates the following elements:

  • Data types. These are used to define the data structures that form the basis for content within a message. These types are often reused by different operations of a service and even by different services.
  • Message types. These are used to compose complex messages from existing data types and primitive types.
  • Service contracts. These specify the operations that services support and the messages required for interacting with each operation.
  • Service implementations. These are .NET Framework classes that implement service contracts.
  • Adapters. These invoke business actions after they use the EntityTranslator to translate between message types or data types and types required by the business actions.
  • Entity translators. These transform between message types or data types and business entities. The entity translator is an object that is tightly coupled to both the service interface and business layers, but at the same time provides loose coupling between them. This loose coupling prevents changes in one layer from forcing changes in the other layer.
  • Business actions. These organize business logic by procedures where each procedure handles a single request from the presentation layer.
  • BusinessEntity. This is a class used to represent a domain model entity within the business layer of the application.
  • Repository. This is an intermediate object used to support interactions between business logic and the data access logic.
  • IDomainObjectFactory and DomainObjectFactory. These are used by the repository to invoke procedures on the database.

Implementation View

Figure 3 illustrates the resulting structure of a Visual Studio solution when the Service Factory is used to build a service-oriented application.

Figure 3
WCF implementation projects created using the Service Factory

This Visual Studio solution structure conforms to the logical view while also supporting the requirements of the deployment view.

Deployment View

Figure 4 illustrates the relationships between the .NET Framework assemblies in a service-oriented application built using the Service Factory.

Figure 4
Relationships between .NET Framework assemblies

Figure 5 illustrates a common deployment pattern for a solution deployed on an intranet that has rich client applications consuming Web services. This is the main scenario targeted in this release. The pattern consists of one server farm that hosts services, data access logic, and business logic, with all user process and user interface components deployed on the client application.

Figure 5
Rich client accessing a Web service

Figure 6 illustrates the deployment of services and service agents (components that may call Web services or that may connect with other systems) with local business logic.

Ví dụ hướng dẫn tạo 1 service bằng WCF trong VS 2008


_ tools này mình sẽ hướng dẫn các bạn tạo một service windows đơn giản bằng WCF, WCF là viết tắt của cụm từ "Windows Communication Foundation" cái này các bạn tự hiểu nhé , WCF có sẵn trong .net 3.0 và 3.5 nếu các bạn dùng .net 2.0 là không chạy được đâu, code này mình dùng C# 3.0 để viết
_ nào bắt đầu thôi nhỉ, trước tiên các bạn mở VS ra đã, chọn "New Project", một dialogBox hiện ra tiếp đến chọn "WCF", tiếp chọn "Wcf Service Library", trong mục "Name" các bạn đặt tên cho project là "ServiceDemo"
_ OK vậy là xong bước đầu tiên, một project "ServiceDemo" được tạo ra và VS cũng tự động sinh ra 2 file là: IService1.cs, và Service1.cs, mình xin nói qua một chút về 2 file này
_ trước tiên IService1.cs đây là một Interface khai báo các function, các function sẽ cài đặt trong class Service1,Service1.cs cài đặt các function mà Service làm việc, một cách tổng quan thì chức năng của service sẽ nằm ở đây.
_ bây giờ nếu "F5", chương trình sẽ hiện ra 1 form "WCF test Client" có 2 khung, khung trên là "Request" và khung dưới "Reponse" và nếu để ý một chút các bạn sẽ thấy xuất hiện 1 biểu tượng của WCF ở "TraySystem", mặc định thì VS tạo sẵn cho ta 2 function :

Code:

public interface IService1
{
[OperationContract]
string GetData(int value);

[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);

}

quay lại với form "WCF test Client", Double-click vài "GetData" -> sẽ hiện ra 1 cửa sổ để ta test -> ở khung "Request" trong cột "value " các bạn điền và "5" rồi -> click "Invoke", đợi 1 chút nhìn xuống dưới các bạn sẽ thấy cột "value" của "Response" có giá trị là "You entered 5".
giải thích 1 chút nhé, khung "Request" chứa mã trên Service (dịch vụ) xử lý các yêu cầu của " client " gửi đến, còn "Response" gửi các yêu cầu đã được xử lý trên "Service" về "Client"

Tiếp đến mình sẽ hướng dẫn các bạn viể vào 1,2 method để hiểu kỹ hơn chút nữa về "Service", các bạn mở file IService1.cs và code vào 2 method, bây giờ các bạn có thể xóa bỏ 2 method mặc định đi cũng được :

Code:

 public interface IService1
{
[OperationContract]
int Add(int n1, int n2);

[OperationContract]
int Subtract(int n1, int n2);
}

Nhớ đừng quên "[OperationContract]", các bạn tam thời công nhận vậy, cái này để sau mình sẽ giải thích.
OK chức năng của 2 method này quá rõ ràng rồi kô cần nói đến nữa, ở đây chỉ là 2 method simply các bạn có thể phát triển thêm nếu muốn, tiếp đến mở file Service1.cs code vào như sau.

Code:

public class Service1 : IService1

{
public int Add(int n1, int n2)
{
return n1 + n2;
}
public int Subtract(int n1, int n2)
{
return n1 - n2;
}
}

OK giờ có thể "F5" được rồi đấy, cũng như ở bài trước các bạn sẽ thấy 2 method "Add" và "Subtract", giờ các bạn chỉ việc "click" điền giá trị cho n1 và n2 và "invoke".

Bạn có thế download code example: ComputingService

(Sưu tầm từ Congdongcviet.com)

Trên đây là một ví dụ rất cơ bản giúp tiếp cận đối với WCF, ngòai ra đối với WCF còn rất nhiều vấn đề cần tìm hiểu như : Config WCF, Endpoint, Address, Contract, … mà chúng ta cần tìm hiểu thêm.

Categories: Phát triển ứng dụng Tags: ,

What is LINQ?



-Bên Java có Hibernate thì LINQ cũng tương tự như vậy, nó đưa ra khả năng lập trình mới trong .NET kiểu truy vấn :Sql DB, Objects và Xml
-Giải pháp lập trình hợp nhất, đem đến khả năng truy vấn dữ liệu theo cú pháp SQL trực tiếp trong C# hay VB.NET, áp dụng cho tất cả các dạng dữ liệu từ đối tượng đến CSDL quan hệ và XML.

Xử lý thông tin hay dữ liệu là nhiệm vụ quan trọng nhất của bất kỳ phần mềm nào và một trong những trở ngại chính mà các nhà phát triển hiện nay phải đối mặt là khác biệt giữa ngôn ngữ lập trình hướng đối tượng và ngôn ngữ truy vấn dữ liệu, vấn đề càng phức tạp hơn với sự xuất hiện của XML (eXtensible Markup Language – ngôn ngữ đánh dấu mở rộng).
Hiện tại, cách phổ biến nhất để ứng dụng lấy dữ liệu từ các hệ cơ sở dữ liệu (CSDL) là sử dụng SQL (Structure Query Language – ngôn ngữ truy vấn cấu trúc). SQL có cú pháp rất khác với những ngôn ngữ lập trình phổ dụng như C# và VB.NET, do vậy lập trình viên phải nhọc công "hàn gắn" hai thực thể khác biệt này với nhau trong mỗi dự án phần mềm.
Một vấn đề khác với SQL là nó chỉ dùng để truy vấn dữ liệu trong các CSDL dạng quan hệ. Nếu muốn truy cập dữ liệu XML hay dạng khác (như trang HTML, email…), nhà phát triển lại phải sử dụng cú pháp truy vấn khác (XPath/XQuery).

++++++++++++++++++++++++++++++++++++++++++++++
NOTE:

LINQPad cho phép bạn tác động vấn tin các cơ sở dử liệu SQL với 1 ngôn ngữ hiện đại là: LINQ. Nói lời tạm biệt tới SQL Management Studio. LINQPad hổ trợ mọi thứ trên C# 3.0 và Framewrok 3.5 chẳn hạn như :
1. LINQ to SQL
2. LINQ to Objects
3. LINQ to XML
LINQPad cũng là 1 cách tuyệt vời để học LINQ, nó "ra đời" với 200 ví dụ từ cuốn sách C# 3.0 in a Nutshell. Học được sức mạnh của LINQ và lập trình chức năng.
LINQPad không chỉ là công cụ truy vấn LINQ, nó cũng là môi trường tích hợp đoạn mã mẫu (code snippet), thực thi ngay tức khắc bất kỳ các biểu thức hoặc tập hợp các câu lệnh C# 3.0 hoặc VB 9 .
LINQPad là miễn phí và không đòi hỏi cài đặt; chỉ tải về và chạy.
Download tại: http://www.linqpad.net/
Theo Internet or Some Document

++++++++++++++++++++++++++++++++++++++++++++++

Để giảm gánh nặng thao tác trên nhiều ngôn ngữ khác nhau và cải thiện năng suất lập trình, Microsoft đã phát triển giải pháp tích hợp dữ liệu cho .NET Framework có tên gọi là LINQ (Language Integrated Query), đây là thư viện mở rộng cho các ngôn ngữ lập trình C# và Visual Basic.NET (có thể mở rộng cho các ngôn ngữ khác) cung cấp khả năng truy vấn trực tiếp dữ liệu đối tượng, CSDL và XML.
Truy vấn dữ liệu đối tượng trong bộ nhớ
Dữ liệu cần phải đổ vào bộ nhớ để xử lý, nhưng một khi tách khỏi nơi gốc của nó thì khả năng truy vấn rất kém. Bạn có thể dễ dàng truy vấn thông tin khách hàng móc nối với thông tin đơn hàng của họ từ CSDL SQL Server nhưng không dễ gì thực hiện tương tự với thông tin trong bộ nhớ. Trong môi trường .NET, thông tin (trong bộ nhớ) thường được thể hiện ở dạng các đối tượng và trước LINQ, không có cách nào để móc nối các đối tượng hay thực hiện bất kỳ thao tác truy vấn nào. LINQ chính là giải pháp cho vấn đề này.

  1. Với Microsoft .NET platform, ngôn ngữ hỗ trợ chính đó chính là C# và VB.NET. Những người lập trình viên họ thường gặp rắc rối, và cảm thấy khó chịu với việc truy cập dữ liệu ở những nguồn khác nhau. Đặc biệt là 2 loại dữ liệu XML và CSDL.Với CSDL là đông đảo nhất về dữ liệu lưu trữ.
  2. Các vấn đề về truy suất dữ liệu như sau:
    1. 1 – Chúng ta không lập trình tương tác với CSDL tại cấp độ native language. Vì thế lỗi thường khó phát hiện rõ. Khó khăn trong việc quản lý lỗi xảy ra.
    2. 2 – Kiểu dữ liệu khác nhau trong mỗi nguồn dữ liệu ở XML và CSDL. Đặc biệt date và time.
  3. Chính các nhà phát triển ở Microsoft đưa ra 1 nền tảng mới trong việc truy vấn dữ liệu ở bất kể các nguồn khác nhau(Object, XML, CSDL). Đó là LINQ, đây là công nghệ mà hổ trợ cơ chế truy vấn dữ liệu ở tất cả các kiểu. Những kiểu nay bao gồm mãng(List, Vector), XML, CSDL và hơn thế nữa.
  4. Điều quan trọng nhất, LINQ là tất cả về truy vấn, kết quả sau khi truy vấn có thể là tập hợp các đối tượng cùng loại, có thể là 1 đối tượng đơn, có thể là tập hợp con của các field từ 1 đối tượng. Kết quả trả về của LINQ người ta gọi là sequence.Hầu hết sequence là IEnumerable<T> với T là KDL của những đối tượng trong sequence.
  5. LINQ nó sẽ cung cấp cách duy nhất để truy cập dữ liệu từ bất kể nguồn dữ liệu nào với cú pháp giống nhau.

LINQ to Object

  1. Được dung với đối tượng nào implements IEnumerable<T> interface.
  2. Phương pháp cũ:

  1. Với C# 3.0


Việc rút trích dữ liệu từ 1 mảng các đối tượng đều thong qua các từ khoá from, where, orderby, select…

  1. Lặp lại implicitly Type

Trả về kiểu ngầm ẩn

Keywords

Select Operator
  1. Lấy 1 vài field hoặc tất cả các field của đối tượng ban đầu
  2. Vd dưới là :lấy hết các field của đối tượng

  1. Lấy 1 field trong đối tượng ( PetName)
Distinct

Không lấy đối tượng đã được chọn từ trước.

New Operator

Nếu chọn nhiều field trong đối tượng thì ta dung toán tử new để tạo 1 Anonymous Type. Chính vì lẻ đó danh sách các đối tượng được rút trích được là đối tượng kiểu ẩn danh.

Orderby operator

Sắp xếp, mặc định là sắp xếp tăng dần(ascending).

LINQ For Xml

Việc sử dụng VS2008 rất tiện lợi cho việc dùng LINQ. Với phần mêm Paint, sử dụng LINQ với mục đích truy vấn file XML và tiện lợi truy vấn hơn nhiều so với việc dùng XmlDocument trước kia. Trước kia, để truy vấn các thẻ XmlElement ta phải dùng đến Xquery và Xpath để truy vấn. Với CSDL, do sử dụng Access để tiện lợi cho việc vận chuyển nên chỉ dùng lại ADO.NET (vì LINQ To SQL chỉ hổ trợ SQL Server 2005 trở lên).

Tạo 1 XElement


Tạo nhanh 1 Xelement với đối tượng AccountInfo

Xoá 1 XElement


Đầu tiên Load file Xml vào trong Xelement. Sau đó nó tìm những Node nào có tên là _NodeName. Với listNode chính là danh sách đối tượng và sau đó ta dùng LINQ để truy vấn với ID hợp lý

Update 1 XElement


Cũng giống như xoá Xelement với thời điểm này ta vẫn tìm Node với ID cho trước, sau đó ta dung hàm Update để cập nhật đối tượng trong file Xml.

asp.net.vn & pcWorld