RSS

ADO.NET – Bài 1 : Giới thiệu

1) Giới thiệu chung.
2) So sánh với phiên bản ADO .
3) Kiến trúc của ADO.NET
4) Sử dụng ADO.NET trong Visual Basic .NET
5) Ý nghĩa của việc xử lý dữ liệu ngắt kết nối trong ứng dụng web.


1) Giới thiệu chung

ADO.NET là một phần của .NET Framework, nó được xem là “bộ thư viện lớp” chịu trách nhiệm xử lý dữ liệu trong ngôn ngữ MS.NET. ADO.NET được thiết kế với dạng dữ liệu “ngắt kết nối”, nghĩa là chúng ta có thể lấy cả một cấu trúc phức tạp của dữ liệu từ database, sau đó ngắt kết nối với database rồi mới thực hiện các thao tác cần thiết. Đây là một sự tiến bộ về mặt thiết kế bởi vì thiết kế ADO trước đây luôn cần duy trì một kết nối trong quá trình thao tác dữ liệu.

2) So sánh với phiên bản ADO

Trước ADO.NET, Microsoft đã có ADO là một bộ thư viện để xử lý các thao tác liên quan đến dữ liệu. ADO có tính linh hoạt, dễ sử dụng và được tích hợp trong các ngôn ngữ như Visual Basic, ASP 3.0.
Có thể coi ADO.NET là một thế hệ tiếp theo của ADO. ADO.NET kế thừa tất cả những ưu điểm của ADO, đồng thời với ý tưởng thiết kế hoàn toàn mới ADO.NET có một diện mạo khác hẳn so với tiền thân của nó. Một vài đặc điểm nổi bật của ADO.NET mà ADO không có như sau:
– ADO.NET được thiết kế hoàn toàn dựa vào XML vì XML là chuẩn trao đổi dữ liệu tiến bộ và tốt nhất trên môi trường Internet hiện nay.
– ADO.NET được thiết kế hoàn toàn hướng đối tượng : đây là đặc điểm chi phối toàn bộ các sản phẩm Microsoft .NET.
2 đặc điểm trên là 2 đặc điểm cơ bản, và nổi trội của ADO.NET mà ADOkhông có. Bây giờ chúng ta sẽ so sánh chi tiết hơn về từng khía cạnh của ADO và ADO.NET.

Đặc điểm ADO ADO.NET

Dữ liệu xử lý được đưa vào bộ nhớ dưới dạng

Recordset : tương đương 1 bảng dữ liệu trong database

Dataset : tương đương 1 database

Duyệt dữ liệu

Recordset chỉ cho phép duyệt tuần tự, từng dòng một.

Dataset : cho phép duyệt “tự do, ngẫu nhiên”, truy cập thẳng tới bảng ,dòng ,cột mong muốn.

Dữ liệu ngắt kết nối

Recordset cũng có thể ngắt kết nối nhưng tư tưởng thiết kế ban đầu của Recordset là hướng kết nối, do đó việc ngắt kết nối cũng không được hỗ trợ tốt nhất.

Dataset được thiết kế với tư tưởng ban đầu là “ngắt kết nối” à hỗ trợ mạnh mẽ “ngắt kết nối”.

Khả năng vượt tường lửa

Khi trao đổi dữ liệu với ADO qua Internet, thường sử dụng chuẩn COM, chuẩn COM rất khó vượt qua được tường lửa. Do vậy khả năng trao đổi dữ liệu ADO qua Internet thường có nhiều hạn chế.

ADO.NET trao đổi dữ liệu qua Internet rất dễ dàng vì ADO.NET được thiết kế theo chuẩn XML, là chuẩn dữ liệu chính được sử dụng để trao đổi trên Internet.

3) Kiến trúc ADO.NET

