Сведения о вопросе

Ayrat

03:42, 20th August, 2020

VBScript/ASP Classic

Просмотров: 488   Ответов: 10

У меня есть пара вопросов относительно VBScript и ASP Classic:

  1. Каков предпочтительный способ доступа к базе данных сервера MS SQL в VBScript/ASP?

  2. Каковы наилучшие методы в отношении отделения модели от представления от контроллера?

  3. Есть еще что-нибудь, что я должен знать о VBScript или ASP?

Если вы еще не заметили, я новичок в кодировании VBScript. Я понимаю, что числа 2 & 3-это своего рода гигантские вопросы "black hole", которые являются слишком общими, поэтому не думайте, что я ожидаю узнать все, что нужно знать об этих двух вопросах отсюда.



  Сведения об ответе

прога

10:54, 29th August, 2020

ADO-это отличный способ получить доступ к базе данных в VBScript/Classic 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 в наборе записей, убедитесь, что вы выбрали только одно поле MEMO одновременно, и убедитесь, что это столбец LAST в вашем запросе. В противном случае вы столкнетесь с проблемами. (Ссылка: http://lists.evolt.org/archive/Week-of-Mon-20040329/157305.html )


  Сведения об ответе

P_S_S

16:34, 14th August, 2020

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

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

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

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

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

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

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

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

Кроме того, откуда берется поле "MEMO"? Это номенклатура доступа или, может быть, MySQL? Я спрашиваю, как такие поля назывались TEXT или NTEXT полей в MS-SQL в течение десятилетия.


  Сведения об ответе

appple

18:53, 15th August, 2020

Не забывайте программировать на языке, а не программировать на нем. Просто потому, что вы используете ограниченный набор инструментов, не означает, что вы должны программировать, как это делается в 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-что-то вроде кода за страницей. Включает в себя определенные для страницы классы BO, BLL и DAL и настраивает данные, необходимые для страницы / получает данные формы отправки и т. д

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


  Сведения об ответе

baggs

21:09, 17th August, 2020

AXE-Asp Xtreme Evolution - это MVC фреймворк для ASP classic

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

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


  Сведения об ответе

davran

23:46, 3rd August, 2020

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

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

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

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


  Сведения об ответе

dump

14:11, 14th August, 2020

По номеру 2, я думаю, у вас есть несколько вариантов...

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

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


  Сведения об ответе

crush

21:20, 20th August, 2020

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

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


  Сведения об ответе

appple

23:35, 16th August, 2020

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

@michealpryor все правильно понял


  Сведения об ответе

ASSembler

15:16, 10th August, 2020

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

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

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

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

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


  Сведения об ответе

DAAA

08:41, 8th August, 2020

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться