senvang

Mỗi ngày tôi chọn một niềm vui ...

Subscribe to RSS feed

Tre xanh


Tre xanh, xanh tự bao giờ
Chuyện ngày xưa đã có bờ tre xanh
Thân gầy guộc, lá mong manh
Mà sao nên lũy nên thành tre ơi!

Ở đâu tre cũng xanh tươi
Cho dù đá sỏi đất vôi bạc màu
Có gì đâu, có gì đâu
Mỡ màu dẫu ít dồn lâu hoá nhiều

Rễ siêng không quản đất nghèo
Tre bao nhiêu rễ bấy nhiêu cần cù
Vươn mình trong gió tre đu
Cây kham khổ vẫn hát ru lá cành

Yêu nhiều nắng nỏ trời xanh
Tre xanh không đứng khuất mình bóng râm
Bão bùng thân bọc lấy thân
Tay ôm tay níu tre gần nhau hơn.

Thương nhau tre chẳng ở riêng
Lũy thành từ đó mà nên hỡi người
Chẳng may thân gãy cành rơi
Vẫn nguyên cái gốc truyền đời cho măng

Nòi tre đâu chịu mọc cong
Chưa lên đã nhọn như chông lạ thường
Lưng trần phơi nắng phơi sương
Có manh áo cộc tre nhường cho con

Măng non là búp măng non
Đã mang dáng thẳng thân tròn của tre
Năm qua đi, tháng qua đi
Tre già măng mọc có gì lạ đâu

Mai sau... mai sau... mai sau
Đất xanh... tre mãi xanh màu... tre xanh.

(Nguyễn Duy)

Truyện cố tích: TUỔI THỌ

Ngày Tết người phương Tây chúc nhau “Happy New Year”. Họ chúc nhau sung sướng vì chỉ có hiện tại là đáng kể. Sung sướng Tết này, sung sướng hôm nay, sung sướng giờ phút bên nhau lúc còn khỏe mạnh.

Người phương Đông chúc nhau sống lâu. Ngày còn Vua Chúa,Tết đến hoa Vạn Thọ đủ các màu, các loại được vun trồng từ mấy tháng trước trang hoàng đầy Cung điện. Ngoài dân gian người ta cũng gắng chăm bón săn sóc hoa Vạn Thọ để tặng nhau trong dịp Tết.

Theo sau Vạn Thọ là câu chúc “Sống lâu muôn tuổi”. Muôn năm thì còn hơn cả Vạn Thọ, vì một vạn chỉ có mười nghìn. Lời chúc tụng với số tuổi khiêm nhường nhất là “Sống lâu trăm tuổi”!

Sự thực thì cuộc sống ngày xưa không có bảo hiểm sức khỏe, không có tiền già, tiền hưu. Sống lâu là một sự mạo hiểm và bấp bênh vô cùng. Vì sau cái Sanh, Lão là Bệnh và Tử đến gõ cửa không thiên vị, không chừa một ai, dù là Vua Chúa, tỷ phú hay kẻ không nhà. Thế mà người ta vẫn thích sống lâu, vẫn nuối tiếc cuộc sống phù du. Có những người xưa đã giác ngộ phê phán rằng: “Đa thọ đa nhục”. Có đúng phần nào nhưng đối với phần đông thì dù sao Thọ vẫn hơn. Có Phúc có Lộc mà không Thọ thì cũng vứt đi.

Ngày xửa ngày xưa, những người theo Lão giáo, lao tâm tổn trí cố tìm cho ra thuốc trường sinh. Họ chế luyện những bài thuốc, thức ăn, rượu bổ, cho đến chuyện âm dương vợ chồng cũng phải làm đúng phương pháp để đạt mục đích, không phải sinh con, cũng không phải yêu đương mà để bổ âm, bổ dương, bổ khí, bổ huyết . . . Họ còn len lỏi vào cả trong võ giới, chế biến một vài thế tập của Võ Thiếu Lâm trong Bát Đoạn Cẩm để luyện phép trường sinh. Nhưng rốt cuộc không thấy quý cụ nào từ thế kỷ xa xưa còn ở lại ngồi chơi xơi nước cho đến bây giờ cả. Ai sống lâu lắm cũng chỉ trên dưới 100 tuổi là con cháu thấm mệt.

Thử lui lại thời gian từ thuở tạo thiên lập địa, tìm xem tại sao con người lại có cái tuổi thọ một trăm so với loài vật chỉ từ một vài tháng đến vài chục năm.

Sau bao nhiêu công phu tra cứu, lục tìm sách cổ khắp các thư viện, học hỏi với quí vị cao niên, người ta mới biết được rằng lúc Thượng Đế sáng tạo xong thế giới rồi. Ngài quan sát cuộc sống của muôn loài, so sánh sức khỏe và khả năng để định đoạt tuổi thọ. Thượng Đế ra lệnh cho người cũng như mọi giống vật hội họp lại để nhận tuổi. Lừa xếp hàng đứng đầu nên được lãnh tuổi trước. Lừa hỏi:

- Tâu Thượng Đế, giống Lừa chúng tôi sẽ được sống mấy năm?

Thượng Đế trả lời không ngần ngại:

- Ta cho ngươi 30 năm. Ngươi mãn nguyện chứ?

Lừa nghe xong kinh hoảng la lên:

- Tâu Thượng Đế. Ngài ban cho giống Lừa sống lâu quá. Xin Ngài thương xót phận thân phận Lừa, thương cuộc đời lao động nặng nhọc khổ sở của chúng tôi. Từ sáng đến tối, Lừa phải nai lưng ra chuyên chở những món hàng nặng hàng trăm ký. Lừa cúc cung tận tụy phục vụ Người cho đến khi kiệt sức không còn di chuyển được. Thế mà đền đáp lại, Lừa chỉ nhận được roi vọt đấm đá.

Những ân tình ân nghĩa thì không phải là lời tri ân, chỉ là những câu mắng nhiếc. Nào là “đồ Lừa, không ưa nhẹ chỉ ưa nặng!” Rồi thì, hàng tấn hàng hóa chất thêm lên mình, hàng trăm ngọn roi quất lên lưng, lên mông vùn vụt để cho Lừa làm việc đến ngất ngư. Tâu Thượng Đế, một cuộc sống như thế, Ngài thấy rằng thân Lừa bé bỏng có thể chịu được bao lâu?

Thượng Đế nghe xong thương hại kiếp Lừa vất vả nên bớt đi 18 năm thọ để cho Lừa chóng thoát cuộc sống khổ sở.

Lừa nghe xong sung sướng, cảm tạ Thượng Đế ra về.

Đến lượt Chó lãnh tuổi. Thượng Đế hỏi:

- Còn ngươi thì sao? Ngươi muốn sống bao nhiêu năm? Lừa kêu than 30 năm nhiều quá, nhưng 30 năm đối với bọn ngươi, Chó rừng, Chó nhà gì cũng ngon lành cả.

Chó rầu rĩ đáp:

- Tâu Thượng Đế. Ngài không hiểu đấy thôi, chứ nếu Ngài hiểu rõ chắc sẽ còn thương Chó nhiều hơn thương Lừa nữa. Chó cần phải chạy nhanh, nhưng khi quá 15 tuổi, chân Chó bao nhiêu gân cốt đều muốn sụm cả rồi. Loài Chó chúng tôi nhờ sủa to, cắn mạnh, răng chắc mà kiếm sống. Dù Chó rừng hay Chó nhà cũng thế thôi. Lúc hơi không đủ để sủa to, răng không còn cứng chắc, hàm không mạnh, chân chạy bủn rủn, Chó không làm gì được nữa!

Kiếm ăn ở rừng không được, mà ở nhà cũng nhục nhã. Chẳng ai thương xót hay kính trọng Chó cả. Khi con Chó giữ nhà oai hùng đã thành con Chó già, không đủ sức bảo vệ chủ và tài sản của chủ, thì Chó chỉ ngày ngày bò lê bò la từ góc vườn này sang góc vườn khác, rên rỉ đau khổ, đếm nghe từng lóng xương nhức mỏi, vì chứng phong thấp nổi lên khi trái gió trở trời! Cúi xin Thương Đế thương xót phận Chó thấp hèn, giảm bớt tuổi thọ cho cuộc sống bớt thê lương lúc về già.

