Thứ Hai, 14 tháng 11, 2016

Chuẩn hóa trong thiết kế cơ sở dữ liệu

  Không có nhận xét nào
11:24

Tại sao phải chuẩn hóa?

Ví dụ với CSDL là bảng hóa đơn cho khách hàng như sau:

- Ta có các vấn đề:
+ Khi thêm dữ liệu: Không thể thêm một khách hàng vào CSDL nếu khách hàng không mua một mặt hàng nào.
+ Khi cập nhật dữ liệu: Muốn thay đổi địa chỉ của khách hàng, phải thay đổi địa chỉ trên tất cả các hóa đơn của khách hàng đó bởi vì địa chỉ của khách hàng lưu có trên tất cả các hóa đơn của khách hàng.
+ Khi xóa dữ liệu: Nếu xóa hóa đơn cuối cùng của một khách hàng thì tất cả dữ liệu về khách hàng đó sẽ mất.

- Nên ta cần có một bộ chuẩn hóa cho CSDL là nhóm các thuộc tính vào các quan hệ nhằm giảm thiểu dư thừa dữ liệu , loại ỏ các bất thường (ngoại lệ) khi cập nhật CSDL.
- Dạng chưa chuẩn hóa (un-normalized form - UNF): quan hệ chưa chuẩn hóa là quan hệ chứa các bộ dữ liệu bị trùng lập giá trị.

Các dạng chuẩn hóa

Ta có một bảng dư liệu chưa được chuẩn hóa dưới đây:
Những phần mình tô đỏ để mọi người dễ nhận ra vấn đề.

1. Dạng chuẩn 1NF

Định nghĩa: Dạng chuẩn 1 là quan hê không chứa các thuộc tính đa trị.
Để dễ hiểu hơn, ta áp dụng vào bảng dữ liệu trên, được áp dụng chuẩn 1NF như sau:

2. Dạng chuẩn 2NF

Định nghĩa: Dạng chuẩn 2NF là quan hệ đã chuẩn 1NF và các thuộc tính không phải là khóa phụ thuộc hoàn toàn vào khóa chính.
Phân tích ví dụ trên ta có các phụ thuộc hàm:
+ Mã SV -> (họ tên, quê quán)
+ Mã trường -> (tên trường, mã khoa, tên khoa)
+ (Mã số SV, môn học) -> Điểm


Cách làm:
Loại bỏ các thuộc tính không khoá phụ thuộc vào một bộ phận khoá chính và tách thành ra một bảng riêng, khoá chính của bảng là bộ phận khoá mà chúng phụ thuộc vào. Các thuộc tính còn lại lập thành một quan hệ, khóa chính của nó (Mã số SV) là khóa chính ban đầu (Mã số SV).

3. Dạng chuẩn 3NF

Định nghĩa: Dạng chuẩn 3NF là quan hệ ở dạng chuẩn 2NF và không tồn tại sự phụ thuộc hàm bắc cầu.
Từ ví dụ trên ta có:
Sinh viên, Trường học: (Mã số SV, họ tên SV, quê quán, mã trường, tên trường, mã khoa, tên khoa)
Với phụ thuộc hàm:
+ Mã SV, mã trường -> (họ tên, quê quán, tên trường, tên khoa, mã khoa)
+ Mã trường -> (tên trường, mã khoa, tên khoa)
Nên các thuộc tính tên trường, mã khoa, tên khoa là phụ thuộc bắc cầu vào khóa chính Mã SV.

Cách làm:
Loại bỏ các thuộc tính phụ thuộc bắc cầu (tên trường, mã khoa, tên khoa) ra khỏi quan hệ và tách chúng thành một quan hệ riêng có khoá chính (mã trường) là thuộc tính bắc cầu. Các thuộc tính còn lại lập thành một quan hệ có khóa chính là quan hệ ban đầu.
Nếu chỉ xét đến quan hệ sinh viên, trường học, bỏ qua môn học và điểm, ta có bảng chuẩn hóa 3NF:

Tổng quan

