我正在研究如何使用微软的WCF WebHttp Services来创建RESTful API。过去有WCF REST Starter Kit for .NET 3.5,现在似乎已经被.NET 4中的WCF REST Service Template 40所取代。
当然,我想使用Spring.NET的DI,但是我似乎在网上找不到任何资源来解释如何成功地将Spring.NET集成到WCF WebHttp Services中。
我确实知道让Spring进入我的传统WCF服务的“有趣”方法,但是有谁知道如何将Spring.NET与WCF WebHttp Services集成
对谁感兴趣的一些细节:
WCF WebHttp Services中,我有一个global.asax,就像MVC中的一样,在那里我可以注册路由和其他东西。Global继承自HttpApplication,就像好的ol‘SpringMvcApplication一样。我假设有两种可能的方式将Spring连接到其中:
Global继承某个Spring类而不是HttpApplicationSpring.NET提供的自定义Spring.NET有人知道关于实现这一目标的重新来源或其他文档吗?已经有人做过了吗?
发布于 2012-01-21 13:29:52
我只需要自己做同样的事情,我不得不扩展web http主机工厂。
在这里查找详细信息:Spring.NET Web
但简而言之,要这样做:
public class Global : HttpApplication
{
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes();
}
private void RegisterRoutes()
{
RouteTable.Routes.Add(new ServiceRoute("Catalog", new SpringHttpServiceHostFactory(), typeof(UnitysCatalogService)));
}
}
public class SpringHttpServiceHostFactory : HttpServiceHostFactory
{
private IApplicationContext _applicationContext;
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
Configuration.CreateInstance = GetInstance;
Configuration.ReleaseInstance = ReleaseInstance;
return base.CreateServiceHost(serviceType, baseAddresses);
}
private object GetInstance(Type serviceType, InstanceContext instanceContext, HttpRequestMessage request)
{
return GetApplicationContext().GetObject(serviceType.Name);
}
private void ReleaseInstance(InstanceContext instanceContext, object instance)
{
}
private IApplicationContext GetApplicationContext()
{
return _applicationContext ?? (_applicationContext = ContextRegistry.GetContext());
}
}在你的web.config中:
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web" />
</sectionGroup>
</configSections>
<spring>
<context>
<resource uri="file://~/Config/spring-config.xml" />
</context>
</spring>
<!-- .... -->
</configuration>发布于 2011-11-21 10:20:18
尝试这样的方法让我知道:
RouteTable.Routes.Add(new ServiceRoute("MyService", new WebServiceHostFactory(),
new ServiceProxyTypeBuilder("MyServiceNameInSpringConfigFile", ContextRegistry.GetContext(), true).BuildProxyType()));(使用Spring.Services类需要对Spring.ServiceModel.Support.ServiceProxyTypeBuilder的引用)
发布于 2012-01-18 12:02:24
由于WCF WebHttp Services似乎被停用了,我没有做进一步的调查。
后继者将是WCF Web API,它自动地允许使用一个普通的老MVC3应用程序作为主要项目进行Spring.NET集成。WCF Web API目前正处于预览状态,预计将在2012年2月左右获得发布候选人。
我建议使用这个全新的非常强大的REST框架。但是,当与实验软件集成时,要注意风险!它仍然处于测试版,没有人能肯定地预测它何时会最终发布,以及当前的哪些特性仍将是该版本的一部分。使用BETA框架可能会影响项目的时间安排。
https://stackoverflow.com/questions/8138237
复制相似问题