Как Вы спроектировали бы настольное приложение в C# 3.0

См. этот пример: https://jsfiddle.net/pqhdce2L/

function b64toBlob(b64Data, contentType, sliceSize) {
  contentType = contentType || '';
  sliceSize = sliceSize || 512;

  var byteCharacters = atob(b64Data);
  var byteArrays = [];

  for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
    var slice = byteCharacters.slice(offset, offset + sliceSize);

    var byteNumbers = new Array(slice.length);
    for (var i = 0; i < slice.length; i++) {
      byteNumbers[i] = slice.charCodeAt(i);
    }

    var byteArray = new Uint8Array(byteNumbers);

    byteArrays.push(byteArray);
  }
    
  var blob = new Blob(byteArrays, {type: contentType});
  return blob;
}


var contentType = 'image/png';
var b64Data = Your Base64 encode;

var blob = b64toBlob(b64Data, contentType);
var blobUrl = URL.createObjectURL(blob);

var img = document.createElement('img');
img.src = blobUrl;
document.body.appendChild(img);

9
задан Noam M 18 April 2016 в 07:25
поделиться

5 ответов

Я запустил бы с Руководства Составного приложения WPF (кашель ПРИЗМЫ кашля) от команды Microsoft P&P. С загрузкой прибывает большое эталонное приложение, которое является начальной точкой для большей части моей разработки WPF сегодня.

Команда DotNetRocks просто взяла интервью у Glenn Block и Brian Noyes об этом, если Вы интересуетесь слушанием больше от них.

Еще лучше Призма совсем не так тяжела, как CAB был, если Вы знакомы вообще с этим со дней WinForms.

4
ответ дан 4 December 2019 в 22:31
поделиться

Я сказал бы да, это могло легко быть структурировано к малым приложениям. Существует кривая обучения к началу работы, но честно, это помогло мне понять WPF лучше, чем попытка запуститься с нуля. После запуска проекта с CompositeWPF и затем запуском другого проекта без него, я пытался для дублирования функций CompositeWPF самостоятельно, потому что я пропустил те функции!:)

0
ответ дан 4 December 2019 в 22:31
поделиться

Прежде, чем спроектировать что-либо необходимо определить требования для приложения.
Это - распространенная ошибка разработчиков новичка - стартовое написание кода перед размышлением о том, как это работало бы. Мой совет будет состоять в том, чтобы попытаться описать некоторую функцию Вас приложение. Это поможет Вам чувствовать, как это должно быть реализовано.

Что касается полезных ресурсов изучения я настоятельно рекомендовал бы Вам для взгляда на CompositeWPF, который это - проект, специально разработанный для обучения лучших практик разработчиков разработки настольного приложения.

1
ответ дан 4 December 2019 в 22:31
поделиться

Ответ, "он зависит" как всегда.

Несколько вещей думать о: можно хотеть сделать это приложение толстого клиента веб-приложением (например), в какой-то момент. Если так, несомненно, необходимо будет сохранить разделение между бизнес-слоем (и ниже) и презентация. Самый простой способ сделать это должно быть уверено, что все вызовы к бизнес-логике проходят интерфейс некоторого вида. Более сложный путь состоит в том, чтобы реализовать полную установку MVC.

Другая вещь, которую можно рассмотреть, делает уровень доступа к данным независимым от бизнес-логики и пользовательского интерфейса. Этим я подразумеваю, что все вызовы от бизнес-логики в DAL должны быть универсальными, "получают меня, эти данные", а не "получают меня эти данные из SQL" или еще хуже "выполненный этот SQL-оператор". Таким образом можно заменить DAL тем, который получает доступ к другой базе данных, XML-файлам или даже чему-то неприглядному как плоские файлы.

Короче говоря, разделение проблем. Это позволяет Вам расти в будущем путем добавления другого UI, сегментации всех трех областей на их собственный уровень или изменения соответствующей технологии.

2
ответ дан 4 December 2019 в 22:31
поделиться

Я запустил бы с серии Build Your Own Cab Jeremy Miller.

Я был ранним приемным родителем CAB. Я узнал о много из рытья в ту технологию и чтения всех блогов.NET об архитектуре приложения.

Но недавно у меня был шанс запустить новый проект, и вместо того, чтобы использовать CAB, я пошел с StructureMap & NHibernate и одолжил некоторые шаблоны, которые Jeremy использует (в частности, его способ обработать агрегирование события). Результатом была действительно упрощенная, оснащенная рукой платформа, которая делает все, в чем я нуждаюсь, и я люблю работать с ним.

Относительно специфических особенностей Вашего вопроса: Я использую Репозиторий для доступа к данным. Я первоначально написал некоторый код ADO.NET и использовал средства чтения данных и отобразил мои объекты. Но это стало старым очень быстрый, таким образом, я захватил NHibernate и был действительно рад. Репозитории используют NHibernate для доступа к данным, и мои потребности доступа к данным довольно просты в этом конкретном приложении.

У меня есть уровень служб (выставленный через WCF, Дуплексные каналы), который использует репозитории. Мое приложение в основном клиент-сервер с реальным временем, обновляя (и я знаю, что Вашим вопросом были примерно клиенты, но я буду использовать те же технологии и шаблоны). O

n сторона клиента я использую MVP с StructureMap для МОК и некоторыми очень простыми стратегиями агрегирования события связи перекрестного класса. Я кодирую к интерфейсам для примерно всего. Единственная другая вещь, которую я сделал, была, одалживают у CAB идею гибкой "Рабочей области" для того, чтобы динамично отобразить представления. Я записал свой собственный интерфейс Workspace, хотя и реализовал мой собственный DeckWorkspace и TableWorkspace для использования в моем приложении (они были действительно простыми вещами записать).

Много моих решений в этом новом приложении было результатом опыта и боли, я чувствовал использование других платформ и инструментов. Я принял различные решения на этот раз. Возможно, единственный способ действительно понять, как спроектировать приложение, состоит в том, чтобы чувствовать боль выполнения его неправильно заранее.

1
ответ дан 4 December 2019 в 22:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: