Silverlight — поддержка динамического кода?

Я пытаюсь немного понять взаимосвязь кода на стороне сервера с кодом на стороне клиента в Silverlight.

Я предполагаю, что вы не можете просто "проверить" строку и получить новый код, но не могли бы вы загрузить сборку на стороне сервера и включить ее в код Silverlight, который отправляется клиенту? >

Я полный «нуб», когда дело доходит до Silverlight, поэтому я могу совершенно неправильно понять, как это работает, поэтому любые разъяснения будут оценены.

[Изменить]

Просто чтобы было немного понятнее, что я пытаюсь сделать, я хотел бы написать простой код (только в логике), скомпилировать его на сервере, а затем отправить обратно клиенту, чтобы он мог быть используется на стороне клиента. Я не уверен, что это будет DLL или даже возможно...


person hugoware    schedule 21.07.2009    source источник
comment
Вы имеете в виду, можете ли вы создать сборку на стороне сервера? Поддерживается динамическая загрузка готовых сборок, и ее легко выполнить.   -  person James Cadd    schedule 21.07.2009
comment
И вы можете отправить их на сервер и загрузить в клиентское приложение Silverlight?   -  person hugoware    schedule 21.07.2009
comment
Я думаю, что меня просто смущает слово load в вашем вопросе. Похоже, вы хотите собрать строку кода в SL, отправить ее на сервер, заставить сервер сгенерировать dll, а затем загрузить ее обратно в ваше приложение SL. Это оно? Если это так, я думаю, что вы могли бы создать сборку на стороне сервера, возможно, это было бы более понятным способом. Если вопрос касается исключительно динамической загрузки уже скомпилированной dll в SL, то это другой (и более простой;) процесс.   -  person James Cadd    schedule 21.07.2009
comment
Да, вы излагаете это намного яснее, чем я :) - Создайте сборку на стороне сервера, а затем динамически добавьте ее в работающее приложение Silverlight.   -  person hugoware    schedule 21.07.2009


Ответы (2)


У этого парня есть работающий загружаемый образец, который делает именно то, что вы хотите:

http://www.nokola.com/trycsharp/HowToBuild.aspx

Он в основном использует Microsoft.CSharp.CSharpCodeProvider для компиляции кода, но использует Dll Sivlerlight, чтобы он работал правильно.

Вы даже можете скомпилировать целую страницу Silverlight (xaml и cs), но вы должны сделать это с помощью msbuild, поскольку для создания файла .g.cs необходимо выполнить предварительную компиляцию, которая связывает объекты Xaml с кодом C#. .

Оба метода только на стороне сервера.

person mattmanser    schedule 21.07.2009

Вы заинтересованы в использовании динамических языков на платформе Silverlight? Если да, то вам повезло:

http://silverlight.net/learn/dynamiclanguages.aspx/

С другой стороны, динамическая генерация кода в C# будет считаться типом отражения, что в настоящее время невозможно в Silverlight (для сравнения см. System.Reflection.Emit в полной версии .NET Framework).

Редактировать 1: Это не похоже на вопрос, хотя вы все равно можете его рассмотреть. Вот хорошая статья о том, как динамически генерировать Xaml на сервере, упаковывать его и возвращать клиенту:

http://msdn.microsoft.com/en-us/magazine/2009.01.cuttingedge.aspx

Часть уравнения, которая все еще отсутствует, заключается в том, как создать SL dll на сервере (вероятно, используя пространство имен Reflection.Emit). Эти dll можно добавить в Xap, как указано в статье, и отправить обратно клиенту.

Вот еще один способ динамической загрузки dll в SL с сервера: http://www.shinedraw.com/data-handling/flash-vs-silverlight-loading-external-assemblylibrary-dynamically/

Теперь я не уверен, можете ли вы динамически генерировать библиотеки SL, но я могу проверить.

person James Cadd    schedule 21.07.2009