Kiến trúc ADO.NET có 2 phần :
– Phần kết nối : phần này sử dụng khi ta kết nối với Database và thao tác dữ liệu, yêu cầu phải thực hiện kết nối với Database khi đang thao tác. Các đối tượng của phần này là:

  • Connection : Đối tượng quản lý đóng /mở kết nối tới Database.Có 2 dạng Connection tuỳ theo nguồn dữ liệu là gì (OleDb hay SQL Server) đó là OleDbConnection và SqlConnection.
  • Command : Đối tượng thực hiện các câu lệnh tương tác truy vấn, rút trích dữ liệu từ database khi đã thiết lập kết nối tới dữ liệu và trả về kết quả. Tương tự như Connection, Command cũng có 2 dạng tuỳ theo nguồn dữ liệu là gì (OleDb hay SQL Server) đó là OleDbCommand và SqlCommand.
  • DataReader : Đối tượng xử lý đọc dữ liệu, được thiết kế phù hợp cho các ứng dụng web. Chỉ Xử lý 1 dòng dữ liệu tại một thời điểm. Phù hợp với ứng dụng web vì xử lý nhanh, nhẹ không chiếm bộ nhớ. Cũng có 2 dạng tùy theo dữ liệu nguồn : OleDbDataReader và SqlDataReader. Dữ liệu của đối tượng được tạo ra khi đối tượng Command thực hiện câu lệnh ExecuteReader().
  • DataAdapter : Đây là đối tượng rất quan trọng của ADO.NET, nó là cầu nối của database và dataset (dataset là đối tượng ngắt kết nối), bởi vì đối tượng “ngắt kết nối” dataset không thể liên lạc trực tiếp với database nên nó cần một đối tượng trung gian lấy dữ liệu từ database cho nó. Và đó chính là DataAdapter. Vì DataAdpater khi thao tác với Database vẫn phải duy trì kết nối nên nó được liệt kê vào dạng “kết nối”, nhưng bản chất là phục vụ cho việc “ngắt kết nối”.

– Phần “ngắt kết nối” : chỉ có một đối tượng chịu trách nhiệm ngắt kết nối đó chính là DataSet. DataSet không cần biết gì về Database thuộc kiểu gì, kết nối ra sao.

  • Nhiệm vụ của DataSet là nhận dữ liệu về từ DataAdapter và xử lý nó. DataSet có thể được xem như 1 Database trong bộ nhớ gồm tất cả các bảng ,quan hệ ….. DataSet có nhiều đối tượng được xem là “con” tức là cấp thấp hơn đi kèm với nó như : DataTable ( tương đương với 1 bảng trong database) , cấp thấp hơn của DataTable có các đối tượng DataRow (tương đương với 1 dòng) ,DataColumn( tương đương với 1 cột), DataRelation (tương đương với các quan hệ). Ngoài ra còn có các đối tượng nhóm : vd DataTableCollection, DataRowCollection, DataColumnCollection. Việc sử dụng DataSet là một tiến bộ lớn của kiến trúc ADO.NET tuy nhiên với các ứng dụng Web , việc sử dụng DataSet không được khuyến khích vì đối tượng DataSet được xem là quá lớn, nặng nề khó thích hợp cho đường truyền trên web vốn rất hạn chế.

4) Sử dụng ADO.NET trong C#.NET
– Để sử dụng ADO.NET trong C#, ta phải khai báo imports các namespace sau đây :

Namespace Sử dụng Ghi chú

System.Data

Chứa tất cả lớp cơ sở của kiến trúc ADO.NET.

System.Data.Common

Chứa các lớp chia sẻ của .NET Data Providers.

System.Data.SqlClient

Chứa các lớp hỗ trợ hệ quản trị cơ sở dữ liệu MS SQL Server phiên bản 7.0 trở lên.

System.Data.SqlOleDb

Chứa các lớp hỗ trợ cho cở sở dữ liệu OLEDB vd Access, Oracle hay MS SQL Server phiên bản 6.5 trở về trước.

System.Data.Sqltypes

Cung cấp các lớp hỗ trợ thao tác trên các kiểu dữ liệu cơ bản của SQL Server.

5) Ý nghĩa của việc xử lý dữ liệu ngắt kết nối trong ứng dụng Web