– Chuẩn hóa CSDL có đến 7 chuẩn.. nhưng trong thực tế chúng ta chỉ sử dụng ở mức 1NF, 2NF, 3NF rất hiểm khi gặp 4NF, 5NF, 6NF, 7NF. Vì vậy chúng ta chỉ cần lắm vững mức 1NF, 2NF, 3NF là đã ổn rồi :)

Tài liệu tham khảo


- Chuẩn hóa cơ sở dữ liệu | FPT Polytechnic
- Chapter 9: Normalization

Xem thêm

Thứ Hai, 7 tháng 11, 2016

Cơ bản về Web Service

  Không có nhận xét nào
01:14

Khái niệm

Web Service là một hệ thống phần mềm giúp các ứng dụng có thể tương tác với nhau giữa những chiếc máy tính thông qua mạng Internet.

Web Service là phần mềm có thể xác định bằng URL, thực hiện chức năng đưa ra các thông tin mà người dùng yêu cầu. Đồng thời Web Service còn cho phép Client và Server tương tác với nhau trong nhiều môi trường khác nhau.

Giới thiệu chung về Web Service

Web Service được xây dựng dựa trên mã nguồn mở và gồm có nhiều modul, cùng với đó là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnh vực cụ thể nhằm cung cấp lợi ích cho cả doanh nghiệp, khách hàng, cá nhân,… thông qua mạng Internet.
Hiện nay, Web Service đang rất phát triển và áp dụng vào nhiều lĩnh vực thực tế trong cuộc sống:thông tin thương mại như giá cả, dịch vụ du lịch, tỷ giá hối đoái, đại lý bán hàng qua mạng, dịch vụ giao dịch trực tuyến.

Cấu trúc Web Service

Trong đó: Consummer đăng kí đến Provider -> Provider deploy app lên Endpoint -> Endpoint call consumer..

Các thành phần Web Service


1. WSDL – Web Service Description Language: Mô tả Web Service theo cú pháp tổng quát gồm các thông tin như: Tên dịch vụ, loại thông tin, giao thức và kiểu mã hóa được sử dụng. WSDL thường sử dụng giữa XML Schema và SOAP nhằm cung cấp Web Service qua mạng Internet.

WSDL được coi là hợp lệ khi nó bao gồm hai phần:
+ Phần thi hành mô tả thông tin truy xuất CSDL.
+ Phần giao diện.

2. UDDI – Universal Description, Discovery, and Integration:

Cấu trúc UDDI:
+ Loại dịch vụ – tModel: chứa các thông tin về loại dịch vụ được sử dụng.
+ White pages: chứa thông tin liên hệ và các định dạng của Web Service.
+ Green pages: chứa chức năng của Web Service và thông tin kỹ thuật mô tả các hành vi .
+ Yellow pages: gồm có thông tin mô tả dịch vụ Web.

3. XML – eXtensible Markup Language: XML là chuẩn mở của W3C, là nền tảng cho việc xây dựng một Web Service và tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML.

4. SOAP – Simple Object Access Protocol: Là cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ các hệ điều hành khác nhau và nhiều ngôn ngữ. SOAP còn được coi là giao thức mà thay đổi các thông điệp dựa trên XML thông qua mạng máy tính.

+ Phần tử gốc: bao trùm nội dung thông điệp.
+ Phần tử đầu trang : chứa các thông tin tiêu đề cho trang
+ Phần tử đưa ra các thông tin về lỗi :cung cấp thông tin lỗi xảy ra trong qúa + trình xử lý .
+ Phần tử khai báo nội dung chính trong thông điệp: thông tin được phản hồi và chứa các thông tin yêu cầu.

Cách WebService hoạt động

Một ứng dụng WebService bao gồm 2 thành phần: Client và Server giao tiếp với nhau qua giao thức HTTP.

Client gửi yêu cầu qua các lời gọi hàm thông qua HTTP Request đến Server
Server gửi các kết quả được thực thi các ở hàm thông qua HTTP Request
Mô hình hoạt động của ứng dụng WebService gồm 3 thành phần chính:

+ UDDI register: Công cụ giúp nhà phát triển WS công bố những thông tin về WebService của mình cho cộng đồng các nhà phát triển ứng dụng. Người dùng sẽ dựa vào các thông tin này để sử dụng WebService trong ứng dụng riêng của mình.
+ WebService: Chứa giao thức SOAP định dạng dữ liệu, tài liệu WSDL định nghĩa các hàm trong WebService, XML để xây dựng ứng dụng phân tán.
+ Applicantion Client: Ứng dụng phía Client sử dụng WebService xây dựng riêng cho mình

Quy trình xây dựng một Web Service


1. Định nghĩa & xây dựng các chức năng, dịch vụ.
2. Tạo WSDL cho dịch vụ
3. Xây dựng SOAP server
4. Đăng ký WSDL với UDDI
5. Client nhận file WSDL => xây dựng SOAP client để có thể kết nối với SOAP server
6. Xây dựng ứng dụng phía client => thực hiện dịch vụ thông qua việc kết nối tới SOAP server.

Ưu và nhược điểm của Web Service



Ưu điểm
:
+ Nâng cao khả năng tái sử dụng.
+ Tạo mối quan hệ tương tác lẫn nhau , dễ dàng cho việc phát triển các ứng dụng phân tán.
+ Cung cấp khả năng hoạt động với ứng dụng hay phần mềm khác nhau chạy trên nhiều nền tảng khác nhau.
+ Sử dụng các giao thức và chuẩn mở. Giao thức và định dạng dữ liệu dựa trên văn bản (text), giúp các lập trình viên dễ dàng hiểu được.
+ Phát triển hệ thống tích hợp và tương tác hiệu quả với các doanh nghiệp.

Nhược điểm:
+ Có nhiều chuẩn khiến người dùng khó nắm bắt.
+ Nếu Web Service mà chết trong một khoảng thời gian thì sẽ khiến giao diện không đổi,thiếu các giao thức cho việc vận hành, và có thể lỗi nếu máy khách không được nâng cấp,
+ Vấn đề bảo mật và an toàn phải được quan tâm nhiều hơn.

Tài liệu tham khảo

- Web Services in C#
- Web Services - MSDN
- XML Web Services - W3C

Xem thêm

EAI - Tích hợp ứng dụng doanh nghiệp

  Không có nhận xét nào
00:09

EAI là gì?

EAI (Enterprise Application Integration) hay có cái tên hàn lâm là Tích hợp ứng dụng doanh nghiệp :)
Nó gao gồm, tính hợp một tập hợp các công nghệ, dịch vụ hình thành một trung gian để cho phép tính hợp các hệ thống và các ứng dụng độc lập (bao gồm cả các hệ thống bên ngoài liên quan đến chu trình của doanh nghiệp) cho toàn doanh nghiệp.


EAI "sinh ra để làm gì"?

Đáp: Để giải cứu thế giới.
- Do sự phát triển công nghệ ngày càng nhanh, mạnh thì các chương trình ứng dụng cho doanh nghiệp ngày càng nhiều và cũng đổi mới liên tục. Các doanh nghiệp đứng trước vấn đề lớn giữa việc: 1 là phải thay đổi ứng dụng phù hợp, 2 là phải mở rộng hệ thống.. Cách 1 thì tốn chi phí lớn, thời gian,.. cách 2 thì ứng dụng cũ và ứng dụng mới có sự khác biệt lớn về công nghệ, muốn tích hợp được là điều khó khăn?? => Đó là lúc EAI được "sinh" ra..
- Thế giới cần phải có một cái gì đó có thể đồng nhất được ứng dụng mới với các chương trình ứng dụng đã có trong hệ thống để cứu vớt các doanh nghiệp khỏi chi phí xây lại ứng dụng mới :) Và EAI có mặt để giúp tính hợp cách ứng dụng cũ, mới thành 1 hệ thống nhất, có khả năng chia sẻ dữ liệu giữa các ứng dụng, đem lại hiệu quả cao trong việc ứng dụng vào các hoạt động kinh doanh thương mai.

