powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Динамическая структура данных и MVC
25 сообщений из 328, страница 11 из 14
Динамическая структура данных и MVC
    #38185371
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
результат есть...серость - это ты!!!
Вот так на тебе
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185383
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
результат есть...автор Если это сказало унылая поддакивающая серость,
серость - это ты!!!
разве важно кто сказал, что Земля крутится вокруг Солнца!?
авторДа тебя даже читать не захотят,
14051864 - меня не только читают, а ещё и цитируют!!!
Вовочка, выключи телефон и смотри на доску! И запомни, то что Земля вращается вокруг Солнца доказал Николай Коперник!
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185496
Именно об этом Сева и говорил -
Люди не имеющие своих мыслей, активно придерживаются чужих!

Не нравится сравнение с курятником, сравнивайте себя с лемингами - они тоже всегда правы!!! ;)
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185509
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Размышление о мыслях маленькой серенькой мартышки забавляет :)
Не автор ли отыгрывается за зло, которое ему доставили?
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185510
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё, загадили тему. Пора закрывать.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185521
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЕсли структура данных конкретного пользователя меняется не от каждого чиха, то я не вижу особых причин, по которым нельзя строить классы динамически. Нужно просто не удалять построенное, а компилировать и сбрасывать в блоб, связанный с этим пользователем. При следующей авторизации просто вытягивать из базы и юзать.У автора уже есть API, и база есть, и аналитика даже какая-то к ней прикручена. Он морду на MVC к этому прикрутить не может.

А использование блобов приведёт к потере производительности из-за сериализации/десериализации. Тем более автор от идеи использовать MongoDB отказался, из-за того, что аналитика нужна.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185653
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAУ автора уже есть API, и база есть, и аналитика даже какая-то к ней прикручена. Он морду на MVC к этому прикрутить не может.Так автор же хочет все переписать, сохранив бизнес-логику, а не говнокод.

skyANAА использование блобов приведёт к потере производительности из-за сериализации/десериализации.Я предлагал хранить скомпилированные ассембли, причем тут сериализация? Можно не в блобах, а файлах, если это производительней.

Примерно так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
    Private Function RunScript(ByVal sScript As String) As String
        RunScript = ""
        Dim a As System.Reflection.Assembly = Nothing
        Try
            a = DataService.Setup.Assemblies(sScript.GetHashCode.ToString)
        Catch ex As Exception
            a = CreateAssembly(sScript)
            If a Is Nothing Then
                Exit Function
            Else
                DataService.Setup.Assemblies.Add(a, sScript.GetHashCode.ToString)
            End If
        End Try
        Try
            Dim o As Object = a.CreateInstance("GSEngine.Script")
            Dim t As Type = o.GetType()
            Dim pi As PropertyInfo = t.GetProperty("Engine")
            Dim mi As MethodInfo = t.GetMethod("EvalCode")
            Dim s As Object = mi.Invoke(o, Nothing)
            Return s
        Catch ex As Exception
            mErrors.AddItem(clsErrors.ErrorType.ertSystem, 9999, ex.Message, OBJ_NAME, "RunScript")
        End Try
    End Function

    Private Function CreateAssembly(ByVal sScript As String) As System.Reflection.Assembly
        On Error GoTo errh
        Dim c As VBCodeProvider = New VBCodeProvider()
        Dim cp As CompilerParameters = New CompilerParameters()
        cp.ReferencedAssemblies.Add("system.dll")
        cp.ReferencedAssemblies.Add("system.xml.dll")
        cp.ReferencedAssemblies.Add("system.data.dll")
        cp.ReferencedAssemblies.Add(System.Reflection.Assembly.GetExecutingAssembly.Location)
        cp.CompilerOptions = "/t:library"
        cp.GenerateInMemory = True
        ' Complete the user code so that it can be compiled
        Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder("")
        sb.AppendLine("Imports System")
        sb.AppendLine("Imports System.IO")
        sb.AppendLine("Imports System.Xml")
        sb.AppendLine("Imports System.Data")
        sb.AppendLine("Imports GSTypeLib")
        sb.AppendLine("Imports GSEngine")

        sb.AppendLine("Namespace GSEngine ")

        sb.AppendLine("Public class Script")
        sb.AppendLine("Dim mEngine as clsEngine")

        sb.AppendLine("Public Property Engine() As clsEngine")
        sb.AppendLine("    Get")
        sb.AppendLine("        Engine=mEngine")
        sb.AppendLine("    End Get")
        sb.AppendLine("    Set(ByVal value As clsEngine)")
        sb.AppendLine("        mEngine=value")
        sb.AppendLine("    End Set")
        sb.AppendLine("End Property")

        sb.AppendLine("public function EvalCode() as object")

        sb.AppendLine(sScript)

        sb.AppendLine("End Function")

        sb.AppendLine("End Class")
        sb.AppendLine("End Namespace")

        Dim cr As CompilerResults = c.CompileAssemblyFromSource(cp, sb.ToString())
        If cr.Errors.HasErrors Then
            Dim er As CompilerError
            For Each er In cr.Errors
                ' mErrors.AddItem(clsErrors.ErrorType.ertSystem, , er.ErrorText, OBJ_NAME, "RunScript")
            Next
            Return Nothing
        End If
        Return cr.CompiledAssembly
    End Function

