2009-10-02 140 views
0

我有一个通用的服务,我可以在一个exe文件中托管并从另一个.net应用程序调用,但由于IIS上的Web服务按需加载,因此我无法将其托管在一个Web项目中。在IIS中托管通用服务

有没有一种方法来调整wcf堆栈来读取URL(我可以传递类型信息)并调用服务?

我试过使用servicefactory,但更多的是注入行为而不是调用服务。

感谢

回答

1

OOP(包括类似泛型和接口的东西)和SOA(面向服务的架构)世界几乎没有完全匹配。

这可能是其中的一种情况。 WCF系统适用于在客户端和服务器之间发送消息,因此,它始终约为和具体的实现; WCF消息不处理接口,并且据我所知,它不能很好地处理泛型。

,如果你认为WCF的可互操作的性质,尤其如此 - 这毕竟“只是”一个.NET的技术,而是一个可互操作的SOAP(和REST)栈可以跟那有没有其他系统关于泛型的线索(是的,那些仍然存在)。

任何你想要在客户端和服务器之间作为SOAP消息来回发送的东西必须采用可以用XML模式表达的形式(你的DataContract) - 我不知道你想如何建模XSD中的通用MyType<T> - 它只是没有被设计来做到这一点。

因此,尽管我也非常喜欢泛型,但我不认为它们很适合面向服务的场景。所以我想你必须重新设计你的服务来考虑这一点。

马克

0

我不知道你是什么意思?

我假设你想要的是使用一些机制来为根据网址点播服务创建一个实例。 。例如,调用http://localhost/Service1将实例化Service1,http://localhost/Service2将实例化Service2等...而不必创建所有这些虚拟目录。

我从来没有这样做过,但应该可以在ASP.NET中使用URL路由。对于如何,你可能需要测试:)

+0

我有什么好比 公共类MyGenericService 服务:ServiceBase {....} 我可以在一个exe托管并从其他应用程序调用它,但不能在IIS承载它使用.svc,因为它的需求和类型T是未知的。 因此,每个类型T都会有一个单独的此服务实例。 有没有什么方法可以在wcf中读取url并使用正确类型T调用服务?我可以修改客户端上的URL来指示类型T. – 2009-10-02 17:05:57