– Ứng dụng web là những ứng dụng có rất nhiều người dùng. Tại một thời điểm có thể có hàng vạn người dùng truy cập vào web. Chính vì vậy, rất dễ xảy ra tình trạng quá tải, dễ làm cho server bị tổn hại. Việc xử lý ngắt kết nối có ý nghĩa giảm thiểu số người dùng truy cập 1 lượt vào Web. Tất là khi 1 người truy cập vào Website, các dữ liệu mà anh ta cần sẽ được lấy xuống sau đó không kết nối vào Database Server nữa sau đó thực hiện các thao tác dữ liệu.
– Tuy nhiên mặt trái của việc này cũng có là Web Server cũng sẽ phải xử lý một lượng dữ liệu khá lớn trong bộ nhớ. Như vậy, ta có thể giảm thiểu việc truy cập vào database nhưng Web Server lại phải xử lý nhiều hơn.
– Chính vì lý do được/mất như trên mà xử lý ngắt kết nối phải vô cùng khéo léo trong ứng dụng web. Ta chỉ nên xử lý ngắt kết nối cho những dữ liệu chung thường dùng, ít thay đổi mà thôi. Không nên quá lạm dụng. Vì tất cả những vấn đề đều có mặt trái của nó.

Tham khảo và chỉnh sửa từ: http://tranphuochung.wordpress.com

 
 

Hướng dẫn cài đặt DotnetNuke 7

 
 

Mảng trong C#

1. Giới thiệu về mảng trong C#

– Trong chương trình đôi khi chúng ta cần thực hiện lưu trữ một loạt các thông tin có cùng kiểu dữ liệu để làm điều này thường chúng ta sẽ phải khai báo rất nhiều biến tương ứng với mỗi một thông tin như vậy. Việc quản lý số lượng lớn các biến gây ra rất nhiều khó khăn. Để giải quyết các khó khăn này thì C# cũng như các ngôn ngữ lập trình khác cung cấp một kiểu cấu trúc dữ liệu cho phép quản lý các biến có cùng tên, cùng kiểu dữ liệu. Đó là mảng.

– Mảng là một tập hợp hữu hạn các phần tử có cùng kiểu dữ liệu. Có thể coi mảng là một cách quản lý danh sách các biến có cùng kiểu dữ liệu.

– Để khai báo mảng trong C# chúng ta sử dụng cú pháp:

[Kiểu dữ liệu] [ ] … [ ] [tên mảng];

Trong đó:

  • [Kiểu dữ liệu]: là bất kì một kiểu dữ liệu nào được hỗ trợ trong C#.
  • [Tên mảng]: là một định danh để phân biệt các mảng với các biến, các đối tượng khác.

Số lượng các cặp dấu [ ] : chỉ ra chiều của mảng.

  • Nếu có 1 dấu [ ] thì mảng là mảng 1 chiều [].
  • Nếu có 2 dấu [ ] thì mảng là mảng 2 chiều [][].
  • Nếu có 3 dấu [ ] thì mảng là mảng 3 chiều [][][].
  • ……………….
  • Nếu có n dấu [ ] thì mảng là mảng n chiều. [][]….[].

Ví dụ: Khai báo mảng 1 chiều lưu trữ phần tử nguyên có tên là x. int[] x;

– Khởi tạo mảng: là quá trình khai báo số lượng các phần tử của mảng và gán giá trị cho các phần tử đó. Để khởi tạo mảng trong C# chúng ta có các cách như sau:

Khai báo và chỉ ra số phần tử của mảng.

[Kiểu dữ liệu] [ ] [tên mảng] = new [Kiểu dữ liệu] [số lượng phần tử];
Ví dụ: khai báo một mảng số nguyên lưu trữ 20 phần tử.
int[] x = new int[20];

Khai báo sau đó mới khởi tạo số phần tử của mảng.

[Kiểu dữ liệu] [ ] [tên mảng];
[tên mảng] = new [kiểu dữ liệu] [số phần tử];

Ví dụ: khai báo một mảng số nguyên lưu trữ 20 phần tử.
int[] x;
x = new int[20];

Khai báo, chỉ ra số lượng các phần tử mảng và gán các giá trị ban đầu cho các phần tử mảng.

int[] x = new int[5] { 5, -7, 8, 1, 9 };

Khai báo, ko chỉ ra số lượng các phần tử mảng và gán giá trị cho các phần tử của mảng.

– Truy cập các phần tử mảng: một mảng là một danh sách các phần tử có cùng kiểu dữ liệu, các phần tử đó được đánh số thứ tự bắt đầu từ 0 đến n-1 (Trong đó n là số phần tử của mảng).

