Бритва против поиска и замены для шаблонов электронной почты - PullRequest
4 голосов
/ 13 сентября 2011

Я вижу много людей, использующих движок Razor для шаблонов электронной почты.На первый взгляд это кажется отличной идеей.Тем не менее, после просмотра писем, которые генерирует большинство людей, я не могу не задуматься о том, как лучше использовать Razor, чем просто выполнять поиск и замену на основе строк.

Большинство писем располагаются примерно так:

<html>
<head>
    <title>Welcome to mysite.com</title>
</head>
<body>
    <p>Dear @Model.Name,</p>
    <p>An account has been created for you.</p>
    <p>Your account is FREE and allows you to perform bla bla features.</p>
    <p>To login and complete your profile, please go to:</p>
    <p><a href="@Model.LogOnUrl">@Model.LogOnUrl</a></p>
    <p>Your User ID is your email address and password is: @Model.Password</p>
</body>
</html>

В этом довольно тривиальном электронном письме, почему бы просто не сделать что-то вроде:

string result = template.Replace("@Model.Name", Model.Name);

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

Мой вопрос здесь не имеет ничего общего с тем, как реализовать такое решение, я понимаю, как это сделать.тот.Мой вопрос: стоит ли использовать Razor, когда ваши электронные письма настолько просты?Особенно, если вы используете RazorEngine, который принимает строковые входные данные и не приводит к какому-либо скомпилированному классу для шаблона.

Мне кажется, что это слишком сложное решение.

Ответы [ 2 ]

4 голосов
/ 13 сентября 2011

Это вопрос производительности и семантики. Конечно, вы МОЖЕТЕ шаблонные электронные письма, просто используя замену строк, но Razor изначально был разработан именно для этой цели.

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

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

RazorEngine выведет скомпилированный класс, если вы передадите его. В этом смысле этот класс можно кэшировать и вызывать с невероятной производительностью для шаблонов.

На мой взгляд, это похоже на переход с WebForms на MVC; Вы разделяете свои проблемы и позволяете каждому делать свое дело.

4 голосов
/ 13 сентября 2011

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

Например, вы можете включить условные выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...