Включение бизнес логики в компоненты неотъемлемая часть реальных
приложений для вэб. В ASP.NET бизнес объекты это строительные блоки
для много-звенных Web приложений, такие как с уровнем доступа к данным
или с правилами для приложения. При использовании Com объектов возникало
много проблем во первых их нужно было зарегистрировать(используя
regsvr32), но основная проблема была в том, что приложение однажды
загрузившее его "лочило" компонент и чтобы его удалить или заменить
нужно было останавливать целый вэб сервер. ASP.NET предлагает
следующее решение этой проблемы, размещать объекты в какой-то известной
директории которые затем будут подгружаться во время выполнения. Эта
директория всегда называется /bin, она всегда располагается в к
корневом каталоге для приложения(или в корневом для виртуальной
директории). Преимущество заключается в том, что не нужно регистрировать
компоненты для того, чтобы они стали доступны из ASP.NET - компоненты
будут установлены простым копированием в директорию.
В дополнение в вышесказанному ASP.NET не требует чтобы эти компоненты
лочились на диске во время выполнения. Дело в следующем, ASP.NET
дублирует сборки найденные в /bin и загружает копии вместо настоящих.
Настоящие компоненты могут без проблем заменены даже когда Web server
работает, изменения в /bin автоматически будут замечены во время
выполнения после чего ASP.NET позволяет текущим работающим запросам
закончиться и сразу же все новые входящие запросы к приложению будут
использовать новый или новые компоненты.
Бизнес компоненты это только класс экземпляр которого вы можете
создавать на странице, которая импортирует его.
пример
using System;
using System.Text;
namespace HelloWorld {
public class HelloObj {
private String _name;
public HelloObj() {
_name = null;
}
public String FirstName {
get {
return _name;
}
set {
_name = value;
}
}
public String SayHello() {
StringBuilder sb = new StringBuilder("Hello ");
if (_name != null)
sb.Append(_name);
else
sb.Append("World");
sb.Append("!");
return sb.ToString();
}
}
}
Imports System
Imports System.Text
Namespace HelloWorld
Public Class HelloObj
Private _name As String
Public Sub New
MyBase.New()
_name = Nothing
End Sub
Public Property FirstName As String
Get
Return(_name)
End get
Set
_name = value
End Set
End Property
Public Function SayHello() As String
Dim sb As New StringBuilder("Hello ")
If (_name <> Nothing) Then
sb.Append(_name)
Else
sb.Append("World")
End If
sb.Append("!")
Return(sb.ToString())
End Function
End Class
End Namespace
import System;
import System.Text;
package HelloWorld {
public class HelloObj {
private var _name:String;
public function HelloObj() {
_name = null;
}
public function get FirstName() : String
{
return _name;
}
public function set FirstName(value:String) : void
{
_name = value;
}
public function SayHello() : String {
sb:StringBuilder = new StringBuilder("Hello ");
if (_name != null)
sb.Append(_name);
else
sb.Append("World");
sb.Append("!");
return sb.ToString();
}
}
}
Откомпилируйте файл с этим классом используя csc.exe из командной
строки. используйте /t опцию для того чтобы получить библиотеку.
csc /t:library HelloObj.cs
И скопируйте библиотеку потом в /bin. Теперь этот компонент доступен
из любой страницы, где нужно использовать его
A Simple Managed Component
Заметьте Import директива указывает какой namespace нужно
подключить. Как только namespace включён, класс может быть использован
на странице. Поскольку сборка подгружается ASP.NET во время выполнения,
то нам нужен только импорт namespace, чтобы компонент был доступен.
По умолчанию ASP.NET загружает сборки из /bin каталога когда
приложение стартует. Сборки могут также подгружаться через файл
конфигурации.
Примечание: сборка загруженная из /bin каталога доступна только для
того приложения где она была запущена. Это подразумевает, что приложения
могут использовать разные сборки с одинаковыми именами классов и
namespace без конфликтов. По сути бизнес объекты это локальные сборки |