我们的系统中有多个项目想要共享相同的asmx webservice。有没有人对如何做到这一点有任何建议/最佳实践。
问题是网络服务不断变化,所以我不能只是为生产添加网络参考。这也很危险,因为在进行开发时我希望它指向我的本地机器。我应该只将我的网络引用添加到localhost吗?
我是否应该有专门的webservices项目而不是分散在多个项目中的asmx文件?
由于
答案 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.asmx和http://dev.myapp.com/Service.asmx。这两个子域都是IIS中的不同站点。在您的代码中,您将Web引用绑定到dev子域,因为此域将用于更新Web引用(如果更改参数)。然后,您将使用“#if not debug”将Web服务对象URL更改为用于生产(发布)代码的www站点。
通过这种方式,您将构建针对调试服务的构建,直到您对它感到满意为止。此时,您可以更新软件(如果参数已更改),并将新dll上传到发布站点。
我会将webservices保留在一个单独的项目中,以保持部署的程序集简单。
答案 5 :(得分:0)
您应该创建一个类库项目并在那里定义您的Web服务。将该项目引入您的Web应用程序,然后在webservice asmx文件中将其指向Web服务类。