– Như vậy để truy cập đến 1 phần tử của mảng thì chúng ta sử dụng một số nguyên để chỉ ra số thứ tự của phần tử đó trong mảng, phần tử nguyên này được gọi là chỉ số (index).

– Cú pháp tổng quát để truy cập đến phần tử thứ i của mảng là: [tên mảng] [i-1];

Ví dụ : gán giá trị -9 cho phần tử thứ 3 của mảng : x[2] = -9;

– Duyệt qua các phần tử mảng. Kể từ khi mảng là một tập hợp các hữu hạn phần tử do đó để duyệt qua các phần tử mảng thường chúng ta sử dụng vòng lặp for.

Ví dụ: in danh sách các phần tử mảng x ở trên.
Console.WriteLine("Danh sach cac phan tu trong mang:");
for (int i = 0; i < 5; i++)
Console.Write(x[i] + "\t");

2. Các kiểu mảng trong C#

Có 3 kiểu mảng trong C#:

– Mảng 1 chiều (single-dimension array): mảng 1 chiều là một mảng các phần tử. Mảng 1 chiều được khai báo chỉ bao gồm 1 cặp dấu [ ].

– Mảng nhiều chiều (multi-dimension array): mảng nhiều chiều là mảng có số chiều từ 2 trở lên (có từ 2 cặp [ ] trở lên).

– Mảng nhọn (jagged array): mảng nhọn là một mảng của các mảng, trong đó kích thước của mỗi một mảng có thể khác nhau. Mảng nhọn cho phép chúng ta sử dụng bộ nhớ một cách tiết kiệm hơn.

 

Nguồn: vi-infotech.com

 
2 phản hồi

Posted by on 12/22/2012 in .NET, C# Căn Bản, PCS, SEM 2

 

Kế thừa trong C#

1. Khái niệm Kế thừa

– Kế thừa là khả năng cho phép định nghĩa một lớp mới kế thừa từ lớp cha

– Sau đó sẽ xây dựng thêm các phương thức và thuộc tính riêng của lớp đó

– Lớp cha trong sự thừa kế gọi là lớp cơ sở

– Lớp con trong sự thừa kế gọi là lớp dẫn xuất

– Quan hệ “là 1″: Kế thừa được sử dụng thông dụng nhất để biểu diễn quan hệ “là 1″

Ví dụ: Sinh viên là một con người

Tam giác là một đa giác

– Kế thừa thường được dùng theo 2 cách:

  • Để phản ánh mối quan hệ giữa các lớp
  • Để phản ánh sự chia sẻ mã nguồn giữa các lớp

2. Cú pháp

Cú pháp định nghĩa lớp dẫn xuất

class [Tên lớp con] : [Tên lớp cha]
{
}

3. Thừa kế phương thức

3.1. Phương thức tạo lập (Constructor)

– Vì lớp dẫn xuất không thể kế thừa phương thức tạo lập của lớp cơ sở nên một lớp dẫn xuất phải thực thi phương thức tạo lập riêng của mình

– Nếu lớp cơ sở có một phương thức tạo lập mặc định thì phương thức tạo lập của lớp dẫn xuất được định nghĩa như cách thông thường

– Nếu lớp cơ sở có phương thức tạo lập có tham  số thì lớp dẫn xuất phải định nghĩa phương thức  tạo lập có tham số theo cú pháp sau:

TênLớpCon(ThamSốLớpCon):base(ThamSốLớpCha)
{
// Khởi tạo giá trị cho các thành phần của lớp dẫn xuất
}

3.2. Định nghĩa lại các phương thức ở lớp dẫn xuất

– Trường hợp derived class có property or method trùng tên với base class thì trình biên dịch sẽ có cảnh báo dạng như sau:
“keyword new is required on ‘LớpDẫnXuất.X’ because it  hides inherited member on ‘LớpCơSở.X ‘”.

– Để khắc phục việc này ta dùng từ khóa newngay câu lệnh khai báo thành phần đó.

– Từ khóa new trong trường hợp này có tác dụng che dấu thành phần kế thừa đó đối từ base class

– Nếu phương thức của derived class  muốn truy cập đến thành phần X của base class ?

– Sử dụng từ khóa base theo cú pháp:  base.X

 

Lập trình hướng đối tượng với mô hình 3 lớp (3 layers)

