2009-09-14 33 views
25

Mục đích của Thư viện Dịch vụ WCF là gì? Tôi hiểu nếu bạn xây dựng một dịch vụ lưu trữ IIS, bạn tạo một dự án web, nếu tự lưu trữ - tạo một .exe.Mục đích của Thư viện Dịch vụ WCF là gì?

Kịch bản thực tế trong cuộc sống sử dụng WCF làm DLL là gì?

Trả lời

9

"WCF Application Service” chính nó là một ứng dụng dịch vụ web trực tiếp dựa trên công nghệ WCF (tương tự như các ASP.NET phát triển dịch vụ web) "Thư viện WCF Service". Trên Mặt khác là một thành phần biên soạn có thể được triển khai như một dịch vụ web hoặc một dịch vụ Windows hoặc thậm chí là một phần của một ứng dụng lưu trữ tùy chỉnh.

- Developing a WCF Service Library and Hosting it as a WCF Web Service

+12

Ok, nếu thư viện dịch vụ WCF có thể được triển khai đến IIS (cảm ơn bạn đã liên kết) tại sao tôi lại tạo WCF làm dự án web? Âm thanh như thư viện dịch vụ là một lựa chọn tốt hơn. Bạn sẽ sử dụng mỗi khi nào? – Vitalik

19

Tôi sẽ luôn luôn tạo thư viện WCF làm thư viện lớp - dễ sử dụng hơn nhiều. Bạn có toàn bộ tính linh hoạt sau đó hoặc lưu trữ dịch vụ WCF của bạn bên trong IIS (bằng cách cung cấp một thư mục ảo và một tệp .svc bên trong nó), hoặc bạn có thể viết EXE tự lưu trữ của riêng mình và tham chiếu dịch vụ WCF trong thư viện lớp từ nó.

Đưa dịch vụ WCF trực tiếp vào một dự án web có vẻ như là một ý tưởng thực sự tồi và chỉ hữu ích cho các mục đích giảng dạy rất đơn giản - chỉ để cho biết cách bắt đầu. Tôi sẽ không bao giờ làm điều này cho một hệ thống "sống".

Marc

+0

khi chúng tôi chọn wcf dịch vụ dịch vụ thư viện dự án mẫu từ VS IDe sau đó không có tệp svc có chỉ là một dll tạo. vì vậy tôi muốn biết chúng tôi có thể lưu trữ dll đó vào iis mà không cần tệp svc. làm ơn cho tôi biết. thanks – Thomas

+1

@Thomas: Marc đặc biệt nói rằng bạn cần cung cấp tệp .svc, nhưng tệp .svc có thể nằm trong một dự án và trong tham chiếu đánh dấu một lớp trong một dự án khác (thư viện dịch vụ WCF). Trong .NET 4 bạn có thể sử dụng kích hoạt tập tin ít hơn trong .NET 4: "một cách tiếp cận dễ dàng hơn sẽ là xác định các điểm cuối kích hoạt ảo trong Web.config, do đó loại bỏ sự cần thiết cho các tệp .svc hoàn toàn" (http: // msdn. microsoft.com/en-us/library/ee354381.aspx). –

36

Trong khi đó là sự thật rằng việc tạo một dịch vụ WCF như một thư viện lớp giúp bạn linh hoạt hơn, linh hoạt mà đi kèm với một chi phí, và đó là một sai lầm khi cho rằng các giải pháp linh hoạt hơn luôn là giải pháp ưu tiên, hoặc giải pháp ít linh hoạt hơn là trẻ con hoặc chỉ phù hợp với "mục đích giảng dạy đơn giản".

Phần lớn các dịch vụ WCF được lưu trữ dưới dạng dịch vụ web và sẽ không bao giờ được triển khai theo bất kỳ cách nào khác.

Dưới đây là ba ưu điểm của việc sử dụng một ứng dụng dịch vụ WCF như trái ngược với một thư viện lớp WCF:

  1. Nếu bạn tạo dịch vụ web của bạn như là một thư viện lớp các tập tin cấu hình sẽ được file app.config hơn tệp web.config. Tệp App.config không hỗ trợ nhiều tệp cấu hình và cấu hình biến đổi cách tệp web.config thực hiện. Nếu bạn muốn thay đổi cấu hình trên tệp app.config của mình, bạn phải sử dụng giải pháp của bên thứ ba chẳng hạn như Cheetah chậm.

  2. Khi đến lúc xuất bản trang web của bạn, nếu bạn sử dụng ứng dụng dịch vụ WCF, bạn có thể tận dụng tối đa Web Deploy (http://www.iis.net/downloads/microsoft/web-deploy). cách mạnh mẽ và linh hoạt để xuất bản giải pháp của bạn lên IIS.

  3. Nếu bạn quyết định tự động hóa bản dựng và triển khai để tích hợp liên tục với TFS, sẽ có lúc bạn muốn tự động xuất bản dịch vụ của mình. Nếu bạn sử dụng dịch vụ WCF, bạn có thể cấu hình TFS để chạy Web Deploy, sẽ hợp nhất các tệp web.config của bạn theo cấu hình xây dựng đích, thực hiện xuất bản gia tăng, cho phép xuất bản mà không có quyền quản trị trên máy chủ và các lợi ích khác. Nếu bạn sử dụng một thư viện lớp WCF thì bạn sẽ phải viết một giải pháp luồng công việc tùy chỉnh để hợp nhất ứng dụng.tệp cấu hình, sử dụng xCopy để triển khai và thường có thời gian khó khăn hơn khi tự động triển khai.

Tóm lại, giải pháp linh hoạt hơn, như thường xảy ra, đi kèm với chi phí mất hỗ trợ công cụ cụ thể. Nếu, giống như hầu hết các giải pháp dịch vụ WCF, ứng dụng của bạn sẽ luôn được lưu trữ trong IIS, bạn có thể xem xét việc tận dụng sự hỗ trợ này bằng cách sử dụng một ứng dụng dịch vụ WCF như trái ngược với một thư viện lớp WCF.

+1

Chúng tôi đã gặp sự cố * chính xác * này. Câu trả lời chính xác! – TrueWill

+0

khi chúng tôi chọn mẫu dự án thư viện dịch vụ dịch vụ wcf từ VS IDe thì không có tệp svc nào chỉ tạo dll. vì vậy tôi muốn biết chúng tôi có thể lưu trữ dll đó vào iis mà không cần tệp svc. làm ơn cho tôi biết. cảm ơn – Thomas

+2

# 1 là một phần không chính xác. Một thư viện lớp có thể tạo một app.config, nhưng nó không được sử dụng. Ứng dụng tham chiếu/lưu trữ thư viện lớp sẽ có web/app.config riêng của nó, đây là ứng dụng thực sự được sử dụng. Bạn có thể lưu trữ một thư viện dịch vụ WCF trong IIS bằng cách tạo các tệp .svc bằng tay hoặc sử dụng kích hoạt tệp ít hơn, trong trường hợp này bạn sẽ sử dụng một tệp web.config và không phải app.config. –

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