Thượng Đế nhìn Chó có vẻ thông cảm và vui lòng giảm bớt cho Chó 12 năm thọ.

Chó sung sướng ra về.

Kế đến là Khỉ đến xin lãnh tuổi. Thượng Đế hỏi:

- Ngươi vui lòng sống 30 năm chứ? Loài Khỉ chẳng cần làm gì cả, không phải làm việc khuân vác nặng nhọc như Lừa, cũng không phải giữ nhà hay săn mồi như Chó. Khỉ chỉ nhảy nhót chơi đùa, chuyền cành hái quả. Khỉ có thể sống một cách an nhàn để hưởng tất cả lạc thú ở đời.

Khỉ buồn rầu nước mắt chảy quanh trả lời:

- Tâu Thượng Đế, mới trông bề ngoài ai cũng tưởng khỉ sung sướng, nhưng sự thực trái hẳn. Lúc Khỉ bị bắt, bị huấn luyện để phục vụ cho loài người thì Khỉ suốt ngày phải làm trò khỉ, phải nhăn mặt, méo mồm, múa may quay cuồng, chạy nhảy leo trèo làm cho người xem vui cười.

- Nếu chủ vui lòng sẽ ném cho Khỉ một nắm cơm nguội, hay một quả ổi xanh. Khỉ được thưởng ổi vui mừng cắn ăn, nhưng lúc nhai rồi mới biết đấy chỉ là một quả ổi sống chát ngắt, Người không thèm ăn nên mới vứt cho. Đời Khỉ đầy nước mắt đau khổ triền miên nấp sau nụ cười gượng gạo, và hoan lạc dù chỉ tưởng tượng cũng quá ngắn ngủi.

Khỉ không thể nào sống nổi 30 năm một cuộc sống như thế. Chưa kể khi Khỉ bị nhốt trong lồng chật hẹp tù túng để cho Người quan sát trò khỉ. Xem chán chê rồi Người chỉ trích chê bai từng cách ngồi, lối nhảy, từng cử chỉ.

Câu “Khỉ ăn gừng, ăn ớt” là để tả dung nhan của Khỉ lúc về già. Thực không còn gì tủi nhục hơn. Xin Thượng Đế vạn năng từ bi độ lượng, rút ngắn cuộc sống đáng thương của Khỉ.

Thượng Đế vốn là đấng sáng tạo ra muôn loài, là cha của tất cả, nên tội nghiệp Khỉ, bớt cho Khỉ 10 năm thọ.

Đại biểu của loài người đến với một thái độ nồng nhiệt yêu đời. Người trông vui vẻ khỏe mạnh, hùng dũng đầy nhựa sống. Người cất tiếng nói giọng sang sảng:

- Xin Thượng Đế cho biết tuổi thọ của Người được mấy trăm năm?

Thượng Đế giật mình hỏi lại:

- Làm gì đến mấy trăm năm! Tiêu chuẩn của ta đã định cho muôn loài là 30 năm mà thôi. Thế mà cho đến bây giơ loài nào cũng kêu than xin bớt tuổi thọ, bớt khổ nhục. Ta cũng cho loài người 30 năm, không thiên vị tí nào!

Người nghe xong hoảng hốt quì xuống gục đầu vào chân Thượng Đế năn nỉ:

- Tâu Thượng Đế 30 năm ít quá. Lúc Người được 30 tuổi là tuổi đang lớn. Nguời như một cây vừa bén rể, cành muốn tung lên vun vút tận mây xanh, rể đâm sâu vào lòng trái đất, chi nhánh muốn vươn ra bao trùm mọi vật. Người đầy hùng tâm muốn lăn xả vào cuộc sống cho hết mình. Và cũng là lúc Người mới xây dựng được căn nhà, trồng được mảnh vườn đầu tiên, chờ đợi khai hoa kết quả.

- Người mới vừa cưới vợ, tình yêu đang nồng nàn. Con của Người còn bé vừa chập chững tập đi. Người sắp sửa được hưởng kết quả công lao khó nhọc, được hưởng sự sung sướng an lạc của cuộc đời thì phải chết. Tâu Thượng Đế, xin Ngài cho thêm vài trăm năm thọ nữa để Người có đủ thì giờ gây dựng cho thế hệ sau, làm một sự nghiệp gì để lại cho đời, và cũng để khỏi mang tiếng là tránh trách nhiệm với hậu thế.

Thượng Đế nghe xong, ngẫm nghĩ, thấy Người nói có lý, Ngài phán:

- Ta cho Người thêm 18 năm tuổi thọ của Lừa, cộng với 30 năm của Người là 48 năm. Ngươi thấy đủ chưa?

Người thở dài lắc đầu:

- Tâu Thượng Đế chưa đủ. Tuổi ấy con cái chưa khôn lớn, chưa có khả năng đảm nhận trách nhiệm ở đời. Cha mẹ chết làm sao yên tâm được!

Thương Đế trả lời không do dự:

- Thế 12 năm thọ của Chó, ta cho Người luôn. Tuổi này con khôn lớn ăn học thành tài rồi.

Người vẫn năn nỉ:

- Tâu Thượng Đế vẫn còn ít lắm. Tuy con cái đã trưởng thành. Nhưng chưa nhìn thấy cháu, chưa được bế cháu thì cũng chưa có thể gọi là nhận được đủ Phước Lộc Thọ của Thượng Đế ban cho.

Thượng Đế phán giọng cương quyết:

- Nếu vậy ta cho nốt người 10 năm của Khỉ. Đó là tất cả tuổi thọ không ai nhận. Ta không thể bớt của loài khác cho Người được. Thượng Đế có quyền nhưng không thể bất công.

Người lãnh tuổi xong, thất vọng ra về vì biết rằng dù năn nỉ cũng vô ích, nhưng trong thâm tâm Người cũng quyết định là sẽ tìm cách sống lâu hơn.

Từ đó loài người sống đổ đồng kẻ già người trẻ, trung bình ít nhất được 70 tuổi. 30 năm đầu Người sống với tuổi thọ nguyên thủy của Thượng Đế ban cho mình. 30 năm qua thật chóng.

Trong thời gian ấy, Người làm việc rất hăng hái và cũng hưởng thụ được cuộc sống ngọt ngào. Công danh, sự nghiệp, tiền tài, tình duyên tất cả đều ở trong tầm tay, ai giỏi thì với tới.

Kế đến 18 năm của Lừa. Trong thời gian này, nhiều gánh trách nhiệm nặng nề đè nặng trên vai. Người phải làm việc cho người khác hưởng. Nhưng đền đáp lại ngoài hoan lạc phút giây, người cũng nhận được những sự bội bạc vô ơn và những bài học chua cay đau đớn của đời.

Tiếp đến là 12 năm của Chó. Trong thời gian này, sức bắt đầu yếu, Người chỉ thích nằm một nơi, buồn lắng nghe những đốt xương nhức nhối. Người cũng không còn răng để nhai đồ ăn cứng, chỉ còn nhai trệu trạo nuốt những món ăn mềm.

Kế tiếp thời kỳ nằm nghe xương nhức của Chó là thời kỳ cuối cùng 10 năm thọ thừa hưởng của Khỉ. Người biến thành đãng trí, mất ngủ, lẫn lộn, nói trước quên sau, để đâu quên đó. Người có nhiều cử chỉ ngớ ngẩn như trẻ con, và đồng thời cũng rất hãnh diện với tuổi thọ của mình. Và lại cũng như trẻ con, ngày ngày người ngồi đếm tháng ngày qua, chờ Tết đến để chúc nhau “Sống lâu trăm tuổi”.

^^Sưu tầm^^

XÂY DỰNG ỨNG DỤNG TIN TỨC ĐƠN GIẢN VỚI ASP.NET 2.0

