Làm thế nào quan trọng là sử dụng cùng một ngôn ngữ cho khách hàng và máy chủ?


11

Tôi đã đánh giá các giải pháp kiến ​​trúc cho một dự án di động sẽ có dịch vụ / ứng dụng web bên cạnh các ứng dụng gốc và đã xem xét các thư viện, khung và ngăn xếp khác nhau như Meteor , đây là một loại "khung gói ngăn xếp mở" , là ràng buộc chặt chẽ với Node.js .

Có rất nhiều thảo luận về lợi ích của việc sử dụng cùng một ngôn ngữ cả phía máy khách và máy chủ và tôi không hiểu điều đó. Tôi có thể hiểu nếu bạn muốn phản ánh toàn bộ trạng thái của một ứng dụng web trên cả máy khách và máy chủ nhưng đấu tranh để tìm các chiến thắng khác ... Hiệu quả của quy trình làm việc?

Tôi đang cố gắng để hiểu tại sao ngang bằng ngôn ngữ máy khách / máy chủ được coi là một chén thánh. Tại sao sự tương đương ngôn ngữ máy khách / máy chủ lại quan trọng trong phát triển phần mềm?


12
Tôi cho rằng đây không hẳn là một điều tuyệt vời, đặc biệt khi JavaScript là ngôn ngữ được đề cập.
Latty

4
Tôi phải thừa nhận rằng tôi chưa đạt đến thời điểm hiển linh với JS và do đó không hiểu tại sao bạn muốn viết mã máy chủ với nó, nhưng đó là một chủ đề khác ..
Makita

1
Cảm ơn đã thực hiện bài viết đầu tiên của bạn trên Stack Exchange lập trình viên. Để biết thêm thông tin về tối đa hóa số phiếu tăng và giảm thiểu số phiếu xuống, hãy đọc Câu hỏi thường gặp. Bạn có thể đã bị bỏ phiếu vì câu hỏi của bạn thuộc chủ đề trò chuyện nhiều hơn là câu trả lời cụ thể. Có thể mất một lúc để làm quen với định dạng ở đây. Câu trả lời ngắn mà không có chi tiết được bỏ phiếu. Vì vậy, câu trả lời là tranh luận một chủ đề. Có một số nền tảng mà một câu hỏi hoặc một câu trả lời là cụ thể nhưng đủ phổ quát và đánh vào một chủ đề với số lượng chi tiết phù hợp.
Nhà phát triển vào

1
Tôi thậm chí sẽ tranh luận chống lại nó. Với việc sử dụng cùng một ngôn ngữ cho cả máy chủ và máy khách, bạn sẽ gặp rủi ro về sự vướng víu và các tính năng cụ thể của ngôn ngữ trong giao tiếp.
Pieter B

3
@Makita Tôi nghĩ đó là câu hỏi hợp lệ, nhưng mọi người có xu hướng hài lòng với downvote khi hỏi ví dụ. Tôi đã loại bỏ một số phần nhất định của câu hỏi ban đầu và tập trung câu hỏi của bạn xung quanh lý do tại sao sự tương đương ngôn ngữ máy khách / máy chủ lại quan trọng.
maple_shaft

Câu trả lời:


5

Về phía PRO:

  • Nếu các lược đồ và mã có thể được sử dụng lại bởi cả hai bên, có rất nhiều hiệu quả trong việc thực hiện logic và dữ liệu tương tự chỉ một lần.

Về phía CON:

  • Máy khách có thể chủ yếu là một khung nhìn rất phù hợp với ngôn ngữ đánh dấu hoặc ngôn ngữ kịch bản, trong khi máy chủ có thể chủ yếu là logic kinh doanh phù hợp hơn với ngôn ngữ khác.

Trong phát triển web, các ngôn ngữ đã tăng sinh, tạo ra các công cụ mạnh mẽ cho các phần cụ thể của hệ thống cũng như cần nhiều chuyên gia để các nhà phát triển hoặc nhóm các nhà phát triển học hỏi. Trong các lĩnh vực khác như xử lý giao dịch hoặc hệ thống nhúng tuân theo phương pháp thiết kế hệ thống, có thể có tiết kiệm từ một ngôn ngữ chung.

