2009-04-22 23 views
5

Tôi được giao nhiệm vụ viết một ứng dụng để kết nối với API DoubleClick DART và tải xuống quảng cáo.Tôi có thể kết nối với một API Java bằng C# không?

API hiện chỉ là Java, nhưng chúng đang hoạt động (cuối cùng) phát hành phiên bản SOAP.

Là nhà phát triển C#, tôi muốn viết ứng dụng trong C# và truy cập API Java, cho đến khi API SOAP có sẵn.

Tôi có thể làm điều này không? Nếu vậy, làm thế nào?

Nếu không, tôi sẽ tìm hiểu Java, viết ứng dụng, sau đó làm lại khi API SOAP có sẵn, nhưng đây không phải là quá trình ưa thích của hành động.

Cảm ơn sự giúp đỡ.

Trả lời

0

Ngoài ra, tôi có thể khuyên bạn nên viết dịch vụ web theo cách RESTful, thay vì (hoặc kết hợp với) rồi SOAP ? Lợi ích sẽ là khả năng tương tác giữa bất kỳ ngôn ngữ nào mà bạn có thể muốn sử dụng dịch vụ của mình trong tương lai, thay vì chỉ có những ngôn ngữ có thể tạo mã dựa trên WSDL. Chỉ là một ý nghĩ.

1

Có, bạn có thể làm điều này và chúng tôi phải làm điều gì đó khá giống nhau trong khi quay lại.

API Doubleclick dựa trên Java và về cơ bản là tập hợp các phương thức để thẩm vấn cơ sở dữ liệu.

Những gì bạn cần làm là bao bọc các phương thức này bên trong dịch vụ web bằng cách sử dụng một cái gì đó như Axis2 và sau đó triển khai dịch vụ web tới máy chủ Tomcat (tất cả điều này là nguồn mở). Điều đó cho thấy dịch vụ web và sau đó bạn có thể gọi dịch vụ web từ bất kỳ thứ gì bạn thích.

Vì vậy, trong trường hợp của bạn, bạn thêm tham chiếu dịch vụ web bên trong Visual Studio và sau đó lớp C# của bạn sẽ gọi dịch vụ web gọi phương thức Doubleclick Java.

Mã Java thực tế là tối thiểu (aprox. 10 dòng) vì tất cả nó là một cuộc gọi và sau đó định dạng đầu ra. Phải mất nhiều thời gian để triển khai hơn là viết mã!

Môi trường phát triển Java của chúng tôi là Eclipse và tôi đã viết blog về nó here.

0

Tôi có thể nói rằng việc sử dụng lớp J # có thể là một lựa chọn tốt. Tôi đã chỉ sử dụng nó một lần một lần trở lại, nhưng nó đã làm các trick cho tôi.

3

IKVM.NET có thể là giải pháp của bạn. Nó là một máy ảo Java dịch Java bytecode sang .NET IL.

Điều bạn có thể làm là biên dịch API Java (được cung cấp dưới dạng tệp jar hoặc nguồn) bằng cách sử dụng ikvmc.exe vào một hội đồng .NET và sau đó tham khảo assembly này từ dự án C# của bạn.

IKVM có hỗ trợ giới hạn cho giao diện người dùng Java (AWT), nhưng vì đây là một API nên điều này không có liên quan.

Tôi chưa thử điều này một mình, vì vậy tôi không thể đảm bảo rằng điều này thực sự hiệu quả.

Xem http://weblog.ikvm.net/story.aspx/faq

+0

tôi chuyển đổi các tập tin jar sử dụng IKVMC và đã có thể bắt đầu sử dụng API càng sớm càng Google Eng cấp quyền truy cập. Bây giờ chỉ cần lội qua tài liệu hướng dẫn để tìm ra cách để làm những gì tôi cần. – Matthew

0

Chúng tôi thực sự đã đi với một cách hơi khác nhau để làm điều này.

  1. Dịch vụ web C# giờ đây gọi lớp Java bằng javaw.exe (sử dụng Quy trình) và chuyển vào id (GUID).
  2. GUID được sử dụng làm tên tệp cho tệp XML được viết bởi lớp java.
  3. Nếu quá trình (javaw) kết thúc mà không có lỗi, dịch vụ web sẽ mở tệp .xml (GUID) và truy xuất dữ liệu.

Trong khi đây không phải là phương pháp tối ưu, nó hoạt động cho quy trình này trong ngắn hạn và trong thời gian dài, khi có giải pháp SOAP, dịch vụ web có thể dễ dàng cập nhật.

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