Chúng ta sẽ bắt đầu với phần giới thiệu sơ lược về mô hình phát triển thông dụng 3 lớp, tiếp theo chúng ta sẽ tiến hành thiết kế ứng dụng theo mô hình này. Trong bài viết này không có tham vọng trình bày lại chi tiết mô hình thiết kế ứng dụng đa lớp/tầng là như thế nào. Chỉ tóm tắt ngắn gọn lại những điểm chính của mô hình 3 lớp, mà cụ thể là 3 lớp logic.
Mô hình 3 lớp (3 layers)
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.

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.
Presentation Layer
Lớp này làm nhiệm vụ giao tiếp với người dùng cuối để thu thập dữ liệu và hiển thị kết quả/dữ liệu thông qua các thành phần trong giao diện người sử dụng. Lớp này sẽ sử dụng các dịch vụ do lớp Business Logic cung cấp. Trong .NET thì bạn có thể dùng Windows Forms, ASP.NET hay Mobile Forms để hiện thực lớp này.

Trong lớp này có 2 thành phần chính là User Interface Components và User Interface Process Components.

UI Components là những phần tử chịu trách nhiệm thu thập và hiển thị thông tin cho người dùng cuối. Trong ASP.NET thì những thành phần này có thể là các TextBox, các Button, DataGrid...

UI Process Components: là thành phần chịu trách nhiệm quản lý các qui trình chuyển đổi giữa các UI Components. Ví dụ chịu trách nhiệm quản lý các màn hình nhập dữ liệu trong một loạt các thao tác định trước như các bước trong một Wizard...

Lưu ý : lớp này không nên sử dụng trực tiếp các dịch vụ của lớp Data Access mà nên sử dụng thông qua các dịch vụ của lớp Business Logic vì khi bạn sử dụng trực tiếp như vậy, bạn có thể bỏ qua các ràng buộc, các logic nghiệp vụ mà ứng dụng cần phải có.
Business Logic Layer
Lớp này thực hiện các nghiệp vụ chính của hệ thống, sử dụng các dịch vụ do lớp Data Access cung cấp, và cung cấp các dịch vụ cho lớp Presentation. Lớp này cũng có thể sử dụng các dịch vụ của các nhà cung cấp thứ 3 (3rd parties) để thực hiện công việc của mình(ví dụ như sử dụng dịch vụ của các cổng thanh tóan trực tuyến như VeriSign, Paypal...).

Trong lớp này có các thành phần chính là Business Components, Business Entities và Service Interface.

Service Interface là giao diện lập trình mà lớp này cung cấp cho lớp Presentation sử dụng. Lớp Presentation chỉ cần biết các dịch vụ thông qua giao diện này mà không cần phải quan tâm đến bên trong lớp này được hiện thực như thế nào.

Business Entities là những thực thể mô tả những đối tượng thông tin mà hệ thống xử lý. Trong ứng dụng chúng ta các đối tượng này là các chuyên mục(Category) và bản tin(News). Các business entities này cũng được dùng để trao đổi thông tin giữa lớp Presentation và lớp Data Access.

Business Components là những thành phần chính thực hiện các dịch vụ mà Service Interface cung cấp, chịu trách nhiệm kiểm tra các ràng buộc logic(constraints), các qui tắc nghiệp vụ(business rules), sử dụng các dịch vụ bên ngoài khác để thực hiện các yêu cầu của ứng dụng.

Trong ứng dụng của chúng ta, lớp này sẽ chứa các thành phần là CategoryService và NewsService làm nhiệm vụ cung cấp các dịch vụ quản lý chuyên mục và các bản tin (thêm, xóa, sửa, xem chi tiết, lấy danh sách...).
Data Access Layer

Lớp này thực hiện các nghiệp vụ liên quan đến lưu trữ và truy xuất dữ liệu của ứng dụng. Thường lớp này sẽ sử dụng các dịch vụ của các hệ quản trị cơ sở dữ liệu như SQL Server, Oracle,... để thực hiện nhiệm vụ của mình. Trong lớp này có các thành phần chính là Data Access Logic, Data Sources, Servive Agents).
Data Access Logic components (DALC) là thành phần chính chịu trách nhiệm lưu trữ vào và truy xuất dữ liệu từ các nguồn dữ liệu - Data Sources như RDMBS, XML, File systems.... Trong .NET Các DALC này thường được hiện thực bằng cách sử dụng thư viện ADO.NET để giao tiếp với các hệ cơ sở dữ liệu hoặc sử dụng các O/R Mapping Frameworks để thực hiện việc ánh xạ các đối tượng trong bộ nhớ thành dữ liệu lưu trữ trong CSDL. Chúng ta sẽ tìm hiểu các thư viện O/R Mapping này trong một bài viết khác.

Service Agents là những thành phần trợ giúp việc truy xuất các dịch vụ bên ngòai một cách dễ dàng và đơn giản như truy xuất các dịch vụ nội tại.

Chúng ta đã tìm hiểu qua các lớp của mô hình 3 lớp. Lý thuyết hơi nhiều một chút có thể làm bạn khó hiểu vì khả năng trình bày có hạn, nên bây giờ thử tìm hiểu một qui trình cụ thể hơn để biết các lớp này giao tiếp với nhau như thế nào. Ví dụ trong ứng dụng của chúng ta có thao tác tạo một chuyên mục mới, thì các lớp sẽ ltương tác với nhau như sau:

Lớp Presentation

- Trình bày một web form, có các text box cho phép người sử dụng nhập tên và mô tả cho chuyên mục
- Khi người dùng nhấn nút tạo trên form này, ứng dụng sẽ thực hiện việc tạo một Business Entity Category mới như đoạn code sau minh họa:
public void CreateNewCategory()
{
Category category = new Category();
category.Name = name.Text;
category.Description = description.Text;

// sử dụng dịch vụ do lớp Business cung cấp để tạo chuyên mục
CategoryService.CreateCategory(category);
}

Lớp Business Logic

Để cung cấp dịch vụ tạo một chuyên mục, thành phần CategoryService sẽ cung cấp hàm sau:
public static void CreateCategory(Category category)
{
// kiểm tra xem tên khóa của chuyên mục đã tồn tại chưa?
...
// kiểm tra tên khóa của chuyên mục có hợp lệ không?
...
// sử dụng DV của lớp Data Access để lưu chuyên mục mới này vào CSDL
CategoryDAO categoryDAO = new CategoryDAO();
categoryDAO.CreateCategory(category);
}

Lớp Data Access

Tương tự, để cung cấp dịch vụ lưu một chuyên mục mới vào CSDL, thành phần CategoryDAO sẽ cung cấp hàm sau (sử dụng ADO.NET để kết nối với CSDL):
public void CreateCategory(Category category)
{
// tạo connection
...
// tạo command, khởi tạo các tham số...
command.Parameters.Add(new SqlParameter("@KeyName", category.KeyName));
command.Parameters.Add(new SqlParameter("@Name", category.Name));
command.Parameters.Add(new SqlParameter("@Description", category.Description));
// lưu dữ liệu
command.ExecuteNonQuery();
}


Phân tích và thiết kế

Ứng dụng của chúng ta sẽ viết bằng ASP.NET 2.0 và SQL Server 2000/2005. Ngôn ngữ được dùng là C#.

Chúng ta đã tìm hiểu qua các thành phần chính trong mô hình 3 lớp, giờ đến lúc bắt tay vào thiết kế các thành phần đó cho ứng dụng tin tức của chúng ta. Trong ứng dụng tin tức mà chúng ta đã tìm hiểu yêu cầu qua bài viết trước, chúng ta thấy có hai đối tượng thông tin chính mà chúng ta cần quản lý là các chuyên mục(category) và tin tức(news). Ứng dụng quản lý của chúng ta sẽ thu thập những đối tượng dữ liệu này từ người dùng(phóng viên, biên tập viên) và trình bày lại cho người sử dụng khác xem(độc giả). Giờ chúng ta bắt tay vào thiết kế các thành phần Business Entities.
Business Entities

Ứng dụng của chúng ta sẽ bao gồm 2 entity chính là Category và News.

Trước hết là Category. Một chuyên mục (Category) sẽ gồm những thông tin sau:

