2013-12-09 36 views
1

的问题

我知道的基本使用方式与方法,如“GET”,“邮报”,“任意”等服务中的名称,但在特定情况下创造ServiceStack路由/端点我试图与我有一个现有的服务(我可以做一个IService通过继承),不能改装w/ServiceStack属性,并且当前使用DTOs的请求和响应。有没有办法将特定的方法链接到ServiceStack中的Route?

此服务包含许多我不想手动遮罩的功能(因为这是一个传递层),但是它已经符合ServiceStack的要求。我想知道的是,如果有一种方法可以像我嘲笑here一样手动创建这些路线。我现有的函数和DTO已经包含了我需要定义路由的信息,所以如果这种方法可行的话,它只需要在初始化时枚举它们,而不是手动生成服务层。

我注意到在Routes.Add上有一个扩展方法,它需要一个类型表达式的表达式>但我无法得到那个工作,因为我相信底层代码会对生成的表达式的类型做出假设(LambdaExpression vs MemberExpression或类似的东西)。如果这不是该功能的预期目的,我也可能会咆哮错误的树,但我无法在任何地方找到该变体应该如何工作的文档。

为什么?

我不确定这是必要的,但要说明为什么我要这样做,而不是改造现有的图层:当前代码也用于Web服务上下文之外,并被其他代码使用内部。将ServiceStack加入到这个层会让每个使用它的地方都需要ServiceStack的程序集并且知道Web服务,这是我想从较低代码中分离出来的问题。我们以前使用MVC/WCF来实现这个目标,但我们希望从ServiceStack中获得一些功能。

目前的架构是这样的: 数据 - > DAL - >离散的业务逻辑 - >组成 - > Web服务

希望这使得足够的理智,我不是钝。如果您想了解我想要做什么的更多细节,或者为什么我会尽快更新这篇文章。

谢谢!

+0

您可以在[ServiceStack的用户语音](http://servicestack.uservoice.com/forums/176786-feature-requests)上提出功能请求,但这样的非必要委派并不是我们看到的任何价值。ServiceStack的服务层应该是实现面向外部的服务契约的最外层,这只会产生不必要的混淆,而不会超过当前存在的明确,直观和可调试的替代方案。 – mythz

+0

感谢您的回答。虽然我理解你的立场,但我仍然对追求它感兴趣。如果你不介意,我对代码中的哪个位置感兴趣,以查看代表团在哪里发生(并可能扩展它)。另外,如果您知道有关该Expression参数的任何文档,我很乐意看到它。再次感谢您的回复。 –

+0

在准备缓存之前有一些准备工作需要做,但是你可以在这里设置一个[break-point](https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/Host/ ServiceExec.cs#L168),其中动词被调用。 – mythz

回答

1

您可能会使用fallback route来提供您自己的路由机制。

然后你得到request.Path属性和路由使用你自己的路径映射:函数可以存储在一个简单的字典。

无论如何,如果你走这条道路,我没有看到使用服务堆栈的好处。看起来你只需要一个http处理程序将请求路由到现有的服务。

相关问题