我有一个通用服务,我可以在exe中托管并从另一个.net应用程序调用,但由于IIS上的Web服务是按需加载的,我无法将其作为Web项目托管。
有没有办法调整wcf堆栈来读取url(我可以在其中传递类型信息)并调用服务?
我尝试使用servicefactory,但更多的是用于注入行为而不是调用服务。
感谢
答案 0 :(得分:1)
OOP(包括泛型和接口之类的东西)和SOA(面向服务架构)世界几乎没有完全匹配。
这可能是其中一种情况。 WCF系统适用于在客户端和服务器之间发送消息,因此,它总是关于真正的和具体的实现; WCF消息传递不处理接口,据我所知,它也不能很好地处理泛型。
如果考虑WCF的可互操作性,尤其如此 - 它毕竟是 NOT “只是”一种.NET技术,而是一种可与其他人交谈的可互操作的SOAP(和REST)堆栈没有关于泛型的线索的系统(是的,那些仍然存在)。
您希望在客户端和服务器之间来回发送的任何内容都必须采用可以使用XML架构(您的DataContract)表示的形式 - 我不知道您希望如何为通用模型建模XSD中的MyType<T>
- 它的设计并不是为了做到这一点。
因此,我也喜欢泛型 - 我不认为它们非常适合面向服务的场景。所以我想你必须重新设计一下你的服务才能考虑到这一点。
马克
答案 1 :(得分:0)
我不确定你的意思......
我假设您想要的是使用某种机制根据网址按需创建服务实例。例如,调用http://localhost/Service1将实例化Service1,http://localhost/Service2将实例化Service2等......无需创建所有这些虚拟目录。
我从来没有这样做,但应该可以在ASP.NET中使用URL路由。对于方法,您可能需要测试:)