【问题标题】:Where do library classes go?图书馆课程去哪儿了?
【发布时间】:2009-09-02 10:33:05
【问题描述】:

我确实有使用 Ruby on Rails 的经验,并且目前正在用 ASP.NET 编写一个项目。所以发现 ASP.NET MVC 对我来说太棒了,因为它在许多方面似乎是 Ruby on Rails 的逐字副本。不过还是有区别的,很多东西我要重新学习。

这样的事情之一是处理附加(库)功能的方式。我想添加一个加密实用程序功能,在 Rails 中,我只需将一个类添加到 /lib 目录并知道它可以在我的控制器中使用。我如何在 ASP.NET MVC 中做到这一点?

我考虑过为此创建一个模型类,但我不确定这是否是正确的方法。我真正想要的是一个返回字符串的加密(普通)和解密(加密)函数,我将使用 .NET 加密库进行实际的加密和解密,但想用易于封装和代理它们的功能 -使用跨多个控制器可用的功能。

有什么建议吗?

【问题讨论】:

    标签: asp.net-mvc encryption


    【解决方案1】:

    最好的办法是创建第二个项目,它只是一个类库。然后在你的 MVC 应用程序中引用这个类库。

    【讨论】:

    • 谢谢,如果它不仅仅是一个类,我会这样做(并使其成为公认的解决方案)。如果事情变得更复杂,我可能会在以后将其重构为外部项目。
    【解决方案2】:

    在您的项目中,您可以添加一个名为 lib 的文件夹或其他文件夹,然后将代码放入其中。

    【讨论】:

    • en.wikipedia.org/wiki/Lib - “躺在床上”?还是“摩尔门经中两位雅列王之一”?不好的做法。缩短单词没有奖励积分。
    • 嗯? “我只想在 /lib 目录中添加一个类”这就是为什么我建议添加一个名为 lib 的文件夹。
    • 我没有看到使用调用文件夹库的问题。这是不错的做法,许多 alt.net 和敏捷社区都使用这种命名约定。
    • 这是不好的做法。您了解自己的代码,但是其他人尝试进入它会浪费很多时间。可读性比节省几位重要得多。顺便说一下,感谢您指出 ALT.NET 的一个问题。
    • 好吧,按照 ASP.NET 命名约定,我认为将其称为库以保持一致也是有道理的,我会这样做。这就是为什么我不会称它为 lib 的唯一原因,因为 lib 确实是几十年来公认的惯例。老实说,不知道这一点的程序员似乎跳过了一些教育。
    【解决方案3】:

    Asp.net MVC 仍然有引用,因此将您的库添加到您选择的文件夹并通过添加引用选项引用该库。

    我喜欢下面的开发树结构。

    /docs
    /lib
    /src
    /tools
    

    lib 文件夹用于 3rd 方库,src 是我的 mvc 的来源,而 tools 用于 nunit 等工具。

    为您自己的库添加一个新项目,就像在普通 asp.net 中一样。 我还想为我的模型、bll 和 dal 添加一个新项目。

    【讨论】:

      【解决方案4】:

      这可能不是您问题的直接答案,但我正在使用 asp.net mvc 开发的 opensoure 项目具有以下结构..

      * Gol.Core.Session (contains session manager both real and fake)
      * Gol.Core.Caching (contains caching including velocity, enterprise lib. provider)
      * Gol.Core.Logging (contains logging components and providers)
      * Gol.Core.Instrumentation (contains instrumentation related items)
      * Gol.Core.UI (UI helpers, and other things related to UI)
      * Gol.Core.Security (security,authentication related things)
      * Gol.Core.Utilities (common utility functions like encryption, helper methods, etc).
      * Gol.Core.Metadata (metadata manager).
      *
        Gol.Web.Controllers (all controllers goes here).
      *
        Gol.Cms.Contracts (contains the service contracts)
      * Gol.Cms.Model (contains the service model)
      *
        Gol.Cms.Services (contains the service implementation).
      *
        Gol.Web (the web project that contains the views)
      * Gol.Test (or Gol.Specification)
      

      对此有相关问题 Project structure recommendation for asp.net mvc

      【讨论】:

        猜你喜欢
        • 2010-09-13
        • 1970-01-01
        • 2011-03-03
        • 2014-03-15
        • 2015-07-17
        • 2012-10-30
        • 2013-05-23
        • 1970-01-01
        • 2012-03-13
        相关资源
        最近更新 更多