2010-10-22 86 views
2

我们有一个静态的html/webform站点,该站点缺乏搜索功能,昨天几个小时后我能够获得雅虎BOSS(构建您自己的搜索服务),我得到了它的工作(仍然在添加缺失的功能,如分页)的工作,我想知道的类的配置选项,因为我有一个App_Code文件BossSearch.cs,与被设置在顶部的一些字段:asp.net中的配置设置

public class BossSearch 
{ 
    String sResultsPage = "~/searchResults.aspx"; 
    String sSearchString=""; 

    String sApiKey = ConfigurationSettings.AppSettings["BossApiKey"]; 
    String sSite = "www.oursite.com"; //without http:// 
    String sQuery = "http://boss.yahooapis.com/ysearch/web/v1/{0}%20+site:{1}?appid={2}&format=xml&start={3}&count={4}"; 
    String sStart = "0"; 
    Uri address; 

    WebProxy webproxy = new WebProxy("http://192.168.4.8:8080"); 
    bool bUseProxy = true; 

    int nResultsPerPage = 10; 

    int nTotalResults = 0; 
    ... 

,你可以看到,我从web.config文件中获取BossApiKey,但是在类中声明的所有其他人中,我应该将所有这些文件放在web.config文件中?如果我想在其他网站重用课程(我应该说课堂图书馆?)?我可以把它变成一个DLL,它的优点是什么?我读过一个dll有自己的配置文件的地方,这是存储这些设置的方式吗?

道歉我的无知,因为我不是那个熟悉的开发应用程序(还在研究)

+0

DLL没有自己的配置文件...可执行文件。 – Dismissile 2010-10-22 17:36:21

+0

谢谢,我忘了我从哪里取得信息,嘿嘿。 – Prozaker 2010-10-22 17:53:35

回答

2

你读到关于.NET程序集有自己的配置文件不是绝对正确的;一个网站有web.config文件,一个在根目录下,每个子目录中有一个为零/一个。如果应用程序中的.NET程序集调用标准配置API,它将从该web.config获取其数据。

对于WinForms应用程序和[appname] .exe.config文件也是如此;包含使用标准配置API的任何程序集都将从中获取它们的数据。

所有这些并不是说任何程序集都无法定义自己的配置机制,从其所需的任何位置提取数据。

是的;如果你打算重复使用这些代码,你正在考虑沿着正确的路线;将代码放在自己的程序集中,并让它从Config文件中获取数据,这样就不需要为每个应用程序重新编译它。

+0

如果配置增长到比如说,我需要定义十几个键,是否有最佳做法来说明如何命名它们?或者我应该考虑把配置放在一个单独的文件中(我认为我看到web配置可以'包括'其他文件..我不知道这是否是一个好的做法。 – Prozaker 2010-10-22 17:57:05

+0

我肯定会建议考虑在那个自定义配置点'。'配置'包括'将不是一个解决方案,您可以在创建库时考虑它以及它如何访问配置信息;这将是由需要设置它的网站管理员做出的选择。无论您如何处理使用app.config的库,无论是appSettings还是自定义部分,web管理员都可以使用/不使用config includes来设置这些值。 – 2010-10-22 18:00:59

+0

感谢您花时间做出回应。我一定会考虑您的自定义配置Doug建议,希望我能为你提供一个'正确答案'检查,hehehe – Prozaker 2010-10-22 18:03:15

2

如果声明所有的人都在一个数据库或web.config中,您无需每次都重新编译你重新配置搜索引擎

+0

太好了,谢谢你的回答,其中一个问题是我们没有可用的数据库(我知道对吗?可笑的是,在这个时代,管理层无法为我提供数据库服务器)。 – Prozaker 2010-10-22 18:01:15

2

我为争取重用和易用性而努力,那么我会建议你写一个custom configuration section作为你的控制权。这可以是你分发给其他应用程序的dll的一部分,并且可以让你在其他.net应用程序中拥有最终的灵活性和明确的可移植性。

享受!

+0

我会看看它,谢谢你的帖子。 :) – Prozaker 2010-10-22 17:59:15

+0

@Prozaker - 没问题 - 它有一点需要学习,但是一旦你做了,你可以拥有原生配置部分,就像内置的部分一样工作 - 它们可以通过app.config和web.config的工作 – Doug 2010-10-22 18:03:25

2

您应该只将值存储在应用程序中的一个地方。对于ASP.NET应用程序,web.config文件是适合这些类型的地方。如果此值发生更改,则不需要重新编译应用程序。

如果您决定将您的代码放入单独的类库并仍想使用配置文件来存储您的api密钥,则应注意您的appSetting密钥需要输入到应用程序或网站的配置文件中 - 您无法为类库定义配置文件。

您可能会发现有用的另一种方法是制作一个包装类来存储您的设置。你可以用静态方法来查找你的密钥,这样你就可以获得一个很好的编译时间来获取api密钥,而不是在任何地方输入你的密钥的名字。

+0

谢谢,我想我会尝试使用一个包装类,听起来像ag ood的想法。 – Prozaker 2010-10-22 17:58:49