2009-07-22 32 views
14

Tôi đang tìm bất kỳ loại tài liệu nào, một ứng dụng winform nhibernate mã nguồn mở mà tôi có thể nghiên cứu, hoặc thậm chí tốt hơn một khung công tác winform/nhibernate. Tôi thấy một chút về nó trong Nhibernate contrib và NhAddins nhưng đó là tất cả. Có rất nhiều về web nhưng rất ít về winform. Tại sao vậy?Ví dụ về ứng dụng winform nhibernate

Trả lời

1

Có một công việc đang tiến hành thảo luận về việc trộn các biểu mẫu nHibernate + Windows được viết bởi Sebasian Talamoni available here. Nó bao gồm thảo luận + mã.

+0

Cảm ơn bạn đã liên kết, tôi đã thử ứng dụng mẫu này một lúc trước. Tài liệu được bao gồm trong zip đang tạm dừng. Tôi muốn tìm một số bài viết khác như bài viết này. Bạn có biết tác giả đã xuất bản phần tiếp theo không? –

+0

Tôi không biết bất cứ điều gì trên đỉnh đầu của tôi. Bài viết này có thông tin hữu ích, thú vị. Tuy nhiên, tìm kiếm của Google trả về rất nhiều thông tin khác. –

+0

Tôi muốn tìm thứ gì đó có thể sử dụng trực tiếp, như tấn và tấn nền tảng blog u có thể tìm nhưng đối với nHibernate. Và Winform :). –

0

Tôi đã tìm thấy cái này gần đây hơn. Nó có thế hệ mã và sử dụng spring.net

7

Lý do tại sao có rất ít ví dụ cho winforms, là imho, quản lý phiên là phức tạp hơn rất nhiều trong các khách hàng thông minh hơn trong thế giới web.

Trong thế giới web, bạn mở ISession khi phiên http bắt đầu và bạn đóng ISession khi phiên http kết thúc.

Không có bản dịch trực tiếp về khái niệm phiên http trong ứng dụng khách thông minh; nhiều màn hình đều mở cùng một lúc, một số được thu nhỏ, các màn hình khác mở và đóng mọi lúc, một số màn hình đóng lại mà không lưu thay đổi ... bạn sẽ có ý tưởng.

Tôi nghĩ có ba chiến lược cơ bản:

1 phiên cho mỗi ứng dụng

tôi sẽ tránh xa này. Hãy nhớ rằng, nếu một ngoại lệ, giống như một ngoại lệ thực thể cũ được ném bởi phiên singleton của bạn, phiên đó hiện không sử dụng được. Ứng dụng của bạn về cơ bản là trong doo doo.

phiên cho mỗi màn hình

Đây là một chút tốt hơn, bạn tránh ứng dụng của bạn đi xuống chảo nếu một phiên duy nhất thổi lên. Tuy nhiên, một số màn hình có thể cộng tác cùng nhau trong cùng một unit of work. Họ cần phải chia sẻ cùng một phiên hoặc bạn sẽ có issues cố gắng chia sẻ các thực thể của bạn giữa các màn hình như các thực thể liên tục có mối quan hệ với phiên đã tải chúng.

cuộc nói chuyện dai dẳng

Tôi nghĩ rằng đây là cách để đi. Bạn xác định một dịch vụ giữ phạm vi của đơn vị công việc của bạn. Mỗi khi bạn gọi các phương thức trên dịch vụ này, ISession chính xác được hoán đổi một cách vô hình cho bạn. Khi bạn kết thúc với dịch vụ của mình, bạn gọi một phương thức khác trên đó và phiên được xử lý.

Phiên bản dịch vụ có thể được chia sẻ giữa các màn hình của bạn, do đó chúng chia sẻ phiên. Nhiều phiên có thể mở cùng một lúc. Tất cả điều này được thực hiện thông qua các kỹ thuật lập trình hướng Aspect, bạn không cần thực hiện bất kỳ hành động nào khác để gắn thẻ các dịch vụ của bạn với các thuộc tính.

Điều này nghe khá phức tạp để kiểm tra các bài đăng của Fabio trên đó here, herehere.

Có triển khai mẫu này trong unoffical nh addins. Điều này làm việc ở Windsor, có lẽ có thể chuyển nó sang các container IoC khác.

3

Fabio Maulo có post tốt đẹp về quản lý phiên trong ứng dụng WinForms, cũng có tải xuống ứng dụng mẫu được liên kết ở dưới cùng.

8

This bài viết của Oren Eini là ví dụ tốt nhất về cách triển khai ứng dụng máy tính để bàn cửa sổ tôi đã xem. Các mẫu thiết kế và thực hành tốt nhất, chi tiết nên áp dụng cho các ứng dụng WinForms hoặc WPF \ Silverlight.