在多个项目中重用asmx webservices

时间:2009-04-13 16:09:53

标签: .net web-services

我们的系统中有多个项目想要共享相同的asmx webservice。有没有人对如何做到这一点有任何建议/最佳实践。

问题是网络服务不断变化,所以我不能只是为生产添加网络参考。这也很危险,因为在进行开发时我希望它指向我的本地机器。我应该只将我的网络引用添加到localhost吗?

我是否应该有专门的webservices项目而不是分散在多个项目中的asmx文件?

由于

6 个答案:

答案 0 :(得分:2)

Web服务的一个要点是它们是可重用的,因此您可以随时随地使用它。

您的问题有点不确定问题是什么,但您应该能够从任何具有网络访问权限的应用程序中使用您的Web服务。

- 编辑 -

通常认为最佳做法是拥有专门的Web服务项目。您可以拥有多个Web服务项目,以及如何解决这些问题取决于您和您的业务/技术要求。

这应该解决您的主要问题。您有一个本地Web服务项目,以及使用它的本地项目。您可以根据需要将这些项目中的一个或两个部署到生产中。

答案 1 :(得分:0)

不确定我理解你的问题。如果您在生产环境中发布Web服务,则只需在每个需要它的应用程序中添加Web引用即可。使用Web服务的整个前提是您可以使用它 - 如果您只在开发环境中使用它,或许您想考虑将它用作您在GAC中分发或保留的标准C#dll?

答案 2 :(得分:0)

您所需要的只是创建一个良好的流程所有权,以及跨多个团队或部门使用这些Web服务的文档。在SOA世界中,您必须创建服务注册表,以便于查看可用服务并在需要时重用它们。

答案 3 :(得分:0)

进行开发时,只需将Web引用指向本地计算机并在本地运行Web服务即可。我真的没有看到任何问题。

答案 4 :(得分:0)

如果我理解你的问题,你想要一个开发网络服务和一个生产webserive。生产实例是最后一次调试/检查的构建。调试实例是您正在处理的当前版本。

我推荐的实现此方法的方法是拥有一个dev子域,以便您可以同时使用这两个Web服务。 http://www.myapp.com/Service.asmxhttp://dev.myapp.com/Service.asmx。这两个子域都是IIS中的不同站点。在您的代码中,您将Web引用绑定到dev子域,因为此域将用于更新Web引用(如果更改参数)。然后,您将使用“#if not debug”将Web服务对象URL更改为用于生产(发布)代码的www站点。

通过这种方式,您将构建针对调试服务的构建,直到您对它感到满意为止。此时,您可以更新软件(如果参数已更改),并将新dll上传到发布站点。

我会将webservices保留在一个单独的项目中,以保持部署的程序集简单。

答案 5 :(得分:0)

您应该创建一个类库项目并在那里定义您的Web服务。将该项目引入您的Web应用程序,然后在webservice asmx文件中将其指向Web服务类。