FC2ブログ
Visual studio 2015 + Windows7 でasp.net 5 のプロジェクトを作る
んー、理由はわからんが普通にプロジェクトを作ると失敗する。
Windows8 や Windows10は大丈夫なんだけどね。

とりあえず、次の手順でなんとかなるかも。

1. Visual Studio 2015 をインストールする。デフォルトでOK

2. Visual Studio 2015 Tools コマンド プロンプトを管理者モードで開く
スタートメニューにあるやつね。

3. 次のコマンドプロンプトから次のコマンドを実行する
$dnvm install 1.0.0-beta5 -r clr
$dnvm install 1.0.0-beta5 -r coreclr
$dnvm install 1.0.0-beta8 -r clr
$dnvm install 1.0.0-beta8 -r coreclr
とりあえず全部入れとけって感じ。

アーキテクチャを変更したい場合は、 -Architecture x64 を追加すればOK。
標準だとx86っぽい。

※ヘルプが見たい場合は各命令のあとに -? を入れればOK
$dnvm install -?

4. Visual Studio 2015 でASP.net5 のプロジェクトを作成する
プロジェクトのプロパティを開き、アプリケーションのタブを選択。
使用するdnxのバージョンが多分beta8になってるので、beta5にして保存する。

5. ソリューションエクスプローラーのプロジェクト内にあるリファレンスから、右クリックメニューのパッケージを復元を実行する

これでビルドとデバッグ実行ができるはず。
試してないけど、beta8を使った場合、project.json の各アセンブリのバージョンも変えないと駄目かも('A`)
スポンサーサイト
RavenDBを使ってみる
NoSQLというものをちょっと触ってみようかと。
MongoDBとかRedisとか色々とあるけど、とりあえず.net と相性が良さそうなRavenDBにしてみる。

RavenDBは、Embeddedっていうサーバーを立てなくてもクライアントだけで動作するものあるっぽいので試しにそれを使ってみようと思う。

まずはNuGetでRavenDB Embeddedをアプリケーションに追加する。関連するパッケージも落ちてくるので、これ一つを選択すればOK

んで、次のようなコードを書く('A`)y~~~

public class FileData
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Size { get; set; }
    public byte[] Context { get; set; }
}
 
using (var store = new EmbeddableDocumentStore()
{
    DataDirectory = @"C:\RavenDBTest", // データの永続化先
    EnlistInDistributedTransactions = false, // 分散トランザクションには参加しない
})
{
    // ドキュメントストアの初期化。データディレクトリに構成データが作られる
    store.Initialize();

    // ドキュメントストアに対して操作を行うドキュメントを開く。第一引数に開きたいドキュメントを設定できる
    using (var session = store.OpenSession())
    {
        using (var f = System.IO.File.OpenRead(@"適当なでーた.jpg"))
        {
            var bin = new byte[f.Length];

            f.Read(bin, 0, bin.Length);

            var data = new FileData()
            {
                //Id = 0,
                Name = Guid.NewGuid().ToString(),
                Size = bin.Length,
                Context = bin,
            };

            session.Store(data);
            session.SaveChanges();

            // Console.WriteLine("new id:" + data.Id.ToString());
        }
    }

    using (var session = store.OpenSession())
    {
        // ちゃんと保存されている
        var count = session.Query<FileData>().Count();


        // 何故か128件以上取得できない。どっかに設定があるかも
        var data = session.Query<FileData>().ToList();
    }
}

単純明快。
試しに100万のデータを登録してみたけど普通に動いていた。
メモリ上だけで動作するモードもあるっぽい。ドキュメントストアのプロパティにRunInMemoryというのがある。
なので永続化はされないだろう。ちゃんと調べてない…

DataDirectory にWindowsの共有ディレクトリを指定しても問題なく動いてくれる。

ただし、DataDirectory の場所を複数のアプリケーションで共有はできない。
行うと例外が発生する。

複数のアプリケーションと共有したい場合は、サーバータイプを使うしか無いだろう。
Embedded は単純に一つのアプリケーションが使うものなのだろう。

Entity Framework とSqlServer2005
TransactionScope を使って暗黙トランザクションを使うと発生するっポイ。

Linq To Entity で発生した例

using (var ts = new TransactionScope())
{
  var db = new DbEntities();
  var reg = db.Entities1.Create();
  db.Entities1.Add(reg);

  // リレーションのために他のオブジェクトを参照させる
  reg.Entity2 = db.Entities2.First();
  reg.Entity3 = db.Entities3.First(); // ここでエラーが発生

  db.SaveChanges();
  ts.Complete();
}

どうも、First()メソッドを使うことでSQLクエリが実行されるけど、内部的に複数のコネクションが作られるみたい。
んで、ここの問題が発生すると。
http://www.atmarkit.co.jp/ait/articles/0804/25/news169_3.html

Sql Server2005 だけなのかな?LocalDBとか使うと発生しないし('A`)
MSDTCを有効にすればいいんだろうけど、面倒だなぁと。
HttpWebRequest.BeginGetResponse って…
HTTPリクエストは非同期で送信するけど、ドメイン解決は呼び出しスレッドで行うのねー。
完全に非同期じゃないってことかい!

※WebRequestから派生しているクラスは全て同じ実装になってるのかも。未調査だからわかんね
※.NET Framework は 2.0 での場合



       ::                .|ミ|
        ::               .|ミ|           ::::::::
         :::::     ____ |ミ|          ::::
           :: ,. -'"´      `¨ー 、       ::
   ::        /   ,,.-'"      ヽ  ヽ、    ::
   ::     ,,.-'"_  r‐'"     ,,.-'"`     ヽ、 ::
   ::   /    ヾ (    _,,.-='==-、ヽ         ヽ、
   ::   i へ___ ヽゝ=-'"/    _,,>         ヽ
   ::   ./ /  > ='''"  ̄ ̄ ̄               ヽ
  ::   / .<_ ノ''"       ヽ               i
  ::   /    i   人_   ノ              .l
  ::  ,'     ' ,_,,ノエエエェェ了               /
    i       じエ='='='" ',              / ::
    ',       (___,,..----U             / ::
     ヽ、         __,,.. --------------i-'"  ::
      ヽ、_   __ -_'"--''"ニニニニニニニニヽ   ::
         `¨i三彡--''"´              ヽ  ::
TOP
プロフィール

hssamurai

Author:hssamurai
FC2ブログへようこそ!

最新記事
最新コメント

最新トラックバック

月別アーカイブ
カテゴリ