Только мне не надо было хранить их в базе.
Кстати, не нашел метод сохранения ассембли в байтовый массив, лишь загрузку из него.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185668
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЯ предлагал хранить скомпилированные ассембли
Налету формируя CompileAssemblyFromSource из sScript (хранящегося в БД) ты хотел сказать? Это не "скомпилированные" ассембли, это ассембли, которое постоянно будет оверхедиться на жестком диске при каждом CompileAssemblyFromSource.
Идея, конечно, жутковата.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185672
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, не понял. Вы предлагете делать версию софта, или сайта, или отчёта под каждого клиента, или что?
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185674
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyКстати, не нашел метод сохранения ассембли в байтовый массив, лишь загрузку из него.
Попробуй так BinaryFormatter.Serialize(MemoryStream, results.CompiledAssembly). Ну а потом MemoryStream.ToArray()
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185697
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНалету формируя CompileAssemblyFromSource из sScript (хранящегося в БД) ты хотел сказать?Нет. В данном коде sScript извлекался из xml-шаблона, а сборки хранились в памяти пока не умрет приложение. Этакий корявенький недоWebForms получился. Я от этой идеи отказался, что за удовольствие от скрипта в шаблоне без интеллисенса и подсветки? Хотя можно было и в vb-файле хранить, но тогда пришлось бы дробить логику шаблона по модулям, чего делать не хотелось.

Автору же предлагается генерить sScript и интерфейс-обертку для него лишь тогда, когда модель меняется. Точь-в-точь как это делает EF. Все остальное время юзать уже готовую сборку, а где хранить — да пофиг, где удобнее/быстрее/расовей. Поэтому я и спрашивал про то, как часто меняется модель. Если очень часто, это, конечно, не вариант.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185702
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

вариант 1
всегда интерпретировать
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185710
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosAntonariy,

вариант 1
всегда интерпретироватьЧочо?
Что за вариант 1 и зачем тормозно интерпретировать, если можно скомпилировать и исполнять нативно и шустро?
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185721
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

проверено
методы - пишет прогер и лежат они на сервере
модель данных интерпретируется в коллекции (у меня просто датасет)
модель и методы имеют контракт (требования метода к модели данных)
при изменении модели верифицируются контракты и если плохо, то в зависимости от критичности (сервис незначительный и т.д.) метода
1. не даем менять модель таким образом
2. метим метод как не валидный и не запускаем, не показываем и т.д.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185740
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЯННП

И к сути вопроса ТС походу отношения не имеет.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185938
*Ihor*Мне нужен чистый легкий код. Я пытаюсь пересобрать свой API.
На данный момент как и писал выше на коленке уже работают варианты
1) генерация dll и поключение из папки клиента, но много нехороших моментов есть.
2) dynamic почти получается аналог JS но нужно все таки писать свой класс сверху чтобы не слетат код при обращении к не существующему проперти, ведь дизайнер UI будет писать проверки.
Код: c#
1.
2.
3.
   IDictionary<string, dynamic> user = new Dictionary<string, dynamic>();
   user["Name"] = "Test";
   Console.Write(user["Name"]);


покрывает почти все что вижу. даже методы можно повесить налету. но не хватает обработки чтобы user['Age'] вернуло null как в JS а не падало по ошибке.
3) ExpandoObject в принципе получается выше аналог dynamic за исключением менее компактного кода.
Код: c#
1.
2.
3.
4.
   dynamic user = new ExpandoObject();
   ((IDictionary<String, Object>)employee).Add("Name","Test");

   Console.Write(user.Name);

а проверить несуществующий проперти религия не позволяет?
да и посути тотже Json.NET либа на ExpandoObject вроде построена.

2) и 3) вариант вполне позволяют получив выборку с базы, загнать все колонки в объект и отдать в шаблон. А дальше админ может менять вывод в шаблоне под свои задачи. Т.е. введя в таблицу новое поле "Tel" в Razor шаблоне просто админ укажет
Код: c#
1.
2.
3.
 @foreach (var user in UsersList) { 
    <p>@user.Tel</p>
 } 