Lưu ý: Các bạn không nên nhầm lẫn khái niệm lớp(layer) trong phần này với khái niệm lớp(class) của các ngôn ngữ lập trình hướng đối tượng.

Trong phát triển ứng dụng, để dễ quản lý các thành phần của hệ thống, cũng như không bị ảnh hưởng bởi các thay đổi, người ta hay nhóm các thành phần có cùng chức năng lại với nhau và phân chia trách nhiệm cho từng nhóm để công việc không bị chồng chéo và ảnh hưởng lẫn nhau. Ví dụ trong một công ty bạn có từng phòng ban, mỗi phòng ban sẽ chịu trách nhiệm một công việc cụ thể nào đó, phòng này không được can thiệp vào công việc nội bộ của phòng kia như Phòng tài chính thì chỉ phát lương, còn chuyện lấy tiền đâu phát cho các anh phòng Marketing thì các anh không cần biết.

Trong phát triển phần mềm, người ta cũng áp dụng cách phân chia chức năng này. Bạn sẽ nghe nói đến thuật ngữ kiến trúc đa tầng/nhiều lớp, mỗi lớp sẽ thực hiện một chức năng nào đó, trong đó mô hình 3 lớp là phổ biến nhất. 3 lớp này là gì? Là Presentation, Business Logic, và Data Access. Các lớp này sẽ giao tiếp với nhau thông qua các dịch vụ(services) mà mỗi lớp cung cấp để tạo nên ứng dụng, lớp này cũng không cần biết bên trong lớp kia làm gì mà chỉ cần biết lớp kia cung cấp dịch vụ gì cho mình và sử dụng nó mà thôi.

1. Giới thiệu các thành phần của mô hình 3layer

Mô hình layer gồm có 3 layer:

  • Layer GUI (Graphics User Interface)
  • Layer Business Logic (Đây là layer để xử lý các dữ liệu, thông tin trước khi đưa lên giao diện hoặc đưa xuống dữ liệu.)
  • Layer Data Access – Layer này sẽ nói chuyện Data.

 

1.1. GUI Layer.

  • Đây là layer tạo lên giao diện cho người dùng, nó sẽ là nơi tiếp nhận và kết xuất ra kết quả của chương trình cho bạn.
  • Nó có nhiệm vụ xử lý, kiểm tra các dữ liệu nhập vào ( ví như ở TextBox này nó phải là số, số phải từ 1-9….).
  • Nó tiếp nhận các Event của người dùng, kiểm tra dữ liệu được nhập vào, gửi yêu cầu xử lý xuống tầng kế tiếp.

1.2. Business Logic Layer

  • Đây là layer xử lý chính các dữ liệu trước khi được đưa lên hiển thị trên màn hình hoặc xử lý các dữ liệu trước khi lưu dữ liệu xuống cơ sở dữ liệu.
  • Đây là nơi đê kiểm tra các yêu cầu nghiệp vụ, tính toán các yêu cầu nghiệp vụ.
  • Tại đây các tính năng tính toán trong chương trình sẽ được thực thi. (Như tính lương theo một công thức.)

1.3. Data Access Layer

  • Layer này sẽ lo nhiệm vụ là đọc cơ sở dữ liệu lên, cập nhật cơ sở dữ liệu, update cơ sở dữ liệu.
  • Nói chung là nó làm nhiệm vụ là nói chuyện phải trái với database.

1.4. Cách các layer “nói chuyện” với nhau.

Vấn đề đặt ra ở đây là 3 layer này ‘Nói chuyện’ với nhau như thế nào

Nhìn vào sơ đồ ta cũng sẽ nhận được câu trả lời:

Quá trình hiển thị dữ liệu:

Data Access layer nói chuyện với Database và lấy dữ liệu lên theo một cách nào đó (có thể là bằng câu lệnh select hay thông qua proceduce) lúc này sau khi lấy được dữ liệu lên thì nó sẽ đẩy lên Business layer tại đây Business cần nhào bột, thêm mắm muối rồi đẩy nó lên trên GUI và tại GUI nó sẽ hiển thị lên cho người dùng

Quá trình đưa dữ liệu xuống.