CategoryId: Mã chuyên mục - sẽ được sinh tự động khi tạo mới
: Tên chuyên mục. VD: Vi tính, Kinh tế...
KeyName: Tên gợi nhớ dùng để phân biệt chuyên mục với nhau (không được trùng nhau). VD với VNExpress bạn sẽ thấy có Vi-tinh, Suc-khoe...
Description: Mô tả cho chuyên mục. VD: Description cho Vi-tinh là: thông tin mới nhất về công nghệ thông tin của Việt Nam và thế giới...
Picture: Hình ảnh đại diện cho chuyên mục

Trong ứng dụng đơn giản này, chúng ta chỉ thiết kế chuyên mục có một cấp, không có các chuyên mục con, cháu... Và ứng dụng này cũng không có phần quản lý các nhà biên tập viên, nhà báo và cơ chế cấp quyền hạn duyệt bài, gửi bài...Tôi dành phần này cho các bạn phát triển thêm, nhưng tôi cũng sẽ gợi ý cho các bạn cách thiết kế trong phần mở rộng ứng dụng.

Tiếp theo là News. Mỗi một bản tin sẽ có các thông tin sau:

NewsId: mã bản tin. Sẽ được sinh tự động khi tạo mới.
Title: tiêu đề chính của bản tin. VD: Microsoft tuyên bố phá sản!
Subtitle: tiêu đề phụ của bản tin. VD: Bill Gates từ chức!
Excerpt: phần giới thiệu ngắn gọn của bản tin
Authors: danh sách tác giả bản tin. VD: Nguyễn Văn A, Hoàng Thị B
Keywords: danh sách từ khóa chính trong bản tin dùng để tìm kiếm. VD: Microsoft, broken
Body: Đây là phần nội dung chính của bản tin.
Picture: Hình ảnh minh họa cho bản tin.
CreationTime: Ngày giờ tạo bản tin
LastModificationTime: Ngày giờ chỉnh sửa cuối cùng của bản tin
PublishedTime: Ngày giờ bản tin được đăng
TotalViews: Tổng số lượt người xem bản tin
TotalRates: Tổng số lượt người đánh giá bản tin
Rate: Điểm đánh giá trung bình của bản tin
Status: Trạng thái hiện tại của bản tin. Có thể là Writting(Đang viết), Approving(Đang chờ duyệt), Published(Đã được đăng)

Business Service Components

Bước tiếp theo chúng ta sẽ phân tích và thiết kế các Business Service Components. Các thành phần này sẽ làm nhiệm vụ chính cung cấp các dịch vụ cho lớp Presentation dùng để lấy và lưu trữ thông tin.

Lớp CategoryService

Chúng ta cần những thao tách chính trên đối tượng dữ liệu Category:
Tạo mới - CreateCategory(Category category)
Cập nhật - UpdateCategory(Category category)
Xóa - DeleteCategory(int categoryId)
Lấy thông tin chi tiết - GetCategory(int categoryId)
Lấy danh sách các category - GetCategories()
Kiểm tra một Key xem có trong database chưa - CheckKey(string keyName). Thao tác này dùng để kiểm tra xem khi tạo mới một category thì KeyName đã tồn tại trong hệ thống chưa. Thao tác này có thể dùng trên lớp Presentation để kiểm tra và thông báo lỗi cho người dùng khi họ nhập một tên khóa đã có trong hệ thống

Lưu ý: Chúng ta sẽ thực hiện các business logic của hệ thống trong lớp này.

Tương tự đối với lớp NewsService, dựa trên những gì yêu cầu chúng ta phân tích ở bài viết đầu tiên, chúng ta cần những thao tác chính sau đây trên đối tượng News:
Tạo mới - CreateNews(News news)
Cập nhật - UpdateNews(News news)
Xóa - DeleteNews(int newsId)
Lấy thông tin chi tiết - GetNews(int newsId)
Lấy danh sách các bản tin thuộc một chuyên mục nào đó, sắp xếp theo tin mới nhất - GetNewsOfCategory(int categoryId, int page, int pageSize, out int totalRecords)
Cập nhật số lần xem của một bản tin - UpdateTotalViews(int newsId)
Cập nhật đánh giá cho một bản tin - UpdateRate(int newsId, int rate)
Tìm bài viết dựa trên từ khóa - SearchNews(string keyWords, int page, int pageSize, out int totalRecords)

Trong các hàm trên, các bạn chú ý đến hàm GetNewsOfCategory. Trong hàm này có các tham số dùng để phân trang các bản tin. Chúng ta cần đến chức năng này vì khi trình bày trên trang tin, chúng ta chỉ trình bày một số lượng có hạn các bản tin của một chuyên mục nào đó chứ không thể trình bày tất cả trên màn hình được. Khi người dùng muốn xem thêm, họ có thể chọn trang tiếp theo hoặc nhấp vào link Xem tiếp, lúc đó ứng dụng sẽ trình bày các bản tin ở các trang tiếp theo. Tham số totalRecords cho chúng ta biết được tổng số bản tin thật sự có trong chuyên mục đó.

Lưu ý: Khi phân tích thiết kế ban đầu bạn không thể nào hình dung được hết các yêu cầu phát sinh để thiết kế trước các thao tác cần thiết. Bạn phải cập nhật bản thiết kế thường xuyên để phù hợp với yêu cầu. Bản thiết kế này vẫn còn thiếu một số chức năng cần thiết mà tôi sẽ trình bày cho các bạn trong bài viết tiếp theo, chúng ta sẽ chỉnh sửa bản thiết kế này trong quá trình phát triển ứng dụng để phù hợp với các yêu cầu phát sinh mà chúng ta chưa nhìn thấy hết khi thiết kế.

Data Access Components

Bây giờ chúng ta sẽ thiết kế các lớp dùng để truy xuất và cập nhật dữ liệu. Các hàm của các lớp DAO cũng khá đơn giản, chỉ làm nhiệm vụ cập nhật dữ liệu vào database và truy xuất dữ liệu từ database. Các bạn cũng thấy chức năng nó giống như trên lớp Business Logic, nhưng ở đây chúng ta không có bất kỳ ràng buộc logic gì, chỉ đơn giản thực hiện việc truy xuất dữ liệu mà thôi. Các business logic đã được kiểm tra trên lớp Business Logic.

Hiện thực lớp Business Logic & Data Access

Sau khi đã xong bước thiết kế, chúng ta sẽ tiến hành hiện thực 2 lớp Business và Data Access. Các bạn có thể xem source code đính kèm để biết chi tiết cách hiện thực 2 lớp này như thế nào. Lớp Presentation sẽ được thiết kế và hiện thực trong bài viết tiếp theo. Phần bên dưới tôi sẽ trình bày một số điểm chính trong cách hiện thực.

Hiện thực Data Access Components

Do ứng dụng của chúng ta đơn giản nên được giới hạn sẽ dùng với CSDL SQL Server 2000/2005 nên lớp này không được thiết kế để chạy cùng lúc với nhiều loại database khác nhau. Chúng ta sẽ dùng cái Stored Procedures để truy xuất dữ liệu an toàn và dễ thay đổi hơn, tránh bị các lỗi như SQL Injection(không thể tránh hoàn toàn nếu bạn không hiện thực đúng). Các bạn có thể xem qua một cách hiện thực một hàm cơ bản như thế nào:
public void CreateCategory(Category category)
{
using (SqlConnection connection = GetConnection())
{
SqlCommand command = new SqlCommand("spCategoriesCreate", connection);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@KeyName", category.KeyName));
command.Parameters.Add(new SqlParameter("@Name", category.Name));
command.Parameters.Add(new SqlParameter("@Description", category.Description));
command.Parameters.Add(new SqlParameter("@Picture", category.Picture));
SqlParameter paramCategoryId = new SqlParameter("@CategoryId", SqlDbType.Int, 4);
paramCategoryId.Direction = ParameterDirection.Output;
command.Parameters.Add(paramCategoryId);
connection.Open();
command.ExecuteNonQuery();
if (paramCategoryId.Value != DBNull.Value)
category.CategoryId = (int)paramCategoryId.Value;
else
throw new DataAccessException(String.Format(Resources.Strings.CreateEntityException, "Category"));
}
}

