Tôi đang viết một dịch vụ cửa sổ sẽ thực hiện rất nhiều giao tiếp mạng và tôi cần một cách để thông báo cho người dùng (nếu đã đăng nhập) bất kỳ ngoại lệ/lỗi. Tôi biết thực tế là không tốt để cho phép một dịch vụ tương tác với máy tính để bàn, vậy có cách nào khác để thông báo cho người dùng rằng đã xảy ra lỗi không? Tôi biết về ghi nhật ký sự kiện, nhưng tôi cũng muốn có thể hiển thị bong bóng thông báo từ khay hệ thống hoặc thứ gì đó thu hút sự chú ý của người dùng.Cách tốt nhất cho dịch vụ .Net Windows để báo cáo lỗi cho người dùng
Trả lời
Vui lòng xem xét sử dụng Nhật ký sự kiện và một ứng dụng riêng biệt chỉ để theo dõi. Bạn cũng có thể xem xét sử dụng email hoặc MSMQ.
Còn việc sử dụng ứng dụng khác để tương tác với ứng dụng này và thông báo cho người dùng về lỗi? Bằng cách này, bạn có thể có "tùy chọn" cho người dùng. Có thể tắt cảnh báo, email, v.v.
Thông thường, bạn sẽ có một ứng dụng phụ mà dịch vụ có thể thông báo. Ví dụ, bạn có thể có một biểu tượng khay hệ thống (ugh) mà bật lên bóng bay (gấp đôi ugh) khi một cái gì đó quan trọng xảy ra. Bản thân ứng dụng có thể hiển thị giao diện cho các cài đặt cho dịch vụ của bạn.
Bạn có thể sử dụng một số ứng dụng thông báo hiện có như Growl: http://www.growlforwindows.com/gfw/. Điều này sẽ cho phép người dùng "chọn tham gia".
Bạn sẽ phải cung cấp giải pháp thay thế cho tùy chọn "tương tác với máy tính để bàn". Nó không còn được hỗ trợ trong Vista và Win7 nữa. Việc cấp quyền truy cập người dùng bị hạn chế vào giao diện người dùng chạy trên tài khoản có đặc quyền cao được xem là quá nguy hiểm về bảo mật. Google "phiên 0 cách ly" để tìm chi tiết về điều này.
Bạn cần phải sử dụng một trong các cơ chế interop quy trình được .NET hỗ trợ để thiết lập tương tác giữa dịch vụ của bạn và ứng dụng giao diện người dùng. Để gửi tin nhắn đơn giản, hãy sử dụng ổ cắm hoặc ống có tên. Tên đường ống cần phải có tiền tố "Toàn cầu \" để hiển thị cho tất cả các phiên. Đối với các tương tác phức tạp hơn, bạn có thể sử dụng Remoting hoặc WCF.
Hãy đảm bảo giải quyết khả năng người dùng quyết định không chạy hoặc tắt ứng dụng dành cho máy tính để bàn. Bạn nên đăng nhập bất kỳ lỗi nào với lớp EventLog.
Để giải quyết vấn đề này, tôi đã tạo ứng dụng Windows Forms mà người dùng có thể bắt đầu và dừng theo ý muốn. Tất nhiên, dịch vụ Windows đang chạy trong nền 24/7. Khi ứng dụng được khởi động, nó sử dụng Windows Communication Foundation (WCF) để truy vấn dịch vụ cho trạng thái hiện tại của nó - nó đang hoạt động, số lượng máy khách được kết nối, bao nhiêu byte đã được thu thập, v.v. bên trong ứng dụng.
Tôi đã cố gắng bắt chước hành vi của Trình quản lý tác vụ, vì vậy tôi cũng đã thêm System.Windows.Forms.NotifyIcon
vào biểu mẫu chính của ứng dụng hiển thị biểu tượng trong khay hệ thống. Khi ứng dụng đang mở, biểu tượng khay hệ thống được hiển thị. Người dùng có thể thu nhỏ ứng dụng vào thanh tác vụ hoặc có thể ẩn hoàn toàn ứng dụng. Biểu tượng khay chỉ biến mất khi người dùng đóng ứng dụng. Biểu tượng khay cũng hỗ trợ nhấp đúp để mở lại ứng dụng và menu bật lên để truy cập nhanh vào chức năng.
Trong mọi trường hợp, điểm tôi muốn thực hiện là WCF là cách đơn giản nhất để ứng dụng dịch vụ và giao diện người dùng của bạn giao tiếp. Mọi người sẽ tranh luận về đường cong học tập 'dốc' được liên kết với WCF, nhưng tôi không trải nghiệm điều đó. Tôi thấy WCF là một cách rất hiệu quả để phát triển giao tiếp giữa các quá trình. Bạn có thể xem this video để cung cấp cho bạn một số thông tin chi tiết về mô hình lập trình WCF.
- 1. Khuôn khổ báo cáo lỗi cho .net
- 2. Có API .Net cho Báo cáo Lỗi Windows
- 3. Cách tốt nhất để xác thực cho dịch vụ web
- 4. Làm cách nào để tạo mã sạch nhất khi báo cáo tiến trình cho người dùng?
- 5. Cách tốt nhất để lưu cài đặt người dùng cho ứng dụng .NET là gì?
- 6. Dịch vụ báo cáo máy chủ SQL cho Amazon RDS
- 7. Cách hướng dẫn người dùng báo cáo lỗi trong Android
- 8. Báo cáo dịch vụ báo cáo Thời gian chờ
- 9. Khuôn khổ báo cáo sự cố tốt nhất cho các ứng dụng máy tính để bàn .NET?
- 10. Cài đặt dịch vụ windows trên máy từ xa bằng tên người dùng đã cho
- 11. Thay thế tốt nhất cho kiểu giá trị nullable .NET cho dịch vụ tiêu hao Java
- 12. Báo cáo lỗi cho Flurry cho Android
- 13. Thực hành tốt nhất cho TDD và báo cáo
- 14. Dịch vụ báo cáo: Cách đặt tham số báo cáo trong tiêu đề
- 15. Xuất PDF trong Dịch vụ Báo cáo
- 16. Cách tốt nhất để gỡ lỗi chương trình Dịch vụ Windows trong Visual Studio 2008
- 17. Đây có phải là cách tốt nhất để viết SQL cho báo cáo này không?
- 18. Dịch vụ báo cáo máy chủ SQL: cách dừng báo cáo kích hoạt khi mở
- 19. 'Cách thực hành tốt nhất' cho vị trí của nhật ký dịch vụ windows là gì?
- 20. Python/Flask thực hành tốt nhất cho lớp dịch vụ
- 21. Cách lưu trữ thông báo người dùng tốt nhất?
- 22. Cách tốt nhất để tạo báo cáo về OpenERP
- 23. Dịch vụ báo cáo sự cố in ấn IE
- 24. Dịch vụ báo cáo SQL Server .. Lời khuyên tốt nhất để tích hợp với các công nghệ khác?
- 25. "Giao diện người dùng hiện đại (Metro) cho Windows 8, WPF, Silverlight" cho .net 4.0
- 26. Chiến lược tốt nhất để chuyển mã thông báo/cookie đến dịch vụ WCF?
- 27. Cách tốt nhất để hiển thị thông báo quản trị cho một số người dùng nhất định?
- 28. Tìm thư mục tốt nhất cho tất cả người dùng trên máy Windows
- 29. Cách tốt nhất để tạo báo cáo trong ASP.NET MVC
- 30. Làm cách nào để có danh sách các báo cáo có sẵn trên một cá thể dịch vụ báo cáo