标签: servicestack

ServiceStack.Net Redis:存储相关对象与相关对象ID

我的团队决定通过ServiceStack.net Redis Client与Redis合作,作为我们正在开发的新的高容量网站的底层存储库.我不确定在哪里查找这个问题的文档(对于一般的Redis文档或特定的ServiceStack.Net文档或两者) - 实际上是否有关于如何通过ServiceStack.Net实现Redis的文档的权威来源,包括您需要了解Redis概念和ServiceStack.Net概念,还是需要分别整合两个方面的文档才能全面了解?

我正在努力解决如何在模型的对象图中存储相关对象.这是一个我想要使用的简单场景:

系统中有两个对象:UserFeed.在RDBMS术语中,这两个对象具有一对多关系,即a User具有Feed对象集合,而feed只能属于一个User.Redis将始终通过用户访问Feed,但有时我们会希望通过Feed实例访问用户.

所以我的问题是我们是应该将相关对象存储为属性还是应该存储Id相关对象的值?为了显示:

方法A:

public class User
{
    public User()
    {
        Feeds = new List<Feed>();
    }

    public int Id { get; set; }

    public List<Feed> Feeds { get; set; }

    // Other properties
}

public class Feed
{
    public long Id { get; set; }

    public User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

方法B:

public class User
{
    public User()
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# redis servicestack

39
推荐指数
1
解决办法
2万
查看次数

ServiceStack示例应按什么顺序进行格式化?

出于好奇,我想知道首选顺序,基于技术水平和示例的新api.

在大多数情况下,所有基础设施问题都是相同的,即主机的设置......但是当谈到服务模型,服务接口和端点设置时,哪些是最新的和首选的?

谢谢你,斯蒂芬

asp.net servicestack

39
推荐指数
1
解决办法
3万
查看次数

这些是RestSharp和ServiceStack客户端代码之间的主要区别吗?

我一直无法做出明确的选择,并希望有人(或几个人的组合)可以指出使用RestSharp与ServiceStack的客户端服务之间的区别(请记住我已经在使用ServiceStack进行服务) .这是我到目前为止(仅差异).该列表相当小,因为它们确实非常相似:

ServiceStack

优点

  • 来自我已创建的服务POCO对象的流畅验证
  • 客户端和服务的一个API
  • 代码读取更好(即Get <>(),Post <>())

缺点

  • 我的一些字符串必须写出来(即如果我使用查询参数发出GET请求,我必须在我的代码中创建该字符串)
  • 我必须为每个请求/响应类型创建一个不同的类(JsonServiceClient,XmlServiceClient)

RestSharp

优点

  • 几乎所有东西都可以是POCO(即如果我使用查询参数发出GET请求,我只需通过代码添加参数)
  • 在请求/响应类型之间切换很简单(request.RequestFormat = DataFormat.Json/Xml)

缺点

  • 手动验证(超出数据注释中的范围)
  • 要学习的两个API(这很小,因为它们都很简单)
  • 代码一目了然(几乎没有)(即request.Method = Get/Post ..并且主调用是Execute <T>())

我倾向于使用RestSharp,因为它更倾向于直接使用POCO和非常少的字符串操作,但我认为ServiceStack可能是可以接受的,可以获得更容易阅读的验证和代码.

那么,这里有一些问题:

  • 你喜欢哪个?
  • 为什么一个在另一个?

我知道这不是一个完全主观的问题,但至少我正在寻找这个问题的答案(这是主观的):

  • 我的任何发现都不正确和/或有没有我错过的?

rest restsharp servicestack

37
推荐指数
1
解决办法
1万
查看次数

ServiceStack:RESTful资源版本控制

我已经阅读了 基于消息的Web服务优势的文章,我想知道是否有推荐的样式/实践来对ServiceStack中的Restful资源进行版本控制?不同的版本可以在请求DTO中呈现不同的响应或具有不同的输入参数.

我倾向于URL类型版本控制(即/ v1/movies/{Id}),但我已经看到了在HTTP头中设置版本的其他实践(即Content-Type:application/vnd.company.myapp-v2 ).

我希望有一种方法可以使用元数据页面但不是一个需求,因为我注意到只需使用文件夹结构/命名空间在渲染路径时工作正常.

例如(这不会在元数据页面中呈现,但如果您知道直接路由/网址则执行正确)

