我目前正在为.NET开发全文搜索框架用于跨平台的桌面,开发人员可以在搜索应用程序中使用这些桌面。
想要了解任何开发人员希望从这样的框架中获得的前5个要求。
答案 0 :(得分:1)
有一些框架/库可用于实现桌面搜索。看看这些页面:
http://www.codeproject.com/kb/aspnet/DotLuceneSearch.aspx
http://www.codeproject.com/KB/office/desktopsearch1.aspx
http://msdn.microsoft.com/en-us/library/ff628790.aspx
答案 1 :(得分:0)
答案 2 :(得分:0)
我还没有探索任何现有的框架,也没有编写一个可以用于这种API的应用程序。但是,我发现该提案很有趣,并且已经可以想到至少有一个可以使用它的应用程序。
以下是我最重要的五项要求:
与标准库设计指南的一致性,以确保在整个代码库中遵循最佳实践,并且经验丰富的.NET开发人员易于理解/使用。 (请参阅MSDN上的Microsoft“Design Guidelines for Developing Class Libraries”。)
开源,原因很多。其中:提供教育资源,防止开发人员在应用程序中重用库时不得不关注许可协议,以确保在活跃的用户社区中持续支持和开发(没有单一实体的未来软件依赖),并允许个别开发人员根据非传统用例的需要修改源的部分。
专注的可扩展性。该库应该是灵活的,以允许多种使用场景和适当数量的定制,但不以牺牲清洁设计和忽视其主要目标为代价。 “一个统治所有人的图书馆”并不是一个干净而有用的API的标志。尽量避免不必要的复杂性。我意识到这是一个微妙的平衡,但这是值得牢记的。最重要的是,我发现我自然而然地倾向于框架,我觉得设计师试图将自己放在我的鞋子里,作为最终将要使用它的人。
<强>速度即可。如果搜索速度慢或效率低,我会去其他地方看。其他解决方案做存在。
<强>鲁棒性即可。它需要能够处理应用程序可能抛出的任何内容,这通常转化为可靠的错误处理。最好不要崩溃我的整个应用程序,否则我将很快决定用户并不真正需要全文搜索功能。广泛的测试也是必须的(开源肯定可以帮助) - 无论何时假设,永远不要说永远。一点偏执甚至可以是健康的。在做任何事情之前检查每个方法中的参数,以便永远不会抛出NullReferenceException
。您可能无法编写完美代码,但您想尝试。
总的来说,重要的是要记住,设计一个高质量,可重用的框架库很困难。不要让任何人告诉你任何不同的东西。这与采用你编写的算法不同,无论多么甜蜜,并称之为库。在单个开发组或项目中进行代码重用时,有足够的障碍和破灭的梦想。实现一个可以适应许多不同程序的库,而不会破坏原始程序的运行,同时仍然可以很好地执行其任务,这确实是一个崇高的目标,但是,我相信,这肯定是一项值得做的事。