WebService에서 XPO를 사용하는 방법

8729 단어 webservice
Web Service
글로벌에서.asax의 ApplicationStart 프로그램은 특정한 데이터베이스 연결 공급자를 만들었습니다. (이것은 예를 들어 MS Access 데이터베이스의)
[C# 중]
void Application_Start ( object sender , EventArgs e ) {    Application [ "provider"] = DevExpress . Xpo . XpoDefault . GetConnectionProvider (    DevExpress . Xpo . DB . AccessConnectionProvider . GetConnectionString ( Server . MapPath   ( "App_Data\\ContactManagement.mdb") ) ,   DevExpress . Xpo . DB . AutoCreateOption . SchemaAlreadyExists ) ; }  
 
 
이 MyXpoService 웹 서비스는 AppCode 파일\MyXpoService.cs. It's a WebService descendant.이것은 웹 서비스의 후예다.It must expose four methods: SelectData , ModifyData , UpdateSchema and GetAutoCreateOption .그것은 SelectData, ModifyData, UpdateSchema, GetAutoCreateOption 등 네 가지 방법을 폭로해야 한다.
[C# 중][ WebService ( Namespace = WebServiceAttribute . DefaultNamespace ) ]
[ WebServiceBinding ( ConformsTo = WsiProfiles . BasicProfile1_1 ) ]
public class MyXpoService : System . Web . Services . WebService {
public MyXpoService ( ) { }
[ WebMethod ]
public ModificationResult ModifyData ( params ModificationStatement [ ] dmlStatements ) {
IDataStore provider = ( IDataStore ) Application [ "provider" ] ;
return provider . ModifyData ( dmlStatements ) ;
}
[ WebMethod ]
public SelectedData SelectData ( params SelectStatement [ ] selects ) {
IDataStore provider = ( IDataStore ) Application [ "provider" ] ;
return provider . SelectData ( selects ) ;
}

[ WebMethod ]
public UpdateSchemaResult UpdateSchema ( bool dontCreateIfFirstTableNotExist , params DBTable [ ] tables ) {
// do nothing (do not allow DB schema updates via a public Web service)
return UpdateSchemaResult . SchemaExists ;
}
[ WebMethod ]
public AutoCreateOption GetAutoCreateOption ( ) {
return AutoCreateOption . SchemaAlreadyExists ;
}
}
 
 
보안상의 이유로 UpdateSchema 방법은 어떠한 조작도 하지 않으며 GetAutoCreate Option은 항상 SchemaAlready Exists로 되돌아옵니다.You should create a separate application, which creates and updates your database's schema.데이터베이스 구조를 만들고 업데이트하는 단독 프로그램을 만들어야 합니다.
그 전에 웹 서비스를 발표할 때, 독특한 문자열로 이름공간 파라미터를 바꿔야 합니다.For example:예:
[C#] [ WebService ( Namespace = "http://my-company-site.com/webservices/" ) ]
[ WebServiceBinding ( ConformsTo = WsiProfiles . BasicProfile1_1 ) ]
public class MyXpoService : System . Web . Services . WebService {
public MyXpoService ( ) { }
. . .

 
클라이언트 애플리케이션
MyXpoService를 테스트하는 동안 XPO를 시연하려면 Contact Management를 사용하십시오.ContactManagement를 시작합니다.exe는 명령줄 매개 변수에 지정된 웹 서비스의 URL입니다.
ContactManagement.exe http://localhost:2224/XpoGate/MyXpoService.asmx
웹 서비스를 발표할 때, 웹 서비스의 명칭 공간을 유일한 이름으로 바꾸어야 합니다.만약 네가 이렇게 한다면, 너는 더 이상 XpoDefault를 사용할 수 없을 것이다.GetDataLayer 메서드는 기본 이름 공간이 있는 WebService DataStore 인스턴스를 만듭니다.당신은 WebService DataStore 계급의 속성과 장식 WebService Binding의 후손을 계승해야 합니다.
 
[C# 중]using System . Web . Services ;

[ WebServiceBinding ( Namespace = "http://my-company-site.com/webservices/" ) ]
class MyWebDataStore : DevExpress . Xpo . WebServiceDataStore {
public MyWebDataStore ( string url )
: base ( url , DevExpress . Xpo . DB . AutoCreateOption . SchemaAlreadyExists ) {
}
}
 
 
 
다음은 클라이언트 애플리케이션의 엔트리 포인트 XPO 데이터 계층을 초기화하는 코드입니다.
 
[C# 중]using DevExpress . Xpo ;

[ STAThread ]
static void Main ( ) {
InitDAL ( ) ;
Application . Run ( new Form1 ( ) ) ;
}

private static void InitDAL ( ) {
string serviceUrl = "http://localhost:2224/XpoGate/MyXpoService.asmx" ;
XpoDefault . DataLayer = new SimpleDataLayer ( new MyWebDataStore ( serviceUrl ) ) ;
}
 
 
웹 서비스는 AutoCreateOption을 SchemaAlreadyExists와 같이 만듭니다.Hence, a client of the Web service will not be able to update the database schema.따라서 웹 서비스 클라이언트는 데이터베이스 모델을 업데이트할 수 없습니다.An attempt to call the UpdateSchema method will throw a SchemaCorrectionNeededException .UpdateSchema 메서드를 호출하려면SchemaCorrectionNeededException을 내보냅니다.
웹 서비스를 안전하게 저장하려면 IIS 기능을 사용하십시오.인증된 액세스로 웹 서비스를 엽니다.데이터 암호화를 활성화하려면 SSL(HTTPS) 프로토콜을 사용합니다.이 두 가지 옵션은 가상 폴더의 속성에서 인터넷 정보 서비스 제공 컨트롤러 대화상자를 제공합니다.

좋은 웹페이지 즐겨찾기