  • / V1 /电影/ {ID}
  • /v1.1/movies/{id}

namespace Samples.Movies.Operations.v1_1
{
    [Route("/v1.1/Movies", "GET")]
    public class Movies
    {
       ...
    } 
}
namespace Samples.Movies.Operations.v1
{
    [Route("/v1/Movies", "GET")]
    public class Movies
    {
       ...
    }   
}
Run Code Online (Sandbox Code Playgroud)

和相应的服务......

public class MovieService: ServiceBase<Samples.Movies.Operations.v1.Movies>
{
    protected override object Run(Samples.Movies.Operations.v1.Movies request)
    {
    ...
    }
}

public class MovieService: ServiceBase<Samples.Movies.Operations.v1_1.Movies>
    {
        protected override object Run(Samples.Movies.Operations.v1_1.Movies request)
        {
        ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

servicestack

37
推荐指数
1
解决办法
8598
查看次数

是否可以使用ServiceStack提供HTML页面?

我正在评估ServiceStack在Windows服务中用于托管REST服务.到目前为止,它非常出色并且优于WCF.更不用说它更容易使用.

上面提到的Windows服务需要能够提供一个简单的HTML页面作为"仪表板".ServiceStack当然会用于为仪表板提供json数据,但是提供仪表板页面以及图像和js呢?这可能吗?我宁愿不主持完整的ASP.Net,并且严格限制IIS永远不会在这些服务器上运行.可扩展性也不是必需的,因为只有一个管理机器才能显示仪表板.

servicestack

31
推荐指数
1
解决办法
1万
查看次数

使用ServiceStack的OData?

我刚刚看到ServiceStack,我正在考虑用它来构建服务.

是否可以使用服务堆栈提供OData提要,以便我能够公开IQueryable并从客户端查询它?

c# odata servicestack

30
推荐指数
1
解决办法
1万
查看次数

在Mono中使用WebRequest的麻烦

我在ServiceStack Web应用程序中使用WebRequest有一个非常奇怪的问题(由Mono上的XSP托管).似乎请求模块的注册以一种非常奇怪的方式工作; 我正在使用WebRequest创建HTTP请求,但它失败了,因为它无法找到该"前缀"(HTTP)的创建者.

我看到的例外情况是NotSupportedException,我能够跟踪它没有为HTTP前缀注册创建者这一事实(我正在点击https://github.com/mono/mono/blob/master/mcs/class/ System/System.Net/WebRequest.cs,第479行)

编辑:更多细节:NotSupportedException抛出WebRequest.GetCreator,它使用URL前缀作为键来选择要返回的创建者; 在我的情况下,一个HttpRequestCreator.抛出异常是因为没有为"HTTP"前缀注册的创建者(实际上,根本没有创建者).

所以我搜索了一下,挖掘了Mono源代码,发现模块是(或应该)添加到system.web的webRequestModules部分的各种*.config文件中.

我查看了我的machine.config文件,它是: System.Net.HttpRequestCreator, System, Version=4.0.0.0

看看WebRequest Mono的来源 ,似乎前缀是从配置确实添加的,在类静态构造函数内(不是一个好的选择,恕我直言,但仍然......应该工作).

为了测试它,我尝试了添加HttpRequestCreatorsystem.net/webRequestModules我的web.config; 这是由XSP/Mono加载并导致重复的键异常(这是预期的,因为HttpRequestCreator应该已经加载,因为它已经存在于machine.config中).

更奇怪的是:如果我为Http添加一个模拟处理程序,就像这样:

bool res = System.Net.WebRequest.RegisterPrefix ("http", new MyHttpRequestCreator ());
Debug.Assert (res == false);
Run Code Online (Sandbox Code Playgroud)

断言有时会通过......有时候不会!(如果已经注册了相同前缀的创建者,则RegisterPrefix返回"false";我希望它总是返回false,但事实并非如此!再次,它是完全随机的)

当注册"失败"(即因为已经注册了"HTTP"前缀而返回false)时,WebRequest可以创建HTTP请求.就像调用RegisterPrefix"唤醒"静态构造函数并让它运行一样.

我很困惑:它似乎是执行WebRequest的静态构造函数时的竞争条件,但这没有意义(运行时保护带有锁的静态构造函数,IIRC)

我错过了什么?我该如何解决或解决这个问题?这是我的错(误解或遗漏某些东西)还是看起来像是一个Mono bug,因此我应该提交它吗?

细节:

mono --version Mono JIT编译器版本3.0.6(Debian 3.0.6 + dfsg-1~exp1~pre1)

(可能相关的,未回答的问题:单声道下WebRequest不支持HTTP协议)

mono httpwebrequest xsp servicestack

30
推荐指数
1
解决办法
1104
查看次数

如何省略在Servicestack json序列化程序中仅获取属性?

我有一个对象,我使用ToJson<>()ServiceStack.Text命名空间中的方法反序列化.

如何GET在序列化过程中省略所有唯一的属性?是否有任何属性[Ignore]或类似我可以用我的属性装饰,以便它们可以省略?

谢谢

json ignore properties servicestack

28
推荐指数
1
解决办法
1万
查看次数

ServiceStack新服务并行ASP.NET MVC网站

在ServiceStack 的示例中,我没有首先看到ASP.NET MVC网站的单个应用程序,然后将ServiceStack服务放在第二位.

我们来看一个非常简单的ASP.NET MVC Web应用程序,它通过Views呈现产品.它使用控制器,视图,模型和视图模型.

假设我们有一个模型Product被持久存储到文档DB中.假设我们有一个viewmodel,ProductViewModel它从ProductMVC Razor View/PartialView中映射并显示.

所以这是一个网络方面的东西..现在让我们假设我们想要添加一个服务返回产品到各种客户端,如Windows 8应用程序.

请求/响应类是否应该与我们已有的完全断开?我们ProductViewModel可能已经包含了我们想要从服务中返回的所有内容.

既然我们已经有了Product(模型类),我们就不能Product在API命名空间中拥有另一个类.我们可以但是这会使事情变得不清楚,我想避免这种情况.

那么,我们应该在API命名空间中引入独立ProductRequest类和ProductRequestResponse(继承ProductViewModel)类吗?

像这样ProductRequestResponse : ProductViewModel

我所说的是,我们已经拥有Model和ViewModel类,并为SS服务构建Request和Response类,我们必须创建另外两个文件,主要是通过复制我们已有的类中的所有内容.这对我来说看起来并不干净,它可能会遵循关注点分离指南,但DRY也很重要,实际上不仅仅是分离所有内容(将所有内容分开导致代码重复).

我希望看到的是一个已经建立了Web应用程序的情况,它目前具有Models和ViewModel,并返回适当的视图以便在Web上显示,但是可以扩展为支持程​​序化客户端的全功能服务?就像AJAX客户端......以及我们已经拥有的东西.

另一件事:

如果您看一下这个例子,请访问https://github.com/ServiceStack/ServiceStack.Examples/blob/master/src/ServiceStack.MovieRest/MovieService.cs

你会看到有MovieRequest类和MoviesRequest类(一个用于单个电影请求,另一个用于电影列表).因此,也有两个服务,MovieService并且MoviesService,一个交易与一个单一的电影,另一部分用于电影的流派的请求.

现在,虽然我喜欢SS服务方法而且我认为它是正确的,但我不喜欢这种分离只是因为请求的类型.如果我想要导演的电影怎么办?我是否会发明另一个具有Director属性的请求类以及另一个服务(MoviesByDirector)?

我认为样本应该面向一项服务.所有必须处理电影的东西都需要在一个屋檐下.如何通过ServiceStack实现这一目标?

public class ProductsService : Service
{
    private readonly IDocumentSession _session;
    private readonly ProductsHelperService _productsHelperService;
    private readonly ProductCategorizationHelperService _productCategorization;

    public class ProductRequest : IReturn<ProductRequestResponse> …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc servicestack

28
推荐指数
1
解决办法
2万
查看次数

如何将XSD文件转换为C#类

我有一个XSD格式的文件.如何将其转换为C#类?

我需要在其他Web应用程序中使用类引用,我需要按照以下方式进行调用:

var res = client.Post<Customer>("/customers", c ); 
Run Code Online (Sandbox Code Playgroud)

c# xsd servicestack

27
推荐指数
1
解决办法
9万
查看次数

标签 统计

servicestack ×10

c# ×3

.net ×1

asp.net ×1

asp.net-mvc ×1

httpwebrequest ×1

ignore ×1

json ×1

mono ×1

odata ×1

properties ×1

redis ×1

rest ×1

restsharp ×1

xsd ×1

xsp ×1