- cydia.hackulo.us
- irepo.us
- mi.baidu.com(百度輸入法)
- cudia.xsellize.com
- apt.178.com
2012年1月22日 星期日
2012年1月17日 星期二
2011年9月23日 星期五
db4o 物件的唯一性:disconnected objects 的概念與 web apps
db4o 在單一 object container 的環境下,在物件管理上會確保儲存在資料庫內的物件的唯一性。但是,若是啟用了 client-server 或是 session-container 的架構,則會變成多 object-container 的情況,因此同一個物件可能會在不同的 container 中有不同的 memory identity。這種情況在 web 環境下一定會發生。這時候就要借助額外的 ID,如 db4o 內建的內部 ID:UUID,或是自行產生 ID。
簡而言之,最重要的概念就是加入 EventRegistry,在建立時去檢查是否有 ID 已經存在:
// register
IEventRegistry eventRegistry = EventRegistryFactory.ForObjectContainer(icontainer);
eventRegistry.Creating += delegate(object sender, CancellableObjectEventArgs args)
{
if (args.Object is Article)
{
Article a = (Article)args.Object;
if (a.HasDb4oID()) {
// don't insert because Article is already
// in the container
args.Cancel();
Article existing = LookupArticle(icontainer, a.Db4oID) as Article;
// merge change
existing.MergeChanges(a);
} else {
a.SetDb4oID(a.ArticleID);
}
}
};
相關參考資料如下:
2011年9月15日 星期四
Publish REST services on IIS 6.0
利用 WCF REST Service Template 完成 REST service 後,最後的問題是怎麼把它放到既有的 IIS 6 server 上。
Prerequisite
Steps
- 首先在 server 端,先替 IIS6 安裝好 Web Deploy 2.0。
- 安裝完後會多一個叫做 msdepsvc 的系統服務,該服務預設的 publish Service URL 是 http://yourhost/MsDeployAgentService。
- 在 client 端利用 VS2010 的 publish 介面將網站發布到 server 端。請參考如下設定:
其中,Service URL 就是 msdepsvc 的網址。而 Site/application 則填入欲發布的 server 端網站名稱(Site)與 WebApp 名稱(application)。 - 舉例來說,若是遠端網站名為 Default,欲發布的 app 名為 test,則在 Site/application 填入:Default/test
- 另外當然,在 server 端也必須安裝好 .NET 4.0 framework。
- 若是再安裝完 IIS 後才安裝 framework,須在 .NET 4.0 目錄下(如 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319)執行 aspnet_regiis –i
- 執行 aspnet_regiis.exe –lk 確認目前各 WebApp 的 .NET 版本狀態。並且確認剛 publish 過來的 app 是否使用正確的 .NET framework 版本:
- 以剛剛的例子來說,假設你的網站 ID 為 45,則執行後應該要顯示:
W3SVC/45/Root/test 4.0.30319.0 - 若發現不是使用 4.0 或更高的版本,則需要在對應的 .NET framwork 中執行
aspnet_regiis –s W3SVC/45/Root/test
將其更新為正確的版本。 - 若是不知道網站 ID,可以透過 IIS 管理員的介面查看:
- 同理,若是同一個網站底下的其他 App 想使用不同的 .NET Framwork 版本,也可以使用對應的 aspnet_regiis 來設定之。
- 最後依造 Deploying ASP.NET MVC to IIS 6 的步驟,使用 wildcard mapping,讓 IIS 6 可以處理 routing。需注意,一定要把 uncheck Verify that file exists. 的選項取消!