2009-04-13 23 views
6

Tôi đã suy nghĩ về việc tích hợp Ruby vào ứng dụng của tôi, nhưng một số bạn bè của tôi tại nơi làm việc nói với tôi rằng C# đã ở mức rất cao. Nhưng đối với tôi, có vẻ như nó có nhiều hành lý hơn để làm những việc rất nhanh.Có hợp lý khi tích hợp các ngôn ngữ kịch bản cho các ứng dụng C# không?

Các bạn nghĩ sao?

Ngoài ra nếu tôi tích hợp, bạn có thể hạn chế nó để bạn có thể làm bất cứ điều gì bằng cách sử dụng chức năng hiện có của ứng dụng, nhưng không mở rộng nó?

Lý do cho việc này là, các ngôn ngữ viết hoa không được biết đến hiệu suất và nếu bạn nói cho mọi người viết Bộ lọc như Blur, Độ tương phản, v.v ... thì những thứ đó sẽ chậm hơn so với cách làm và làm giảm trải nghiệm của khách hàng của người viết kịch bản, phải không?

+0

Có rất nhiều lần tôi ước mình cũng có thể làm điều này. Không chắc chắn nếu nó thực tế mặc dù. – CookieOfFortune

Trả lời

7

Tôi đã tích hợp (lua) tập lệnh vào ứng dụng và tôi cũng đã sử dụng chính C# như là một "ngôn ngữ kịch bản", bằng cách biên dịch các cụm động trực tiếp từ mã do người dùng cung cấp. Tôi cũng đã triển khai các hệ thống "plug-in" bằng cách sử dụng các assembly do người dùng cung cấp, tuân theo các giao diện cụ thể hoặc các lớp cơ sở.

Có rất nhiều điều cần xem xét, từ bảo mật, hiệu suất đến sự nhầm lẫn của người dùng cuối để xem xét. Tôi không nghĩ rằng bạn có thể làm một tuyên bố chăn như "ngôn ngữ kịch bản không thuộc về các ứng dụng", hoặc thậm chí "ngôn ngữ kịch bản thuộc về các ứng dụng". Bất kỳ trường hợp cụ thể nào cần xem xét cẩn thận tất cả các tùy chọn và hậu quả của các tùy chọn đó trước khi chạy và thực hiện điều gì đó mà bạn có thể hối tiếc sau này.

3

có thể có lần truy cập hiệu suất cho một tính năng nhất định khi được triển khai thông qua giao diện tập lệnh thay vì tự nhiên qua ứng dụng của bạn, nhưng nếu bạn muốn cho phép người dùng viết ứng dụng của bạn và nó cho phép họ triển khai tính năng hữu ích cho họ không được hỗ trợ nguyên bản trong ứng dụng của bạn, sau đó nó có vẻ như là một ý tưởng tốt với tôi. Nếu bạn kết thúc với một tập lệnh người dùng cụ thể rất phổ biến, bạn luôn có thể phát hành nó dưới dạng một tính năng gốc của ứng dụng trong bản phát hành sau này nếu bạn có thể cải thiện hiệu suất của nó. Hi vọng điêu nay co ich!

+0

Cảm ơn. Mối quan tâm chính của tôi là cung cấp khả năng làm mọi thứ nhanh hơn, như chọn tất cả các nút Blur, lặp qua chúng, thu thập tên, thay thế chúng bằng Sharpen, thay đổi giá trị của chúng, v.v. Tôi cũng sử dụng ứng dụng giới hạn tập lệnh để bạn không thể 't viết các nút mới, vì vậy đó là lý do tại sao tôi tự hỏi. –

+0

+1 - chuyển đổi từ tập lệnh thành chức năng chính sẽ dễ dàng hơn nhiều nếu được viết bằng ngôn ngữ mẹ đẻ của ứng dụng. Nếu đó là một tính năng dự định, thì kiến ​​trúc plugin sẽ xuất hiện lý tưởng. –

+0

Điểm rất tốt SnOrfus –

3

Tôi thích có thể viết tập lệnh để mở rộng chức năng của ứng dụng. Thậm chí tốt hơn khi ngôn ngữ kịch bản là một ngôn ngữ nổi tiếng.

Tôi sẽ không giới hạn chức năng mà tập lệnh có thể thực hiện dựa trên những lo ngại về hiệu suất. Bạn không biết làm thế nào một cái gì đó sẽ hành xử trên phần cứng trong tương lai ví dụ; tuy nhiên, bạn nên hạn chế những gì nó có thể làm cho bảo mật/chức năng.

Nếu bạn có mối quan tâm về hiệu suất, thì tôi sẽ triển khai các điểm mở rộng thông qua tập lệnh mà còn thông qua các plugin cho phép thực thi và chạy mã được biên dịch.

Sửa

Nói chung tôi không nghĩ rằng nó giới thiệu nữa lỗ hổng sau đó mở rộng một ứng dụng thông qua một plug trong ví dụ. Đối với các lỗ hổng cụ thể, tôi thực sự không thể nói mà không biết nhiều hơn về ứng dụng của bạn. Nhưng lấy trình duyệt web chẳng hạn. IE đã có rất nhiều lỗ hổng bảo mật vì kịch bản có thể truy cập nhiều tài nguyên hơn thì chúng nên có.

Buộc các tiện ích mở rộng được thực hiện thông qua mã được biên dịch cho phép bạn tận dụng các cơ chế để giúp ngăn chặn các cuộc tấn công. Bạn có thể kiểm tra một hội đồng ví dụ (Giả sử .net ở đây). dễ dàng tìm kiếm mã độc (Có, bạn có thể làm điều này với kịch bản), hoặc bạn có thể ngăn chặn truy cập vào các tài nguyên nhất định cia Code Access Security. Bạn cũng có thể tận dụng việc ký mã và chỉ tải các plugin từ các nhà xuất bản đáng tin cậy.

+0

Cảm ơn Josh, bạn có thể cho tôi biết các vấn đề bảo mật tiềm năng khi sử dụng ngôn ngữ kịch bản không? –

3

Tùy thuộc vào những gì bạn đang cố gắng hoàn thành, bạn có thể thích những gì PowerShell phải cung cấp. Bạn có thể làm cho ứng dụng của bạn trở thành một máy chủ kịch bản PowerShell tùy chỉnh hoặc chỉ cung cấp các lệnh ghép ngắn để thao tác ứng dụng.

Trong cả hai trường hợp, người dùng của bạn được hưởng lợi từ ngôn ngữ kịch bản phong phú, mạnh mẽ, có hỗ trợ .NET/COM/WMI tích hợp, nhưng họ không phải là nhà phát triển để sử dụng nó.

Bạn cũng đang xây dựng trên một kỹ năng mà người dùng của bạn có thể đã có. Nếu họ không có nó, họ có thể tìm hiểu nó cho ứng dụng của bạn, và sau đó được hưởng lợi từ nó trong tương lai.

Exchange Server 2007 triển khai máy chủ lưu trữ tập lệnh tùy chỉnh, nếu bạn muốn xem ví dụ về cách hoạt động của tính năng này.

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