Stored Procedure spCategoriesCreate đơn giản được viết như sau:
CREATE PROCEDURE dbo.spCategoriesCreate
@Name nvarchar(50),
@KeyName varchar(30),
@Description ntext,
@Picture varchar(256),
@CategoryId int output
AS
INSERT INTO Categories
(
Name,
KeyName,
Description,
Picture
)
VALUES
(
@Name,
@KeyName,
@Description,
@Picture
)

SELECT @CategoryId = SCOPE_IDENTITY()

Hiện thực lớp Business Logic

Hiện thực lớp Business Logic đòi hỏi bạn phải nắm rõ các business logic của ứng dụng. Ví dụ đối với ứng dụng tin tức của chúng ta thì khi tạo một chuyên mục mới, bạn phải kiểm tra xem KeyName của chuyên mục đó đã có trong hệ thống chưa? Nếu có rồi thì phải báo lỗi, và nếu chưa có thì chúng ta kiểm tra KeyName đó có hợp lệ hay không? (Chỉ chứa kí tự alphabet, chữ số, gạch dưới và gạch ngang...).
public static void CreateCategory(Category category)
{
// Has this key name existed?
if (!CheckKey(category.KeyName))
throw new BusinessException(String.Format(Resources.Strings.KeyNameExisted, category.KeyName));
// is this key name valid?
if (!ValidateKey(category.KeyName))
throw new BusinessException(String.Format(Resources.Strings.InvalidKeyName, category.KeyName));
// ok , now save it to database
CategoryDAO categoryDAO = new CategoryDAO();
categoryDAO.CreateCategory(category);
}

Click vào link dưới đây đểdownload.
Ứng dụng tin tức asp.net 2.0
Bài tham khảo

Cách Tạo RSS trong ASP.NET (Tham khảo từ zensoft.vn)

Chắc Các bạn đã từng nhìn thấy hoặc từng sử dụng chức năng RSS của một website. Bài viết này sẽ hướng dẫn các bạn làm thế nào để tạo một RSS cho một website, Thật Đơn giản.

Trước hết, chúng ta tìm hiểu định nghĩa về RSS là gì.

RSS (Really Simple Syndication) là định dạng dữ liệu dựa theo chuẩn XML được sử dụng để chia sẻ và phát tán nội dung Web. Việc sử dụng các chương trình đọc tin (News Reader, RSS Reader hay RSS Feeds) sẽ giúp bạn luôn xem được nhanh chóng tin tức mới nhất

Mỗi tin dưới dạng RSS sẽ gồm : Tiêu đề, tóm tắt nội dung và đường dẫn nối đến trang Webchứa nội dung đầy đủ của tin.

Quay trở lại về chương trình. Trước hết, chúng ta sẽ tạo 2 struct để thể hiện kênh (channel) và nội dung. Về sau chỉ việc dùng 2 channel này để tạo các kênh và nội dung thông tin
Đây là struct cho một RSS Channel
 
     public struct RssChannel
        {
            public string Title;
            public string Link;
            public string Description;
         }

Còn đây là struct cho một RSS Item
      public struct RssItem
        {
            public string Title;
            public string Link;
            public string Description;
        }

Sau đó chúng ta viết 2 methods để tạo channel và tạo các item trong channel như sau:
       private static XmlDocument addRssChannel(XmlDocument xmlDocument, RssChannel channel)
         {
             XmlElement channelElement = xmlDocument.CreateElement("channel");

             XmlNode rssElement = xmlDocument.SelectSingleNode("rss");

             rssElement.AppendChild(channelElement);

             XmlElement titleElement = xmlDocument.CreateElement("title");

             titleElement.InnerText = channel.Title;

             channelElement.AppendChild(titleElement);

             XmlElement linkElement = xmlDocument.CreateElement("link");

             linkElement.InnerText = channel.Link;

             channelElement.AppendChild(linkElement);

             XmlElement descriptionElement = xmlDocument.CreateElement("description");

             descriptionElement.InnerText = channel.Description;

             channelElement.AppendChild(descriptionElement);

              // Generator information

             XmlElement generatorElement = xmlDocument.CreateElement("generator");

             generatorElement.InnerText = "Your RSS Generator name and version ";

             channelElement.AppendChild(generatorElement);

             return xmlDocument;
          }

và Đây là code để tạo một item cho channel:
         private static XmlDocument addRssItem(XmlDocument xmlDocument, RssItem item)
           {
              XmlElement itemElement = xmlDocument.CreateElement("item");

              XmlNode channelElement = xmlDocument.SelectSingleNode("rss/channel");

              XmlElement titleElement = xmlDocument.CreateElement("title");

              titleElement.InnerText = item.Title;

              itemElement.AppendChild(titleElement);

              XmlElement linkElement = xmlDocument.CreateElement("link");

              linkElement.InnerText = item.Link;

              itemElement.AppendChild(linkElement);

              XmlElement descriptionElement = xmlDocument.CreateElement("description");

              descriptionElement.InnerText = item.Description;
 
              itemElement.AppendChild(descriptionElement);

                // append the item

              channelElement.AppendChild(itemElement);

              return xmlDocument;
            }

Sau đó ta lập một class để sinh ra RSS, ví dụ tên class là NewsRss, class này sẽ chứa 2 cái struct trên và cả 2 methods trên.

Code của class thì chỉ quan trọng cái constructor để tạo XmlDocument và một số methods nhằm tạo channel, add item, trả về
xml document:
        public NewsRSS()
         {
             _rss = new XmlDocument();
             XmlDeclaration xmlDeclaration = _rss.CreateXmlDeclaration("1.0", "utf-8", null);
             _rss.InsertBefore(xmlDeclaration, _rss.DocumentElement);

             XmlElement rssElement = _rss.CreateElement("rss");
             XmlAttribute rssVersionAttribute = _rss.CreateAttribute("version");

             rssVersionAttribute.InnerText = "2.0";
             rssElement.Attributes.Append(rssVersionAttribute);

             _rss.AppendChild(rssElement);
       
            }

         public void AddRssChannel(RssChannel channel)
           {
               _rss = addRssChannel(_rss, channel);
           }

         public void AddRssItem(RssItem item)
           {
               _rss = addRssItem(_rss, item);
           }

         public string RssDocument
           {
              get
                 {
                    return _rss.OuterXml;
                 }
           }

    public XmlDocument RssXMLDocument
    {
        get
        {
            return _rss;
        }
    }

Về bây giờ ta tạo các instant của class này mà sử dụng thôi:

Ví dụ tạo rss document và tạo channel:
        NewsRSS rss = new NewsRSS();

        NewsRSS.RssChannel channel = new NewsRSS.RssChannel();

        channel.Title = "Zensoft Website";

        channel.Link = "http://zensoft.vn";

        channel.Description = "Website Chia xẻ Thông tin về CNTT.";

        rss.AddRssChannel(channel);

Ví dụ tạo rss item:/COLOR]

        NewsRSS.RssItem item = new NewsRSS.RssItem();

        item.Title = "Lập Trình";

        item.Link = "http://zensoft.vn/ShowCategory.aspx?ID=9";

        item.Description = "Các Bài Viết Hướng Dẫn về lập Trình";

        rss.AddRssItem(item);

Cuối cùng, write cái Rss trên thành Xml document ra Response object trại cái ASPX page tương tác với bên ngoài:
        Response.Clear();

        Response.ContentType = "text/xml";

        Response.Write(rss.RssDocument);

        Response.End();

Các Bạn có thể download mã nguồntại đây.

Những tính năng mới trong SQL Server 2005 - Phần II.

Những tính năng mới của một sản phẩm mới luôn được mọi người quan tâm. Đó chính là những điều khác biệt của sản phẩm mới với những sản phẩm cũ.

5. Nâng cao độ sẵn sàng của CSDL:

SQL Server 2005 hỗ trợ 3 loại nâng cao độ sẵn sàng của CSDL:

- Truy cập dữ liệu đồng thời.

- Sẵn sàng sau khi Server bị hỏng hoặc do một thảm họa gì đó.

- Sẵn sàng trong khi bảo trì CSDL và sửa đổi.

a, Truy cập dữ liệu đồng thời: Có nghĩa là bạn có thể nhận được dữ liệu trong khi những người dùng khác cũng đang truy cập nó.

