Tôi là nhà phát triển cho Myna (www.mynajs.org), một nền tảng JS server-side mã nguồn mở dựa trên Rhino và Java. Tôi sẽ giải quyết các vấn đề có liên quan đến Myna, nhưng nhiều người trong những điểm này áp dụng cho server-side JS nói chung:
Bằng cách sử dụng phía máy chủ JS, chúng ta có thể thực hiện các ứng dụng web toàn mà không sử dụng bất kỳ phía máy chủ ngôn ngữ (như C#, java, v.v.) Hoặc JS phía máy chủ nằm giữa máy chủ web và chồng langauge khác.
Trong Myna, bạn có thể viết toàn bộ ứng dụng của mình trong JS. Myna đã bao gồm API để truy cập Cơ sở dữ liệu, Ánh xạ quan hệ đối tượng, crytogrophy, OpenID, v.v.
Đây có phải là cách tiếp cận tốt hơn C#/Java không?
Với máy chủ dựa trên tê giác, nó không quan trọng để thả xuống Java bất cứ khi nào cần. Bạn có thể dễ dàng cài đặt các thư viện Java mã nguồn mở/thương mại/mã hóa bằng tay và sau đó kịch bản chúng từ JS. Điều này có nghĩa là bạn có được sự phát triển nhanh chóng của JS nhưng vẫn giữ được những ưu điểm của nền tảng Java
những ưu điểm và nhược điểm là gì?
ưu:
nhanh phát triển: Trong Myna bạn chỉ cần tạo file trong webroot với một phần mở rộng .sjs. Điều này có nghĩa là bạn có thể tạo chu trình trình duyệt chỉnh sửa-lưu-làm mới với rất nhanh để gỡ lỗi/chỉnh sửa mã.
Dễ JSON: Có JS hỗ trợ server-side có nghĩa là di chuyển cấu trúc phức tạp là rất dễ dàng
chung đang: Nếu bạn cần để thực hiện các chức năng tương tự trên cả hai máy chủ và trình duyệt, bạn có thể sử dụng cùng một mã
Dynamic ORM: Ngôn ngữ biên dịch được nhập tĩnh sẽ khó thay đổi các đối tượng trong thời gian chạy. Điều này thường có nghĩa là ORM phải được xác định trước. Trong tòa nhà Myna ORM đơn giản như
var manager =new Myna.DataManager("DataSource name").getManager("table name");
Bạn nhận được một đối tượng có thể thực hiện tất cả các bảng DB cơ bản.Một ví dụ khác bạn có thể chèn một hàng với tất cả các giá trị phù hợp từ một bài mẫu:
manager.create($req.data);
chức năng Lập trình: Nếu bạn đã bắt đầu chơi với JavaScript tiên tiến các tính năng sau đó bạn sẽ đánh giá cao cách hữu ích họ là Server- bên. Do môi trường server-side phù hợp nó là an toàn để sử dụng các tính năng tiên tiến như Array Extras, generators and iterators, destructuring assignments, và E4X
khuyết điểm:
cụ: ngôn ngữ tĩnh gõ như C# và Java có các công cụ phát triển và IDE tuyệt vời. Ngôn ngữ động như JS chưa có hỗ trợ công cụ. Cá nhân tôi thấy rằng sự giảm lớn trong mã boilerplate và đúc kiểu cầu kỳ làm cho điều này, nhưng điều này vẫn là một bất lợi lớn nếu bạn đã làm rất nhiều phát triển trong IDE. Nếu bạn đang sử dụng một IDE, xem xét sử dụng jedit cho các ngôn ngữ động
Maturity/Tiêu chuẩn: serverside JS vẫn là một mô hình mới, và có rất nhiều cầu thủ và không có người chiến thắng rõ ràng. ECMA không có bất kỳ tiêu chuẩn nào cho máy chủ JS. Như đã đề cập trong câu trả lời của Brandon, nhóm CommonJS đang nỗ lực để tạo thành một tiêu chuẩn JS serverside và Myna có CommonJS hỗ trợ thực nghiệm qua Narwhal
cách này hoạt động tốt về hiệu suất?
Trong tốc độ tính toán thô, vài ngôn ngữ động có thể khớp với các ngôn ngữ biên soạn tĩnh như C# và Java. Có nói rằng, nó thực sự không quan trọng. Bất kỳ phần nào của ứng dụng của bạn được tính toán chuyên sâu có lẽ nên được viết bằng Java hoặc sử dụng một thư viện Java hiện có. Tôi sẽ không đề nghị rằng bất cứ ai viết một cơ sở dữ liệu trong JS chẳng hạn. Đối với các ứng dụng web trong thế giới thực/các dịch vụ SOA, nguyên nhân chính của sự chậm lại không phải là tốc độ tính toán thô, nó là mã không hiệu quả, đặc biệt là truy cập cơ sở dữ liệu. Myna giúp với điều này bằng cách làm những việc như:
- nội bộ cách lưu biên soạn kịch bản JS
- chuẩn bị phát biểu nội bằng cách sử dụng lưu trữ cho các giao dịch cơ sở dữ liệu
- Query và đoạn sản lượng bộ nhớ đệm
kết nối
- Cơ sở dữ liệu tổng hợp
- ETag tự động hỗ trợ băm
- Công cụ tạo hồ sơ
- Tải siêu dữ liệu nhỏ
chúng tôi có thể triển khai các giao dịch db tốt như thế nào? chúng ta có thể làm điều đó trong serveride JS ..?
Nếu bạn ngụ ý giao dịch như trong "tập hợp các câu lệnh SQL có thể đảo ngược hoặc cam kết", thì Myna chưa hỗ trợ giao dịch. Tôi mở để thực hiện điều này nếu có đủ sự quan tâm.
Nếu bạn có nghĩa là "JS hỗ trợ loại cơ sở dữ liệu nào?" thì câu trả lời phụ thuộc vào nền tảng. Nền tảng Myna cung cấp các tính năng cơ sở dữ liệu sau:
- Ứng dụng quản trị dựa trên web nơi bạn có thể xác định "nguồn dữ liệu", tức là thông tin kết nối cơ sở dữ liệu. Sau đó, bạn có thể truy vấn các nguồn dữ liệu này theo tên. Myna bao gồm các trình điều khiển JDBC cho H2, MySQL, Microsoft SQL Server và Postgresql, nhưng bất kỳ nguồn dữ liệu JDBC hoặc ODBC nào đều có thể được sử dụng
- Myna.Database và Myna.Table cung cấp truy cập dữ liệu trung lập cơ sở dữ liệu cũng như tạo bảng và sửa đổi. đối tượng Query
- Myna của hỗ trợ maxRows, phân trang, các thông số SQL, xử lý hàng tùy chỉnh, truy vấn-of-truy vấn, bộ nhớ đệm và nhiều hơn nữa
- Myna của DataManager đối tượng hỗ trợ thời gian chạy ORM tạo đối tượng
là nó có thể phát triển các dịch vụ RESTFul và SOAP trong serveride JS .. ??
Hỗ trợ REST và SOAP là các tính năng cụ thể của nền tảng. đối tượng WebService Myna của hỗ trợ các giao thức sau:
- SOAP
- XML-RPC
- JSON-RPC
- Ext Direct
- JSON-Myna (một giao thức đơn giản có sử dụng bài viết dạng bình thường và lợi nhuận JSON. Dễ sử dụng từ trình duyệt)
Myna cũng hiểu phương thức yêu cầu PUT và DELETE và trình bày quyền truy cập để yêu cầu nội dung nội dung ở cả dạng văn bản lẫn dạng nhị phân, để có thể xử lý các phương thức RESTful này theo cách cụ thể của ứng dụng.
Debugging
breakpoint truyền thống gỡ lỗi là một thách thức phía máy chủ thực sự. Mặc dù Rhino hỗ trợ các trình gỡ lỗi, việc sử dụng chúng từ một ứng dụng web không trạng thái sẽ khá liên quan. Cá nhân tôi thậm chí không sử dụng các trình gỡ rối breakpoint ngay cả khi chúng có sẵn (ví dụ: firebug). Thay vào đó tôi thích đăng nhập.
Trong Myna,
Myna.log(type,label,detail)
sẽ đẻ trứng một chủ đề ưu tiên thấp để viết một thông điệp log HTML để cơ sở dữ liệu khai thác gỗ Myna của. Các bản ghi này sau đó có thể được tìm kiếm thông qua Quản trị viên Myna. Nhật ký cũng ghi lại dấu thời gian và thời gian trôi qua mili giây cho mục đích định cấu hình. Myna.dump (obj) cũng có thể được sử dụng để trình bày một biểu diễn bảng HTML của bất kỳ đối tượng nào. Myna cũng ghi lại tất cả các ngoại lệ chưa được xử lý với các dấu vết ngăn xếp, bối cảnh mã nguồn và các chi tiết yêu cầu. Giữa dump(), log() và trình xử lý lỗi mặc định, tôi không gặp khó khăn khi gỡ lỗi mã Myna
Đánh dấu, Điều tốt để xem những điểm này từ nhà phát triển SSJS cốt lõi.Cảm ơn bạn rất nhiều vì đã hỗ trợ của bạn .. Tôi đang chơi với Jaxer Defenelty tôi sẽ nhìn vào myna Từ câu trả lời của bạn myna trông đầy hứa hẹn Và nếu có thể bạn có thể sửa câu trả lời của bạn ith SSJS máy chủ bên gỡ lỗi khả năng. ?? – RameshVel
Tôi đã cập nhật với gỡ lỗi và cố định liên kết tài liệu Myna để chúng hiển thị trong câu trả lời. –
cảm ơn cho bản cập nhật Mark., Breakpoint gỡ lỗi là mối quan tâm chính cho những kẻ như tôi mà phát triển trước đó hoàn toàn trong VS IDE. Tôi thấy nó rất khó. Jaxer cũng hỗ trợ gỡ lỗi breakpoint. Bạn có kế hoạch tương lai nào thực hiện IDE của riêng bạn với hỗ trợ gỡ lỗi breakpoint không ?? – RameshVel