Người dùng thao tác với GUI layer sau đó ra lệnh thực hiện (ví như Insert) sau đó hệ thống sẽ kiểm tra các thông tin người dùng nhập vào nếu thỏa đi xuống tiếp layer Business để tiếp tục được nhào nặn, tính toán và kiểm tra sau khi xong thì dữ liệu được đẩy xuống thông tin phía dưới Data Access Layer sau đó tại DataAccess Layer sẽ thực thi nó xuống database.

1.5. Cách xử lý “lỗi” trong mô hình 3 layer.

Một khi gặp lỗi (các trường hợp không đúng dữ liệu) thì đang ở layer nào thì quăng lên trên layer cao hơn nó 1 bậc cho tới GUI thì sẽ quăng ra cho người dùng biết.

1.6. Demo mô hình 3 layer trong chương trình quản lý

DOWNLOAD DEMO

Nguồn: vi-infotech.com

 

[WCF] Giới thiệu

1. Khái niệm WCF

– WCF là công nghệ nền tảng nhằm thống nhất nhiều mô hình lập trình giao tiếp được hỗ trợ trong .NET 2.0 thành một mô hình duy nhất. Vào tháng 11 năm 2005, .NET 2.0 được Microsoft phát hành trong đó có cung cấp các hàm API riêng biệt cho các liên lạc dựa trên SOAP để tối đa hoá sự làm việc giữa các nền tảng sử dụng Web Services, đồng thời .NET 2.0 còn cung cấp các API để tối ưu việc liên lạc dựa trên mã nhị phân giữa các ứng dụng chạy trên hệ thống Windows gọi là .NET Remoting, các API cho các giao dịch phân tán, và API cho liên lạc dị bộ. WCF thống nhất các API này thành một mô hình duy nhất nhằm đáp ứng mô hình lập trình hướng dịch vụ.

– WCF có thể sử dụng các bản tin SOAP giữa hai tiến trình, do đó làm cho các ứng dụng dựa trên WCF có thể làm việc với các tiến trình khác thông qua việc giao tiếp sử dụng bản tin SOAP. Khi một tiến trình WCF liên lạc với một tiến trình không là WCF, các bản tin SOAP được mã hoá trên cơ sở XML, nhưng khi nó liên lạc với một tiến trình WCF khác, bản tin SOAP có thể được tối ưu hoá dựa trên mã hoá nhị phân.

2. Tại sao phải sử dụng WCF

– Như phần trên đã trình bày, .NET 2.0 hỗ trợ rất nhiều phương pháp liên lạc giữa các ứng dụng khác nhau nhằm vào các mục tiêu khác nhau. Các phương pháp liên lạc này khá phức tạp và phải mất nhiều thời gian để làm chủ được công nghệ. Tuy nhiên kiến thức thu được từ việc triển khai một phương pháp ít có khả năng dùng được khi làm việc với phương pháp khác.

– Với việc ra đời của WCF, mọi phương pháp liên lạc trước kia đều có thể thực hiện trên WCF. Do vậy nhà phát triển chỉ cần làm chủ được công nghệ WCF là có thể xây dựng các ứng dụng một cách nhanh chóng.

– WCF là một mô hình lập trình cho phép nhà phát triển xây dựng các giải pháp dịch vụ đảm bảo tính ổn định, và bảo mật và thậm chí là đảm bảo giao dịch. Nó làm đơn giản hoá việc phát triển các ứng dụng nối kết và đưa ra cho nhà phát triển những giá trị mà có thể họ chưa nhận ra ngay, đó là cách tiếp cận phát triển hệ thống phân tán thống nhất, đơn giản, và quản lý được.

– Do WCF được xây dựng trên cơ sở của .NET Framework 2.0 CLR, nó là tập các lớp cho phép các nhà phát triển xây dựng các ứng dụng hướng dịch vụ bằng môi trường lập trình quen thuộc của họ như VB.NET hay C#.

3. Kiến trúc WCF

3.1. Contracts

