2010-07-24 38 views
6

Tôi muốn hiểu rõ hơn lý do cho mô hình máy chủ ứng dụng .NET so với các máy chủ ứng dụng Java được sử dụng nhiều nhất.Sự khác biệt giữa các máy chủ ứng dụng .NET và máy chủ ứng dụng Java

Trong hầu hết các trường hợp tôi đã thấy với các ứng dụng web ASP.NET, logic nghiệp vụ được lưu trữ trong quy trình lưu trữ asp.net của máy chủ web. Một cách tiếp cận phổ biến khác là có một tầng vật lý hoặc logic khác nhau lưu trữ các đối tượng kinh doanh của bạn và sau đó được tiếp xúc dưới dạng các dịch vụ web hoặc truy cập thông qua các cơ chế như WCF. Cách tiếp cận thứ hai thường nhưng không phải lúc nào cũng được sử dụng khi yêu cầu quy mô cao hơn. Trong những ngày của đối tượng COM tôi đã thấy Microsoft Transaction Server (MTS) và sau đó COM + lưu trữ được sử dụng để lưu trữ các đối tượng COM chứa logic nghiệp vụ, với MTS (về mặt lý thuyết) quản lý thời gian tồn tại đối tượng, giao dịch, đồng thời yada yada. Mô hình này phần lớn dường như đã biến mất trong đất ASP.NET.

Trong thế giới Java, bạn có thể có Apache với Tomcat là vùng chứa servlet và các đối tượng nghiệp vụ của bạn được lưu trữ trong Tomcat. Trong trường hợp này, Tomcat cung cấp chức năng tương tự như những gì MTS cung cấp trong thế giới .NET.

Một số câu hỏi:

  1. Tại sao sự khác biệt cơ bản trong Microsoft vs Java phương pháp tiếp cận đến các máy chủ ứng dụng? Điều này phải là một lựa chọn kiến ​​trúc/thiết kế khi các khung công tác này được tạo ra.
  2. Ưu và khuyết điểm của mỗi phương pháp tiếp cận là gì?
  3. Tại sao Microsoft di chuyển ra khỏi mô hình MTS-hosting (tương tự như mô hình lưu trữ Tomcast servlet) với cách tiếp cận hiện tại phổ biến hơn, chỉ để có các đối tượng nghiệp vụ như một phần của quá trình ASP.NET của máy chủ web?
  4. Nếu bạn muốn triển khai cách tiếp cận kiểu MTS hoặc cách tiếp cận kiểu Tomcat trong các ứng dụng ASP.NET ngày nay, tôi giả sử một mẫu chung sẽ là lưu trữ các đối tượng nghiệp vụ trong một số quy trình IIS (có thể trên một tầng vật lý hoặc logic khác). thông qua WCF (hoặc các dịch vụ web asmx tiêu chuẩn, bất cứ điều gì). Đây có phải là giả định chính xác không?

Trả lời

2

Theo cách suy nghĩ của tôi, điểm khác biệt chính là trong phương pháp "mở" so với cách tiếp cận "tích hợp ngăn xếp". Microsoft thích cung cấp mọi thứ như một chồng tích hợp mà tất cả đều có chung một hương vị và cách tiếp cận. Java thân thiện hơn với mô hình "mang theo mô hình x" của riêng bạn, nơi bạn có thể muốn cắm vào máy chủ ứng dụng, trình quản lý giao dịch yêu thích, v.v. Cả hai ngăn xếp công nghệ cho phép thực hiện trong quá trình cũng như lời gọi từ xa với các mức khác nhau hỗ trợ giao dịch.

Thực sự, WCF không phải là ngăn xếp công nghệ mới, mà là sắp xếp lại và đổi tên các yếu tố hiện có của ngăn xếp .NET. Cụ thể, WCF đã thực hiện các chức năng của .NET Remoting, Web Services và các giao dịch phân tán.

Bạn tham chiếu "phương pháp tiếp cận hiện tại phổ biến hơn chỉ để có đối tượng kinh doanh như là một phần của quy trình ASP.NET của máy chủ web". Điều đó chỉ phổ biến đối với các ứng dụng không được phân phối. Nó là một mô hình đơn giản hoạt động tốt khi tất cả các đối tượng của bạn sẽ nằm trên cùng một máy chủ. Điều này theo mô hình triển khai "Quy mô" của Microsoft. Thay vì tách riêng các tầng đối tượng trên các máy chủ, hãy đặt mọi thứ nhưng cơ sở dữ liệu lại với nhau trên các máy chủ web và sau đó tăng dần các máy chủ dự phòng giống hệt nhau để mở rộng lớp máy chủ web.

Microsoft đã đẩy mạnh gần đây về Kiến trúc hướng dịch vụ, dựa nhiều hơn vào WCF và lời gọi từ xa. Đây được xem là chìa khóa cho chiến lược điện toán đám mây có thể khiến mọi người di chuyển các bộ phận hoặc tất cả các ứng dụng của họ sang tài nguyên linh hoạt trong đám mây (mà MS muốn lưu trữ với Azure và tương tự).

+0

Tôi muốn chia câu trả lời của mình thành 3 nhận xét do độ dài. Tôi hoàn toàn hiểu quan điểm của bạn về việc mở/mang lại cách tiếp cận x của riêng bạn so với cách tiếp cận chồng tích hợp, nhưng điều tôi hỏi là tại sao chứ không phải vì sự khác biệt trong cách tiếp cận triết học mà là từ cấp độ kỹ thuật và kiến ​​trúc. Tôi không hiểu tại sao mô hình của Microsoft thỏa mãn nhu cầu cho các ứng dụng của Microsoft và tại sao mô hình máy chủ ứng dụng Java thực hiện tương tự cho các ứng dụng Java. – Howiecamp

+0

(Phần 2) - Về mặt kiến ​​trúc (từ góc độ yêu cầu ứng dụng chung), các vấn đề/vấn đề tương tự nên có mặt trong cả hai trường hợp. Về WCF, tôi chỉ đơn giản là sử dụng nó như là một ví dụ về cách một ứng dụng web .net có thể nói chuyện với một số quy trình logic hoặc vật lý khác. Nó có thể là một can-and-string. Đó không phải là cốt lõi cho câu hỏi của tôi. – Howiecamp

+0

(Phần 3) - Hiển nhiên lưu trữ các đối tượng bên trong quá trình asp.net của máy chủ web hoạt động nếu bạn không cần kiến ​​trúc phân tán. Tôi chỉ nói rằng trong Microsoft đất, cách tiếp cận này là phổ biến hơn. Bạn muốn có một hệ thống phân tán nếu bạn muốn phân phối tải xử lý chẳng hạn. Điều tôi đang tự hỏi là, nếu cách tiếp cận ban đầu của Microsoft với MTS cho bạn khả năng này, tại sao họ lại tập trung vào MTS và tập trung hơn vào một cách tiếp cận toàn cục? – Howiecamp

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