- Tạo ảnh dữ liệu: Tạo bản sao logic của CSDL ở thời điểm xác định. Bạn có thể dùng ảnh dữ liệu (Snapshot) làm nguồn cho các báo cáo Reporting Services mà không cần nạp bản sao trực tuyến của CSDL.

- Cô lập ảnh dữ liệu: Đây là cấp cô lập giao dịch mới để cải thiện độ sẵn sàng của CSDL cho các ứng dụng đọc, bởi vì cơ chế ghi không khóa cơ chế đọc. Các ứng dụng ghi bắt buộc phải dò tìm xung đột.

- Lập chỉ mục trực tuyến: Trong thời gian chỉ mục được xây dựng lại, nó vẫn có thể được dùng cho việc truy xuất dữ liệu. Điều này xem như cải thiện hiệu suất thực thi trong khoảng thời gian đó.

b, Sẵn sàng sau khi Server bị hỏng: SQL Server 2005 cung cấp khả năng sẵn sàng của CSDL liên quan đến hỏng hóc của Server hay các tình huống sự cố khác tốt hơn. Các tính năng sau được thêm vào liên kết lỗi server đã được hỗ trợ trong SQL Server 2000 Enterprise:

- Khôi phục nhanh hơn: Sau khi server bị hỏng, CSDL được làm để sẵn sàng cho người dùng nhanh hơn trong quá trình khôi phục.

- Tạo bản sao CSDL trực tuyến (Database Mirroring): Sử dụng phần cứng chuẩn, Server lưu bản sao (Mirror Server) luôn được duy trì bản sao CSDL mới nhất. Khi Server chính bị lỗi, Server lưu bản sao sẵn sàng để sử dụng chỉ trong vài giây và server chính lúc này bị ẩn đi đối với người dùng.

- Định hướng ngầm lại kết nối cho Client: Khi khôi phục server lưu bản sao dùng định hướng ngầm lại kết nối cho client (Transparent Client redirect). Lớp MDAC (Micrososft Data Access Component) ghi nhận Mirror Server khi kết nối đến server chính. Nếu server chính bị hỏng, MDAC định hướng kết nối tới Mirror Server.

c, Sẵn sàng trong khi bảo trì CSDL: Quá trình sao lưu và khôi phục phải tin cậy nếu bạn muốn khôi phục dữ liệu hiệu quả. Sau đây là một số tính năng hay mà SQL Server 2005 cung cấp:

- Sửa chữa trực tuyến từng phần (Finer Grained Online repairs): Bạn có thể khôi phục dữ liệu fileGroup với CSDL đang sẵn sàng sau khi fileGroup chính được khôi phục.

- Nâng cao chức năng kiểm tra sao lưu dự phòng (Enhanced Backup Verification): Việc kiểm tra các bản sao lưu dự phòng hoàn thiện hơn các phiên bản SQL Server trước. Cú pháp Restore Verify Only kiểm tra mọi thức có thể kiểm, rút ngắn quá trình ghi bản sao lưu dự phòng xuống Server.

- Tạo bản sao của bản sao lưu dự phòng (Backup Media Mirrroring): Điều này cho phép bạn tạo thêm bản sao lưu dự phòng để giảm thiểu khả năng khôi phục không thành công hoặc tạo bản sao lưu ngoài.

- Kiểm tra tổng trang CSDL (Database Page Checksums): Kiểm tra tổng (Checksum) được thêm vào từng trang dữ liệu trong CSDL để dò tìm lỗi, nếu không có thể bị sai sót.

- Kiểm tra tổng bản sao lưu dự phòng (Backup Checksums): Thêm cơ chế dò tìm lỗi trong khi thực hiện sao lưu dự phòng. Nó có thể tìm lỗi trước và sửa lỗi sau.

- Sao lưu dự phòng dữ liệu và tập tin log (backup Data and Logs): Những vấn đề với sao lưu dự phòng tập tin log cùng thời gian với sao lưu dự phòng dữ liệu của các phiên bản trước đã được giải quyết trong SQL Server 2005. Bây giờ nó có thể tiến hành sao lưu dự phòng dữ liệu cùng lúc với sao lưu dự phòng tập tin log tương ứng.

6. Nâng cao khả năng mở rộng CSDL:

- Cài đặt trong một liên cung: Bạn có thể cài đặt SQL Server 2005 trong một liên cung (Cluster) lên đến tám nút có thông báo tình trạng của quá trình trên mỗi nút. Khi cài đặt, Analysis Services sẽ được cài đặt trong một liên cung. Khả năng cài đặt tự hành vào liên cung là điểm mới của SQL Server 2005.

- Phân vùng dữ liệu: Một vài đối tượng CSDL rất lớn, vì thế cần thiết phải chia nhỏ các đối tượng CSDL thành những phần nhỏ hơn để có thể quản lý được. Giả sử bạn có một bảng chứa dữ liệu bán lẻ trực tuyến rất lớn chứa dữ liệu của nhiều tháng. Bạn có thể cải thiện hiệu suất thực thi bằng cách chia bảng thành nhiều phân vùng nhỏ hơn với mỗi phân vùng chứa dữ liệu của từng tháng. Bạn cũng có thể phân vùng chỉ mục. Nếu phân vùng dữ liệu và chỉ mục được canh phù hợp với nhau, bạn có thể lấy các phân vùng ra khỏi bảng hoặc đưa vào bảng. Điều này rất hữu ích nếu bạn có dữ liệu của 12 tháng sau cùng, phân vùng theo từng tháng. Bạn có thể lấy dữ liệu của 12 tháng trước ra khỏi CSDL và tạo phân vùng mới cho tháng hiện thời.

- Giám sát điều chỉnh cỗ máy CSDL: Database Engine Tuning Advisor (DTA): là chức năng giám sát điều chỉnh cỗ máy CSDL của SQL Server 2005 thay thế cho SQL Server 2000 Index Tuning Wizard. Database Tuning Advisor có thể giúp bạn điều chỉnh hiệu suất thực thi cho toàn bộ CSDL chứ không chỉ riêng cho lập chỉ mục như phiên bản trước.

+ DTA có thể quản lý các phân vùng và hỗ trợ điều chỉnh vài hoạt động liên quan đến việc sử dụng nhiều CSDL . Nó giúp cải thiện khả năng sẵn sàng của CSDL trong khi tạo chỉ mục. Bạn có thể thiết lập thời gian tối đa cho DTA để đạt mức tiêu chuẩn nhằm tránh các trường hợp chạy quá lâu. Bạn cũng có thể tìm hiểu các phân tích "What if" trong Database Tuning Advisor cho phép bạn khám phá những hiệu quả có thể tiếp cận được.

- Hỗ trợ gắn nóng bộ nhớ: Nếu nhu cầu bộ nhớ của của SQL Server của bạn tăng đáng kể và bạn đang chạy SQL Server trên Window Server 2003 với phần cứng thích hợp. Bạn có thể tận dụng khả năng hỗ trợ gắn nóng bộ nhớ (Hot - Add Memory) để gắn thêm bộ nhớ mà không cần tắt máy chủ. Điều này cho phép bạn cải thiện hiệu suất thực thi dưới tải cao và tránh được thời gian chết.

- Replication (Đồng bộ): Hiệu suất sao chép và đồng bộ được cải thiện trong SQL Server 2005. Số Subscriber trong replication được tăng lên.

Zensoft Website - Những tính năng mới trong SQL 2005.

Analysis Services

7. Tăng cường khả năng khai thác thông tin:

- Khai thác thông tin (Business Intelligence) là sức mạnh đáng chú ý của SQL Server 2005. Các tính năng được thêm vào Analysis Services. Integration Services thay thế cho Data Transformation Services và Reporting Services được xây dựng trên các tính năng của Reporting Services 2000 được phát hành đầu tiên vào năm 2004.

- Khai thác thông tin trong SQL Server 2005 sử dụng các mẫu Integrate, Analyze và Report. Bạn có thể dùng Integration Services để kết hợp dữ liệu từ nhiều nguồn lại với nhau. Sử dụng Analysis Services để có được cái nhìn chi tiết bên trong dữ liệu. Bạn có thể tạo các báo cáo thể hiện các phân tích kinh doanh với người dùng bằng reporting Services.