Ví dụ sản phẩn của EAI


Trong môi trường kinh doanh tất bật như ngành tài chính, mỗi giờ ngưng hoạt động có thể mất tới hàng ngàn USD. Những luật mới của Mỹ (đòi hỏi doanh nghiệp phải báo cáo những sự kiện quan trong trong vòng 48 giờ) khiến doanh nghiệp đến nhu cần dùng thông tin theo thời gian thực (real-time information). Và ứng dụng BAM (Business Activity Monitoring) giúp giải quyết vấn đề đó..


Tham khảo thêm

- Enterprise application integration - Wiki
- Tutorial: Enterprise Application Integration - MSDN

Xem thêm

Chủ Nhật, 6 tháng 11, 2016

Cơ bản về RESTful Web services

  Không có nhận xét nào
20:11

Giới thiệu RESTful


Những khái niệm đầu tiên về REST(REpresentational State Transfer) được đưa ra vào năm 2000 trong luận văn tiến sĩ của Roy Thomas Fielding (đồng sáng lập giao thức HTTP). Trong luận văn ông giới thiệu khá chi tiết về các ràng buộc, quy ước cũng như cách thức thực hiện với hệ thống để có được một hệ thống REST.

RESTful là một phong cách/chuẩn kiến trúc tổ chức và xây dựng Web Service. RESTful đã được chọn sử dụng rộng rãi thay cho Web service dựa trên SOAP và WSDL. Bằng chứng cho sự thay đổi này là việc các công ty như Yahoo, Google và Facebook đã phản đối các giao thức dựa trên SOAP hoặc WSDL và ủng hộ phương thức hướng đến tài nguyên và dễ sử dụng đối với các dịch vụ của họ.

Web service RESTful sẽ tuân thủ theo bốn nguyên tắc thiết kế cơ bản sau

1. Sử dụng các phương thức HTTP một cách rõ ràng
2. Phi trạng thái
3. Hiển thị cấu trúc thư mục như URls
4. Chuyển đổi JavaScript Object Notation (JSON) và XML hoặc cả hai.

1. Sử dụng các phương thức HTTP một cách rõ ràng
Nguyên lý thiết kế REST cơ bản là ánh xạ 1-1 giữa các hành động tạo, đọc, cập nhật và xoá (CRUD) các quá trình vận hành và các phương thức HTTP. Ta có:
- Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST.
- Để truy xuất một tài nguyên, sử dụng GET.
- Để thay đổi trạng thái một tài nguyên hoặc để cập nhật nó, sử dụng PUT.
- Để huỷ bỏ hoặc xoá một tài nguyên, sử dụng DELETE.

2. Phi trang thái
Một dịch Web phi trạng thái sinh ra một phản hồi liên kết với số trang tiếp theo trong một tổng thể và để máy khách làm những gì mà nó cần để giữ giá trị này ở mức nhất định.

3. Hiển thị cấu trúc thư mục như URls
Nó sẽ trông như thế này (và tất nhiên đây chỉ là ví dụ cho bạn hình dung thôi nhé :))
http://www.domain.com/baiviet/{year}/{day}/{month}/{topic}
Nó thân thiện với người dùng, dễ nhớ, dễ SEO hơn nhiều :)

Một số lưu ý cấu trúc địa chỉ của Web service RESTful:
- Giấu các đuôi tài liệu mở rộng của bản gốc trong máy chủ (.jsp, .php, .asp), nếu có, vì vậy bạn có thể giấu một số thứ mà không cần thay đổi địa chỉ Urls.
- Để mọi thứ là chữ thường.
- Thay thế các khoảng trống bằng gạch chân hoặc hoặc gạch nối (một trong hai loại).
- Tránh các chuỗi yêu cầu càng nhiều càng tốt.
- Thay vì sử dụng mã (404 Not Found) khi yêu cầu địa chỉ cho một phần đường dẫn, luôn luôn cung cấp một trang mặc định hoặc tài nguyên như một phản hồi.

