Классик VBScript/ASP

Как сейчас, поддерживаемый способ состоит в том, чтобы оба объекта могли совместно использовать интерфейс. Пример:

interface ReturnInterface {}
class FailObject implements ReturnInterface {}
class SuccessObject implements ReturnInterface {}
function test(): ReturnInterface {}

В этом примере ReturnInterface пуст. Его простое присутствие поддерживает декларацию требуемого типа возврата.

Предупреждение: Следующие обсуждаемые RFC (типы Союза) были отклонены https://wiki.php.net/rfc/union_types

blockquote>

Существует активное горячее обсуждение типов профсоюзов с несколькими конкурирующими RFC. Если какая-либо из них пройдет, то предлагаемая подпись будет:

function test(): FailObject|SuccessObject {}

Тем не менее, я предпочитаю интерфейсный подход независимо от типов объединения. Для меня это более понятно и более расширяемо. Если я позже захочу WarnObject, мне просто нужно определить его как расширение ReturnInterface - вместо того, чтобы проходить через все подписи и обновлять их до FailObject|SuccessObject|WarnObject.

7
задан tereško 17 June 2012 в 10:17
поделиться

10 ответов

ADO является отличным способом получить доступ к базе данных в VBScript/классике ASP.

Dim db: Set db = Server.CreateObject("ADODB.Connection")
db.Open "yourconnectionstring -> see connectionstrings.com"
Dim rs: Set rs = db.Execute("SELECT firstName from Employees")
While Not rs.EOF
    Response.Write rs("firstName")
    rs.MoveNext
Wend
rs.Close

Более подробная информация: http://www.technowledgebase.com/2007/06/12/vbscript-how-to-create-an-ado-connection-and-run-a-query/

Один протест состоит в том, что при возврате поля MEMO в recordset, быть уверенными, Вы только выбираете ОДНО поле MEMO за один раз и удостоверяетесь, что это - столбец LAST в Вашем запросе. Иначе Вы столкнетесь с проблемами. (Ссылка: http://lists.evolt.org/archive/Week-of-Mon-20040329/157305.html)

20
ответ дан 6 December 2019 в 04:46
поделиться

Не забудьте программировать на язык, а не программу в нем. Просто, потому что Вы используете ограниченный комплект инструментальных средств, не означает, что необходимо программировать как, он - 1999.

Я соглашаюсь с JasonS о классах. Это верно, что Вы не можете сделать вещей как наследование, но можно легко фальсифицировать его

Class Dog
    Private Parent

    Private Sub Class_Initialize()
        Set Parent = New Animal
    End Sub

    Public Function Walk()
        Walk = Parent.Walk
    End Function

    Public Function Bark()
        Response.Write("Woof! Woof!")
    End Function
End Class

В моих проектах ASP-страница будет иметь следующее: INC-APP-CommonIncludes.asp - Это включает материал как мои общие библиотеки (Доступ к базе данных, функции файла, и т.д.) и настраивает безопасность и включает любые конфигурационные файлы (как строки подключения, местоположения каталога, и т.д.) и общие классы (Пользователь, Разрешение, и т.д.) и включено в каждую страницу.

Modules/ModuleName/page.vb.asp - Отчасти как код позади страницы. Включает страницу определенный ФИЛИАЛ, BLL и классы DAL и настраивает данные, требуемые для разбивания на страницы/получения отправленных данных формы, и т.д.

Modules/ModuleName/Display/INC-DIS-Page.asp - Отображает набор данных в page.vb.asp.

8
ответ дан 6 December 2019 в 04:46
поделиться

Повторение некоторых идей и добавление некоторых моих собственных:

1) Лучший способ получить доступ к базе данных был бы для абстракции этого далеко в какой-то COM-компонент, к которому Вы получаете доступ от VBScript.

2) Если бы Вы действительно хотели Вам, то мог бы записать контроллер в VBScript и затем доступе это на странице. Это напомнило бы шаблон Контроллера Страницы и не Фронтальный контроллер, что Вы будете видеть в ASP.NET MVC или MonoRail

3) Почему Вы делаете это себе? Большинство инструментов, требуемых сделать этот вид работы, больше даже не доступно.

3
ответ дан 6 December 2019 в 04:46
поделиться

Я должен был убежать от своего ПК, когда я видел первый ответ и все еще обеспокоен, что он был утвержден таким количеством людей. Это - ужасный пример очень худшего вида кода ASP, вид, который удостоверился бы, Ваш сайт вводим SQL и, если Вы продолжаете использовать этот код через сайт, hackable на волосок от его жизни.

Это не вид кода, который необходимо давать кому-то плохо знакомому с ASP, кодирующим, поскольку они будут думать, что это - профессиональный способ кодировать на языке!

  1. НИКОГДА не показывайте строку подключения в своем коде, поскольку он содержит имя пользователя и пароль к Вашей базе данных. Используйте файл UDL или по крайней мере константу, которая может объявляться в другом месте и использоваться через сайт.

  2. Там больше не хорошо работает оправдание за использование встроенного SQL ни для какой операции в веб-среде. Используйте хранимую процедуру - преимущества безопасности не могут быть подчеркнуты достаточно. Если Вы действительно не можете сделать, это затем смотрит на встроенные параметры как на второсортную опцию... Встроенный SQL оставит Ваш сайт широко открытым для Внедрения SQL, вредоносной инжекции и остальных.

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

  4. Никакие подсказки к базе данных относительно того, какое соединение это - не являются им для чтения только, или пользователь будет обновлять записи? Соединение может быть оптимизировано, и база данных может обработать блокировку очень эффективно, если эффективно сказали, что ожидать.

  5. Соединение с базой данных не закрывается после использования, и не полностью уничтожается объект recordset.

ASP является все еще резкими словами, несмотря на многих людей, предлагающих перемещающийся в.NET - с хорошими методами кодирования, которые сайт ASP может быть записан, который легко поддержать, масштабируемый и быстрый, но необходимо удостовериться, что Вы используете каждый метод, доступный для создания кода эффективным, необходимо поддержать хорошие методы кодирования и немного предусмотрительности. Хороший редактор поможет также, при этом мое предпочтение будет для PrimalScript, который я нахожу более полезными кодеру ASP, чем любой из последних продуктов MS, которые, кажется, очень центральны.NET.

Кроме того, откуда поле "MEMO"? Эта номенклатура Доступа, или возможно MySQL? Я прошу, чтобы поля как таковые называли ТЕКСТОМ или полями NTEXT в MS-SQL в течение десятилетия.

17
ответ дан 6 December 2019 в 04:46
поделиться

На номере 2 я думаю, что у Вас есть несколько опций...

1) Можно использовать COM-компоненты, разработанные в VB6 и т.п. для разделения части бизнес-логики от UI.

2) Можно создать классы в VBScript. Нет никакого понятия наследования, и другое больше расширенных функций отсутствует в реализации, но можно инкапсулировать логику в классах, которая помогает уменьшить spagehtti-мыс приложения. Проверьте это: http://www.4guysfromrolla.com/webtech/092399-1.shtml

2
ответ дан 6 December 2019 в 04:46
поделиться

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

В моем опыте ASP я предпочел писать свой слой доступа к базе данных с помощью VB, компилируя вниз в DLL и сославшись на DLL через VBScript. Жесткий для отладки непосредственно через ASP но это был хороший способ инкапсулировать весь код доступа к данным далеко от кода ASP.

2
ответ дан 6 December 2019 в 04:46
поделиться

путем путь назад в день, когда VBScript/ASP были все еще в порядке, я работал в коммунальном предприятии с очень смешанной средой DB, я раньше клялся этим веб-сайтом: http://www.connectionstrings.com/

@michealpryor разобрался в нем

1
ответ дан 6 December 2019 в 04:46
поделиться

Я застрял, основываясь на ASP, и я чувствую Вашу боль.

1) Лучший способ запросить против SQL Server с параметризированными запросами; это поможет предотвратить против атак с использованием кода на SQL.

Учебное руководство (не мой блог):
http://www.nomadpete.com/2007/03/23/classic-asp-which-is-still-alive-and-parametised-queries/

2) Я ничего не посмотрел относительно MVC, конкретно приспособленный к ASP, но мне определенно интересно, потому что это - что-то, что мне нелегко переносить мою голову. Я обычно пытаюсь, по крайней мере, содержать вещи, которые подобны представлению и вещи, которые подобны контроллеру в отдельных функциях. Я предполагаю, что Вы могли возможно написать код в отдельных файлах и затем использовать сторону сервера, включает для присоединения к ним всем назад вместе.

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

1
ответ дан 6 December 2019 в 04:46
поделиться

Также для доступа к базе данных у меня есть ряд функций - GetSingleRecord, GetRecordset и UpdateDatabase, который имеет подобную функцию к тому, что упоминает выше Michael

1
ответ дан 6 December 2019 в 04:46
поделиться

AX - Asp Xtreme Evolution - это среда MVC для классического ASP

. Есть несколько попыток создания среды тестирования для asp: aspUnit хорош, но больше не поддерживается.

Несколько месяцев назад я видел пример того, как создать свой собственный. В этом примере nUnit используется для вызова функций веб-сайта для автоматического тестирования. Я думаю, что получил его здесь (моя линия заблокирована, поэтому я не могу проверить)

3
ответ дан 6 December 2019 в 04:46
поделиться
Другие вопросы по тегам:

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