2009-04-25 26 views
5

Tôi đã thấy một vài ví dụ trong đó kiến ​​trúc là có java ở phía máy chủ và C# trên máy khách - điều gì làm cho sự kết hợp này trở nên tốt? tại sao .net trên cả hai mặt không phải là lựa chọn tốt hơn (hoặc trên thực tế, java ở cả hai bên?)Tại sao Java trên Máy chủ và C# trên Máy khách là lựa chọn phổ biến?

được thêm vào sau: trong nhiều trường hợp, java được lưu trữ trên máy chủ cửa sổ, tôi nghĩ qua tomcat (không chắc chắn 100%) - động lực gì ở đây?

Trả lời

16

Java thường được sử dụng trên back-end (và đã trở thành tiêu chuẩn de-facto) đối với một số lý do:

  • Java có thể chạy trên các hệ điều hành khác nhau một cách minh bạch, từ các máy trạm phát triển Windows đến các máy chủ chuyên dụng Unix.
  • Java thực thi cách tiếp cận theo mô-đun, hướng đối tượng để mã hóa, cho phép các hệ thống quy mô lớn được viết (hy vọng) mà không trở thành không thể quản lý được. (điều này cũng đúng với C# /. NET, nhưng không đúng với các ngôn ngữ back-end khác như Perl hoặc Python)
  • Java thường được sử dụng trong các hệ thống back-end (ngôn ngữ phổ biến hơn là cho một ứng dụng cụ thể, likelier nó là có các thư viện trưởng thành và các công cụ trong ngôn ngữ đó cho rằng ứng dụng cụ thể)

C# có các công cụ và thư viện tuyệt vời để thiết kế giao diện người dùng trong Windows. Hệ điều hành của Java (OS) - tính chất độc lập cung cấp ít công cụ hơn cho giao diện người dùng của hệ điều hành, trong khi C# được thiết kế và bảo trì bởi Microsoft, với mục đích viết các ứng dụng Windows.

+3

Như một sang một bên - IMO các điểm bullet tất cả đều áp dụng như nhau cho Java và .NET ... vì vậy tôi không chắc chắn chúng là "lý do" - chỉ đơn giản là "Java đã có" tài khoản đầu tiên cho rất nhiều lý do. .NET/C# vẫn được sử dụng nhiều trong việc sử dụng máy chủ; nó không chỉ là các ứng dụng windows. Thật vậy, vì rất nhiều phát triển dựa trên web những ngày này, bạn có thể tranh luận rằng (bằng các con số) * phần lớn * của sự phát triển .NET/C# được sử dụng trên các máy chủ; chia thành các máy chủ ASP.NET, Mono Rails, WCF, các máy chủ socket, các máy chủ từ xa, ASP.NET MVC và các máy chủ khác. –

+0

Bên cạnh cách tiếp cận OO, hãy thực hiện điểm buller khác * không * áp dụng cho .Net. Java là nền tảng độc lập và có thể được sử dụng trên một máy chủ Linux nhỏ khi khởi động và chuyển sang máy Solaris hoặc Aix rất lớn khi bạn cần sắt nặng. .Net là của Microsoft, cho Microsoft (Mono là một không đầy đủ không lên đến dữ liệu luôn bắt kịp bản sao). – nxadm

2

Các định dạng trao đổi dữ liệu như JSON làm cho nó kém quan trọng hơn nhiều đến mức các hệ thống ở hai bên của kết nối là cùng một công nghệ cấp thấp.

Java là ngôn ngữ được kiểm tra và hỗ trợ rất tốt cho các máy chủ, trong khi C# có các công cụ tuyệt vời để xây dựng GUI.

+1

Ngắn và ngọt. Cá nhân tôi cảm thấy rằng C# đang từ từ xây dựng hỗ trợ trên máy chủ, nhưng việc thiếu nền tảng chéo là một lỗ hổng lớn. Mono sao chép hầu hết các .Net, nhưng không phải tất cả mọi thứ hoặc giống nhau. – kevindaub

+0

Trao đổi dữ liệu lại: thực sự. Mặc dù cho hệ thống-to-hệ thống, xml sẽ được phổ biến hơn, với các định dạng nhị phân di động như "bộ đệm giao thức" từ từ đạt được đà. Trong khi Java * được * kiểm tra và hỗ trợ tốt; C# /. NET - nhưng có, các công cụ như WPF cho phép phát triển khách hàng rất mạnh mẽ trong C# /. NET –

5

Vâng, có rất nhiều trường hợp .NET được sử dụng ở cả hai đầu (và tôi đoán là ditto cho Java). Nhưng dự đoán của tôi cho động lực đằng sau kiến ​​trúc Java-server/.NET-client là ứng dụng đang nhắm mục tiêu Unix làm hệ điều hành máy chủ, vì lý do chi phí hoặc độ tin cậy hoặc vì nó cần phù hợp với môi trường máy chủ Unix hiện có (ví dụ: làm việc chặt chẽ với các ứng dụng Unix hiện có), nhưng đang nhắm mục tiêu Windows làm nền tảng ứng dụng khách. (Tôi nghĩ Java có lẽ ít phổ biến hơn khi Windows cũng đang được sử dụng làm nền tảng máy chủ; không có số liệu nào để sao lưu điều này.)

Nếu hệ điều hành máy chủ Unix được giả định, thì Java là một lựa chọn rất hiệu quả. được hỗ trợ với nhiều thư viện nhưng với một cơ sở phát triển lớn hơn (ít nhất là trong môi trường "enterprisey"), và nhiều "quản lý" công nhận hơn các lựa chọn thay thế như Perl, Ruby hoặc Python.

Ngược lại, .NET phù hợp hơn với máy khách Windows vì nó hỗ trợ tốt hơn cho việc xây dựng Windows GUI. Nó không chỉ là công cụ: các API Java GUI (ví dụ Swing) có xu hướng thích sự tương tự giữa nhiều nền tảng hơn một giao diện gốc và do đó có xu hướng dẫn đến các ứng dụng không giống hoặc hoạt động giống như các ứng dụng Windows. (Tôi generalising một chút ở đây - xin lỗi!)

2

Java được coi là trưởng thành hơn, đó là một thuộc tính tốt cho một máy chủ, trong khi C# có tích hợp tốt hơn với/cái nhìn tương tự và cảm thấy các cửa sổ và văn phòng (mà các khách hàng tương tự)

0

Hầu hết các máy chủ hoặc là Windows hoặc * nix dựa. Vì vậy, tại máy chủ, hoặc Java hoặc .NET/C# (thông qua mono trên * nix) sẽ hoàn toàn tốt.

Java có hỗ trợ tốt hơn cho các thiết bị khách khác nhau, nhưng theo nhiều cách, yêu cầu đang được thay thế bằng hỗ trợ HTML tốt hơn nhiều ở hầu hết các khách hàng - ít nhất là cho các thiết bị trực tuyến.

Đối với ứng dụng khách được cài đặt, có thể cho rằng Java có tính di động tốt hơn - nhưng với những thứ như Compact Framework, Micro Framework, Silverlight, v.v. .NET đang bắt kịp.

Cá nhân (do vai trò công việc), tôi quan tâm chủ yếu là những gì có ở máy chủ; .NET/C# chưa bao giờ cho phép tôi xuống - nhưng tôi không phải là nhà phát triển Java, vì vậy tôi không thể tương phản trực tiếp. Từ công việc về các dự án mã nguồn mở, tôi biết có một cộng đồng người giỏi ở đó bằng cách sử dụng mono trên máy chủ.

Tại máy khách, các công cụ như WPF cung cấp trải nghiệm GUI tốc độ đầu tiên, với sự hỗ trợ của .NET cho các winforms hữu ích cho các ứng dụng windows thông thường. Nhưng kể từ rất nhiều kiến ​​trúc WPF phổ biến với Silverlight (với Moonlight là mono twin cho * nix etc), điều này cho phép trải nghiệm được sử dụng trên các máy khách không phải của Windows.

+0

Không thể so sánh Mono với .Net. Mono là một bản sao không đầy đủ, không cập nhật và luôn bắt kịp. Có những người sử dụng nó trên các máy chủ * nix, nhưng không nhiều. Windows người thích phát triển cho một đầy đủ, up-to-date stack (.Net) và người Unix không muốn là công dân hạng hai (Mono chơi bắt kịp nhớ), trong khi các lựa chọn thay thế trưởng thành, đã được chứng minh và không có rủi ro (bằng sáng chế!) Tồn tại cho nền tảng của họ. Nếu bạn quan tâm đến nền tảng độc lập, java là con đường để đi, cũng trên cửa sổ. Nếu bạn chỉ lập trình cho windows, .Net là một tùy chọn. – nxadm

+0

Vâng, .NET cũng không đầy đủ. Nếu nó đã hoàn thành, họ sẽ ngừng thay đổi nó! Tôi biết bàn tay đầu tiên của nhiều người sử dụng mono trên máy chủ * nix sản xuất. Và chắc chắn có những khu vực (cô lập) mà mono có chì (ví dụ như trình biên dịch như một dịch vụ). Tôi nghĩ rằng bạn đang quá đơn giản hóa mọi thứ bằng cách nói những gì "người Windows" và "người Unix" muốn. Cuối cùng, tất cả chúng ta chỉ muốn hoàn thành công việc cho những hạn chế về thời gian/ngân sách/etc thích hợp, được trả tiền và về nhà. –

0

Theo như Java là có liên quan hai điều

  1. Linux. Đáng tin cậy và rẻ tiền của nó. Một trong nhiều lý do khiến các doanh nghiệp sử dụng rất nhiều Linux cho Java bởi vì họ không phải khởi động lại các hộp sau Patch Tuesday.
  2. Điểm phát sóng. Một trong những kỳ quan của thế giới hiện đại - hiệu suất tuyệt vời.
0

Fortyrunner, Tôi chưa thấy điểm chuẩn duy nhất mà JVM điểm nóng sẽ đánh bại MS CLR.

0

Trên phía máy chủ Java đã được chứng minh là mạnh mẽ và khả năng mở rộng và nó có sẵn trên nền tảng .NET chỉ có thể mơ ước. Do đó nếu bạn muốn có nhiều lựa chọn nhất trong phần cứng Java là một lựa chọn tuyệt vời - điều này bao gồm các máy rất lớn với nhiều CPU cũng như rất nhiều hộp x86 giá rẻ.

Nếu bạn có .NET ở phía máy chủ, bạn phải sử dụng Windows và Windows chỉ đơn giản là không chia tỷ lệ phần cứng tốt.

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