我能通过JavaScript与.NET库进行交互吗?

3
我们已经建立了一组.NET库(使用C#编写),用于与外部资源交互。外部资源提供Java和.NET绑定,因此必须在其中一种语言中构建我们的库,并且我们是官方的Windows工作室。
我们还使用PHP / Javascript开发大量前端Web应用程序。这些PHP / Javascript Web应用程序是否可以与我们的.NET库进行交互?如果有IIS和Apache Web服务器,通信需要双向进行。

如果你在谈论在网页浏览器中运行的JavaScript,那么你刚描述了每一个用.NET编写的AJAX应用程序。如果你在谈论通过Windows脚本宿主在服务器上运行的JS调用.NET程序集,请告诉我们。 - Josh Pearce
问题是如何让JavaScript与C# DLL进行“交流”。我希望有一种不使用Web服务的方法。虽然我想我们可以编写Web方法来公开相同的功能,并在每个运行应用程序的服务器上运行它们以最小化延迟。 - Josh Smeaton
3个回答

6
最明显的方法是在Web服务器(无论是IIS还是Apache/Mono)上公开您的.NET库作为Web服务。这允许JS和PHP通过相同的服务端点进行消耗(JS通过AJAX,PHP通过Web服务调用)。
如果极致性能是一个问题 - 例如,您的PHP应用程序需要像本地应用程序一样频繁调用.NET库,则Web服务可能不是最佳选择。对于这种情况,您可能需要考虑为您的.NET库制作COM可调用包装器从PHP中使用它们

2
尽管 Ajax 是通常的方法,但如果有帮助的话,另一个想法是在客户端使用 Silverlight。这样,您可以将 .NET 类嵌入到 Silverlight 应用程序中,然后下载到客户端,在浏览器中运行。Silverlight 应用程序可以轻松地与 JavaScript 以及远程资源进行双向交互。
例如,您可以使用 [ScriptableMember] 属性标记 .NET 方法,将其暴露给 JavaScript。

我有点喜欢这个想法,不过我问PHP的原因是因为我们有很多PHP开发人员可以利用。 - Josh Smeaton
使用Silverlight意味着将一些逻辑推入客户端并卸载您的服务器。您仍然可以使用PHP来构建Web页面;这两种技术是兼容的(甚至可以从Apache提供Silverlight应用程序,而不需要IIS)。只使用PHP + Ajax,您仍需要为服务器上的.NET库构建Web服务包装器。这将使您在服务器端与Windows绑定(不一定是坏事),并且不能消除编写一些新的.NET代码的需求。 - RickNZ

1

您可以通过 AJAX 调用传递数据,在客户端和服务器之间使用 JSON 进行通信。对于客户端数据集操作,jLinq 是一个很好的库,可在 JSON 对象上执行 Linq 查询。

如果您正在寻找一个良好的起点来学习 Web 服务、JSON 和 ASP.Net WebForms,则 Dave Ward 在 Encosia 上的 文章 真的非常棒。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接