чем плох такой подход? зачем мне DNN
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38185943
*Ihor*,

если устраивает - проверить не существующий ключ религия не позволяет?
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38186096
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyВ данном коде sScript извлекался из xml-шаблона, а сборки хранились в памяти пока не умрет приложение.
В какой такой памяти? Созданные сборки оверхедятся на диск, другого не дано априори.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38186113
*Ihor*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробегалло*Ihor*,

если устраивает - проверить не существующий ключ религия не позволяет?
уже проверил, и дописал недостающие методы, выше был один из примеров в работе.

Antonariy:
ты правильно мыслишь, вот только можно гараздо проще и выгоднее по производительности, я об это упомянул в самом начале но прибежал МСУ и устроил холивар с выносом мозга. Генерить нужно не классы в какойто формат, или даже компилить их. А всегото генерить DLL библиотеки, и подгружать с нужной папки клиенты, и все. Это как раз один из методов аля интерпретатор - одни пишут парсинг и интерпретацию скриптов, другие записывают код в dl и далее по вызову выполняется родной c#. Я таким образом делал расчетный модуль для аналитики, введенный код пользователем и удобоваримый для него , переводится в c# код, и далее генерируется C# dll. Вот и тут также была и это идея тоже, генерить в папку dll и далее спокойно вызывать как статику. Но там тоже хватает проблем и мест со сложностями.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38186173
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariyВ данном коде sScript извлекался из xml-шаблона, а сборки хранились в памяти пока не умрет приложение.
В какой такой памяти? Созданные сборки оверхедятся на диск, другого не дано априори.Я не правильно понимаю этот кусок из МСДН?
Public Property GenerateInMemory As Boolean
является членом: System.CodeDom.Compiler.CompilerParameters

Получает или задает значение, показывающее, следует ли создавать выходной файл в памяти.


*Ihor* А всегото генерить DLL библиотеки, и подгружать с нужной папки клиенты, и все.Ровно это я и предлагал.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38186183
*Ihor*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Генерация в файл через
Код: c#
1.
2.
3.
4.
5.
CSharpCodeProvider csp = new CSharpCodeProvider();
ICodeCompiler cc = csp.CreateCompiler();
CompilerParameters cp = new CompilerParameters();
//****
CompilerResults cr = cc.CompileAssemblyFromSource(cp, ".....code ...");



загрузка из файла
Код: c#
1.
2.
3.
4.
5.
  AppDomain domain = AppDomain.CurrentDomain;
  Assembly assembly = domain.Load(loadFile("demo.dll"));
  Type typeofClass = assembly.GetType("demo.Script", true, false);
  Command mathClass = (Command)Activator.CreateInstance(typeofClass);
  mathClass.Execute(ref data);


вот так покрайней мере был сделан плагин в одной проекте. но вариантов подобного решения валом , д аи за 5 лет появилось более удобные методы в .NET
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38186311
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyЯ не правильно понимаю этот кусок из МСДН?
Public Property GenerateInMemory As Boolean
является членом: System.CodeDom.Compiler.CompilerParameters

Получает или задает значение, показывающее, следует ли создавать выходной файл в памяти.

Не правильно. Под памятью они имеют ввиду генерацию в темповой директории. Учи матчасть, чтоле.
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38186408
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariyЯ не правильно понимаю этот кусок из МСДН?
пропущено...

Не правильно. Под памятью они имеют ввиду генерацию в темповой директории. Учи матчасть, чтоле.


Пора бы и тебе этим заняться, Муслимка.
Create Assembly in-memory and run it..

C# Runtime Compilation
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38186415
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...

Не правильно. Под памятью они имеют ввиду генерацию в темповой директории. Учи матчасть, чтоле.


Пора бы и тебе этим заняться, Муслимка.
Create Assembly in-memory and run it..

C# Runtime Compilation

Сразу невооруженным глазом виден твой "опыт" с CodeDom. Садись, опять двойка.

Специально для таких как ты написал рецепт: http://codearticles.ru/home/articleview/2271
...
Рейтинг: 0 / 0
Динамическая структура данных и MVC
    #38186432
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaМСУпропущено...

Не правильно. Под памятью они имеют ввиду генерацию в темповой директории. Учи матчасть, чтоле.


Пора бы и тебе этим заняться, Муслимка.
Create Assembly in-memory and run it..

C# Runtime Compilation

Специально для дебила MCУ небольшое пояснение:

Вторая ссылка касается CSharpCodeProvider для компиляции C#.

ЗЫ Муслимка, ты как всегда на высоте и продолжаешь радовать своей откровенной тупостью
...
Рейтинг: 0 / 0
25 сообщений из 328, страница 11 из 14
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Динамическая структура данных и MVC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]