2008-10-16 46 views
5

Tôi phải tiêu thụ 2 dịch vụ web khác nhau. Cả hai đều chứa một định nghĩa cho một đối tượng 'người dùng'.. Net Tiêu thụ Dịch vụ Web: Các loại giống nhau trong hai dịch vụ khác nhau

Khi tôi tham khảo các dịch vụ sử dụng "Add dịch vụ tham khảo" Tôi cung cấp cho mỗi dịch vụ một không gian tên độc đáo:

com.xyz.appname.ui.usbo.UserManagement  
com.xyz.appname.ui.usbo.AgencyManagement 

Tôi có vấn đề là mỗi một trong những proxy được tạo ra chứa một lớp người dùng mới. Một được đặt tại com.xyz.appname.ui.usbo.UserManagement.user và một tại com.xyz.appname.ui.usbo.AgencyManagement.user. Tuy nhiên, các đối tượng người dùng là giống hệt nhau và tôi muốn đối xử với họ như vậy.

Có cách nào để bằng cách nào đó tôi có thể tham khảo đối tượng người dùng dưới dạng một đối tượng thay vì coi chúng là hai đối tượng khác nhau không?

Tôi đang sử dụng .Net 3.5 để sử dụng dịch vụ. Dịch vụ đang được tiêu thụ được viết bằng Java.

Cảm ơn !!

Edit:

This forum thread đã rất gần với một câu trả lời, nhưng câu trả lời chấp nhận kết thúc lên được để chia sẻ các loại từ client và server - mà tôi không thể làm được bởi vì chúng ta vượt qua các nền tảng (Java để Net). Câu hỏi thực sự là, có một/sharetypes loại tham số cho svcutil trong WCF?

+0

Điều này ảnh hưởng đến Java như thế nào? công cụ WSDL tạo mã C#. – leppie

+0

Lý do tôi thêm rằng nền tảng dịch vụ là Java là vì câu trả lời đầu tiên tôi đã đề nghị chia sẻ .Net loại giữa máy khách và máy chủ. –

Trả lời

3

Điều cuối cùng làm việc cho tôi là cung cấp svcutil.exe tất cả các địa chỉ WSDL mà tôi cần để tạo mã. SVCUTIL sẽ xem xét tất cả các loại từ mỗi dịch vụ và tự động xác định loại nào là phổ biến và nên được sử dụng lại.

Loại mà bạn muốn chia sẻ cũng phải có không gian tên được chia sẻ và không gian tên đó sẽ được gọi ra trên mỗi dịch vụ web muốn chia sẻ loại đó.

+0

Steve, bạn có thể chấp nhận điều này làm câu trả lời không? –

+0

Đó sẽ là "có". –

0

Bạn có thể đặt loại người dùng trong một hội đồng chung được chia sẻ mà cả dịch vụ và tham chiếu dự án khách hàng. Sau đó, trong cấu hình cho cả hai máy khách dịch vụ, bạn có thể chọn tùy chọn tái sử dụng các loại trong các assembly được tham chiếu. Bằng cách đó, bạn đang sử dụng loại inthe asssembly hơn là một lớp được tạo riêng.

2

công cụ WSDL có thông số.

/sharetypes 
    Turns on type sharing feature. This feature creates one code file with 
    a single type definition for identical types shared between different 
    services (namespace, name and wire signature must be identical). 
    Reference the services with http:// URLs as command-line parameters 
    or create a discomap document for local files. 
1

Đây là tình huống phổ biến khi tiêu thụ các dịch vụ web với các điểm cuối khác nhau từ cùng một nhà cung cấp.

Bạn có thể sử dụng công cụ dòng lệnh "wsdl.exe/sharetypes" để tạo lớp proxy được chia sẻ sẽ xem xét tất cả các điểm cuối mà bạn cung cấp và suy ra lớp nào có thể được 'chia sẻ'.

Trong ví dụ của bạn, miễn là đối tượng người dùng của bạn giống hệt nhau trong cả hai dịch vụ, nó sẽ được chọn và đưa vào lớp proxy được chia sẻ mới của bạn.

Có thể có ý nghĩa khi thêm bước tạo lớp proxy được chia sẻ này dưới dạng sự kiện xây dựng trong dự án của bạn theo cách nó luôn được cập nhật.

2

Nếu bạn đang làm việc với các tập tin địa phương mà bạn có thể làm như sau:

wsdl.exe /sharetypes file://c:\path\to\file.wsdl file://c:\path\to\otherFile.wsdl /namespace:<your namespace> /output:(any switches etc...) 

Các sharetypes chuyển yêu cầu bạn cung cấp các URL cho các dịch vụ, và không hoạt động nếu bạn chỉ đơn giản là chỉ wsdl vào các tập tin .

+0

Tôi đã tự hỏi về điều url, nhờ .. +1 –

+0

Điều này làm việc tuyệt vời cho tôi! Cảm ơn! – ScArcher2

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