2010-03-23 36 views
5

Một vài tháng trước, một đồng nghiệp của tôi đã cài đặt ODAC 11.106.21 trong một máy chủ sử dụng XCOPY và sau đó ông đã phát triển nhiều ứng dụng sử dụng máy khách này mà không gặp vấn đề gì (trong thử nghiệm và máy chủ cửa sổ sản xuất).Có hai phiên bản ODP.NET (ODAC) trong cùng một máy chủ

Tuần trước, tôi đã phát triển một ứng dụng theo ODAC 11.1.07.20. Khi tôi yêu cầu anh ta cài đặt phiên bản ODAC mới này bằng cách sử dụng XCOPY trong một thư mục khác và sau đó bao gồm ứng dụng của tôi trong máy chủ thử nghiệm, anh ấy trả lời tôi rằng tôi nên sử dụng ODAC 11.106.21 vì anh ấy có thể gặp rắc rối với các ứng dụng của mình.

Vì vậy, tôi muốn biết:

1) Nếu nó thực sự có thể có hai phiên bản ODAC khác nhau trong một máy chủ.

2) Nếu câu trả lời là tích cực, làm thế nào tôi có thể đảm bảo chắc chắn với đồng nghiệp của tôi rằng anh ấy sẽ không gặp rắc rối với các ứng dụng của anh ấy?

3) Nếu câu trả lời là dương, điều này có cần thiết để thực hiện một số loại cấu hình nào đó trong máy chủ không?

Cảm ơn !!

Trả lời

9

Bạn có thể có nhiều phiên bản ODAC trên cùng một máy, nhưng có một vài điều cần lưu ý liên quan đến phiên bản nào sẽ được sử dụng bởi mỗi ứng dụng. Điều này thực sự áp dụng cho tất cả các hội đồng.

  • trong Visual Studio, nếu bạn đặt Phiên bản cụ thể = True trên Oracle.DataAccess.dll, thì ứng dụng đó sẽ không sử dụng bất kỳ phiên bản nào khác và phải tìm phiên bản được xây dựng.
  • cho dù bạn triển khai DLL với ứng dụng của mình hay mong đợi nó ở một nơi nhất định hoặc trong GAC.
  • có một thứ tự tìm kiếm cụ thể để tìm DLL phụ thuộc, và nó khá liên quan, vì vậy hãy đọc this MSDN topic.

Câu trả lời ngắn gọn là có hai cách dễ dàng để đảm bảo ứng dụng của bạn sử dụng phiên bản chính xác của Oracle.DataAccess.dll bạn muốn nó (điều này được áp dụng trong hầu hết các trường hợp mọi thứ khác là mặc định):

  1. Đặt phiên bản cụ thể thành True;
  2. Triển khai DLL với ứng dụng của bạn và đặt nó trong thư mục ứng dụng HOẶC đảm bảo rằng DLL nằm trong GAC.

Trong trường hợp cụ thể, đồng nghiệp của bạn có thể có mối quan tâm hợp lệ: Nếu ứng dụng của anh hiện đang cài đặt đang nhận được Oracle.DataAccess.dll từ GAC và anh ta không đặt Phiên bản cụ thể thành True, thì khi nào bạn cài đặt ODAC mới, các ứng dụng của anh ta sẽ bắt đầu sử dụng nó (tôi giả sử Oracle.DataAccess.dll mới sẽ được cài đặt trong GAC),

+1

Tôi tưởng tượng bởi "máy chủ", anh ta có nghĩa là một Máy chủ Windows có cài đặt IIS để các ứng dụng ASP.NET có thể sử dụng các thư viện máy khách để truy cập vào Oracle. –

+0

