创建一个待销售的广泛项目

时间:2008-11-19 19:28:05

标签: c# design-patterns module

我将从头开始一个C#项目,该项目将由几个模块组成,因此可以通过现有PHP / ASP / MySQL / Oracle / MS SQL应用程序的模块销售显示3D对象并从Web应用程序创建2D和3D CAD文件,用户可以使用它来创建所有内容。

我的问题是,从零开始,从“卖”的角度来看,它应该是一个很好的编程方法,我应该实现,设计模式,单元测试等。 ..我怎么知道如何应用它们,是否有任何好的教程/“告诉我的方式”有点了解这些事情,比如......

  • 我应该提供哪些类可供客户端覆盖,以便我可以在模块中提供可扩展性?
  • 我应该使用什么样的“套餐”来“卖”? DLL,CAB,MSI?
  • 我应该使用SubSonic / NHibernate,以便用户可以生成自己的DAL吗?我们的原型实现仅使用Oracle。

我现在有点失落,我知道该怎么做,但不知道如何实现它(记住这条完美的编码路径)。

很高兴有任何好的编程想法:)

6 个答案:

答案 0 :(得分:3)

为了快速解决您的每个明确问题,我会说。

至于集成的方式,学习控制主体的反转以及如何将其用于可扩展性目的。密切关注MEF,Microsoft可扩展性框架。至于什么,您的集成点将主要取决于您正在编写的应用程序类型和目标受众。这还取决于你想给第三方多少控制权。例如,Reflector有一个很好的,几乎是开放的插件结构。

DLL和CAB分别是库和存储格式。他们自己并没有做太多。 MSI是一种安装程序形式,可以包含构成应用程序的DLL。无论您使用哪种类型的安装程序,使用起来越容易,尝试您的产品的人就越多。

数据层本身并不一定非常重要。人们可能不会为您的应用程序创建自己的数据层,如果他们这样做,他们应该能够在您的可扩展性框架正在运行时使用他们想要的任何内容。更重要的是,无论您做出什么DAL,您都需要检查它是否能够在不同的数据库上运行,如果这对您来说很重要,需要做多少工作。您还需要确保在DAL中使用的功能适用于您要支持的所有数据库。 NHibernate有几个功能在它运行的所有数据库中都不起作用。

答案 1 :(得分:2)

您将在其生命周期中至少重写一次任何应用程序。得到一些东西来建立价值,然后担心你的代码有多漂亮。

你可以花一年的时间制作一个没有人想要使用的完美编码的应用程序,或者你可以花几个月的时间和一年中的其他时间来改进它,或者如果它落在它的脸上就可以处理其他事情。

答案 2 :(得分:1)

首先,想想它应该如何可扩展。如果您只是提供完全可扩展性,则存在缺乏安全性和不稳定性的风险。 您可以允许覆盖类,只需确保只将正确的方法标记为“虚拟”。 要销售的套餐类型取决于您的目标受众。如果您的目标是高级用户,那么DLL应该是“OK”。但是,如果您想要一个易于使用的系统,那么MSI或任何其他安装程序将更加明智。

至于DAL,你真的应该分析每个的优点和缺点,并选择一个适合的。

确保使其可扩展,但您可能希望等待反馈,以指定它的哪些部分变为公开。

答案 3 :(得分:1)

我认为我会买这个book,它解决了我对“如何完成它”的关注,而且从Brad Abrams的角度来看,这是非常好的:)

答案 4 :(得分:0)

首先制作有效的产品,然后从潜在客户那里获得反馈。

答案 5 :(得分:0)

我认为你没有采取正确的方法。您不应该从“销售”的角度设计软件。您可以设计软件来完成业务模型及其规则所需的工作。 所以,从“卖”的角度来看,我会担心首先要有一个好的产品,软件(无论多好或者写得多差)都会排在第二位,你会变得富有,只要因为软件完成了工作,你的产品很受欢迎。

有没有听说ebay是如何开始的?很长一段时间他们都非常成功,但却有非常糟糕的C ++代码(谁知道还有什么)。