Các khung Javascript mới dường như đến với chúng tôi rất nhanh và một số công việc được thực hiện để đóng gói API cho mặt sau và các công cụ cho giao diện người dùng. Có thể là thông minh để giữ tính linh hoạt và phân tách các mối quan tâm giữa mã phía máy khách và máy chủ để bạn có thể tự do di chuyển giữa chúng mà không bị mắc kẹt quá lâu với một công cụ cụ thể.


14

Có lẽ lợi ích nhận thức là:

tức là nó làm cho việc quản lý tài nguyên trở nên dễ dàng hơn đối với các nhà quản lý dự án và có ít hoặc không có lợi ích kỹ thuật (thậm chí có thể có lợi ích kỹ thuật tiêu cực nếu bạn đang thuê một nhóm ngựa con lừa)


1
Đó là một lợi ích nếu bạn tự mình phát triển, vì không có chuyển đổi "tinh thần" giữa máy chủ và máy khách. Nếu bạn muốn làm một cái gì đó và có một trải nghiệm lớn về JavaScript, bạn có thể nhận được kết quả tốt hơn và nhanh hơn theo cách này, nhưng đó có thể là tất cả ...
K ..

Bạn cũng sẽ nói rằng không có bất lợi về kỹ thuật, có thể là một lợi thế trong việc sử dụng một ngôn ngữ khác nhau cho mỗi hệ thống con?
Michael Borgwardt

1
@MichaelBorgwardt giả sử mỗi ngôn ngữ phù hợp với hệ thống con tôi sẽ nói có, không có nhược điểm kỹ thuật nào (dù có thể không có nhiều lợi thế) nhưng có thể có tác động lớn đến động lực học và tuyển dụng của nhóm. tất nhiên, phần lớn các hệ thống con sẽ khá dễ thực hiện trong bất kỳ ngôn ngữ nào, vì vậy tôi không mong đợi sẽ thấy điều cực đoan này.
jk.

Nhận xét về việc đây là một ý tưởng tồi là không chính đáng. Có rất nhiều ngôn ngữ có thể biên dịch thành JavaScript và ngôn ngữ phía máy chủ, bao gồm cả Lisp , thực tế là ngôn ngữ được sử dụng trong khóa học SICP được bài đăng trên blog của Joel ca ngợi.
back2dos

@ back2dos hy vọng điều đó làm rõ nó
jk.

2

Lợi ích là bạn có thể sử dụng lại (cho một số phần mở rộng) chuyên môn và mã của mọi người ở cả hai bên.

Mọi người

Các nhà phát triển cần thành thạo một ngôn ngữ duy nhất và tạo thành một nhóm duy nhất. Thay vì hai nhóm chuyên môn. Điều này giúp việc chuyển kiến ​​thức giữa họ dễ dàng hơn và cũng cho phép họ chuyển đổi công việc giữa phía máy khách và máy chủ dễ dàng hơn. Cuối cùng, nó tạo điều kiện giao tiếp với các thành viên trong nhóm của "phía bên kia" khi thảo luận về các vấn đề kỹ thuật vì họ có chung nền tảng kỹ thuật.

Đôi khi thật hữu ích khi có một số trạng thái ở phía máy khách, hoặc thuật toán hoặc cả hai. Đôi khi, điều tương tự được thực hiện ở cả hai bên. Hãy lấy ví dụ về trò chơi nhiều người chơi: bạn cần thể hiện trạng thái trò chơi trên cả máy khách và máy chủ. Ngoài ra, bạn cần thực hiện các quy tắc về phía máy khách (để đáp ứng) và cả phía máy chủ (để xác thực hành động của người chơi). Có thể sử dụng lại mã cho những thứ này có thể là một lợi thế lớn. ... Trong một số ứng dụng khác, bạn hoàn toàn không cần điều này ... tất cả phụ thuộc vào từng trường hợp.

... tất nhiên cũng có nhược điểm, nhưng đó là cho một bài viết khác;)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.