SubSonic是否在逐渐消亡?

10

我对使用SubSonic非常感兴趣,已经下载了它并且到目前为止很喜欢它,但是从GitHub和Google Groups的活动情况来看,它似乎不太活跃,看起来很像一个即将消亡的项目。在Tekpub上没有关于它的视频,Rob似乎现在对所有项目都使用nHibernate。如果它的寿命不长,我就不想专注于学习SubSonic并将其集成到我的项目中。

因此,我的问题是SubSonic的开发进展如何?是否有即将发布的新版本?在幕后是否有许多事情正在进行,还是正如看起来那样不活跃?


这里有一个针对您的播客推荐: http://herdingcode.com/?p=193 - balpha
1
但那并没有真正回答我的问题,那个播客是去年七月的。 - JimBobBillyBoy
我并不是想回答这个问题。这个技术并不是我熟悉的领域,只是我记得听过的播客中对它的前景非常乐观,所以我想提一下。 - balpha
好的,谢谢。实际上,当这个播客首次发布时,我就听过它,这是让我对Subsonic产生兴趣的原因之一。 - JimBobBillyBoy
这个问题看起来与主题无关,因为它非常过时。 - Liam
4个回答

22

我得到了这个问题,似乎如果我不每两个月弹出一个版本,那么SubSonic就会“死亡”。我承认我在推出3.0.0.4方面有些落后,但是有些人发送的补丁代码没有经过测试,我不会接受这种情况 - 我宁愿花时间确保我们不会推出错误(显然我在3.0.0.3中犯了错误)。

无论如何 - 这是一个有效的问题,SubSonic并没有“死亡”。最好的地方是在Github网站上查看活动情况: http://github.com/subsonic/

这是我选择Github的主要原因之一,让人们可以看到活动情况。我刚刚引入了许多更改,并正在等待最后一个更改进行微调(存在合并冲突)。

关于您提到的其他问题: 不,我没有在我的工作中使用NHibernate。我正在为Kona和一个屏幕录像使用它。我回答了我们小组收到的几乎所有电子邮件,但是是的,GoogleGroups在清除垃圾邮件方面很糟糕。您最好直接向小组列表发送电子邮件以获得问题的答案 - 它将很快得到回答。

关于“死亡” - 我需要谈一下。如果开源项目的诞生源于灵感,且被人们认为有用,那么它们就不可能死亡。SubSonic 也是如此。即使我放弃并告诉每个人离我远点,仍然会有人接手并继续开发它。像大多数人一样,我必须工作,并将 SubSonic 安排在工作和家庭之间的极少空闲时间内。但我绝不会让它消失-因为它对我来说意义太重要了。

无论哪种方式 - 我肯定会在6个月后再次回到这里,回答这个问题:)。


1
谢谢Rob,这是一个非常令人放心的答案。我想我之前使用Github上最近关闭的问题数量来衡量活动情况,这可能不是一个准确的反映。希望你不会把这个问题看作是批评,我知道开源项目可能看起来毫无回报,所以感谢你做了一个伟大的项目 :) - JimBobBillyBoy
完全没有问题 :) ... 我已经习惯了 :) - user1151
1
@RobConery 网站 subsonicproject.com 发生了什么情况 - 你会更新它并更改名称吗?有没有找到 subsonic 2 的屏幕录像的办法?非常感谢。 - Aristos

1

我猜想由于现在是假期,人们都在度假,因此这里的支持可能会减少。我刚开始使用它,有些问题还没有得到回复,而上一个版本是在七月发布的,所以希望支持能够继续。


这里的问题不仅在于人们没有做出贡献。而且Google群组主要是垃圾邮件,几乎没有GitHub活动,Rob似乎也不再使用或发布有关Subsonic的内容了。 - JimBobBillyBoy
从网站上看,主要支持在这里,还没有查看过GitHub或Google群组,不知道有一个,但似乎整体支持都不是很多。 - Mark Redman

0

嗯。

我不知道Subsonic的进展如何。我从2007年开始使用Subsonic,在升级到Subsonic3之前,我对Subnoic2非常满意,它很稳定、可预测。但是对于Subsonic3,即使是3.0.0.3版本,对我来说有些失望。我不想提及哪些功能可以正常工作。感谢Subsonic正确地映射表格。我想谈论的是“更新”问题。我尝试了代码,但它抛出了异常。经过深入研究代码,发现它正在签名...

看看我的代码:

FarmDB db = new FarmDB();
                db.Update<UserAdornment>().Set(o => o.is_working == false)
                            .Where(o => o.user_name == HttpContext.Current.User.Identity.Name && o.type == userAdornment.type && o.id != userAdornment.id).Execute();

这是正确的吗?

在修复了NullReferenceException之后,有人问我也遇到过的问题。每次运行此查询时,所有user_name=currentname的行都会将is_working设置为false。检查代码后发现: 在update.cs中。

public Update<T> Where(Expression<Func<T, bool>> column)
{
    LambdaExpression lamda = column;
    Constraint c = lamda.ParseConstraint();

检查 lamda.ParseConstraint();。我发现,无论我想搜索多少个“where”,它只返回第一个,更糟糕的是,在它之后。

//IColumn col = tbl.GetColumnByPropertyName(c.ColumnName);
//Constraint con = new Constraint(c.Condition, col.Name, col.QualifiedName, col.Name);
//con.ParameterName = col.PropertyName;
//con.ParameterValue = c.ParameterValue;

它从先前的约束条件中构建了另一个约束条件,但删除了最后一个约束条件中的所有“条件”。这怎么可能是正确的呢?

我没有深入研究subsonic的源代码,也不太理解它是如何实现的。但我在我的项目中使用subsonic3,并高度依赖它能正常工作。真的希望每个bug都能及时测试和修复。


0

我必须声明,虽然根据Rob的说法,每两个月就会有一个新版本发布,但你有时可能会有这种感觉。虽然在Google Group和GitHub上仍然有活动。如果在圣诞节之前有更多新面孔开始做出贡献(即使只是简单的文档),这表明对Subsonic的兴趣可能比以往任何时候都要大,只是人们正在继续努力。

我们的工作中,在我们能够控制的大多数项目中,都使用Subsonic(包括2.2和3.0.0.3版本)。我们有大约28名.NET开发人员,他们都喜欢它(我们不会纠缠于它不能做什么,因为它本身并不是一个ORM/数据访问层)。

由于我们只将Subsonic用作低级查询工具,而不是作为数据访问层,所以如果需要放弃它,我们与它的联系并不是那么紧密,但我们还没有理由这样做。

我的观点是:它是一个非常非常易于使用、容易上手、易于修改、轻巧的查询工具/ORM(在某种程度上)。市面上很少有同时具备所有这些特性又不会束缚你思维的工具。正因为如此,我认为它不会很快消失-它是一种让你上瘾的工具,就像蝙蝠侠腰带上的武器。

我是一个活跃的记录粉丝,SubSonic Rocksorz My Sockorz!

因此,我向很多人推荐SubSonic,并将继续这样做。虽然我们不会在非常大的项目中使用它(更多是出于像你提到的项目连续性原因,而不是因为它不能完成工作),


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接