我是.net的新手,但一直在編程約15年。 今天,我們有一個基於客戶端/服務器的系統(即內部開發)。 瘦客戶端通過套接字連接到業務邏輯過程(BLP)。爲iis創建池
客戶端發送XML消息到通過同一插座回覆與XML
到目前爲止一切順利的BLP。該BLP是寫在任一託管C,或在阿達(我們有兩個系統,相同的設計)
這些BLPs現在被髮布爲Web服務,(或者至少一些服務,他們提供的)
我們已決定將.net/c#/ IIS7作爲應用程序服務器。
該Web服務請求進入到IIS,它將它傳遞給我們的C#代碼。 現在,產生這些BLP非常重,所以我爲它們寫了一個池, 產生了10個連接,並且aps.net c#代碼可以調用到 的一些函數需要從池中建立連接,並返回連接到游泳池。 這基本上是一個連接的插座。
我的問題是,如何使這個池靜態在IIS中? 我認爲這是一種'數據庫'池,最好是 我在web.config中有一個描述連接池的條目。
- 有沒有我應該實現的任何接口?
- 有沒有示例代碼要看?
- 它可行嗎?
我的大多數搜索描述應用程序池,我認爲這不是我想要的。
感激有見地的意見
編輯:
嗯,投票是線程安全的,所以我試圖與第一選項第一。有一個Global.asax和alreay一個的global.asax.cs,所以我把這樣的代碼
public class WebApiApplication : System.Web.HttpApplication
{
//bnl start
private Pool myPool = null;
public Pool MyPool
{
get { return myPool; }
}
//bnl stop
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//bnl start
myPool = new Pool(3, 0, "localhost", 58031, "user", "pwd", "proj");
myPool.Initialize();
//bnl stop
}
}
但隨後在控制器中,我看不到池..
namespace Resttest.Controllers
{
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
// the pool has method getPoolItem to return a free item/connection
PoolItem pi = Resttest.WebApiApplication.MyPool.getPoolItem();
return new string[] { "value1", "value2" };
}
然而Resttest .WebApiApplication.MyPool未從控制器中看到。 在這個世界上完全是新手,有什麼明顯的錯誤嗎? /Björn
WMI可以幫助您執行某些IIS事件嗎? – AssaultingCuccos