a, Integration Services:

- SQL Server Integration services (SSIS) là một cải tiến từ dịch vụ biến đổi dữ liệu (Data Transformation). Những khác biệt chính bao gồm việc giới thiệu các công cụ thể hiện dạng đồ họa như SSIS Designer thông qua BIDS và SQL Server Import and Export Wizard. Tăng khả năng mở rộng bằng cách sử dụng các tác vụ tùy chỉnh, nguồn dữ liệu, nơi lưu gửi dữ liệu tới và những biến đổi dữ liệu. những thay đổi về kiến trúc.

- Dòng dữ liệu và dòng điều khiển được tách biệt thành 2 cỗ máy riêng: Cỗ máy điều khiển ở thời gian chạy cho Integration Services và cỗ máy dòng dữ liệu cho Integration Services. Sự tách biệt này giúp cho sự kiểm soát việc thực thi gói dữ liệu tốt hơn, tăng tính trực quan của việc biến đổi dữ liệu và nâng cao khả năng mở rộng của integration Services bằng cách đơn giản hóa việc tạo và thực thi các tác vụ tùy chỉnh và biến đổi dữ liệu.

- Các tác vụ mới:

+ WMI Data Reader: truy vấn dữ liệu WMI(Windows Management Instrumentation).

+ WMI Event Watcher: Lắng nghe các sự kiện WMI.

+ Hệ thống tập tin: Thực hiện các hoạt động trên tập tin và thư mục trong hệ thống tập tin.

+ Web Service: Truy xuất Web Service.

+ XML: Làm việc với các tài liệu XML

+ Analysis Services Execute DDL: Thực thi các tập lệnh DDL.

+ Data Mining Query: Truy vấn dữ liệu cho các mô hình khai thác dữ liệu.

b. Analysis Service:

- Có nhiều thay đổi được thực hiện đối với công cụ Analysis Service, thỉnh thoảng được xem như là công cụ phân tích kinh doanh (Business Analytics). Được xây dựng từ nền tảng SQL Server 2000 Analysis Services, Microsoft SQL Server 2005 Analysis Service (SSAS) hỗ trợ thêm cho chức năng khai thác thông tin (Business Intelligent), khả năng mở rộng gia tăng, tính sẵn có và bảo mật cho các giải pháp Business Intelligent trong khi làm cho chúng dễ tạo, dễ triển khai và dễ quản lý.

- Các Trình thiết kế trong SSAS:

Trình Thiết kế Diễn Giải
Cube Designer Hỗ trợ cho việc sử dụng thông tin phân tích, giao dịch, kịch bản tập lệnh MDX và các hàm chỉ số hoạt động chính KPI.
Data Mining Model Designer Được dùng để định nghĩa, xem và kiểm tra các cấu trúc khai phá, các mô hình khai phá trong BIDS.
Data Source View Designer. Cung cấp môi trường dựa trên kiểu biểu đồ, đơn giản để định nghĩa các bảng và các quan hệ trong Data Source View tới các đối tượng Analysis Service.
Dimension Designer Nâng cao để cung cấp cho những định nghĩa mã phân tích dựa trên thuộc tính, các cấu trúc phân cấp thuộc tính và do người dùng định nghĩa, giao dịch và ghi trả mã phân tích.

- Các Wizard SSAS mới và cải tiến:

Wizard Diễn Giải
Business Intelligent Wizard Cung cấp các tính năng khai thác thông tin nâng cao, như chuyển đổi tiền tệ.
Cube Wizard Hướng dẫn bạn thực hiện từng bước thiết kế và lặp mẫu dữ liệu ba chiều. Cung cấp những tính năng nâng cao bao gồm công nghệ tự xây để phân tích và quyết định mã phân tichsm kiến trúc hình cây, đánh giá các nhóm từ các bảng và quan hệ của nguồn dữ liệu bên dưới.
Data Mining Model Wizard Tạo mới các cấu trúc khai phá dựa trên quan hệ hoặc là dữ liệu phân tích đa chiều có thể được sửa đổi sau đó bằng Data Mining Designer.
Data Source View Wizard Tự động và nhanh chóng nhận thông tin giản đồ quan hệ của nguồn dữ liệu và xây dựng các bảng, các quan hệ trên các đối tượng Analysis Services, như Dimensions và Cubes.
Dimension Wizard Thêm dần những thay đổi về chiều dữ liệu, ghi trở lại chiều dữ liệu, đánh giá dựa trên tài khoản và thời gian để thiết kế các chiều của CSDL trong Analysis Services.
Migration Wizard Chuyển CSDL từ các phiên bản Analysis Services trước đây sang thể hiện của SSAS.
Schema Generation Wizard Cho phép bạn tạo các giản đồ quan hệ dựa trên các đối tượng Analysis Service đang tồn tại, Có thể được dùng để định nghĩa các chiều và các khối dữ liệu. Sau đó thiết kế bảng nhìn của nguồn dữ liệu có thể được dùng để tạo và đưa đến một CSDL quan hệ đặc trưng để hỗ trợ giải pháp khai thác thông tin của bạn.

- Những thay đổi và cải tiến trong SSAS:

Tính Năng Diễn Giải
ADOMD.NET Trước đây là thành phần trong SQL Server 2000 ADOMD.NET SDK, bây giờ được tích hợp trong SSAS
Analysis Management Objects (AMO) AMO thay thế cho mô hình đối tượng Decision Support Objects (DSO)
Microsoft .NET FrameWork SSAS được tích hợp hoàn toàn vào Microsoft .NET Framework.
Các biểu thức đa chiều dữ liệu Ngôn ngữ Multidimetion Expression (MDX) được thêm vào hỗ trợ cho kịch bản dòng lệnh, kiểm soát phạm vi ngữ cảnh, cải thiện tương tác khối dữ liệu con.
Lưu giữ kết quả tính toán Các kết quả của thành viên được tính toán hoặc các ô được tính toán bấy giờ có thể được lưu giữ và quản lý trong vùng nhớ tạm riêng biệt cho mỗi khối.
Thủ tục lưu sẵn SSAS cung cấp khả năng lập trình và mở rộng hơn trong thủ tục lưu sẵn. Bạn có thể dùng các chương trình bên ngoài trong ngôn ngữ C#, C++ hoặc Visual basic để mở rộng chức năng thực thi của SSAS .
Liên kết lỗi Hỗ trợ liên kết lỗi 8 nút trên hệ thống 32 bit và 4 nút trên hệ thống 64 bit.
Hỗ trợ ngôn ngữ và đối chiếu Hỗ trợ thiết lập ngôn ngữ và đối chiếu ở cả mức thể hiện và mức CSDL.
Hỗ trợ đa thể hiện. Khả năng cài đặt tới 50 thể hiện của dịch vụ Analysis Services từ phiên bản Microsoft SQL Server 2005 Enterprise Edition trên một máy tính. Lên đến 16 thể hiện của dịch vụ Analysis Services có thể được cài đặt từ các phiên bản khác của SQL Server 2005.
Các dòng dữ liệu bị mồ côi trong bảng Khả năng sử dụng thiết lập cho mỗi cấu trúc phân cấp trong một chiều dữ liệu để xác định làm thế nào quản lý các dòng dữ liệu bị mồ côi trong bảng.
Lưu tạm tích cực Dùng để làm tăng hiệu năng của các xử lý chiều, phân vùng và tập hợp dữ liệu.
Hỗ trợ xử lý Hỗ trợ trực tiếp xử lý song song.
Hỗ trợ ngôn ngữ kịch bản Khả năng thực thi dòng lệnh các đối tượng CSDL và thường trình bằng cách sử dụng Analysis Services Script language (ASSL)
Hỗ trợ XML Hỗ trợ hoàn toàn XML theo đặt tả XMLA 1.1 (XML for Analysis)

- Những cải tiến trong khối, chiều và khai thác dữ liệu:

