TinyERP framework

Wednesday, March 25, 2009

Cách đây vài tuần, một người bạn nhờ tư vấn một framework để phát triển ứng dụng winform trên .NET (dùng C# để phát triển). Cái này làm mình nhớ đến một framework tương tự đã build trên Java để làm một số ứng dụng ERP ở Pissoft cách đây 3 năm.

Sau một số chọn lựa, cuối cùng cũng đã thiết kế được phần core và hoàn tất một số feature chính của framework.

Library nền tảng:
         + Spring .NET
         + NHibernate
Hướng tiếp cận:
         + Domain driven: thiết kế hệ thống từ domain entity (ko xuất phát từ RDBMS)

Những feature chính mà framework hỗ trợ:
         + Sinh tự động Database Access Layer, Business layer từ domain entity
         + Hỗ trợ sinh Hibernate mapping từ domain model (ở mức đơn giản và thông dụng nhất). Mô hình mapping và sinh code dựa trên những best practices mà mình đã làm trên những ứng dụng dựa trên NHibernate hơn 3 năm gần đây.

         + Sinh ra GUI cho các domain entity (chưa hỗ trợ cho các quan hệ nhiều nhiều).
         + Cơ chế Validation trên UI cho winform. Cái này bác Microsoft hỗ trợ chuối quá - nên buộc phải viết lại.
Vài screenshot giới thiệu đến mọi người:


                               Tool KGen để generate code

Kết quả sinh code cho lớp đối tượng User


Giao diện và chương trình chạy sau khi sinh code
Form Quản lý user
 
Form edit và tạo mới user:


Một số side-effect:
- Ban đầu định dùng KMyGeneration (K = Khoa :-), vì lúc trước có build một số template tương tự đụng đến nhu cầu phải customize lại tool MyGeneration). Tuy nhiên, template code của MyGeneration và UI của nó hơi khó customize và không tiện dụng cho người dùng. Cuối cùng, build lại 1 tool mới - đặt tên mới: KGen. KGen hỗ trợ viết GUI trên Visual Studio + template viết bằng NVelocity (sáng sủa, dễ đọc và dễ maintain hơn). Thời gian làm cái này mất khoảng 4h). 

- Không dự định dùng commercial UI library, nhưng cuối cùng thấy mất thời gian cho việc build những thứ linh tinh này. Suggest cho anh bạn xài Janus (thanks bác Vinh đã giới thiệu). Tuy nhiên có một bộ UI library khác là Krypton Library - có free một số component cũng khá cool (có thể xem xét).

Cái framework này chỉ viết chơi cho vui. Thời gian build tổng cộng gần 1 tuần. Vì đã có một số kinh nghiệm nên build cũng nhanh.

Sẽ viết một bài để trao đổi về kinh nghiệm build framework cho các ứng dụng ERP from scratch (dựa trên những năm tháng chiến đấu với các ERP app ở Pissoft). :-)

1 phản hồi:

Anonymous said...

Hello Khoa,

Mình cũng đang tìm hiều NHibernate và winform, mình vô tình tìm được code của bạn trên codeplex, nhưng có một số file bị thiếu, mong bạn có thể gởi lại source code cho mình (silverlight08@yahoo.com). Xin cảm ơn.