问题标签 [servicestack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 使用 ServiceStack 的 OData?
我刚刚看到了ServiceStack,我正在考虑用它构建一个服务。
是否可以使用服务堆栈为 OData 提要提供服务,以便我能够公开 IQueryable 并从客户端查询它?
c# - StructureMap:特定上下文中的自定义生命周期范围
我有几个循环,每个循环都通过ConcurrentQueue<T>
. 这些流程调用一些业务服务实现,它们使用存储库进行数据库交互。服务实现都是通过 StructureMap 连接起来的。
存储库实现具有一些需要仔细管理的特征:
- 正在使用的数据库技术是Redis。
- 该实现使用 ServiceStack.net 的 Redis 客户端(通过 a
PooledRedisClientManager
)。 - 有几种方法使用了(我相信)不能由同一个 RedisClient 同时创建的事务。因此,在多个异步进程上共享单个存储库实现是不可能的,因为它会尝试同时创建多个事务。
- 为了释放内存和数据库连接,这些对象需要显式释放——因此我在存储库类上实现了 IDisposable。
- 没有理由不能在单个异步进程的范围内共享存储库实例,因为不会有并发请求/事务。
考虑到上述情况,我想将单个存储库实例的范围限定为每个异步进程的生命周期。
需要记住的一件事是,在异步进程范围内使用的服务也被系统的其他部分使用,这些部分具有不同的生命周期特征(例如,在存储库被限定为页面生命周期的网站中要求)。
我将尝试用一些代码来说明(从我的代码中简化):
管理队列的程序(并连接执行IAsyncResult
调用的事件处理程序):
由异步结果调用的实现。我想在方法内管理范围ProcessItem( ... )
:
我认为这解释了情况和目标。我的问题如下:
- 如上所述,我可以使用 StructureMap 在单个进程的上下文中使用不同的范围。
- 我不想在我的域/服务层中包含对 StructureMap 的直接依赖。因此,如果我能够在此阶段使用不同的范围,是否有一种简单的方法可以做到这一点,而无需从流程本身直接调用 StructureMap?
- 我可以通过 DSL 配置指示 StructureMap 在流程结束时处理存储库,还是需要在我的代码中明确执行此操作?
testing - 服务堆栈和模拟,任何教程?
我目前正在评估 ServiceStack(在 .Net 中创建基于休息的服务)。感兴趣的领域之一是测试方面。我的休息服务将注入一些应用服务(目前使用 Autofac)。我需要的是一种机制来测试其余层并在我的应用层上定义期望(通过 MOQ),所以我不是在做集成测试而是对这一层进行单元测试?
关于如何做到这一点的任何想法?
c# - 无法反序列化数组
从客户端发送的数据不会被反序列化。
客户:
DTO:
服务器:
有什么想法吗?为什么没有填充 Comments 数组。正如您从评论中看到的那样,我使用 servicestack json 序列化程序生成了字符串。
也许我在这里遗漏了一些明显的东西?
编辑 当查看提琴手whats beeing传输时,我看到了这个:
在萤火虫中:
问候
拉尔西
c# - ServiceStack RESTful WebService 并在消息体中传递数据
我目前正在评估 ServiceStack。我需要创建一堆 RESTful 网络服务。我运行了初始代码,对此我感到非常满意。我有点挣扎的是如何创建一个服务,该服务可以使用在其正文中包含数据的 POST(或 PUT)HTTP 请求。
我在 ServiceStack 论坛 ( http://groups.google.com/group/servicestack/browse_thread/thread/693145f0c3033795 ) 上找到了这个线程,然后我被引导查看关于 SO ( Json ) 的以下线程将数据从控制台应用程序格式化到服务堆栈)但它并没有真正的帮助 - 它描述了如何创建请求,而不是如何创建可以使用此类 HTTP 请求的服务。
当我尝试传递其他数据(在 HTTP 消息正文中)时,我的服务返回以下错误(HTTP 400):
这导致我https://github.com/ServiceStack/ServiceStack/wiki/Serialization-deserialization我想我会试一试IRequiresRequestStream
。目前我的代码如下:
和服务本身:
我的路线:
它可以工作,但是...因为我找不到任何类似的示例,所以我想问一下,这是否是创建能够处理消息正文中包含附加信息的 POST 请求的服务的正确方法。我做错什么了吗?有什么我错过的吗?
在我提供的 SO 线程链接中也提到,使用 DTO 是将数据传递给基于 ServiceStack 的服务的首选方式。假设客户端需要发送大量数据,我们如何实现呢?我不想在 URI 中将数据作为 JSON 对象传递。我在这里做任何错误的假设吗?
- 客户端不会用 C#/.Net 编写。将使用完全不同的技术。这就是为什么使用 RESTful Web 服务的原因之一。
- 我知道将 xml 作为字符串返回可能不是最好的主意。目前它只是一个示例代码。这将在稍后更改。
- 最重要的部分是,为我提供的解决方案是否是创建 Web 服务的正确方法,该 Web 服务可以使用在其主体中附加了 xml 数据的 HTTP 请求。我与您分享的内容我只是不能 100% 确定这是实现我的目标的最佳方式。
2012 年 3 月 8 日星期四编辑:
阅读答案和评论后,我稍微更改了我的代码。我很确定,如果我想使用序列化,我必须使用名称空间(将 HTTP 消息正文中的数据传递给服务时)。
我过去常常http://localhost:53967/api/servicestack.task/xml/metadata?op=Task
获取有关我创建的服务的更多信息。
休息路径:
HTTP + XML:POST /xml/asynconeway/Task HTTP/1.1 主机:localhost 内容类型:应用程序/xml 内容长度:长度
我想检查的是是否可以“混合”REST URI 并将其余数据作为 xml 传递。
使用 Fiddler,我创建了以下 POST 请求:
请求标头:
请求正文:
我现在的 DTO 如下:
我的服务代码是:
那么这是将 XML 数据传递给服务的正确方法吗?我认为我对包含的 xml 命名空间非常满意——这使得开发服务变得更加容易。
c# - 为什么我的 ServiceStack 服务会抛出异常?
我使用ServiceStack(非常棒)构建了一个简单的 Rest 服务,它返回一个键值对列表。
我的服务如下所示:
我的回复是这样的:
我已将其余 URL 映射如下:
调用服务时
我收到此异常(未命中服务第一行中的断点):
NullReferenceException 对象引用未设置为对象的实例。在 ServiceStack.Text.XmlSerializer.SerializeToStream(Object obj, Stream stream) 在 ServiceStack.Common.Web.HttpResponseFilter.<GetStreamSerializer>b_ 3(IRequestContext r, Object o, Stream s) 在 ServiceStack.Common.Web.HttpResponseFilter.<> c _DisplayClass1.<GetResponseSerializer>b__0(IRequestContext httpReq, Object dto, IHttpResponse httpRes) at ServiceStack.WebHost.Endpoints.Extensions.HttpResponseExtensions.WriteToResponse(IHttpResponse response, Object result, ResponseSerializerDelegate defaultAction, IRequestContext serializerCtx, Byte[] bodyPrefix, Byte[]体后缀)
无论我是否在调用中包含任何参数,都会引发异常。我还在同一个项目中创建了许多其他类似的服务,它们运行良好。谁能指出我正确的方向,这意味着什么?
android - MonoTouch / MonoDroid 服务层不兼容?
我们已经开始构建Cross platform Android/iOS apps
,之前只在 MonoTouch 中构建过。我们正在评估MonoDroid
。
我们的应用程序需要消费JSON
并且我们想使用ServiceStack
. Xamarin 有一个我们正在使用的 ServiceStack 分支 - https://github.com/xamarin/ServiceStack
我们希望有一个公共项目负责获取和发布 JSON。Xamarin 的 ServiceStack 具有different DLLs for Android and iOS
. 我们如何拥有single project
并使用 ServiceStack 来获取我们的 JSON?
我们是否愿意接受以统一方式获取 JSON 的其他选项?
servicestack - 在 ServiceStack 中生成服务的 URL
如何生成指向 ServiceStack 中定义的特定服务的 URL?
我想在响应 DTO 中包含到其他端点的完整或相对 URL。RestServiceBase
contains RequestContext.AbsoluteUri
,但这完全取决于请求。
c# - 使用自定义序列化/反序列化对 servicestack 服务进行单元测试
我在测试提供了自己的反序列化机制的 Web 服务时遇到问题。
Task
我正在使用的示例类TaskService
:
我的序列化/反序列化代码基于:http ://www.servicestack.net/ServiceStack.Northwind/vcard-format.htm和https://github.com/ServiceStack/ServiceStack.Examples/blob/master/src/ ServiceStack.Northwind/ServiceStack.Northwind.ServiceInterface/VCardFormat.cs
我的基本测试类如下:
以及失败的单元测试:
使用 nUnit 测试运行器时遇到的异常是:
Testing.SimpleTest.TestMetodRequiringServer:
System.Runtime.Serialization.SerializationException : Error in line 1 position 9. Expecting element 'ArrayOfTask' from namespace 'http://schemas.datacontract.org/2004/07/ServiceStackMVC'.. Encountered 'Element' with name 'Tasks', namespace ''.
如何将有关我的自定义序列化/反序列化代码的信息传递给XmlServiceClient
?
c# - 使用 ServiceStack + 自定义序列化替换旧系统并创建新的服务器代码
我们有一个遗留的服务器代码,我们想放弃它并使用 ServiceStack 开发新的。现有客户端不是用 .Net 编写的。我们根本不打算在客户端使用 .Net。
客户端和服务器之间的数据正在使用 XML 和 JSON 进行交换 - 目前 JSON 仅用作响应的返回格式(仅用于某些可用服务)。XML 格式是在几年前创建服务器解决方案的第一个版本时定义的。我们不想改变它。
我们如何使用 ServiceStack 构建新的 RESTful Web 服务,将数据序列化和反序列化为过去设计的格式(请注意,客户端不会用 C#/.Net 编写)。我们需要同时控制:序列化和反序列化。是否可以使用 DTO 并且仍然可以控制这些对象如何序列化/反序列化?