@IgbyLargeman: Nice. Một câu hỏi nữa. Khách hàng 64 bit, đã triển khai cả hai nền tảng, phiên bản 4.112.2 cho GAC. Các ứng dụng mới sử dụng 4.112.3 cho các tính năng EF, vì vậy ý ​​tưởng là để 'bin' triển khai nó, vượt trội hơn bản sao GAC cũ. Visual Studio chỉ sao chép cục bộ 32 bit. Ý tưởng tiếp theo là ghi đè lên tập tin với phiên bản 64-bit 4.112.3. Nó cho tôi lỗi giống như thư viện không có trong thùng rác, giống như nó vẫn đang sử dụng thư viện GAC 64 cũ hơn. Bất kỳ chi tiết hoặc đề xuất nào? Có thể cho tôi để GAC triển khai tất cả 4 thư viện (4.112.2 32/64 và 4.112.3 32/64) không? Cảm ơn –

4

Vấn đề ở đây không phải là dlls .NET nhưng dll không được quản lý.

Tôi đang cố gắng thực hiện hai ứng dụng ASP.NET trên một máy chủ. Một là cũ hơn bằng cách sử dụng ODP.NET 9.x và cái mới sử dụng ODP.NET mới nhất. Tôi đã triển khai ODP.NET mới nhất bằng cách sử dụng xcopy và thêm các đường dẫn đến biến môi trường PATH cho ODP mới. Bây giờ ứng dụng cũ không hoạt động (có thể cố gắng sử dụng các dll mới). Khi tôi xóa đường dẫn khỏi biến PATH thì ứng dụng mới sẽ không hoạt động. Tôi tìm thấy cách để làm cho nó hoạt động trên một máy chủ dưới IIS trên các trang Oracle nhưng điều đó đã không làm việc. Có lẽ bởi vì tôi đã không cài đặt ODP.NET mới nhất nhưng chỉ xcopied nó.Tôi sẽ phải thử nó.

Oracle nói gì về: Liên kết: http://www.oracle.com/technology/tech/windows/odpnet/faq.html Nhiều ứng dụng Oracle chạy trên Microsoft Internet Information Services (IIS). Trước đây, IIS là một ứng dụng quy trình đơn lẻ mà không có khả năng gán một Đường dẫn Hệ thống khác nhau cho từng ứng dụng web đang chạy bằng cách sử dụng cùng một cá thể IIS. Với IIS 6 trên Windows Server 2003, IIS hỗ trợ nhiều quy trình cho cùng một cá thể. Vì mỗi ứng dụng có quá trình IIS riêng, mỗi ứng dụng web có thể được gán một thư mục Hệ thống đường dẫn khác với Oracle Home của chính nó.

Tài liệu của Microsoft cung cấp thông tin về các nhóm ứng dụng và quy trình xử lý công nhân IIS.

Để thiết lập nhiều hoạt động Oracle Homes chạy đồng thời trên cùng một máy chủ IIS: 1) Chạy IIS 6 trong chế độ cô lập quy trình công nhân trên Windows Server 2003 2) Triển khai một phiên bản của Oracle Client vào một nhóm ứng dụng và phiên bản thứ hai cho một nhóm ứng dụng khác. Ví dụ, bạn có thể có Oracle Client 9.2.0.2 và ODP.NET 9.2.0.2 được sử dụng bởi một nhóm ứng dụng. Và Oracle Client 9.2.0.4 và ODP.NET 9.2.0.4 có thể được sử dụng bởi một nhóm ứng dụng khác. Bạn sẽ không thể sử dụng hai Oracle Homes đang hoạt động trong cùng một nhóm ứng dụng. Mỗi nhà hoạt động của Oracle phải nằm trong một nhóm khác nhau. 3) Đặt thư mục DLL cho mỗi quy trình của nhân viên để sử dụng thư mục máy khách Oracle Home thích hợp. Để làm điều này, trong mỗi ứng dụng ASP.NET, hãy gọi SetDllDirectory (directory_name) sớm trong vòng đời của ứng dụng trước khi bất kỳ Oracle DLL được gọi. Biến đầu vào SetDllDirectory là thư mục Oracle Home bin của phiên bản ODP.NET được sử dụng. Lưu ý: SetDllDirectory là một cuộc gọi không được quản lý.

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