우리는 우리의 DB에 앉는 고도로 전문화 된 DAL을 가지고 있습니다. 우리의 앱은이 DB에 대해 올바르게 작동하려면이 DAL을 사용해야합니다.WebService 노출을 위해 DAL을 설계하는 방법은 무엇입니까?
생성 된 DAL (일부 사용자 지정 기본 클래스에 위치)에는 다양한 'Rec'클래스 (Table1Rec, Table2Rec)가 있으며 각 테이블은 주어진 테이블의 레코드 구조를 나타냅니다. 여기
는Public Class SomeTableRec
Private mField1 As String
Private mField1isNull As Boolean
Private mField2 As Integer
Private mField2isNull As Boolean
Public Sub New()
mField1isNull = True
mField2isNull = True
End Sub
Public Property Field1() As String
Get
Return mField1
End Get
Set(ByVal value As String)
mField1 = value
mField1isNull = False
End Set
End Property
Public ReadOnly Property Field1isNull() As Boolean
Get
Return mField1isNull
End Get
End Property
Public Property Field2() As Integer
Get
Return mField2
End Get
Set(ByVal value As Integer)
mField2 = value
mField2isNull = False
End Set
End Property
Public ReadOnly Property Field2isNull() As Boolean
Get
Return mField2isNull
End Get
End Property
End Class
각 클래스 ... 따라서 제가
Dim Rec as New Table1Rec
Table1Rec.Field1 = "SomeString"
Table2Rec.Field2 = 500
... 쓸 수있는 각각의 필드에 대한 속성을 가지고 ... 샘플 의사 클래스 어디 필드는 NULL 값을 받아 들일 수 있습니다. 값이 현재 null인지 여부를 나타내는 추가 속성이 있습니다. 따라서
....
Dim Rec as New Table1Rec
Table1Rec.Field1 = "SomeString"
If Table1Rec.Field1Null then
' This clearly is not true
End If
If Table1Rec.Field2Null then
' This will be true
End If
클래스의 생성자가 True로 모든 NULLproperties을 설정하고 FieldProperty의 설정은 해당 NullProperty false로 설정되는 원인이 있기 때문에이 작동합니다.
웹 서비스를 통해 웹을 통해 내 DAL을 노출 할 필요가 있었으며 (물론 나는 보안을 유지하려고합니다) 'Rec'클래스의 구조가 웹에서 손상되지 않은 채로 있음을 발견했습니다. 모든 논리가 손실됩니다 ..
누군가가 이전 코드를 원격으로 실행하면 null을 true로 설정하는 클라이언트 측 코드가 없으므로 어느 조건도 사실이 아님을 알 수 있습니다.
나는이 모든 잘못을 건축 한 느낌이 들지만, 어떻게 개선해야하는지 알 수 없습니다.
올바른 설계 방법은 무엇입니까?