2012-03-19 45 views
8

Tôi cần chạy một số phương thức trước cuộc gọi đầu tiên của dịch vụ wcf, tôi đặt các phương thức đó ở đâu? Phương thức khởi động của Dịch vụ WCF ở đâu?Phương thức khởi động của Dịch vụ WCF ở đâu?

Obs1: Dịch vụ WCF của tôi sẽ chạy trên IIS6. Obs2: Tôi đang sử dụng .net framework 4.0.

+2

Hành vi mặc định của dịch vụ WCF là ** cho mỗi cuộc gọi **, ví dụ: mỗi yêu cầu có thể hiện riêng của mình về lớp dịch vụ và phương thức bạn gọi được thực thi. Có lưu ý chỉ nằm xung quanh trong bộ nhớ - và do đó không có gì giống như "phương pháp khởi động" trong một dịch vụ WCF - bạn có lớp dịch vụ của bạn, bất cứ điều gì bạn cần làm - làm điều đó trong phương pháp dịch vụ –

Trả lời

4

Một cách để thực hiện việc này là tự lưu trữ các dịch vụ WCF của bạn (như trong IIS). Bằng cách đó bạn có thể chạy bất kỳ mã nào bạn muốn trước khi quay lên các dịch vụ.

Một cách khác là thêm lệnh gọi phương thức tĩnh trong hàm tạo của mỗi lần thực hiện hành vi dịch vụ. Cuộc gọi phương thức tĩnh đó sẽ thực hiện kiểm tra để đảm bảo rằng việc khởi tạo đã được thực hiện. Chỉ cần chắc chắn để đối phó với đồng thời đa luồng trong cuộc gọi này.

3

Tùy thuộc vào cấu hình thời gian của dịch vụ WCF sẽ khởi tạo lớp dịch vụ trên mọi cuộc gọi (singlecall), cho mỗi khách hàng (phiên) hoặc chỉ một lần cho mọi cuộc gọi của mọi khách hàng (singleton).

Bạn có thể triển khai giao diện IInstanceProvide r và kiểm soát quá trình khởi tạo. Bằng cách này, bạn có thể nhận được một cơ hội để gọi các phương thức trên lớp trước khi thực tế cuộc gọi wcf được thực hiện.

+0

+1 cho IInstanceProvider - Tôi đã không biết về điều đó. – RQDQ

Các vấn đề liên quan