8

Vì MS appears to have killed Managed JavaScript in the latest DLR cho cả phía máy chủ (ASP.NET tương lai) và phía máy khách (Silverlight), có ai đó đã sử dụng thành công các API không lỗi thời để cho phép viết mã đối tượng ứng dụng của họ bằng JScript.NET và/hoặc có thể giải thích cách làm như vậy? Một giải pháp Mono/JScript cũng có thể được chấp nhận, nếu nó ổn định và đáp ứng các yêu cầu dưới đây.JScript.NET có thể được sử dụng để viết một ứng dụng .NET không?

Chúng tôi quan tâm đến việc nâng cấp máy chủ tập lệnh sử dụng công cụ Microsoft JScript và API ActiveScript cho một thứ có hiệu suất cao hơn và khả năng mở rộng dễ dàng hơn. Chúng tôi có hơn 16.000 kịch bản phía máy chủ có trọng lượng hơn 42MB nguồn, vì vậy việc viết lại sang một ngôn ngữ kịch bản khác không nằm trong câu hỏi.

yêu cầu cụ thể của chúng tôi là:

  • hiệu suất Noteably tốt hơn so với Microsoft JScript (ActiveScript) động cơ
    • Better hiệu suất thời gian chạy và/hoặc
    • Giữ kịch bản pre-phân tích cú pháp hoặc biên soạn (don 't reparse trên mỗi lần chạy)
    • Mức tiêu thụ bộ nhớ thấp hơn hoặc bằng nhau
  • Full ECMA-262 ECMAScript tương thích
    • một porting nhỏ có thể được dung thứ
  • tiêm của các đối tượng tùy chỉnh vào namespace kịch bản
    • NET đối tượng (không phải là một yêu cầu khó khăn)
    • Các đối tượng COM hoặc các đối tượng COM được bao bọc trong.NET
  • õ của COM đối tượng từ Script
    • à la "ActiveXObject mới (progid)"
    • ưu tiên thấp cho các preceeding
  • Bao gồm các file
    • Pre- tải "tập lệnh trợ giúp" vào ngữ cảnh thực thi tập lệnh
    • An "bao gồm" chức năng hoặc statement (dễ dàng để tạo, được đưa ra ở trên)
  • Hỗ trợ cho mã tại toàn cầu phạm vi
    • Thi hành mã phạm vi toàn cầu
    • Giữ giá trị khởi tạo ở cấp toàn cầu phạm vi
    • Khai thác các giá trị từ phạm vi toàn cầu
    • Injection và thay thế các giá trị ở phạm vi toàn cầu
  • gọi các chức năng kịch bản xác định
    • với các thông số
    • và có thể tiếp cận phạm vi toàn cầu khởi tạo trước
  • Nguồn cấp gỡ lỗi
  • Hỗ trợ Thương mại hoặc Open Source
  • phi API lỗi thời
+1

Liệu Microsoft vẫn hỗ trợ Managed JScript trong Silverlight? – Nosredna

+1

Không, cũng đi từ Silverlight. Xem câu trả lời này: http://stackoverflow.com/questions/775339/where-can-you-download-managed-jscript-for-the-dlr/886173#886173 –

+1

Điều đó thật đáng kinh ngạc. – Nosredna

Trả lời

2

Sớm hay muộn, tôi tưởng tượng một ai đó sẽ viết một Javascript DLR. Tôi biết điều đó không thuận tiện cho bạn ngay bây giờ, nhưng có lẽ bạn có thể bắt đầu dự án. Tôi nghi ngờ nó sẽ có một phân tích chi phí/lợi ích tốt hơn để sử dụng JScript.NET.

1

Nếu di chuyển ra khỏi NET và Microsoft là ok cho bạn thì bạn nên cố gắng của Mozilla Rhino. Nó là một thực thi mã nguồn mở của JavaScript được viết hoàn toàn bằng Java. Rất nhiều thư viện máy chủ js hiện đại nhắm mục tiêu nền tảng này.

+0

@thatismatt - Bạn đã sử dụng Rhino với cây cầu Java đến COM chưa? Bạn có thể nhận xét về hiệu suất, dễ dàng tích hợp với mã C++, v.v. không? –

+0

Tôi e rằng không, xin lỗi tôi không giúp được gì nhiều, hãy cho tôi biết cách bạn tiếp tục! – thatismatt

0

Việc sử dụng Com interop có nghĩa là bạn được giới hạn cho một giải pháp MS Java và Nguồn mở muốn càng ít càng tốt để làm với nó.

Tôi không thấy bất kỳ giải pháp nào hỗ trợ tất cả yêu cầu của bạn hoặc bạn bỏ qua tất cả các công cụ COM/.NET và đi Java (Rhino)/Linux/nguồn mở hoặc bạn đặt câu hỏi sử dụng Javascript làm ngôn ngữ máy chủ của bạn ngay cả trong Linux thế giới chúng ta sử dụng PHP/Python/Ruby nhiều hơn trên máy chủ nếu chúng ta không thể chạy Java. Bạn sẽ không thấy hiệu suất lớn với kịch bản Java vì ngôn ngữ là rào cản chính.

Tôi sẽ không tính vào những người viết một DLR mới vì kịch bản Java máy chủ đang chết nhanh.

Xem xét bạn muốn hiệu suất, F #, Microsoft sẽ giữ cho động cơ Jscript được hỗ trợ trong ít nhất 5 năm cho bạn thời gian để tạo nội dung mới trong F # trong khi bạn từ từ di chuyển mã.

+0

Vấn đề với nền tảng chéo là chúng ta cần truy cập tới hơn 80 cuộc gọi RPC Win32 cộng với một nửa tá các đối tượng DCOM, chẳng hạn như WSUS và WMI. Tôi yêu F # và sử dụng nó để tạo mẫu, tiện ích trong nhà và quản lý danh mục (tại nhà cho cửa hàng trực tuyến của vợ tôi), nhưng như đã nói, chúng tôi có hơn 16.000 tập lệnh được viết bằng JS ở phía máy chủ và không đủ khả năng chi phí chuyển đổi sang ngôn ngữ khác. Điều đó nói rằng, chúng tôi đã xem http: //jcifs.samba.org, có thể chứng minh khá thú vị khi kết hợp với Rhino. –

+0

Đó là một trường hợp của một tảng đá và cứng .. Câu hỏi đầu tiên là biết phía máy chủ Javascript đang chết/chết Bạn viết mã mới vào cái gì? Ít nhất nếu bạn làm mã mới trong f # bạn sẽ có được một sự di chuyển trơn tru có thể kéo dài 5-10 năm. Bạn có thể tìm thấy 50% mã của bạn là F # trong 5 năm và nó sẽ nhanh và chạy tốt trên 16 lõi bạn có sau đó. Java interop (tức là tê giác) với win32/Dcom/WMI sẽ có vấn đề nhưng có thể cung cấp cho bạn một giải pháp nếu bạn giải quyết những vấn đề đó. – ben

1

Tôi đã sử dụng CSScript.net vì nó sẽ cho phép bạn chạy C# dưới dạng nền tảng tập lệnh. Từ trang web:

CS-Script kết hợp sức mạnh và sự phong phú của C# và FCL với tính linh hoạt của hệ thống tập lệnh. CS-Script có thể hữu ích cho hệ thống và quản trị viên mạng, nhà phát triển và người kiểm tra. Đối với bất kỳ ai cần tự động hóa để giải quyết một loạt các nhiệm vụ lập trình .

CS Script thỏa mãn tất cả các điều kiện bạn đã đặt ra. Tôi đã sử dụng nó trong sản xuất như là một thay thế cho Boo nó đã thực hiện thực sự tốt. Bạn có thể thấy nó trong hành động here.

3

Tôi đã trả lời câu hỏi tương tự here. Hãy xem IronJS, việc triển khai JavaScript trong F # chạy trên DLR.

0

Các Jurrassic -Engine là sống và đá.

Từ trang web CodePlex của họ:

  • Hỗ trợ tất cả các chức năng ECMAScript 3 và ECMAScript 5, bao gồm chế độ nghiêm ngặt ES5
  • Vâng thử nghiệm - đi qua năm ngàn xét nghiệm đơn vị (với hơn ba mươi nghìn khẳng định)
  • API đơn giản nhưng mạnh mẽ
  • Biên dịch JavaScript thành .NET bytecode (CIL); không phải là một thông dịch viên
  • triển khai như một hội đồng NET duy nhất (không có mã gốc)
  • hỗ trợ cơ bản để gỡ lỗi tích hợp trong Visual Studio
  • Sử dụng mã thế trọng lượng nhẹ, mã để tạo ra hoàn toàn thu gom rác thải
  • Tested trên .NET 3.5, .NET 4 và Silverlight
Các vấn đề liên quan