共享程序集 (DLL) 中的 ASP.NET Web 服务

标签 asp.net web-services controls

我们有一些 ASP.NET 的东西(它的描述不够清楚,不能称之为组件),我们想清理它们,并围绕一些边界,以便我们可以重用它。这实际上有四个部分,一些标记,一些 C# 代码隐藏,一些在浏览器中运行的 javascript,以及一个由 javascript 调用的 web 服务方法。

清理此问题的一种方法是将标记移动到用户控件中,将 C# 移动到用户控件的代码隐藏方法中,将 javascript 移动到将通过代码隐藏方法包含在页面中的文件中,以及将 web 服务转换为代码隐藏中的静态方法。 (当然,假设我可以将用户控件中的静态方法标记为 WebMethod 并让它工作,我还没有尝试过。)

无论如何,上面的方法对我们不起作用,因为我们想要创建一个可以包含在多个项目中的组件。这意味着我们需要一个可以包含在 DLL 中的组件,这意味着一个服务器控件,而不是一个用户控件。

当然,服务器控件意味着没有标记。 html 需要通过 C# 注入(inject)到页面中。这不是问题,我们以前做过。将 javascript 作为资源包括在内,并让服务器控件将其插入页面似乎并不难。我还没有这样做,但是我看到了很多关于如何做的例子,所以我相信我能够弄清楚。

但是我不确定我理解的部分是网络服务。此控件将包括将调用回 Web 服务的 javascript。 Web 服务将仅与服务器控件通信,但它需要与包含服务器控件的 Web 应用程序正在与之通信的同一数据库进行通信。也就是说,这不是我们可以配置所有服务器控件实例都将与之通信的单个独立 Web 服务的情况,我们需要在每个包含服务器控件的 Web 应用程序中包含一个单独的 Web 服务。

问题是,由于服务器控件包含在 DLL 中,我们希望该 Web 服务的代码也包含在 DLL 中。现在,我能想到的就是在 DLL 中定义一个类来完成 Web 服务所需的所有工作,然后可以由我们在 Web 应用程序中定义的 Web 服务调用。但我对此并不满意。在我的理想世界中,只要在 Web 应用程序中包含服务器控件,就会自动包含和配置它需要与之通信的 Web 服务。但我不知道该怎么做,我不确定这是否可能。

因此,我正在寻找的是在 ASP.NET 3.5 中我可以达到多近的可能性。

想法?

最佳答案

据我所知,没有办法将服务器端端点完全封装在服务器控件中。这是我过去一直在努力解决的问题,但没有完全令人满意的解决方案。

可能最干净、最惯用的 .NET 解决方案是将 HttpHandler 用于服务器端端点。消费应用程序将需要添加一行 web.config,但不需要创建其他文件。

看看 ASP.NET AJAX 如何实现 ScriptResource.axd 以获得这种方法的一个很好的具体示例。源代码:http://www.microsoft.com/downloads/details.aspx?FamilyId=EF2C1ACC-051A-4FE6-AD72-F3BED8623B43&displaylang=en

关于共享程序集 (DLL) 中的 ASP.NET Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2238922/

相关文章:

android - 如何在我登录 Activity 后开始 Activity

controls - Google map v3 默认控制位置偏移

asp.net - 针对 AD 的混合模式身份验证,如果成员(member)提供商失败则回退到数据库

c# - 从转发器 asp.net c# 中的文本框获取值

java - 如何使用 jax-ws commons 配置 jax-ws 以与 Spring 一起使用?

android - 如何在android中保持 session ?

c# - 如何在 C#.NET 中创建控件数组?

bash - 在 Ctrl + C 后继续脚本

c# - 获取网页的所有 anchor 标签

c# - 使用 CultureInfo 发出警告的代码