Необходимо убедиться, что выражения переменных в лямбда-выражении ссылаются на один и тот же экземпляр.
Этот код работает очень хорошо и, похоже, дает ожидаемый результат.
void Main()
{
var var = Expression.Variable(typeof(Foo), "foo");
var expr = Expression.Lambda(
Expression.Lambda(
Expression.Call(var, typeof(Foo).GetMethod("Bar"))), new[] { var });
var res = (Action)expr.Compile().DynamicInvoke(new Foo());
res();
}
class Foo
{
public void Bar()
{
Console.WriteLine("Bar");
}
}
Этот вид походит на sharding, но я, вероятно, пропускаю тонкость.
И одинаково я не вижу много статей о нем - некоторые на highscalability.com
Я думаю, что это - то, что Microsoft сделала в SQL Server 2008 с устройством хранения данных FILESTREAM. Это позволяет устройство хранения данных данных BLOB в SQL Server, но позволяет Вам получать доступ к файлам непосредственно от диска, который дает Вам производительность задницы удара.
Microsoft выпустила техническое описание при управлении неструктурированными данными, которыми можно интересоваться. СУЩЕСТВУЕТ также статья MSDN, описывающая FILESTREAM, а также профессионалов и недостатки хранилища файлов и ли к BLOB или не к BLOB
@Chris Kimpton
Это назвали бы, индексировав. Sharding или разделение больше о том, как разделить файл.