Đối Tượng Mục Diễn Giải
Khối dữ liệu Chỉ số hoạt động KPI KPI là phương pháp đánh giá có thể tùy chỉnh được dùng bởi các công ty để theo dõi và cải tiến hiệu năng.
Nhiều bảng thật Nhiều bảng thật trong một khối đơn được hỗ trợ thông qua việc sử dụng các nhóm đánh giá.
Luật phối cảnh Luật phối cảnh mới cho phép bạn định nghĩa tập con xem được của một khối dữ liệu và có thể cung cấp một điểm nhìn rõ ràng về ứng dụng hoặc kinh doan trên khối dữ liệu
Các phép tính bán công thêm Cho phép thực hiện các phép tính tập hợp trên mã phân tích tài khoản được thiết lập bằng tài khoản. Người sử dụng sau đó thiết lập khối phản ánh cấu trúc tài khoản công ty mà không cần viết các công thức dài lê thê và phức tạp
Chiều dữ liệu các thuộc tính Chiều dữ liệu bây giờ dựa trên các thuộc tính tương ứng với các cột trong bảng của chiều
Các nhóm phép tính đã liên kết và các chiều dữ liệu Dữ liệu từ các nguồn dữ liệu khác nhau có thể được sử dụng bằng cách liên kết một khối với nhóm phép tính trong một khối khác được lưu trữ trong cùng CSDL hoặc trong một CSDL khác trên thể hiện của SSAS. Bạn cũng có thể liên kết khối với chiều trong một CSDl khác.
Đa cấu trúc phân cấp Chỉ được hỗ trợ trong một chiều đơn.
Các kiểu chiều dữ liệu đã được đơn giản hóa Hai chiều kiểu dữ liệu là chuẩn và liên kết thay thế cho 4 kiểu chiều khác nhau trong SQL Server 2000 Analysis Services.
Khai phá dữ liệu Giải thuật Microsoft Association Giải thuật này xây dựng cho những qui tắc mô tả những thông tin dữ liệu nào thường xuất hiện với nhau trong một giao dịch nhất.
Giải thuật Microsoft Linear Regression Giải thuật này cung cấp hỗ trợ hồi quy tuyến.
Giải thuật Microsoft Logistic Regression Giải thuật này cung cấp hỗ trợ hồi quy logic.
Giải thuật Microsoft Nave Bayes Giải thuật này được dùng để khám phá dữ liệu giữa các cột đầu vào và các cột có thể dự đoán trước và khám phá quan hệ giữa chúng.
Giải thuật Microsoft Neural Network Giải thuật này tạo sự phân loại và mô hình khám phá hồi quy bằng cách xây dựng các mạng neron cảm nhận đa lớp. Lý tưởng cho các mô hình phi tuyến tính.
Giải thuật Microsoft Sequence Clustering Giải thuật này nhận ra các cung liên kết của các sự kiện tương tự nhau được sắp xếp theo thứ tự trong một chuỗi mà có thể được dùng để dự đoán thứ tự tương tự của các sự kiện trong chuỗi dựa trên những đặc tính đã biết.
Giải thuật Microsoft Time Series Giải thuật phân tích dữ liệu có liên hệ đến thời gian, chẳng hạn như dữ liệu bán hàng hàng tháng hoặc lợi nhuận hàng năm, cho các mẫu dùng để dự đoán giá trị trong thời gian tới.

- Những thay đổi khác đối với khối dữ liệu, chiều dữ liệu và khai thác dữ liệu bao gồm:

+ Dữ liệu và siêu dữ liệu bây giờ chỉ được nạp vào bộ nhớ khi cần thiết, không giới hạn chiều dữ liệu.

+ Một vài tác vụ được thêm vào SSAS có thể được dùng để tạo một giải pháp khai phá dữ liệu hoàn hảo.

+ Yêu cầu nhóm thành viên cho các chiều dữ liệu đã được loại bỏ.

c. Reporting Services:

- Nếu có một công nghệ được mọi người dùng nhiều nhất khi truy cập vào SQL Server 2005 thì đó chính là dịch vụ báo cáo Reporting Services. Với hầu hết người dùng, báo cáo vẫn là trái tim của việc quản lý CSDL. Với Report Builder mới và Report Designer đã được cải thiện rất nhiều. Tất cả đã được tích hợp hoàn toàn với BIDS.

- Report Builder: Có thể chứng minh là phần thêm được chờ đợi nhiều nhất trong SQL Server 2005. Được thiết kế cho người dùng cuối mà không cần có nhiều kiến thức kỹ thuật, được dùng từ giao diện web để tạo ra những báo cáo đặc biệt. Report Builder có thể được truy suất thông quan URL hoặc từ Report Manager.

- Model Builder: Một loại dự án mới được thêm vào, nó được dùng bởi Report Builder để tạo các báo cáo đặc biệt. Bạn có thể tạo một mẫu dùng Model Designer trong BIDS, Model Designer cung cấp một số Wizard (Tạo theo quy trình mẫu) để giúp bạn chỉ ra nguồn dữ liệu, View dữ liệu và phát sinh các báo cáo mẫu.

- Report Designer: Report Designer mới chạy trong BIDS với một số thay đổi và cải tiến so với phiên bản trước:

+ Expression Editor bây giờ chứa nhiều hàm cho người tạo cũng như những tính năng theo ngữ cảnh.

+ Bây giờ bạn có thể chỉ ra nguồn dữ liệu đông, cho phép bạn chuyển đổi nguồn dữ liệu ở thời gian chạy dựa trên điều kiện bạn chỉ ra trong biểu thức.

+ Analysis Services Query Designer mới giúp bạn tạo các truy vấn MDX

+ Xử lý dữ liệu mở rộng mới cho phép bạn xây dựng các báo cáo từ dữ liệu được phát sinh bởi gói SSIS.

- Report Functionality: SQL Server 2005 Reporting Services bao gồm những cải tiến trong chức năng báo cáo đem đến những lợi ích đặc biệt cho người dùng:

+ Sắp xếp theo những tương tác trong báo cáo.

+ Khả năng in các báo cáo nhiều trang.

+ Khả năng dùng các tham số đa trị.

- Reporting Services Configuration Tool: Đây là công cụ mới chạy từ trình đơn Start của Window trên máy tính chạy Report Server: (Start > SQL Server 2005 > Configuration Tool > Reporting Services Configuration). Được dùng để cấu hình Report Server để tạo và sử dụng CSDL Report Server trên một thể hiện của SQl Server từ xa.

Trên đây là một số những tính năng mới tiêu biểu của SQL Server 2005.

Cần Giờ



Lâu rùi mới được đi chơi, thật là thủi mái











Sao phải đợi ?????

Sao phải đợi một nụ cười mới trở nên thật xinh tươi? Sao phải đợi đến lúc cô dơn mới nhận ra giá trị của một người bạn? Sao phải đợi được yêu rồi mới đem lòng yêu người? Sao phải đợi có một chỗ làm tốt mới bắt đầu công việc? Sao phải đợi thật nhiều rồi mới chia sẻ một chút? Sao phải đợi thất bại mới nhớ đến một lời khuyên? Sao phải đợi có thời gian mới đem sức mình ra phục vụ? Bạn ơi, sao phải đợi? Bởi có thể rằng bạn không biết bạn sẽ phải đợi đến bao lâu... wait

I'm yours

sleep song



Lyric
Lay down your head
And I'll sing you a lullaby
Back to the years
Of loo-li,lai-ley
And I'll sing you to sleep
And I'll sing you tomorrow
Bless you with love
For the road that you go

May you sail fair
To the far fields of fortune
With dimonds and pearls
At your head and your feet
And may you need never
To banish missfortune
May you find kindness
In all that you meet

May there always be angels
To watch over you
To guard you each step of the way
To guard you and keep you
Safe from all harm
Loo-li,loo-li,lai-ley

May you bring love
And may you bring happieness
Be loved in return
To the end your days
Now fall of to sleep
I'm not meaning to keep you
I'll just sit for awhile
And sing
Loo-li,lai-ley

May there always be angels
To watch over you
To guard you each step of the way
To guard you and keep you
Safe from all harm
Loo-li,loo-li,lai-ley
Loo-li,loo-li,lai-ley

Listen, and feel the life slowly



Mỗi khi nghe những giai điệu này, tâm hồn như chậm lại, thư thái
February 2012
M T W T F S S
January 2012March 2012
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29