ايجاد وب سرويس با استفاده از رويههاي ذخيره شده
قابليت جالبي از SQL Server 2005 به بعد به اين محصول اضافه شده است كه امكان ايجاد يك وب سرويس بومي را بر اساس رويههاي ذخيره شده و يا توابع تعريف شده در ديتابيسهاي موجود، فراهم ميسازد. اين قابليت نيازي به IIS يا هر هاست ديگري براي اجرا ندارد و توسط خود اس كيوال سرور راه اندازي و مديريت ميشود.
در اينجا يك مثال عملي از آن را با هم مرور خواهيم كرد:
الف) ايجاد يك جدول آزمايشي به همراه تعدادي ركورد دلخواه در آن
- CREATE TABLE [tblWSTest](
- [id] [int] IDENTITY(1,1) NOT NULL,
- [f1] [nvarchar](50) NULL,
- [f2] [nvarchar](500) NULL,
CONSTRAINT [PK_tblWSTest] PRIMARY KEY CLUSTERED
- (
- [id] ASC
- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
- SET IDENTITY_INSERT [tblWSTest] ON
- INSERT [tblWSTest] ([id], [f1], [f2]) VALUES (1, N'a1', N'a2')
- INSERT [tblWSTest] ([id], [f1], [f2]) VALUES (2, N'b1', N'b2')
- INSERT [tblWSTest] ([id], [f1], [f2]) VALUES (3, N'c1', N'c2')
- INSERT [tblWSTest] ([id], [f1], [f2]) VALUES (4, N'd1', N'd2')
- INSERT [tblWSTest] ([id], [f1], [f2]) VALUES (5, N'e1', N'e2')
- SET IDENTITY_INSERT [dbo].[tblWSTest] OFF
ب) ايجاد يك رويه ذخيره شده در ديتابيس جاري
- CREATE PROCEDURE GetAllData
- AS
- SELECT f1,
- f2
- FROM tblWSTest
ج) ايجاد يك HTTP Endpoint
- CREATE ENDPOINT GetDataService
- STATE = STARTED
- AS HTTP(
- PATH = '/GetData',
- AUTHENTICATION = (INTEGRATED),
- PORTS = (CLEAR),
- CLEAR_PORT = 8080,
- SITE = '*'
- )
- FOR SOAP(
- WEBMETHOD 'GetAllData'
- (NAME = 'testdb2009.dbo.GetAllData'),
- WSDL = DEFAULT,
- DATABASE = 'testdb2009',
- NAMESPACE = DEFAULT
- )
1. توضيحات:
Ports در حالت clear و يا ssl ميتواند باشد. همچنين براي اينكه با IIS موجود بر روي سيستم هم تداخل نكند CLEAR_PORT به 8080 تنظيم شده است. ساير پارامترهاي آن بسيار واضح هستند. براي مثال تعيين ديتابيسي كه اين رويه ذخيره شده در آن قرار دارد و همچنين مسير كامل دسترسي به آن دقيقا مشخص ميگردند.
1. اين وب سرويس هم اكنون آغاز به كار كرده است. براي مشاهده wsdl آن، آدرس زير را در مرورگر وب خود وارد نمائيد (PATH) و CLEAR_PORT معرفي شده در endPoint اينجا بكار ميرود:
2. http://localhost:8080/GetData?wsdl