4. Chuyển đổi JSON, XML hoặc cả hai.
Là một bản tóm tắt các thuộc tính của những thứ trong mô hình dữ liệu hệ thống. Định dạng dữ liệu mà ứng dụng và trao đổi dịch vụ trong mức đáp ứng yêu cầu/phản hồi hoặc trong phần thân của HTTP. Các chủ thể trong mô hình dữ liệu có liên quan với nhau. Cấu trúc dịch vụ sao cho nó tận dụng được phần đầu chấp nhận HTTP có sẵn bên trong – N, XHTML.

Tài liệu tham khảo

- Căn bản về RESTful Web services
- Cố gắng để giải thích về REST
- RESTful Web Services Tutorial

Xem thêm

Thứ Sáu, 4 tháng 11, 2016

Công nghệ đặc trưng của WCF

  Không có nhận xét nào
12:14

WCF "nó là cái gì, đến từ đâu"?


WCF tên đầy đủ là Window Comunication Foundation.
Microsoft đã thêm WCF lần đầu tiên được đưa vào .NET Framework 3.0. Kể từ đó, nó ở trong .NET Framework cho đến mãi ngày hôm nay :)


WCF là tổng hợp của WebSerice, Remoting, Message Queuing (MSMQ) và Enterprise services (COM+). Có thể nói WCF là "hậu duệ" cửa WebService.

WCF có gì hay?

- Cho phép các tính năng bảo mật như xác thực và ủy quyền. 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.
- Có tính năng điều chỉnh hiệu suất như điều tiết lưu lượng và cân bằng tải. Tránh những vụ tấm công DDOS hay quá tải do số lượng người dùng tăng đột biến.
- Cung cấp các môi trường lưu trữ như IIS (Internet Information Server), Windows Services và Hosting riêng.

Sự khác nhau giữa Web API và WCF

- Web API:
+ Hỗ trợ các giao thức, định dạng XML, SSL HTTP, WebSockets, SSL, jQuery và JSON
+ Hỗ trợ XML, JSON
+ Có sẵn mã nguồn mở
+ Các mô tả Web API bằng cách tự động tạo ra các thẻ HTML

- WCF:
+ Hỗ trợ rất nhiều giao thức khác nhau như: TCP, HTTP, HTTPS, Named Pipes, MSMQ.
+ Hỗ trợ Binary, Text và MROM encoding
+ Chỉ đi với .NET
+ Mô tả WCF SOAP services trong WScDL

Web Service vs WCF



Tài liệu tham khảo

- Windows Communication Foundation - MSDN

Xem thêm

Thứ Hai, 17 tháng 10, 2016

Database First với Entity Framework 6

  Không có nhận xét nào
16:45


Trong trường hợp bạn muốn làm việc với thiết kế database có từ trước, hay database từ project cũ. Thì ở bài này mình sẽ hướng dẫn để tạo Model từ database có sẵn. Đây là cách cơ bản nhất và được sử dụng từ đầu khi Entity Framework (EF) mới phát hành.

Các Model được cập nhật bất cứ khi nào database thay đổi.

Cách làm việc của Database First?


- Dựa vào database có sẵn của bạn, EF xuất ra thành Model trên Visual Studio. Cụ thể, chúng ta sẽ dùng ADO.NET Entity Data Model để tạo một file dạng *.edmx. Model này là khung thiết kế trực quan, gồm các Entity đại diện cho các Tabel trong cơ sở dữ liệu của bạn và bạn có thể chỉnh sửa các Entity này.

- Dựa vào các model sinh mã tự động ra các lớp. Các lớp này đại diện cho các bảng trong database. Khi làm việc với phương pháp này ta sẽ cần một vài yêu cầu sau:
+ Đầu tiên, bạn phải có một cơ sở dữ liệu đã được tạo sẵn trên hệ quản trị cơ sở dữ liệu (Trong ví dụ dưới đây chúng ta sử dụng SQL Server)
+ Quan trọng nhất là bạn đã cài đặt Entity Framework cho dự án bạn nhé :)

