我需要在c#中使用WCF为多个Web服务创建项目。 Web服务将调用其他程序集来执行核心处理。程序集将从SQL Server访问数据。其中一个将成为每个Web服务方法一部分的参数将包括要使用的数据库。我的问题是如何将数据库参数传递给程序集使用。我无法更改所有要使用的卫星组件的签名。我想参考卫星组装参考的某种变量。这些相同的卫星程序集与Windows窗体应用程序和ASP.NET应用程序一起使用,所以我需要有所有类型的应用程序都可以使用的东西。静态字段不好,因为对于一个Web服务调用,数据库可能是“X”,而另一个则是“Y”。有任何想法吗?C#Web服务和使用变量
3
A
回答
2
这是一种可以很好地与IoC或DI框架一起玩的东西 - 具有包含数据库信息的一些接口,并将它推送到您的所有呼叫者中。即使没有IoC,在界面中隐藏实现听起来像一个坚实的计划。
随着你的static
概念;一个[ThreadStatic]
可能会工作,但有点hacky(你需要对清理呼叫者之间的数据有宗教信仰),或另一种选择是在Principal
上松开一些信息,因为这是从WCF(每个呼叫)和winforms(通常每个进程)。无论哪种情况,请注意任何线程切换(异步等)。尤其要注意的是,ASP.NET可以在单个页面管道中间更改线程。
相关问题
- 1. 会话变量,Web服务,ASP.NET和C#
- 2. 使用变量引用C#中的Web服务器控件#
- 3. 会话变量和Web服务
- 4. 在asmx web服务中使用C#窗体变量
- 5. 使用Web服务C#?
- 6. MCV C#与POST和两个变量的Web服务
- 7. Web服务增量变量为id使用单身/同步
- 8. angularJS使用服务变量
- 9. C#web服务
- 10. 使用PHP调用C#Web服务
- 11. 使用SocketScan SDK用C#Web服务
- 12. 从另一个C#Web服务调用C#Web服务
- 13. 使用JS和HTML使用Web服务
- 14. 将变量存储到Web服务器
- 15. web服务中的实例变量
- 16. 空$ _POST变量web服务响应
- 17. VB.NET WCF Soap Web服务变量缺失
- 18. 使用Visual Studio 10和C来使用Web服务#
- 19. 巨量使用的python web服务
- 20. 使用度量的ASP.NET Web服务
- 21. 如何使用Apache TomEE读取Web服务器环境变量?
- 22. 在ASP.NET web服务中使用静态变量(如跨线程)
- 23. 用C#创建Web服务
- 24. 从C++调用Web服务
- 25. 调用C#ASMX Web服务
- 26. 调用https web服务(C#)
- 27. 使用C的远程XML Web服务#
- 28. 在C#web服务中使用xsd:id
- 29. 使用C#的restful Web服务
- 30. Objective-C中使用.NET Web服务[iPhone]
Ouch。你在这里做的任何事情最多都会成为黑客。我认为你最好的选择就是开始重构,使用SOA,IoC,也许是服务工厂,更多的解耦,并在那里抛出更多的流行语。认真。然后使用某种枚举或中性标识符来确定应该使用哪个数据存储库(数据库)(因为web服务应该与谁调用它无关)。 – slugster 2010-01-07 23:20:41
或者您可能只有多个Web服务实例,每个实例对应一个数据存储库,然后客户端可以调用相应的实例。只要你的客户端应用程序在他们的配置文件中声明指定了web服务的东西,这将是微不足道的 - 如果它是硬编码的,那么你将被搞砸:) – slugster 2010-01-07 23:23:29
+1重构和引入IoC等。是否有理由“无法更改所有签名”? – Sapph 2010-01-07 23:23:54