– Các contract trong WCF cũng giống như các hợp đồng/hiệp định mà bạn ký trong đời sống thật. Một hợp đồng bạn ký có thể chứa các thông tin như kiểu công việc bạn sẽ làm, và những thông tin mà bạn muốn đưa ra cho các bên khác. WCF contract cũng chứa các thông tin tương tự như vậy. Contract định nghĩa các đặc tả trong hệ thống bản tin.Thông thường có các loại contract sau:

  • Contract dữ liệu mô tả các tham số cho các bản tin mà một dịch vụ có thể tạo ra hay sử dụng. Các tham số bản tin được định nghĩa bằng các tài liệu sử dụng ngôn ngữ đặc tả XML Schema (XSD), điều này cho phép các hệ thống hiểu XML có thể xử lý tài liệu dễ dàng. Các dịch vụ khi liên lạc với nhau có thể không cần đồng ý với nhau về các kiểu, nhưng cần đồng ý về contract dữ liệu, nghĩa là đồng ý về các tham số và các kiểu trả về.
  • Contract bản tin định nghĩa các phần có trong bản tin sử dụng các giao thức SOAP, và nó cho phép điều khiển sâu hơn tới các phần trong bản tin khi có yêu cầu sự chính xác như vậy.
  • Contract dịch vụ đặc tả chi tiết các phương thức của dịch vụ, và được phân phối như là một giao diện trong các ngôn ngữ lập trình như Visual Basic hay Visual C#. Có thể hình dung về contract dịch vụ một cách gián tiếp như sau: „Đây là các kiểu dữ liệu của các bản tin của tôi, đây là nơi tôi cung cấp, và đây là các giao thức mà tôi có thể liên lạc”
  • Các chính sách và các kết nối (bindings) mô tả các điều kiện cần có để giao tiếp với một dịch vụ. Các chính sách sẽ bao gồm cả các yêu cầu về bảo mật và các điều kiện khác cần phải có khi kết nối với một dịch vụ.

3.2. Service Runtime

– Lớp dịch vụ thực thi chứa các hành xử sẽ xảy ra trong quá trình thực hiện của dịch vụ, nghĩa là các hành xử thực thi của dịch vụ. Ta sẽ thấy một số các hành xử như sau:

  • Throttling behavior: Điều khiển luồng nhằm quy định xem có bao nhiêu bản tin được xử lý
  • Error behavior: Hành xử lỗi quy định những hành động khi lỗi xảy ra trong hệ thống
  • Metadata behavior: Hành xử với các siêu dữ liệu quy định xem làm thế nào và khi nào thì các siêu dữ liệu được đưa ra bên ngoài dịch vụ
  • Instance behavior: Hành xử thực thể quy định xem có bao nhiêu thực thể của dịch vụ đó được chạy
  • Transaction behavior: Hành xử giao dịch cho phép việc rollback các giao dịch nếu xảy ra lỗi
  • Message inspection: Kiểm tra bản tin đem lại cho dịch vụ khả năng kiểm tra tất cả hay một số phần của bản tin
  • Dispatch behavior: Khi một bản tin được xử lý bởi nền tảng WCF, dịch vụ Dispatch behavior xác định xem bản tin được xử lý như thế nào.
  • Concurrency behavior: Hành xử đồng thời xác định xem việc xử lý thế nào với việc đa luồng của mỗi dịch vụ hay mỗi thực thể của dịch vụ. Hành xử này giúp cho việc điều khiển số lượng luồng có thể truy nhập tới một thực thể của dịch vụ.
  • Parameter filtering: Khi một bản tin được đưa tới một dịch vụ, sẽ xảy ra một số hành động dựa trên nội dung phần đầu đề của bản tin. Phần lọc tham số sẽ thực hiện lọc các đầu đề bản tin và thực hiện các hành động đặt sẵn dựa trên việc lọc đầu đề bản tin.

3.3. Messaging

– Lớp bản tin là tập hợp các kênh. Mỗi kênh là một thành phần xử lý bản tin theo một cách nào đó. Một tập các kênh thường được gọi là ngăn xếp kênh. Các kênh làm việc trên bản tin và trên đầu đề của bản tin. Lớp này khác với lớp thực thi dịch vụ chủ yếu bởi sự khác nhau trong việc xử lý nội dung bản tin. Có hai kênh khác nhau là kênh vận chuyển (transport channel) và kênh điều khiển (control channel).

  • Kênh vận chuyển phụ trách việc đọc và ghi các bản tin từ mạng (network) hoặc từ một số điểm giao dịch bên ngoài)
  • Kênh điều khiển thực hiện xử lý bản tin theo giao thức, thông thường làm việc bằng cách đọc và ghi thêm các đầu đề cho bản tin