Dùng Database First như nào?


Đa phần bạn phải dùng chuột thay vì bàn phím như Code First :))
- B1: Yêu cầu bạn đã có database được tạo sẵn
- B2: Cài đặt Nuget Package cho Visual Studio để quản lý các gói cài đặt cho project.
- B3: Cài đặt EntityFramework cho project
- B4: Tạo Model dựa trên database có sẵn của bạn
- B5: Thao tác với database của bạn

Xây dựng ứng dụng




Tài liệu tham khảo

- Getting Started with Entity Framework 6 Database First using MVC 5
- EF Database First with ASP.NET MVC: Creating the Web Application and Data Models
- Entity Framework Database First

Xem thêm

Bắt đầu Entity Framework 6: Code First - sử dụng MVC 5

  Không có nhận xét nào
16:45

Entity Framework là gì?


Entity Framework là một nền tảng được sử dụng để làm việc với database thông qua cơ chế ánh xạ Object/Relational Mapping (ORM). Nhờ đó, bạn có thể truy vấn, thao tác với database gián tiếp thông qua các đối tượng lập trình.
Entity Framework hỗ trợ 3 cách khác nhau để phát triển ứng dụng sử dụng Entity Framework:

- Code First
- Model First
- Database first

Như tiêu đề trong bài này mình sẽ hướng dẫn các bạn Code First.

Giới thiệu Code First


Entity Framework Code First được giới thiệu từ Entity Framework 4.1. Trong cách tiếp cận Code First, bạn có thể tập trung vào việc thiết kế Domain và bắt đầu tạo ra các lớp theo yêu cầu của Domain của bạn chứ không phải thiết kế cơ sở dữ liệu trước rồi sau đó tạo ra các lớp phù hợp với thiết kế cơ sở dữ liệu đó. Code First API sẽ tạo ra cơ sở dữ liệu dựa trên các lớp thực thể và lớp cấu hình của bạn.
Vì vậy, đầu tiên bạn bắt đầu viết các lớp thay vì tập trung vào thiết kế cơ sở dữ liệu, sau đó khi bạn chạy ứng dụng, Code First API sẽ tạo ra cơ sở dữ liệu mới hoặc ánh xạ các lớp của bạn vào cơ sở dữ liệu đã tồn tại trước khi chạy ứng dụng của bạn.

Xây dựng Web Application sử dụng theo Code First


Mở Visual Studio, tạo project mới Web C#



Trong mục Change Authentication, chọn No Authentication sau đó ấn OK.

Cài đặt Entity Framework 6


Trong menu Tools chọn NuGet Package Manager và click vào Package Manager Console.

Trong cửa sổ Package Manager Console nhập:
Install-Package EntityFramework

Xây dựng ứng dụng


Bạn xem và làm theo hướng dẫn của thầy Nguyễn Tuân để hiểu hơn về cách thức Code First:



Tổng kết


Trong Code First, bạn bắt đầu bằng việc định nghĩa domain model của bạn bằng việc sử dụng các POCO class không phụ thuộc vào EF. Code First có thể bao hàm nhiều thông tin về model từ các class của bạn. Bạn có thể cung cấp cấu hình bổ sung để mô tả model hoặc override những gì mà Code First cung cấp. Phần cấu hình này cũng được thực hiện trong code chứ không phải trong tập tin XML hay designer.

Được xây dựng dựa trên các thành phần được giới thiệu trong EF4, Code First cho phép lập trình viên định nghĩa domain model với code thay vì phải sử dụng một tập tin EDMX. Mặc dù Model First và Database First sử dụng code generation để cung cấp các class cho bạn làm việc, nhiều lập trình viên không muốn làm việc với designer hoặc các class được tạo từ chúng.

Tài liệu tham khảo


- Getting Started with Entity Framework 6 Code First using MVC 5

Xem thêm