3.4. Activation and hosting

– Nhìn một cách tổng thể thì một dịch vụ thực chất là một chương trình. Cũng giống như các chương trình khác, một dịch vụ cần phải chạy trong một tệp thực thi. Dịch vụ này thường được gọi là dịch vụ tự chứa.

– Các dịch vụ còn có thể được chứa, hoặc chạy trong một tệp thực thi được quản lý bởi một agent bên ngoài như IIS hay Windows Activation Services (WAS). WAS cho phép WCF được kích hoạt một cách tự động khi phân phối tới một máy tính có chạy WAS.

4. Các tính năng của WCF

4.1. Transaction (Giao dịch)

– Một giao dịch là một đơn vị của công việc. Một giao dịch đảm bảo chắc chắn rằng mọi thứ diễn ra trong giao dịch thành công hay thất bại đều là kết quả tổng thể. Ví dụ, nếu một giao dịch chứa ba mục công việc cần thực hiện, trong quá trình thực hiện giao dịch, một trong số các mục đó bị thất bại, khi đó cả ba mục sẽ là thất bại. Giao dịch chỉ thành công khi cả ba mục công việc đều thành công. Giao dịch thường thấy trong các thao tác với cơ sở dữ liệu.

– WCF cho phép đưa vào việc xử lý giao dịch như trên với các liên lạc. Nhà phát triển có thể nhóm các liên lạc với nhau thành các giao dịch. Ở mức doanh nghiệp, tính năng này cho phép bạn thực hiện các công việc giao dịch qua các nền tảng khác nhau.

4.2. Host (Chứa)

– WCF cho phép các dịch vụ được chứa trong một số lớn các môi trường khác nhau, như Windows NT Services, Windows Forms, và ứng dụng console, cũng như ở trên IIS (Internet Information Server) và WAS (Windows Activation Services).

– Chứa ứng dụng trên IIS còn có thêm các lợi điểm khác là dịch vụ có thể nhận các ưu điểm của rất nhiều tính năng có sẵn trên IIS, ví dụ IIS có thể điều khiển một cách tự động việc bắt đầu hay kết thúc một dịch vụ.

4.3. Bảo mật

– Bảo mật là tính năng không thể thiếu trong WCF nói riêng và trong liên lạc nói chung. Trong WCF, tất cả mọi thứ từ các bản tin tới các client hay server đều phải xác thực và WCF có tính năng để đảm bảo rằng các bản tin không bị lẫn trong quá trình vận chuyển. WCF bao gồm việc đảm bảo tính toàn vẹn và bảo mật của bản tin.

– WCF còn cho phép bạn tích hợp ứng dụng của bạn với cơ sở hạ tầng bảo mật sẵn có, bao gồm cả các chuẩn bên ngoài môi trường Windows bằng cách sử dụng các bản tin SOAP bảo mật.

 

Nguồn: vi-infotech.com

 

Somebody That I Used To Know

 

Now and then I think of when we were together
Like when you said you felt so happy you could die
Told myself that you were right for me
But felt so lonely in your company
But that was love and it’s an ache I still remember

You can get addicted to a certain kind of sadness
Like resignation to the end
Always the end
So when we found that we could not make sense
Well you said that we would still be friends
But I’ll admit that I was glad that it was over

But you didn’t have to cut me off
Make out like it never happened
And that we were nothing
And I don’t even need your love
But you treat me like a stranger
And that feels so rough
You didn’t have to stoop so low
Have your friends collect your records
And then change your number
I guess that I don’t need that though
Now you’re just somebody that I used to know

Now and then I think of all the times you screwed me over
But had me believing it was always something that I’d done
And I don’t wanna live that way
Reading into every word you say
You said that you could let it go
And I wouldn’t catch you hung up on somebody that you used to know…

But you didn’t have to cut me off
Make out like it never happened
And that we were nothing
And I don’t even need your love
But you treat me like a stranger
And that feels so rough
You didn’t have to stoop so low
Have your friends collect your records
And then change your number
I guess that I don’t need that though
Now you’re just somebody that I used to know

I used to know
That I used to know

Somebody…

 

 
1 Phản hồi

Posted by on 01/26/2012 in Music