markdown:
Abstract: The rapid urbanization together with rapid urban population growth puts additional pressures on the existing urban infrastructures and urban services causing significant degradation of urban environment. The use of GIS technology can bring tremendous benefits to the urban sector and urban governments in systematically and effectively managing the urban infrastructures. In this paper, the author presents the results of applying GIS in urban infrastructure management, which the GeoViet Consulting had assisted the Ministry of Construction to implement for a number of cities, towns and townlets in the country, as well as proposes the GIS database framework for national management of urban infrastructures.
Keywords: GIS, urban infrastructure, urban management.
Keywords: GIS, urban infrastructure, urban management.
**1. GIỚI THIỆU**
Quá trình đô thị hóa đã và đang diễn ra nhanh chóng tại Việt Nam với tốc độ tăng khoảng 8.9% / năm. Hiện nay, cả nước có 755 đô thị (từ loại V trở lên) và được phân loại dựa vào số dân, hệ thống công trình hạ tầng và một số chỉ số đặc điểm đô thị khác, cũng như tầm quan trọng là trung tâm phát triển vùng trong mạng lưới đô thị của tỉnh và quốc gia (Nghị định 42/2009/NĐ-CP). Phát triển đô thị đạt được nhiều thành quả quan trọng và khu vực đô thị đóng góp khoảng 65-70% tổng GDP của cả nước. Tuy nhiên, cùng với sự tăng nhanh dân số đô thị, quá trình đô thị hóa đang làm tăng thêm sức ép lên hệ thống cơ sở hạ tầng và dịch vụ đô thị và dẫn đến tình trạng môi trường đô thị xuống cấp trầm trọng. Mặt khác, công tác quản lý đô thị hiện nay còn rất nhiều hạn chế và một trong những vấn đề nổi cộm nhất là chưa có được một hệ thống dữ liệu đô thị tổng hợp đầy đủ và cập nhật. Hệ thống thông tin địa lý (GIS) là một công nghệ hữu ích trong quản lý và xử lý tích hợp các dữ liệu đô thị có toạ độ (bản đồ) với các dạng dữ liệu khác để biến chúng thành thông tin hữu ích trợ giúp các chính quyền đô thị trong lựa chọn địa điểm, quản lý cơ sở hạ tầng, cung cấp dịch vụ đô thị một cách hợp lý… Với những ưu điểm nổi trội, công nghệ GIS đang được ứng dụng rộng rãi trên thế giới. Tại Việt Nam, áp dụng công nghệ tin học được chú trọng trong quy hoạch và quản lý đô thị với việc quản lý bản đồ, bản vẽ trên AutoCAD và các mô-đun tính toán độc lập. Gần đây, đã có nhiều nghiên cứu và dự án ứng dụng thí điểm GIS trong ngành quy hoạch xây dựng đô thị, giao thông vận tải, cấp nước, quản lý và cấp phép xây dựng… Tuy nhiên, vẫn chưa thu được nhiều kết quả như mong đợi và hiện nay, ứng dụng GIS trong quản lý đô thị chưa được phát triển đồng bộ, chưa có sự thống nhất và hệ thống. Chính vì vậy, việc tăng cường xây dựng các cơ sở dữ liệu thông tin về đô thị và về quy hoạch trên GIS nhằm thực hiện chỉ thị số 09/2008/CT-TTg ngày 29/2/2008 là một trong những ưu tiên chính của Bộ Xây dựng và các chính quyền đô thị trên cả nước. Trong báo cáo này, tác giả giới thiệu kết quả và kinh nghiệm ứng dụng GIS trong quản lý hạ tầng kỹ thuật đô thị do Công ty Tư vấn GeoViệt hỗ trợ Bộ Xây dựng thực hiện tại 7 thànhphố (Mỹ Tho, Bến Tre, Trà Vinh, Cà Mau, Rạch Giá, Tam Kỳ và Quảng Ngãi) và toàn bộ hệ thống đô thị (TP/TX/TT) của 4 tỉnh mục tiêu (Thái Nguyên, Phú Thọ, Hà Nam và Nghệ An).
**2. QUY ĐỊNH NHÀ NƯỚC VỀ QUẢN LÝ HẠ TẦNG ĐÔ THỊ**
Việc quản lý nhà nước về đô thị cấp quốc gia được giao cho Bộ Xây dựng và Bộ đã phân công quản lý theo từng lĩnh vực như: lĩnh vực phát triển đô thị được giao cho Cục Phát triển đô thị, về hạ tầng kỹ thuật được giao cho Cục Hạ tầng kỹ thuật và về quy hoạch đô thị được giao cho Vụ Kiến trúc Quy hoạch. Vụ Khoa học công nghệ và Môi trường (KHCN&MT) có trách nhiệm quản lý các vấn đề khoa học công nghệ và môi trường đô thị. Tại địa phương, cơ quan quản lý ngành là Sở Xây dựng với sự hợp tác của chính quyền đô thị (ví dụ, Phòng quản lý đô thị của UBND TP/TX) và các doanh nghiệp dịch vụ công liên quan. Thể chế quản lý hạ tầng đô thị đã được xây dựng một cách thống nhất, tuy nhiên với việc phân quyền, phân cấp vẫn còn nhiều thiếu sót cũng như chồng chéo trong phối hợp giữa các cơ quan cùng cấp và giữa các cấp. Đặc biệt trong việc xây dựng, quản lý và chia sẻ phối hợp thông tin dữ liệu đô thị.
Những quy định nhà nước về quản lý hạ tầng đô thị được quy định trong những văn bản quy phạm sau: (1) Luật quy hoạch đô thị (2009); (2) Nghị định 42/2009/NĐ-CP và thông tư 34/2009/TT-BXD; (3) Hệ thống chỉ tiêu và báo cáo ngành Xây dựng, ban hành kèm theo QĐ số 28/2007/QĐ-BXD; (4) Hệ thống chỉ tiêu thống kê quốc gia (NSIS); (5) QCXDVN 01:2008: Quy chuẩn xây dựng Việt nam – Quy hoạch xây dựng; (6) QCVN 07:2010/BXD – Quy chuẩn kỹ thuật quốc gia các công trình hạ tầng kỹ thuật đô thị; và (7) các văn bản quy định cấp Cục, Vụ của Bộ Xây dựng liên quan…
Thiết kế và xây dựng hệ thống GIS hạ tầng đô thị cần được dựa trên quy định và quy trình quản lý hiện hành để có thể hệ thống hóa công tác quản lý hạ tầng kỹ thuật đô thị một cách thống nhất và đồng bộ trên toàn quốc.
**3. QUY TRÌNH ỨNG DỤNG GIS TRONG QUẢN LÝ HẠ TẦNG ĐÔ THỊ**
Mục tiêu dài hạn của hệ thống GIS hạ tầng đô thị là hỗ trợ chính quyền đô thị và các cơ quan liên quan nâng cao hiệu quả trong công tác quản lý và quy hoạch hạ tầng đô thị và các dịch vụ đô thị. Xây dựng CSDL GIS hạ tầng đô thị là bước đầu tiên rất quan trọng để chuẩn bị những nền tảng cho việc thiết lập và vận hành hệ thống GIS đô thị phục vụ yêu cầu quy hoạch và quản lý hạ tầng đô thị một cách bền vững. Nguyên tắc chủ đạo của hệ thống GIS hạ tầng đô thị là phải đáp ứng được tính đồng bộ, đồng thời phải phù hợp với các quy định quản lý ngành cũng như thực tế quản lý đô thị. Dựa trên kinh nghiệm áp dụng thử nghiệm tại một số đô thị, quy trình ứng dụng công nghệ GIS trong quản lý hạ tầng đô thị được Tư vấn GeoViệt xác định bao gồm các bước sau:
1. Nghiên cứu đánh giá hiện trạng dữ liệu và nhu cầu sử dụng GIS trong công tác quản lý hạ tầng đô thị;
2. Thiết kế cấu trúc cơ sở dữ liệu GIS hạ tầng đô thị với các nhóm lớp dữ liệu theo yêu cầu quản lý;
3. Khảo sát thu thập thông tin dữ liệu hạ tầng đô thị làm dữ liệu đầu vào cho CSDL GIS đô thị phục vụ công tác quản lý theo yêu cầu;
4. Tiếp nhận, xử lý biên tập và xây dựng CSDL GIS hạ tầng đô thị theo thiết kế đã được thống nhất;
5. Tích hợp hoàn thiện và xây dựng quy trình lưu trữ quản lý, khai thác CSDL GIS phục vụ quản lý hạ tầng đô thị;
6. Xây dựng sổ tay CSDL và hướng dẫn sử dụng, duy trì CSDL GIS hạ tầng đô thị;
7. Thiết lập hệ thống GIS hạ tầng đô thị bao gồm phần cứng, phần mềm, năng lực cán bộ kỹ thuật quản lý hệ thống GIS, quy trình khai thác và cập nhật dữ liệu thường kỳ cho CSDL GIS hạ tầng đô thị.
Cơ sở để thiết kế cấu trúc tổng thể CSDL GIS hạ tầng đô thị ngoài những quy định quản lý ngành mô tả ở mục trên, thì cần dựa trên các chuẩn dữ liệu không gian địa lý, chuẩn dữ liệu thuộc tính (thuộc chuẩn GIS quốc gia và quốc tế) nhằm đảm bảo hệ thống GIS hạ tầng đô thị có thể tương thích, dùng chung chia sẻ dữ liệu với các hệ CSDL khác. Các chuẩn GIS quốc gia cần được sử dụng trong thiết kế CSDL hạ tầng đô thị gồm:
• Chuẩn thông tin địa lý cơ sở quốc gia do Bộ TN&MT ban hành theo Quyết định số 06/2007/QĐ-BTNMT bao gồm (a) hệ quy chiếu tọa độ VN2000; (b) quy chuẩn mô hình cấu trúc dữ liệu địa lý; (c) Quy chuẩn trình bày dữ liệu địa lý; và các quy chuẩn khác;
• Các quy phạm, quy định kỹ thuật liên quan như qui định kỹ thuật số hoá bản đồ địa hình, qui phạm thành lập bản đồ địa chính…;
• Chuẩn mã tiếng Việt quốc gia do Tổng cục Tiêu chuẩn Đo lường Chất lượng quy định;
• Chuẩn các mã số do Tổng cục Thống kê ban hành;
• Chuẩn chuyên ngành xây dựng (do Bộ Xây dựng quy định) về hồ sơ quy hoạch, bản đồ, bản vẽ thiết kế và các quy chuẩn kỹ thuật quốc gia liên quan…
6. Xây dựng sổ tay CSDL và hướng dẫn sử dụng, duy trì CSDL GIS hạ tầng đô thị;
7. Thiết lập hệ thống GIS hạ tầng đô thị bao gồm phần cứng, phần mềm, năng lực cán bộ kỹ thuật quản lý hệ thống GIS, quy trình khai thác và cập nhật dữ liệu thường kỳ cho CSDL GIS hạ tầng đô thị.
Cơ sở để thiết kế cấu trúc tổng thể CSDL GIS hạ tầng đô thị ngoài những quy định quản lý ngành mô tả ở mục trên, thì cần dựa trên các chuẩn dữ liệu không gian địa lý, chuẩn dữ liệu thuộc tính (thuộc chuẩn GIS quốc gia và quốc tế) nhằm đảm bảo hệ thống GIS hạ tầng đô thị có thể tương thích, dùng chung chia sẻ dữ liệu với các hệ CSDL khác. Các chuẩn GIS quốc gia cần được sử dụng trong thiết kế CSDL hạ tầng đô thị gồm:
• Chuẩn thông tin địa lý cơ sở quốc gia do Bộ TN&MT ban hành theo Quyết định số 06/2007/QĐ-BTNMT bao gồm (a) hệ quy chiếu tọa độ VN2000; (b) quy chuẩn mô hình cấu trúc dữ liệu địa lý; (c) Quy chuẩn trình bày dữ liệu địa lý; và các quy chuẩn khác;
• Các quy phạm, quy định kỹ thuật liên quan như qui định kỹ thuật số hoá bản đồ địa hình, qui phạm thành lập bản đồ địa chính…;
• Chuẩn mã tiếng Việt quốc gia do Tổng cục Tiêu chuẩn Đo lường Chất lượng quy định;
• Chuẩn các mã số do Tổng cục Thống kê ban hành;
• Chuẩn chuyên ngành xây dựng (do Bộ Xây dựng quy định) về hồ sơ quy hoạch, bản đồ, bản vẽ thiết kế và các quy chuẩn kỹ thuật quốc gia liên quan…
Kết quả thiết kế và xây dựng hệ thống GIS hạ tầng đô thị với các nhóm lớp dữ liệu nền và dữ liệu hạ tầng đô thị theo yêu cầu quản lý trong một CSDL GIS tích hợp đối với một số TP/TX được trình bày dưới đây:
**4. HỆ THỐNG GIS HẠ TẦNG ĐÔ THỊ TP PHỦ LÝ**
Bộ CSDL GIS tích hợp cho TP Phủ Lý được xây dựng hoàn thiện và đưa vào vận hành bao gồm 3 nhóm lớp dữ liệu: (1) dữ liệu nền và hành chính đô thị (kèm thông tin chung đô thị); (2) dữ liệu đất đô thị; và (3) dữ liệu hạ tầng đô thị. Dữ liệu bản đồ được thu thập từ các định dạng khác nhau ở tỷ lệ 1:5.000 và 1:10.000 đã được biên tập, chuẩn hóa và chuyển đổi về định dạng ArcGIS (chuẩn ESRI) và hệ tọa độ VN2000 (múi chiếu 3 0 và kinh tuyến trục địa phương), sau đó tích hợp với thông tin thuộc tính để hoàn thiện bộ CSDL GIS hạ tầng đô thị.
Cấu trúc chi tiết của từng lớp dữ liệu nền hoặc hạ tầng đô thị được thiết kế dựa trên cơ sở: (1) quy định quản lý hạ tầng đô thị hiện hành; (2) cấu trúc CSDL chuẩn quốc gia về dữ liệu địa lý không gian, dữ liệu cơ sở hạ tầng, dữ liệu môi trường và kinh tế xã hội; (3) quy trình quy phạm và quy chuẩn kỹ thuật đối với các công trình hạ tầng đô thị; và (4) yêu cầu quản lý phối hợp giữa các ban ngành của TP Phủ Lý. Với cách thiết kế CSDL GIS và thiết kế các lớp dữ liệu không gian và thuộc tính tích hợp gồm các chi tiết về trường thông tin theo các quy trình quy phạm mới nhất của ngành xây dựng sẽ đảm bảo tính phù hợp và khả năng ứng dụng vào thực tế của sản phẩm.
Với thể chế phân cấp quản lý hạ tầng đô thị hiện hành, bộ dữ liệu hạ tầng đô thị TP Phủ Lý được quản lý tổng thể tập trung tại một đầu mối là Phòng quản lý đô thị thuộc UBND TP Phủ Lý. Đơn vị đầu mối quản lý toàn bộ hệ thống, cơ sở dữ liệu dùng chung và xây dựng tiêu chuẩn, quy trình kỹ thuật và quy chế phân cấp cho việc quản lý và chia sẻ các lớp dữ liệu chuyên ngành. Như vậy, dữ liệu sẽ gồm 2 phần: dữ liệu dùng chung (dữ liệu nền – khung tham chiếu không gian thống nhất cho toàn bộ CSDL và các lớp dữ liệu chuyên ngành mang tính tham khảo dùng chung trong cả hệ thống, ví dụ, lớp địa chính, lớp qui hoạch, giao thông…) và dữ liệu chuyên ngành dùng riêng. Các cơ quan chuyên ngành (ví dụ, Công ty cấp nước, Công ty thoát nước, URENCO và các công ty công ích khác tự xây dựng và quản lý các hệ thống GIS chuyên ngành của mình và chịu trách nhiệm cập nhật, chia sẻ các lớp dữ liệu chuyên ngành với đơn vị đầu mối và các cơ quan khác. Hệ thống GIS như vậy sẽ được vận hành trên hệ thống mạng (LAN hoặc WAN) như được trình bày tại Hình 2. Với khả năng phân tích của GIS, dữ liệu hạ tầng đô thị được tổ chức và quản lý trong CSDL GIS có thể được tích hợp theo chiều ngang và theo chiều dọc nhằm kết hợp dữ liệu giữa các ngành các chuyên đề hoặc tổng hợp theo đơn vị hành chính phục vụ công tác vận hành bảo dưỡng, lập và theo dõi thực hiện kế hoạch và quá trình lựa chọn và ra quyết định…
Người dùng có thể tra cứu thông tin, hiển thị và in ấn bản đồ hạ tầng đô thị một cách dễ dàng và thông qua các công cụ xử lý không gian của GIS, các cơ quan quản lý có thể lập báo cáo hiện trạng hạ tầng đô thị (đất đô thị, giao thông, cấp nước, thoát nước, cây xanh…) theo các quy định ngành, đánh giá đất xây dựng và giới thiệu địa điểm, quản lý quy hoạch, quản lý xây dựng và làm cơ sở để điều chỉnh quy hoạch…
**5. MỞ RỘNG QUẢN LÝ HỆ THỐNG HẠ TẦNG ĐÔ THỊ QUỐC GIA**
Với việc công nghệ GIS đã được áp dụng thành công cho quản lý hạ tầng đô thị tại một số đô thị và khung cấu trúc được xây dựng và chuẩn hóa, việc nâng cấp áp dụng công nghệ GIS phục vụ quản lý toàn bộ hệ thống hạ tầng đô thị cấp quốc gia là việc làm cần thiết tiếp theo.
Mục tiêu đặt ra là nhằm hệ thống hóa và tổ chức khối lượng dữ liệu hạ tầng đô thị lớn và đa dạng vào một đầu mối thống nhất và tập trung phục vụ quản lý nhà nước tại Bộ Xây dựng và kết nối chia sẻ với các địa phương. Mô hình và giải pháp quản lý CSDL GIS trên nền Web đã được lựa chọn và xây dựng thành một hệ thống quản lý thông tin trực tuyến cho phép cơ quan đầu mối của Bộ Xây dựng quản lý tổng thể tình hình phát triển hạ tầng đô thị toàn quốc, lập kế hoạch, giám sát, đánh giá các diễn tiến, kết quả đầu tư và báo cáo / chia sẻ kết quả đánh giá các chỉ số hạ tầng đô thị cho các cơ quan liên quan và người dân. Người dùng có thể truy vấn tìm kiếm hoặc tổng hợp thông tin hạ tầng đô thị một cách tương tác dưới dạng biểu bảng, đồ thị và kết quả cũng như xuất báo cáo kết quả theo yêu cầu. Việc theo dõi tình hình phát triển đô thị một cách thường xuyên với tác động đến hệ thống hạ tầng kỹ thuật hiện có và các vấn đề môi trường liên quan sẽ giúp các cơ quan quản lý ngành và địa phương hoạch định chính sách và ra quyết định phù hợp kịp thời. Hiện hệ thống đang được vận hành thử nghiệm tại mạng LAN của Vụ KHCN&MT (Bộ Xây dựng) và dự kiến sẽ được tiếp tục hoàn thiện để đưa vào vận hành trong tương lai.
**6. KẾT LUẬN VÀ LỜI CÁM ƠN**
Công tác quy hoạch và quản lý đô thị đang đứng trước rất nhiều thử thách, đó là tình trạng hạ tầng đô thị không đáp ứng kịp tốc độ phát triển của đô thị, tình trạng ô nhiễm môi trường đô thị tăng nhanh… Để có thể quản lý và quy hoạch đô thị một cách hợp lý và hiệu quả, các thông tin về hiện trạng cơ sở hạ tầng đô thị cũng như các thông tin liên quan như thông tin kinh tế xã hội cần được quản lý để cung cấp một cách kịp thời chính xác.
Kết quả nghiên cứu và áp dụng công nghệ GIS trong quản lý hạ tầng kỹ thuật đô thị trong khuôn khổ Hợp phần SDU (do Đan Mạch tài trợ và Bộ Xây dựng chủ trì thực hiện) đã cho thấy tính ưu việt của công nghệ (và phần mềm GIS) và khả năng thực tế trong hỗ trợ công tác quản lý nhà nước. Đây cũng đã chứng tỏ là một cách tiếp cận có hệ thống khi thiết kế và xây dựng hệ thống GIS đã được dựa trên việc nghiên cứu kỹ càng các quy định pháp lý và thể chế cũng như quy trình quản lý hạ tầng đô thị thực tế tại cấp ngành và địa phương. Với phương pháp luận quản lý hạ tầng đô thị phải lồng ghép nhằm tăng thêm khả năng phối hợp giữa các ban ngành đã được hiện thực hóa trên chuẩn công nghệ GIS sẽ góp phần giải quyết tìm kiếm những giải pháp thích hợp cho những mâu thuẫn về lợi ích và lựa chọn ưu tiên trong phát triển đô thị bền vững… Sản phẩm và quy trình rút ra được từ nghiên cứu này có thể tiếp tục hoàn thiện và áp dụng nhân rộng ra toàn bộ hệ thống đô thị trên toàn quốc. Trong quá trình triển khai áp dụng GIS hạ tầng đô thị trong khuôn khổ Hợp phần SDU với kết quả trình bày trong bài báo này, Công ty Tư vấn GeoViệt đã nhận được nhiều sự hỗ trợ và hợp tác từ nhiều chuyên gia và cơ quan trên địa bàn cả nước. Chúng tôi xin cám ơn sự hỗ trợ tài chính của DANIDA, sự hỗ trợ kỹ thuật và hợp tác của Vụ KHCN&MT, các cơ quan Bộ Xây dựng, Sở Xây dựng, UBND và các Công ty Cấp thoát nước, Công ty Công trình đô thị, Công ty Môi trường đô thị, Ban quản lý khu công nghiệp, Ban quản lý đô thị… của các tỉnh và đô thị tham gia.
Chi tiết về quy trình thiết kế và xây dựng cũng như các hệ CSDL GIS hạ tầng đô thị các TP/TX/TT có thể tham khảo tại Sổ tay sử dụng công nghệ GIS trong quy hoạch và quản lý hạ tầng đô thị tại Việt Nam [3] hoặc liên hệ với Công ty TNHH Tư vấn GeoViệt (Địa chỉ: 6/17, Ngõ 139 Nguyễn Ngọc Vũ – Cầu Giấy, Hà Nội; ĐT/Fax: (04) 6269-8551; Email: geoviet@gmail.com; Web: http://www.geoviet.vn).
Chi tiết về quy trình thiết kế và xây dựng cũng như các hệ CSDL GIS hạ tầng đô thị các TP/TX/TT có thể tham khảo tại Sổ tay sử dụng công nghệ GIS trong quy hoạch và quản lý hạ tầng đô thị tại Việt Nam [3] hoặc liên hệ với Công ty TNHH Tư vấn GeoViệt (Địa chỉ: 6/17, Ngõ 139 Nguyễn Ngọc Vũ – Cầu Giấy, Hà Nội; ĐT/Fax: (04) 6269-8551; Email: geoviet@gmail.com; Web: http://www.geoviet.vn).
**Tài liệu tham khảo**
1. Trần Hùng, 2011. Using GIS for urban infrastructure & environmental management in Mekong-Delta cities (in English). Presented at the Int’l Workshop on “Mekong Delta Coordination and Geo Data Standardization in the Water Sector”, Phu Quoc 28-29 April 2011.
2. Trần Hùng & Phạm Khánh Chi, 2010. GIS-based management of urban tree and green spaces in Vietnam’s cities. Paper for the Int’l Greener Cities Conference, Hanoi 16-17 December 2010.
3. Tư vấn GeoViệt, 2011. Sổ tay sử dụng công nghệ GIS trong quy hoạch và quản lý hạ tầng đô thị tại Việt Nam. Nhà xuất bản Xây dựng, Hà Nội, 2011.
4. Tư vấn GeoViệt, 2011. Điều tra khảo sát, thu thập dữ liệu và xây dựng CSDL GIS trên nền Web phục vụ công tác quản lý HTKT đô thị & KCN cấp quốc gia – Mở rộng áp dụng cho toàn bộ hệ thống đô thị tại 4 tỉnh mục tiêu: Thái Nguyên, Phú Thọ, Hà Nam và Nghệ An. Báo cáo tư vấn cuối kỳ, Hợp phần SDU (Bộ Xây dựng).
5. Tư vấn GeoViệt, 2010. Điều tra khảo sát, thu thập dữ liệu và xây dựng CSDL GIS trên nền Web phục vụ công tác quản lý hạ tầng kỹ thuật môi trường đô thị & khu công nghiệp cấp quốc gia – Áp dụng thí điểm cho 5 đô thị Cà Mau, Rạch Giá, Trà Vinh, Bến Tre và Mỹ Tho. Báo cáo tư vấn cuối kỳ, Hợp phần SDU (Bộ Xây dựng).
2. Trần Hùng & Phạm Khánh Chi, 2010. GIS-based management of urban tree and green spaces in Vietnam’s cities. Paper for the Int’l Greener Cities Conference, Hanoi 16-17 December 2010.
3. Tư vấn GeoViệt, 2011. Sổ tay sử dụng công nghệ GIS trong quy hoạch và quản lý hạ tầng đô thị tại Việt Nam. Nhà xuất bản Xây dựng, Hà Nội, 2011.
4. Tư vấn GeoViệt, 2011. Điều tra khảo sát, thu thập dữ liệu và xây dựng CSDL GIS trên nền Web phục vụ công tác quản lý HTKT đô thị & KCN cấp quốc gia – Mở rộng áp dụng cho toàn bộ hệ thống đô thị tại 4 tỉnh mục tiêu: Thái Nguyên, Phú Thọ, Hà Nam và Nghệ An. Báo cáo tư vấn cuối kỳ, Hợp phần SDU (Bộ Xây dựng).
5. Tư vấn GeoViệt, 2010. Điều tra khảo sát, thu thập dữ liệu và xây dựng CSDL GIS trên nền Web phục vụ công tác quản lý hạ tầng kỹ thuật môi trường đô thị & khu công nghiệp cấp quốc gia – Áp dụng thí điểm cho 5 đô thị Cà Mau, Rạch Giá, Trà Vinh, Bến Tre và Mỹ Tho. Báo cáo tư vấn cuối kỳ, Hợp phần SDU (Bộ Xây dựng).
Download bài viết đầy đủ:
[DOWNLOAD](http://geoviet.vn/21_GIS_HTKTdothi_GeoViet.pdf)
Trần Hùng - Công ty Tư vấn GeoViệt
http://geoviet.vn
http://geoviet.vn

Cache-Control: private, max-age=0

Server: GSE


markdown:
[Home](http://www.ctyvietnam.com/)> [Hồ Chí Minh](http://www.ctyvietnam.com/category/mien-nam/ho-chi-minh), [Việt Nam](http://www.ctyvietnam.com/category/viet-nam)> Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát
## Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát
THINH HUNG PHAT SERVICE TRADING COMPANY LIMITED
Lĩnh vực kinh doanh : Kinh doanh Bán buôn máy móc, thiết bị và phụ tùng máy khác
Địa chỉ : 40/60/12 Nguyễn Khoái, Phường 02, Quận 4, Thành Phố Hồ Chí Minh
Ngày cấp : 04/04/2011
Người đại diện : Nguyễn Thành Công
### Bình luận Nhận Xét về Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát
### Thứ hạng của Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát
#### Nhận xét tổng quan
Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát được xếp hạng
**6599** trên tổng số **147324** Doanh nghiệp tham gia đánh giá trong 3 tháng gần đây.
Công ty này nằm trong 100 nghìn doanh nghiệp được nhiều người tìm kiếm nhất qua mạng internet tại Việt Nam. Có thể nói công ty đã có những bước truyền thông và đẩy mạnh quảng cáo trên mạng internet. Giúp người dùng và khách hàng dễ dàng cập nhật và tìm kiếm thông tin của công ty hơn các đối thủ khác.
### Phân tích khách tìm đến Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát
#### Từ khóa từ công cụ tìm kiếm
Những từ khóa tìm kiếm gửi lưu lượng truy cập vào trang web này?Thông tin Liên hệ Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát Các lĩnh vực kinh doanh của Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát, Tham gia hợp tác cùng Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát Thiết kế website Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát Email Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát. Địa chỉ Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát. Số điện thoại Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát Sơ đồ địa chỉ Công Ty TNHH Thương Mại Dịch Vụ Thịnh Hùng Phát
### 500 doanh nghiệp hàng đầu Việt Nam
### Cty mới cập nhật
-
[TRƯỜNG TRUNG CẤP NGHỀ Hà TĨNH](http://www.ctyvietnam.com/546/truong-trung-cap-nghe-ha-tinh)
-
[CÔNG TY TNHH THƯƠNG MẠI Và DỊCH VỤ KỸ THUẬT SáNG](http://www.ctyvietnam.com/545/cong-ty-tnhh-thuong-mai-va-dich-vu-ky-thuat-sang-tao)
-
[CÔNG TY TNHH THƯƠNG MẠI PHÚC LONG](http://www.ctyvietnam.com/544/cong-ty-tnhh-thuong-mai-phuc-long)
-
[CÔNG TY CP CÔNG NGHỆ IN TRÍ TUỆ](http://www.ctyvietnam.com/543/cong-ty-cp-cong-nghe-in-tri-tue)
-
[CHI NHáNH CÔNG TY CỔ PHẦN CÔNG NGHỆ IN TRÍ TUỆ](http://www.ctyvietnam.com/542/chi-nhanh-cong-ty-co-phan-cong-nghe-in-tri-tue)
-
[CÔNG TY TNHH KÍNH MàU HOàNG GIA](http://www.ctyvietnam.com/541/cong-ty-tnhh-kinh-mau-hoang-gia)
-
[CÔNG TY TNHH PHOTO NĂM DŨNG](http://www.ctyvietnam.com/540/cong-ty-tnhh-photo-nam-dung)
-
[CHI NHáNH CÔNG TY TNHH TƯ VẤN XÂY DỰNG SINO PACIFIC LONG](http://www.ctyvietnam.com/539/chi-nhanh-cong-ty-tnhh-tu-van-xay-dung-sino-pacific-long-an)
-
[Công Ty TNHH Một Thành Viên Caric](http://www.ctyvietnam.com/538/cong-ty-tnhh-mot-thanh-vien-caric)
-
[CÔNG TY CỔ PHẦN TẬP ĐOàN LÊ BÌNH](http://www.ctyvietnam.com/537/cong-ty-co-phan-tap-doan-le-binh)
### Cty mới đánh giá
-
[TRƯỜNG TRUNG CẤP NGHỀ Hà TĨNH](http://www.ctyvietnam.com/546/truong-trung-cap-nghe-ha-tinh)
-
[CÔNG TY TNHH THƯƠNG MẠI Và DỊCH VỤ KỸ THUẬT SáNG](http://www.ctyvietnam.com/545/cong-ty-tnhh-thuong-mai-va-dich-vu-ky-thuat-sang-tao)
-
[CÔNG TY TNHH THƯƠNG MẠI PHÚC LONG](http://www.ctyvietnam.com/544/cong-ty-tnhh-thuong-mai-phuc-long)
-
[CÔNG TY CP CÔNG NGHỆ IN TRÍ TUỆ](http://www.ctyvietnam.com/543/cong-ty-cp-cong-nghe-in-tri-tue)
-
[CHI NHáNH CÔNG TY CỔ PHẦN CÔNG NGHỆ IN TRÍ TUỆ](http://www.ctyvietnam.com/542/chi-nhanh-cong-ty-co-phan-cong-nghe-in-tri-tue)
-
[CÔNG TY TNHH KÍNH MàU HOàNG GIA](http://www.ctyvietnam.com/541/cong-ty-tnhh-kinh-mau-hoang-gia)
-
[CÔNG TY TNHH PHOTO NĂM DŨNG](http://www.ctyvietnam.com/540/cong-ty-tnhh-photo-nam-dung)
-
[CHI NHáNH CÔNG TY TNHH TƯ VẤN XÂY DỰNG SINO PACIFIC LONG](http://www.ctyvietnam.com/539/chi-nhanh-cong-ty-tnhh-tu-van-xay-dung-sino-pacific-long-an)
-
[Công Ty TNHH Một Thành Viên Caric](http://www.ctyvietnam.com/538/cong-ty-tnhh-mot-thanh-vien-caric)
-
[CÔNG TY CỔ PHẦN TẬP ĐOàN LÊ BÌNH](http://www.ctyvietnam.com/537/cong-ty-co-phan-tap-doan-le-binh)
### Tag Cloud
[Bình Dương](http://www.ctyvietnam.com/tuyenviec/binh-duong) [Bảo vệ](http://www.ctyvietnam.com/tuyenviec/bao-ve) [Bắc Ninh](http://www.ctyvietnam.com/tuyenviec/bac-ninh) [Cơ khí-Chế tạo](http://www.ctyvietnam.com/tuyenviec/co-khi-che-tao) [Cấp quản lý điều hành](http://www.ctyvietnam.com/tuyenviec/cap-quan-ly-dieu-hanh) [Du lịch](http://www.ctyvietnam.com/tuyenviec/du-lich) [Dệt may - Da giày](http://www.ctyvietnam.com/tuyenviec/det-may-da-giay) [Dịch vụ](http://www.ctyvietnam.com/tuyenviec/dich-vu) [Giáo dục-Đào tạo](http://www.ctyvietnam.com/tuyenviec/giao-duc-dao-tao) [Hành chánh](http://www.ctyvietnam.com/tuyenviec/hanh-chanh) [Hành chính-Văn phòng](http://www.ctyvietnam.com/tuyenviec/hanh-chinh-van-phong) [Hà Nội](http://www.ctyvietnam.com/tuyenviec/ha-noi) [Hưng Yên](http://www.ctyvietnam.com/tuyenviec/hung-yen) [Hải Dương](http://www.ctyvietnam.com/tuyenviec/hai-duong) [Hải Phòng](http://www.ctyvietnam.com/tuyenviec/hai-phong) [Hồ Chí Minh](http://www.ctyvietnam.com/tuyenviec/ho-chi-minh) [IT-Phần cứng](http://www.ctyvietnam.com/tuyenviec/it-phan-cung) [IT - Phần mềm](http://www.ctyvietnam.com/tuyenviec/it-phan-mem) [Khách sạn-Nhà hàng](http://www.ctyvietnam.com/tuyenviec/khach-san-nha-hang) [Kiến trúc-TK nội thất](http://www.ctyvietnam.com/tuyenviec/kien-truc-tk-noi-that) [Kế toán](http://www.ctyvietnam.com/tuyenviec/ke-toan) [Kỹ thuật](http://www.ctyvietnam.com/tuyenviec/ky-thuat) [Lao động phổ thông](http://www.ctyvietnam.com/tuyenviec/lao-dong-pho-thong) [Làm bán thời gian](http://www.ctyvietnam.com/tuyenviec/lam-ban-thoi-gian) [Marketing](http://www.ctyvietnam.com/tuyenviec/marketing) [Marketing-PR](http://www.ctyvietnam.com/tuyenviec/marketing-pr) [Mạng](http://www.ctyvietnam.com/tuyenviec/mang) [Nhân sự](http://www.ctyvietnam.com/tuyenviec/nhan-su) [Nhân viên kinh doanh](http://www.ctyvietnam.com/tuyenviec/nhan-vien-kinh-doanh) [Quản trị kinh doanh](http://www.ctyvietnam.com/tuyenviec/quan-tri-kinh-doanh) [Sinh viên làm thêm](http://www.ctyvietnam.com/tuyenviec/sinh-vien-lam-them) [Sản Xuất](http://www.ctyvietnam.com/tuyenviec/san-xuat) [Thiết kế-Mỹ thuật](http://www.ctyvietnam.com/tuyenviec/thiet-ke-my-thuat) [Thư ký](http://www.ctyvietnam.com/tuyenviec/thu-ky) [TP. HCM](http://www.ctyvietnam.com/tuyenviec/tp-hcm) [Tài chính](http://www.ctyvietnam.com/tuyenviec/tai-chinh) [Tư vấn](http://www.ctyvietnam.com/tuyenviec/tu-van) [Vận tải - Lái xe](http://www.ctyvietnam.com/tuyenviec/van-tai-lai-xe) [Xuất nhập khẩu](http://www.ctyvietnam.com/tuyenviec/xuat-nhap-khau) [Xây dựng](http://www.ctyvietnam.com/tuyenviec/xay-dung) [Y tế-Dược](http://www.ctyvietnam.com/tuyenviec/y-te-duoc) [Điện-Điện tử](http://www.ctyvietnam.com/tuyenviec/dien-dien-tu) [Đà Nẵng](http://www.ctyvietnam.com/tuyenviec/da-nang) [Đồng Nai](http://www.ctyvietnam.com/tuyenviec/dong-nai) [cong ty sumi ha nam](http://www.ctyvietnam.com/search/cong-ty-sumi-ha-nam), [nop ho so cong ty TNHH URC Quang Ngai](http://www.ctyvietnam.com/search/nop-ho-so-cong-ty-tnhh-urc-quang-ngai), [cong ty tnhh xuat nhap khau thanh chau](http://www.ctyvietnam.com/search/cong-ty-tnhh-xuat-nhap-khau-thanh-chau), [cong ty co phan econ](http://www.ctyvietnam.com/search/cong-ty-co-phan-econ), [cong ty tnhh co khi xuat nhap khau an gia phat](http://www.ctyvietnam.com/search/cong-ty-tnhh-co-khi-xuat-nhap-khau-an-gia-phat), [gia vang mao thiet](http://www.ctyvietnam.com/search/gia-vang-mao-thiet), [thong tin tuyen dung cty TNHH giay dep tan hop](http://www.ctyvietnam.com/search/thong-tin-tuyen-dung-cty-tnhh-giay-dep-tan-hop), [công ty cp tập đoàn phúc sơn](http://www.ctyvietnam.com/search/cong-ty-cp-tap-doan-phuc-son), [keo nguyen dinh](http://www.ctyvietnam.com/search/keo-nguyen-dinh), [tiem vang kim loan tuan](http://www.ctyvietnam.com/search/tiem-vang-kim-loan-tuan)

WARC-Type: response

Content-Type: application/http; msgtype=response

WARC-Truncated: length

Content-Type: text/html; charset=UTF-8

Connection: close

Set-Cookie: __cfduid=d8613167c9ddac58e99bc96a7cdcb32fb1411112883012; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.ctyvietnam.com; HttpOnly

Vary: Accept-Encoding

Server: cloudflare-nginx

Content-Encoding: gzip


markdown:
![](../images/banner.jpg)
[Trang chủ](/)
-
[Kinh Sách](/danh-muc-79.html)
-
[Thần Chú](/danh-muc-116.html)
-
[Pháp Thoại](/danh-muc-104.html)
-
[Buddhism in English & French](/danh-muc-95.html)
-
[Chùa VN](/danh-muc-108.html)
-
[Sinh Hoạt](/danh-muc-145.html)
-
[Liên Hệ](/danh-muc-85.html)
Tổng số người đang online
**32**
+
**32** khách
+
**0** thành viên
Tổng lượt truy cập:
**1128**
Tổng số bài :
**1251**
Tổng số album :
**81**
số người trình bày :
**61**

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=600, private, must-revalidate

Pragma: no-cache

Accept-Ranges: bytes


markdown:
# MILIROSE
*Dạng bào chế:*
Viên nén bao phim màu hồng
*Thành phần:*
Piridoxin hydroclorid ............... 50mg
L-Cystin ................................... 500mg
Tá dược .................................... vđ
*Chỉ định:*
Điều trị hỗ trợ các tình trạng sau:
- Tăng sắc tố trên da như là tàn nhang, nốt ruồi son, cháy nắng.
- Viêm da do dùng thuốc khác.
- Nổi ban trên da, nổi mề đay, eczema, mụn nhọt, mụn trứng cá,
- Các triệu chứng trên da như: gãy móng, tóc, móng dễ gãy chẻ, rụng tóc,…
*Liều lượng và cách dùng:*
Liều dùng thường ngày cho người lớn là 2 – 4 viên/ngày. Có thể dùng liên tục trong 2 – 3 tháng hoặc 10 – 20 ngày/tháng.
*Chống chỉ định:*
Bệnh nhân có rối loạn chức năng thận hoặc hôn mê gan.
*Thận trọng khi dùng:*
- Sử dụng thận trọng ở những bệnh nhân bị cystin niệu.
*Tác dụng không mong muốn: *
- Ở liều thông thường, thuốc được dung nạp tốt. Nhưng đôi khi có thể xảy ra phát ban, nôn mửa, táo bón, tiêu chảy, viêm dạ dày trong quá trình điều trị.
- Thông báo cho thầy thuốc những tác dụng không mong muốn có liên quan đến việc sử dụng thuốc.
*Bảo quản:*
Nơi khô mát, tránh ánh nắng trực tiếp, nhiệt độ dưới 30
oC.
*Thông tin chỉ mang tính tham khảo, nên dùng thuốc theo chỉ định của bác sĩ hoặc tuân theo hướng dẫn của Dược sỹ Đại học, thuốc kháng sinh nên uống đủ liều, tránh vi sinh vật đề kháng thuốc.*
**Tên bạn:** **Ý kiến của bạn:**Chú ý: Không chấp nhận định dạng HTML! **Đánh giá:**Kém Tốt **Nhập mã số xác nhận bên dưới:**

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Set-Cookie: currency=USD; expires=Sun, 19-Oct-2014 07:46:26 GMT; path=/; domain=www.duochoangvu.com

Content-Type: text/html; charset=utf-8


markdown:
Các dịch vụ Web dùng cho các ứng dụng doanh nghiệp phụ thuộc rất nhiều vào việc sử dụng các định nghĩa dịch vụ. Các định nghĩa dịch vụ quy định một hợp đồng cơ bản giữa các nhà cung cấp dịch vụ và bất kỳ người dùng có thể nào, mô tả chi tiết các kiểu chức năng do dịch vụ cung cấp và các thông báo được trao đổi như là một phần của từng chức năng. Các nhà cung cấp dịch vụ và người dùng tự do triển khai thực hiện các thiết bị đầu cuối trao đổi của mình theo bất kỳ cách nào họ muốn, miễn là các thông báo thực tế mà họ gửi đi phù hợp với định nghĩa dịch vụ. Việc sử dụng các định nghĩa dịch vụ đang quy định các trao đổi thông báo XML là những gì đặt ra cho các dịch vụ web ngoài các công nghệ trước đây dùng cho việc lập trình phân tán.
Người ta đã đề xuất nhiều kỹ thuật khác nhau để định nghĩa các dịch vụ web, nhưng cách tiếp cận được sử dụng rộng rãi nhất là WSDL 1.1. WSDL 1.1 có một số nhược điểm, bao gồm một cấu trúc quá phức tạp làm cho nó hơi khó đọc một chút với những người chưa thạo. Nó cũng bị thiếu một định nghĩa chính thức có căn cứ, dẫn đến các thông tin chi tiết "bổ sung" liên tục là đã vá một số lỗ hổng trong tài liệu đặc tả ban đầu. Đáp lại, các chồng các dịch vụ web có xu hướng xử lý các tài liệu WSDL 1.1 càng linh hoạt càng tốt. Tính linh hoạt này có thể luôn làm tăng thêm sự nhầm lẫn trong việc hiểu WSDL 1.1, vì các nhà phát triển có thể thấy một loạt các cấu trúc WSDL không kèm theo hướng dẫn về cách tiếp cận nào là tốt nhất.
Trong bài này, bạn sẽ học cách tìm hiểu các tài liệu WSDL 1.1 và bạn sẽ thấy phần đầu tiên của một mô hình Java để xác minh các tài liệu WSDL và chuyển đổi chúng sang một dạng chuẩn.
## Tìm hiểu về WSDL 1.1
WSDL 1.1, được công bố vào đầu năm 2001, về mặt kỹ thuật đã được thay thế bởi khuyến cáo WSDL 2.0 của W3C được công bố vào năm 2007. WSDL 2.0 cung cấp một cấu trúc sạch hơn WSDL 1.1 và linh hoạt hơn. Nhưng WSDL 2.0 có một vấn đề con gà và quả trứng — WSDL 2.0 không được sử dụng rộng rãi vì nó không được hỗ trợ rộng rãi và vì nó không được sử dụng rộng rãi nên để hỗ trợ nó có một chút áp lực lên những người triển khai thực hiện các chồng các dịch vụ web. WSDL 1.1, mặc dù không hoàn thiện, nhưng cũng đủ tốt cho hầu hết các mục đích.
Đặc tả WSDL 1.1 đã không chính xác về có bao nhiêu tính năng đã được sử dụng. Vì trọng tâm của WSDL là làm việc với các định nghĩa dịch vụ SOAP, nó cũng có hỗ trợ cho một số tính năng SOAP (chẳng hạn như mã hóa rpc) mà sau đó người ta đã thấy là có thể gây rắc rối. Tổ chức về Tính tương thích các Dịch vụ Web (WS-I - Web Services Interoperability Organization) đã giải quyết những vấn đề này trong Lược đồ cơ bản (BP - Basic Profile), trong đó xác định các cách thực hành tốt nhất cho các dịch vụ web khi sử dụng SOAP và WSDL. BP 1.0 đã được phê duyệt vào năm 2004 và được cập nhật là BP 1.1 vào năm 2006. Trong bài này, tôi sẽ trình bày WSDL 1.1 dựa trên các hướng dẫn WS-I BP, bỏ qua các tính năng thực sự bị phản đối như mã hóa rpc cho SOAP.
Các định
nghĩa lược đồ XML được cho là để định nghĩa cấu trúc của các tài liệu XML. WSDL 1.1
gồm có một mô tả lược đồ theo đặc tả ban đầu, nhưng lược đồ đó không phù hợp với các
mô tả văn bản theo một số khía cạnh. Điều này đã được sửa chữa trong một phiên bản
sửa đổi lược đồ sau đó một chút, nhưng tài liệu WSDL 1.1 đã không được cập nhật để
phản ánh sự thay đổi này. Sau đó, nhóm WS-I BP đã quyết định thực hiện các thay đổi
nhiều hơn với lược đồ WSDL, vì vậy nhóm đó đã tạo ra những gì có vẻ là phiên bản các
cách thực hành tốt nhất của lược đồ khó xử này. Các tài liệu được viết cho một phiên
bản lược đồ nói chung không tương thích với các phiên bản khác (mặc dù sử dụng cùng
một vùng tên), nhưng may mắn thay, về cơ bản, hầu hết các công cụ các dịch vụ web bỏ
qua lược đồ và chấp nhận bất cứ điều gì trông hợp lý. (Xem
[Tài
nguyên](#resources) để biết các liên kết đến nhiều lược đồ của WSDL).
Ngay cả phiên bản WS-I BP của lược đồ WSDL 1.1 không giúp gì nhiều trong việc đảm bảo rằng các tài liệu WSDL 1.1 tuân theo đặc tả này. Lược đồ không phản ánh tất cả các ràng buộc trong WS-I BP, đặc biệt là đối với thứ tự của các thành phần. Ngoài điều này, XML Schema (Lược đồ XML) không có khả năng xử lý nhiều kiểu ràng buộc đã nói rõ trên các tài liệu (ví dụ như các thuộc tính thay thế hoặc các phần tử mở rộng cần thiết từ các lược đồ riêng). Vì vậy, việc kiểm tra xem một tài liệu WSDL 1.1 có tuân theo đặc tả WSDL 1.1 (như được WS-I BP sửa đổi) không liên quan đến nhiều hơn chỉ là bật xác nhận hợp lệ lược đồ XML. Tôi sẽ quay lại chủ đề này sau trong bài này. Trước tiên, tôi sẽ xem xét cấu trúc của các mô tả dịch vụ WSDL 1.1.
### Các thành phần của mô tả
Các tài liệu WSDL
1.1 sử dụng một phần tử gốc cố định, có tên phù hợp là
<wsdl:definitions>. Trong phần tử gốc này, một phần tử con "thụ
động" (chỉ cần tham khảo các tài liệu WSDL 1.1 riêng) và năm phần tử con "chủ động"
(những phần tử này thực sự đóng góp vào mô tả dịch vụ) được định nghĩa trong vùng
tên WSDL 1.1:
<wsdl:import>tham khảo một tài liệu WSDL 1.1 riêng, với các mô tả được kết hợp vào trong tài liệu này.
<wsdl:types>định nghĩa các kiểu hoặc các phần tử XML được sử dụng cho các trao đổi thông báo.
<wsdl:message>định nghĩa một thông báo thực tế, về các kiểu hoặc các phần tử XML.
<wsdl:portType>định nghĩa một thiết lập các hoạt động trừu tượng được một dịch vụ thực hiện.
<wsdl:binding>định nghĩa việc thực hiện thực tế của một phần tử
<wsdl:portType>, sử dụng các giao thức và các định dạng đặc biệt.
<wsdl:service>định nghĩa một dịch vụ là tất cả, thường gồm có một hoặc nhiều phần tử
<wsdl:port>với thông tin truy cập cho các phần tử
<wsdl:binding>.
Ngoài ra có một phần tử
<wsdl:document> có thể
được sử dụng cho các mục đích thông tin, như là phần tử con đầu tiên của
<wsdl:definitions> và cũng như là phần tử con đầu
tiên của bất kỳ các phần tử ở trên.
Một mô tả dịch vụ đầy đủ thường cần ít nhất một trong mỗi phần tử này ngoại trừ phần tử
<wsdl:import>, nhưng chúng không cần tất cả có mặt
trong cùng một tài liệu. Bạn có thể sử dụng phần tử
<wsdl:import> để lắp ráp một mô tả WSDL đầy đủ từ nhiều tài liệu,
cho bạn sự linh hoạt để phân chia các mô tả cho phù hợp với tổ chức của bạn. Ví dụ,
ba phần tử mô tả đầu tiên (
<wsdl:types>,
<wsdl:message> và
<wsdl:portType>) cùng nhau cung cấp một mô tả giao diện dịch vụ
đầy đủ (có lẽ do một nhóm kiến trúc sư định nghĩa), do đó, để giữ chúng tách rời
khỏi các phần tử
<wsdl:binding> và
<wsdl:service> theo hướng thực hiện có thể là hợp lý.
Tất cả các chồng các dịch vụ web chính hỗ trợ chia tách các mô tả thành nhiều tài
liệu WSDL.
Liệt kê 1 và
[Liệt kê 2](#listing2) cho thấy một mẫu của một
mô tả dịch vụ WSDL được chia tách thành hai tài liệu WSDL, với các thành phần mô
tả-giao diện trong một tệp BookServerInterface.wsdl và các thành phần thực hiện
trong tệp BookServerImpl.wsdl. Liệt kê 1 hiển thị tệp BookServerInterface.wsdl:
##### Liệt kê 1. Tệp BookServerInterface.wsdl
<wsdl:definitions ... xmlns:tns="http://sosnoski.com/ws/library/BookServerInterface" targetNamespace="http://sosnoski.com/ws/library/BookServerInterface"> <wsdl:document>Book service interface definition.</wsdl:document> <wsdl:types> <xs:schema ... targetNamespace="http://sosnoski.com/ws/library/BookServerInterface"> <xs:import namespace="http://sosnoski.com/ws/library/types" schemaLocation="book-types.xsd"/> ... </xs:schema> </wsdl:types> <wsdl:message name="getBookMessage"> <wsdl:part name="part" element="tns:getBook"/> </wsdl:message> <wsdl:message name="getBookResponseMessage"> <wsdl:part name="part" element="tns:getBookResponse"/> </wsdl:message> ... <wsdl:message name="addBookMessage"> <wsdl:part name="part" element="tns:addBook"/> </wsdl:message> <wsdl:message name="addBookResponseMessage"> <wsdl:part name="part" element="tns:addBookResponse"/> </wsdl:message> <wsdl:message name="addDuplicateFault"> <wsdl:part name="fault" element="tns:addDuplicate"/> </wsdl:message> <wsdl:portType name="BookServerPortType"> <wsdl:documentation> Book service implementation. This creates an initial library of books when the class is loaded, then supports method calls to access the library information (including adding new books). </wsdl:documentation> <wsdl:operation name="getBook"> <wsdl:documentation> Get the book with a particular ISBN. </wsdl:documentation> <wsdl:input message="tns:getBookMessage"/> <wsdl:output message="tns:getBookResponseMessage"/> </wsdl:operation> ... <wsdl:operation name="addBook"> <wsdl:documentation>Add a new book.</wsdl:documentation> <wsdl:input message="tns:addBookMessage"/> <wsdl:output message="tns:addBookResponseMessage"/> <wsdl:fault message="tns:addDuplicateFault" name="addDuplicateFault"/> </wsdl:operation> </wsdl:portType> </wsdl:definitions>
Liệt
kê 2 hiển thị tệp BookServerImpl.wsdl. Phần tử
<wsdl:import> gần phần đầu của nó nhập khẩu mô tả giao diện từ tệp
BookServerInterface.wsdl.
##### Liệt kê 2. Tệp BookServerImpl.wsdl
<wsdl:definitions ... xmlns:ins="http://sosnoski.com/ws/library/BookServerInterface" xmlns:tns="http://sosnoski.com/ws/library/BookServer" targetNamespace="http://sosnoski.com/ws/library/BookServer"> <wsdl:document> Definition of actual book service implementation. </wsdl:document>
<wsdl:import namespace="http://sosnoski.com/ws/library/BookServerInterface" location="BookServerInterface.wsdl"/><wsdl:binding name="BookServerBinding" type="ins:BookServerPortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="getBook"> <soap:operation soapAction="urn:getBook"/> <wsdl:input> <soap:body/> </wsdl:input> <wsdl:output> <soap:body/> </wsdl:output> </wsdl:operation> ... <wsdl:operation name="addBook"> <soap:operation soapAction="urn:addBook"/> <wsdl:input> <soap:body/> </wsdl:input> <wsdl:output> <soap:body/> </wsdl:output> <wsdl:fault name="addDuplicateFault"> <soap:fault name="addDuplicateFault"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="BookServer"> <wsdl:port name="BookServerPort" binding="tns:BookServerBinding"> <soap:address location="http://localhost:8080/cxf/BookServer"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
Bên
cạnh các định nghĩa phần tử (và thuộc tính) trong vùng tên WSDL 1.1, WSDL 1.1 cũng
định nghĩa các phần tử mở rộng. Các phần tử mở rộng được dự định cắm vào các vị trí
đặc biệt trong các mô tả dịch vụ WSDL 1.1 để cung cấp thông tin bổ sung cần thiết
cho một kiểu dịch vụ cụ thể. Chỉ những phần tử mở rộng của WSDL 1.1 vẫn đang được sử
dụng rộng rãi là những phần tử dùng cho các liên kết của SOAP 1.1 (đã thấy trong
[Liệt kê 2](#listing2), trong các phần tử
<wsdl:binding> và
<wsdl:service>), đã được định nghĩa bởi đặc tả WSDL 1.1 ban đầu và
dùng cho các liên kết của SOAP 1.2, được định nghĩa bởi một đặc tả riêng vào năm
2006.
### Các chi tiết thành phần
Phần tử
<wsdl:types> gói tất cả các định nghĩa XML được sử dụng
cho các thông báo, dưới dạng của một hoặc nhiều phần tử
<xs:schema>. (WSDL cho phép các lựa chọn thay thế với XML Schema
dùng cho các định nghĩa này, nhưng hầu hết các chồng chỉ hỗ trợ XML Schema). Các
phần tử
<xs:schema> có thể sử dụng
<xs:import> và/hoặc
<xs:include> để kết hợp các lược đồ khác bên ngoài vào WSDL, nếu
muốn (cũng như để tham khảo các lược đồ riêng được chứa trong cùng một WSDL).
Vì một phần tử
<wsdl:types> đơn lẻ có
thể chứa bất kỳ số lượng các định nghĩa lược đồ nào, nên không bao giờ có lý do để
sử dụng nhiều hơn một phần tử
<wsdl:types> trong
một tài liệu WSDL. Trong
[Liệt kê 1](#listing1), phần tử
<wsdl:types> là ở gần đầu của tệp
BookServerInterface.wsdl.
Khác với
<wsdl:import> và
<wsdl:types>, tất cả các thành phần mức cao nhất khác của một tài
liệu WSDL được đặt tên từng cái một bằng cách sử dụng một thuộc tính
name cần thiết. Nếu bạn sử dụng một thuộc tính
targetNamespace trên phần tử gốc tài liệu
<wsdl:definitions> mà bạn thường nên làm, như là một
cách thực hành tốt nhất, các tên cho các thành phần này được định nghĩa trong vùng
tên đích đó. Điều này có nghĩa là khi bạn định nghĩa tên này, bạn chỉ đưa ra một
phần tên đơn giản hoặc "cục bộ", nhưng các tài liệu tham khảo đến thành phần đó phải
nói rõ tên với một tiền tố vùng tên hoặc vùng tên mặc định. Hình 1 cho thấy các liên
kết quan trọng nhất giữa các thành phần WSDL, với các đường liền mô tả các tài liệu
tham khảo tên được nói rõ và các đường chấm chấm mô tả các tên được dùng để định
dạng mà không đủ điều kiện vùng tên:
##### Hình 1. Các liên kết giữa các thành phần WSDL
![ Các liên kết giữa các thành phần WSDL](wsdl-links.gif)
Các thông báo, do các phần tử
<wsdl:message> mô tả,
ở tâm điểm của các mô tả dịch vụ WSDL. Các phần tử
<wsdl:message> là các mô tả của dữ liệu XML được trao đổi giữa một
khách hàng và một nhà cung cấp dịch vụ. Mỗi phần tử
<wsdl:message> không chứa hoặc có chứa nhiều (thường là một) phần
tử con
<wsdl:part>. Mỗi phần tử
part yêu cầu thuộc tính
name riêng của mình
(duy nhất trong
<wsdl:message>) và hoặc một thuộc
tính
element hoặc một thuộc tính
type tham khảo định nghĩa lược đồ của dữ liệu XML. Một số phần tử
<wsdl:message> được hiển thị trong
[Liệt kê 1](#listing1), theo sau phần tử
<wsdl:types> trong tệp BookServerInterface.wsdl.
Các phần tử
<wsdl:portType> định nghĩa giao diện trừu tượng
cho một dịch vụ, về các thông báo được gửi đến và đi khỏi dịch vụ đó. Các phần tử
<wsdl:portType> có chứa bất kỳ số lượng các
phần tử con
<wsdl:operation> nào. Mỗi phần tử con
<wsdl:operation> cần thuộc tính
name riêng của mình (theo yêu cầu của WS-I BP là duy nhất
trong
<wsdl:portType>) và chứa một hoặc nhiều phần
tử con hơn để mô tả các thông báo được sử dụng bởi hoạt động (operation). Các phần
tử con thường có ba loại, mô tả các kiểu sử dụng khác nhau:
<wsdl:input>: Dữ liệu được gửi từ khách hàng đến nhà cung cấp dịch vụ làm đầu vào cho hoạt động đó.
<wsdl:output>: Dữ liệu được nhà cung cấp dịch vụ trả về cho khách hàng làm kết quả của hoạt động đó.
<wsdl:fault>: Dữ liệu được nhà cung cấp dịch vụ trả về cho khách hàng khi có lỗi trong lúc xử lý.
WSDL 1.1 định nghĩa một số mẫu các tương tác giữa khách hàng và nhà cung cấp
dịch vụ, được mô tả theo các thứ tự khác nhau của các phần tử con
<wsdl:input> và
<wsdl:output>, nhưng không phải tất cả các mẫu được định nghĩa đủ
rõ để được triển khai thực hiện. WS-I BP hạn chế các mẫu còn đúng hai mẫu: các hoạt
động hỏi-trả lời, với một phần tử con
<wsdl:input>
tiếp theo là một phần tử con
<wsdl:output> và các
hoạt động một chiều, với một phần tử con
<wsdl:input> duy nhất. Trong trường hợp về các hoạt động hỏi-trả
lời (kiểu phổ biến nhất, hơn hẳn), có thể tiếp sau các phần tử
<wsdl:input> và
<wsdl:output> là
bất kỳ số lượng các phần tử
<wsdl:fault>
nào.
Mỗi phần tử
<wsdl:input>,
<wsdl:output> hay
<wsdl:fault> tham khảo một mô tả thông báo thông qua các thuộc
tính
message cần thiết. Tài liệu tham khảo này đã rõ-vùng
tên, do đó, nó thường cần có một tiền tố. Bạn có thể xem các ví dụ về điều này trong
[Liệt kê 1](#listing1), ví dụ với phần tử
<wsdl:input message="tns:getBookMessage"/> được sử dụng trong mô
tả hoạt động
getBook. (Tiền tố
tns được định nghĩa trên phần tử gốc
<wsdl:definitions> với URI vùng tên giống như các thuộc tính
targetNamespace).
Bạn có thể nghĩ về các phần tử
<wsdl:portType> như là sự tương đương logic của
một giao diện Java trong hầu hết các chi tiết, với các phần tử
<wsdl:operation> tương đương với các phương thức, các phần tử
<wsdl:input> là các tham số phương thức, các
phần tử
<wsdl:output> là phương thức trả về và các
phần tử
<wsdl:fault> là các trường hợp ngoại lệ
được kiểm tra. Việc tạo mã Java từ WSDL sử dụng các sự tương ứng này, giống như khi
sử dụng hầu hết các công cụ tạo WSDL từ mã Java hiện có.
Các phần tử
<wsdl:binding> mô tả một cá
thể của giao diện trừu tượng được định nghĩa bởi một phần tử
<wsdl:portType>, đã thấy trong
[Liệt kê 2](#listing2) ở
phần đầu của tệp BookServerImpl.wsdl. Thuộc tính
type
cung cấp tên rõ của kiểu cổng (portType) do phần tử liên kết (binding) triển khai
thực hiện.
Các phần tử con của
<wsdl:binding>
cung cấp các chi tiết về cách triển khai thực hiện kiểu cổng (portType). Các phần tử
con của vùng tên WSDL tương ứng với các phần tử con của
<wsdl:portType> và phải sử dụng các giá trị
name như nhau —
* không phải* các tài liệu tham khảo đã rõ-vùng tên, cũng như với tài liệu
tham khảo
<wsdl:portType>.
[Hình1](#fig1) cho thấy kết nối này ở mức
<wsdl:operation> theo các đường chấm chấm. Kết nối tương tự theo
tên áp dụng cho các phần tử con
<wsdl:input>/
<wsdl:output>/
<wsdl:fault> của các phần tử
<wsdl:operation>. Mặc cho việc sử dụng lại các tên phần tử giống
nhau này, nội dung của các phần tử này rất khác nhau khi chúng là phần tử con của
một phần tử
<wsdl:binding> chứ không phải của một
phần tử
<wsdl:portType>.
Phần tử
<wsdl:binding> là nơi các phần mở rộng được WSDL định
nghĩa, bắt đầu hoạt động. Phần tử con
<soap:binding> được sử dụng trong khi định nghĩa một dịch vụ SOAP
(kiểu dịch vụ duy nhất được WS-I BP cho phép, mặc dù WSDL 1.1 cũng cho phép các liên
kết HTTP). Phần tử
<soap:binding> này sử dụng thuộc
tính
transport cần thiết để định nghĩa kiểu vận chuyển
được liên kết đó sử dụng. (HTTP, như được hiển thị bằng giá trị
http://schemas.xmlsoap.org/soap/http trong
[Liệt kê
2](#listing2), là sự lựa chọn duy nhất được WS-I BP cho phép). Thuộc tính tùy chọn
style cho phép bạn chọn giữa các kiểu dáng rpc và tài liệu
để mô tả dữ liệu XML (với mặc định phổ biến nhất là
document tương ứng với các thông báo khi sử dụng các định nghĩa lược đồ
phần tử, chứ không phải là các định nghĩa kiểu).
Bên trong mỗi phần tử con
<wsdl:operation> của phần tử
<wsdl:binding>, có thể sử dụng một phần tử
<soap:operation> để chỉ rõ một giá trị
SOAPAction để nhận biết các yêu cầu đang gọi hoạt động đó
(và ngoài ra có thể ghi đè lên sự lựa chọn kiểu dáng rpc hay tài liệu do phần tử
<soap:binding> xác định, mặc dù WS-I BP cấm
cách sử dụng này). Mỗi phần tử con
<wsdl:input>/
<wsdl:output>/
<wsdl:fault> có chứa phần tử mở rộng khác, mà trong
trường hợp của
[Liệt kê 2](#listing2) phần tử mở rộng đó luôn là
<soap:body> (cho biết rằng dữ liệu thông báo được gửi
trong phần thân thông báo SOAP — cũng có thể gửi dữ liệu và thậm chí cả các
lỗi trong các phần tiêu đề của SOAP, mặc dù tôi coi việc này là một cách thực hành
xấu) với một
<wsdl:input> hoặc
<wsdl:output> hoặc
<soap:fault>
tương đương được sử dụng với một
<wsdl:fault>.
Thành phần cuối cùng của một mô tả dịch vụ WSDL là
phần tử
<wsdl:service>, có chứa một nhóm các phần
tử
<wsdl:port>. Mỗi phần tử
<wsdl:port> kết hợp một địa chỉ truy cập với một phần tử
<wsdl:binding>. Địa chỉ truy cập này do phần tử mở
rộng
<soap:address> lồng nhau cung cấp.
## Làm việc với WSDL
Với tất cả các biến thể của các lược đồ và các quy tắc dùng cho các tài liệu WSDL 1.1, không có gì đáng ngạc nhiên là nhiều tài liệu không phù hợp với dạng mẫu các cách thực hành tốt nhất do WS-I BP định nghĩa. Sự hỗ trợ bởi tất cả các chồng các dịch vụ web cho nhiều biến thể từ dạng mẫu các cách thực hành tốt nhất đã giúp duy trì việc sử dụng các cấu trúc đã lỗi thời hoặc không đúng, dẫn đến sự lây lan của các cách thực hành xấu trên toàn ngành công nghiệp phần mềm. Và chắc chắn tôi không được miễn dịch khỏi sự lây lan này — trong khi xem xét các tài liệu WSDL mà tôi đã cung cấp cho mã mẫu trong loạt bài này, tôi đã ngạc nhiên khi thấy rằng điều đó không hoàn toàn chính xác.
Vì vậy, khi tôi bắt đầu viết bài này, tôi đã nghĩ rằng sẽ là tốt để đưa vào một công cụ mà mọi người có thể sử dụng để xác minh các tài liệu WSDL dựa vào các quy tắc các cách thực hành tốt nhất. Nó có vẻ là một bước nhỏ từ đó đến việc chuyển đổi các tài liệu WSDL thành dạng mẫu các cách thực hành tốt nhất, miễn là WSDL ban đầu hoàn toàn không có lỗi. Hóa ra đây là công việc vượt xa hơn tôi đã dự kiến ban đầu và các chi tiết đầy đủ của mô hình đó sẽ được phát triển trong hai bài tiếp theo của loạt bài này.
Nhiều mô
hình khác nhau đã được xây dựng để làm việc với các tài liệu WSDL trong ngôn ngữ
Java, bao gồm Web Services Description Language for Java Toolkit (WSDL4J - Ngôn ngữ
Mô tả các Dịch vụ Web cho bộ công cụ Java) được sử dụng rộng rãi, là công cụ tham
khảo JSR 110 (xem
[Tài nguyên](#resources)). Không một mô hình nào trong
số các mô hình đó thực sự có vẻ phù hợp với điều tôi muốn thực hiện, vì hai mục tiêu
đầu tiên là, đọc các tài liệu WSDL theo bất kỳ dạng mẫu hợp lý nửa vời nào và báo
cáo cả các lỗi lẫn các biến thể của các cách thực hành tốt nhất và thứ hai là, viết
các tài liệu WSDL không có lỗi được định dạng lại thành dạng mẫu các cách thực hành
tốt nhất. Ví dụ, WSDL4J sẽ không duy trì thứ tự của các phần tử từ đầu vào để tôi có
thể báo cáo các vấn đề sắp xếp thứ tự và hơn nữa không xử lý các định nghĩa lược đồ
vì thế không thể sử dụng chúng trực tiếp để kiểm tra các tài liệu tham khảo từ các
phần tử
<wsdl:part>. Vì vậy, tôi có thể lựa chọn
giữa thiết lập các mục tiêu của mình thực tế hơn hoặc viết mô hình riêng của mình.
Dĩ nhiên là tôi chọn viết mô hình riêng của mình.
### Mô hình WSDL
Trước đây, tôi đã triển khai thực hiện một mô hình WSDL một phần để sử dụng với liên kết dữ liệu
JiBX, như là một phần của dự án JiBX/WS. Mô hình đó được thiết kế chỉ cho đầu ra và
nó liên quan đến một số lượng tương đối nhỏ các lớp, mà trong một số trường hợp các
lớp đó kết hợp dữ liệu từ các phần tử lồng nhau của cấu trúc XML của WSDL (phần tử
<wsdl:message> được kết hợp với một phần tử con
<wsdl:part> riêng lẻ, các phần tử con
<wsdl:input>,
<wsdl:output> và
<wsdl:fault>
trong một phần tử
<wsdl:binding> được kết hợp với
một phần tử
<soap:body> hoặc phần tử
<soap:fault> và v.v..) Cấu trúc lớp rút gọn này đã
giúp dễ dàng xây dựng các tập con của các tài liệu WSDL do cấu trúc này hỗ trợ,
nhưng khi tôi bắt đầu xem xét một công cụ xác minh và cấu trúc lại dựa vào mô hình
đó, tôi đã nhận ra rằng việc hỗ trợ đầu vào của WSDL có cấu trúc kém thường đòi hỏi
một mô hình gần giống hơn với mô tả XML.
Việc tạo mã từ lược đồ WS-I BP cho WSDL 1.1 đã là một tùy chọn khác. Khi xem xét điều đó, tôi đã nhận ra rằng đúng là việc sử dụng các lớp được tạo ra trực tiếp sẽ là một mớ hỗn độn, vì lược đồ gồm có cả các kiểu dự phòng cũng như một số cấu trúc phức tạp được sử dụng để mô tả các mẫu trao đổi-thông báo khác nhau (một số mẫu trong đó sau này đã bị tài liệu nguyên bản WS-I BP cấm sử dụng).
Vì vậy, tôi đã chấm dứt ngay việc xây dựng các lớp bằng thủ công, mặc dù kết quả cuối cùng đã gần giống như thể tôi đã bắt đầu với mã được tạo ra từ lược đồ và chỉ cần lược bớt phần trùng lặp và phức tạp không cần thiết. Liên kết dữ liệu JiBX hỗ trợ nhiều liên kết tới các lớp giống nhau, vì vậy tôi đã có thể thiết lập liên kết đầu vào để xử lý toàn bộ các tùy chọn do bất kỳ phiên bản nào của WSDL 1.1 cho phép trong khi chỉ cấu hình liên kết đầu ra để chỉ xuất ra WSDL theo một dạng mẫu các cách thực hành tốt nhất.
Liệt kê 3 cho thấy một phần của
lớp
Definitions, tương ứng với phần tử gốc
<wsdl:definitions>:
##### Liệt kê 3. Lớp
Definitions (một phần)
public class Definitions extends ElementBase { /** Enumeration of child elements, in expected order. */ static enum AddState { invalid, imports, types, message, portType, binding, service }; /** List of allowed attribute names. */ public static final StringArray s_allowedAttributes = new StringArray(new String[] { "name", "targetNamespace" }); /** Validation context in use. */ private ValidationContext<ElementBase,Definitions> m_validationContext; /** Current state (used for checking order in which child elements are added). */ private AddState m_state; /** Name for this definitions. */ private String m_name; /** Target namespace for WSDL. */ private String m_targetNamespace; /** List of all import child elements. */ private List<Import> m_imports = new ArrayList<Import>(); /** List of all types child elements. */ private List<Types> m_types = new ArrayList<Types>(); /** List of all message child elements. */ private List<Message> m_messages = new ArrayList<Message>(); /** List of all portType child elements. */ private List<PortType> m_portTypes = new ArrayList<PortType>(); /** List of all binding child elements. */ private List<Binding> m_bindings = new ArrayList<Binding>(); /** List of all services child elements. */ private List<Service> m_services = new ArrayList<Service>(); /** Map from qualified name to message in this definition. */ private Map<QName,Message> m_nameMessageMap = new HashMap<QName,Message>(); /** Map from qualified name to port type in this definition. */ private Map<QName,PortType> m_namePortTypeMap = new HashMap<QName,PortType>(); /** Map from qualified name to message in this definition. */ private Map<QName,Binding> m_nameBindingMap = new HashMap<QName,Binding>(); /** Map from qualified name to service in this definition. */ private Map<QName,Service> m_nameServiceMap = new HashMap<QName,Service>(); ... /** * Check state transitions between different types of child elements. * If the elements are not in the expected order, * this flags the first out-of-order element for reporting. * @param state new add state * @param comp element component */ private void checkAdd(AddState state, ElementBase comp) { if (m_state != state) { if (m_state == null || (m_state != AddState.invalid && state.ordinal() > m_state.ordinal())) { // advanced on to another type of child element m_state = state; } else if (state.ordinal() < m_state.ordinal()) { // report child element out of order m_validationContext.addWarning ("Child element of wsdl:definitions out of order", comp); m_state = AddState.invalid; } } } ... /** * Add an unmarshalled wsdl:message child element. This also indexes the message by * name for validation access. * * @param child */ public void addMessage(Message child) { checkAdd(AddState.message, child); m_messages.add(child); addName(child.getName(), child, m_nameMessageMap); } ...
Tổ
chức dữ liệu phần tử-con trong
[Liệt kê 3](#listing3) cho thấy cách mô
hình đó hỗ trợ cả đầu vào dạng mẫu-chung lẫn đầu ra các thực hành tốt nhất. Thay vì
sử dụng một danh sách các phần tử con riêng của tất cả các kiểu, nó sử dụng các danh
sách riêng cho từng kiểu. Liên kết JiBX đầu vào xử lý các phần tử con như là một
thiết lập không có thứ tự, gọi một phương thức thiết lập cụ thể theo kiểu phần tử
mỗi khi một phần tử con không sắp xếp theo thứ tự. Phương thức thiết lập này thêm cá
thể vào một danh sách định kiểu chứ không thay thế bất kỳ giá trị có trước nào, như
bạn có thể thấy trong phương thức thiết lập
addMessage()
được sử dụng cho các phần tử con
<wsdl:message>.
Ngoài ra, mỗi phương thức thiết lập chạy một bước kiểm tra trạng thái để bắt giữ các
trường hợp trong đó các phần tử không theo thứ tự dự kiến.
Người ta cho phép
các thuộc tính và các phần tử mở rộng (về cơ bản là bất kỳ các thuộc tính hoặc các
phần tử nào không sử dụng vùng tên WSDL 1.1) trong bất kỳ các phần tử WSDL nào. Các
cấu hình WS-Policy đã nhúng trong các tài liệu WSDL từ các bài trước trong loạt bài
này là một ví dụ về các phần tử mở rộng như vậy, như là các tài liệu tham khảo chính
sách thực tế. Cách thực hành tốt nhất với các phần tử mở rộng này là để cho chúng đi
trước bất kỳ phần tử con nào trong vùng tên WSDL 1.1 và đó là cách mà chúng được xử
lý trong liên kết đầu ra. Liên kết đầu vào xử lý các phần tử và các thuộc tính mở
rộng bằng cách sử dụng mã của một lớp cơ sở của các lớp phần tử WSDL, không được
hiển thị trong
[Liệt kê 3](#listing3) và cho phép các phần tử theo bất kỳ
thứ tự nào (tạo ra một cảnh báo nếu chúng đi sau một phần tử của vùng tên WSDL
1.1).
Mô hình này xử lý các phần tử mở rộng đã biết bằng cách sử dụng các liên
kết riêng cho mỗi vùng tên mở rộng, mỗi liên kết với thiết lập các lớp riêng của nó.
Tôi sẽ trình bày việc xử lý các phần tử mở rộng này chi tiết hơn trong phần đăng
tiếp theo của loạt bài
*Các dịch vụ web Java* và cũng sẽ cung cấp thêm chi
tiết về mã nguồn trong phần đăng đó.
### Xác minh mô hình
Một số bước xác minh cơ bản của dữ liệu
WSDL được thực hiện như các đối tượng không sắp xếp theo thứ tự tương ứng với các
phần tử được bổ sung vào cấu trúc cây tài liệu WSDL, như thể hiện trong mã
addMessage() ở cuối
[Liệt kê 3](#listing3). Mã
này sử dụng phương thức
checkAdd() để kiểm tra việc sắp
xếp thứ tự của các phần tử con và phương thức
addName()
để bảo đảm một tên hợp lệ đã được cung cấp (tài liệu phù hợp với kiểu lược đồ
NCName và giá trị là duy nhất bên trong kiểu phần tử) và để
ánh xạ tên đó tới đối tượng. Nhưng đó chỉ là việc kiểm tra riêng thông tin cơ bản
nhất với phần tử đó; cần sử dụng nhiều mã xác minh hơn để kiểm tra các đặc tính khác
của mỗi phần tử và các mối tương quan giữa các phần tử.
JiBX cho phép bạn gọi
các móc nối mở rộng-người dùng như là một phần của quá trình sắp xếp theo thứ tự và
không theo thứ tự. Mô hình WSDL sử dụng một móc nối mở rộng như vậy, một phương thức
thiết lập-trước, để chạy logic xác minh. Một phương thức thiết lập-trước được gọi
sau khi hoàn thành việc sắp xếp đối tượng liên quan không theo thứ tự, do đó, để
chạy các bước kiểm tra xác minh-đối tượng thường là một cách tốt. Trong trường hợp
xác minh WSDL, cách tiếp cận đơn giản nhất là chạy tất cả xác minh đối tượng ngoài
một phương thức thiết lập-trước riêng lẻ, với phần tử gốc
<wsdl:definitions>. Cách tiếp cận này tránh được bất kỳ các vấn đề
nào với các tài liệu tham khảo trước với các thành phần của tài liệu WSDL khi các
thành phần đó không theo thứ tự dự kiến.
## Nhiều phần mở rộng hơn
Trong bài này, bạn đã thấy những điều cơ bản về cấu trúc và cách sử dụng WSDL, cùng với giới thiệu một mô hình dữ liệu Java cho WSDL được dự kiến để hỗ trợ cả hai việc xác minh các tài liệu WSDL và chuyển đổi chúng sang một dạng mẫu các cách thực hành tốt nhất.
Bài tiếp theo
[trong loạt bài này](http://www.ibm.com/developerworks/vn/views/java/libraryview.jsp ?search_by=Các+dịch+vụ+Web+Java) tiếp tục thêm về chủ đề này, xem xét các vấn đề thường
gặp phải trong khi viết các xác nhận WS-Policy và WS-SecurityPolicy. Nó cũng sẽ
trình bày mô hình WSDL và việc xử lý xác minh sâu hơn, bao gồm việc mở rộng mô hình
để đưa vào các xác nhận WS-Policy/WS-SecurityPolicy được nhúng trong
WSDL.
## Tài nguyên
### Học tập
[WSDL 1.1](http://www.w3.org/TR/wsdl): Tài liệu tham khảo chính thức cho phiên bản WSDL cũ hơn, nhưng vẫn được sử dụng rộng rãi nhất.
- Các lược đồ WSDL 1.1: Đặc tả WSDL 1.1 bao gồm một
[định nghĩa lược đồ](http://www.w3.org/TR/wsdl#A4)không phù hợp với văn bản. Sau này lược đồ đó được thay thế bằng [lược đồ này](http://schemas.xmlsoap.org/wsdl/2003-02-11.xsd), mặc dù văn bản WSDL 1.1 chưa bao giờ được cập nhật để tham khảo lược đồ sau cùng này. Cuối cùng, WS-I định nghĩa một [phiên bản thứ ba](http://ws-i.org/profiles/basic/1.1/wsdl-2004-08-24.xsd)của lược đồ WSDL 1.1, có lẽ là tốt nhất của gói đó. [Mở rộng liên kết WSDL 1.1 với SOAP 1.2](http://www.w3.org/Submission/wsdl11soap12/): Mở rộng WSDL 1.1 để hỗ trợ SOAP 1.2. [Phần 0 của WSDL 2.0: Sách vỡ lòng](http://www.w3.org/TR/2007/REC-wsdl20-primer-20070626), [Phần 1 của WSDL 2.0: Ngôn ngữ cốt lõi](http://www.w3.org/TR/2007/REC-wsdl20-20070626)và [Phần 2 của WSDL 2.0: Các phần phụ](http://www.w3.org/TR/2007/REC-wsdl20-adjuncts-20070626): Các tài liệu tham khảo chính thức cho tiêu chuẩn WSDL 2.0. [Lược tả cơ bản về WS-I](http://www.ws-i.org/deliverables/workinggroup.aspx?wg=basicprofile): WS-I đã hỗ trợ thiết lập các cách thực hành tốt nhất cho việc sử dụng WSDL 1.1 cũng như nhiều khía cạnh khác của các dịch vụ web. [Việc đóng gói tối ưu hóa mã nhị phân-XML](http://www.w3.org/TR/xop10/)và [Cơ chế tối ưu hóa truyền dẫn thông báo SOAP](http://www.w3.org/TR/soap12-mtom/): Các tiêu chuẩn này định nghĩa cách dữ liệu nhị phân về mặt logic có thể được nhúng trong các thông báo SOAP 1.2 trong khi đang được gửi riêng, để tránh chi phí mã hóa. Chúng thay thế các cách tiếp cận cạnh tranh [SOAP Messages with Attachments (SwA - các thông báo SOAP với các phần đính kèm)](http://www.w3.org/TR/SOAP-attachments)(được triển khai thực hiện rộng rãi trong các chồng Java, nhưng không có trong .NET) và [Direct Internet Message Encapsulation (DIME - Đóng gói thông báo Internet trực tiếp)](http://bgp.potaroo.net/ietf/all-ids/draft-nielsen-dime-02.txt)(được triển khai thực hiện trong .NET, nhưng không có trong hầu hết các chồng Java) được sử dụng cho các phần đính kèm với SOAP 1.1. Nếu điều đó không quá khó hiểu, một số chồng cũng triển khai thực hiện XOP/MTOM với SOAP 1.1 bằng cách sử dụng đề xuất [Liên kết SOAP 1.1 với MTOM 1.0](http://www.w3.org/Submission/soap11mtom10/). [Ngôn ngữ mô tả các Dịch vụ Web cho bộ công cụ Java (WSDL4J)](http://wsdl4j.sourceforge.net/): công cụ tham khảo của [JSR 110: Các API Java cho WSDL](http://www.jcp.org/en/jsr/summary?id=110)là một thư viện được sử dụng rộng rãi để làm việc với các tài liệu WSDL.
- Duyệt qua
[hiệu sách công nghệ](http://www.ibm.com/developerworks/apps/SendTo?bookstore=safari)với các cuốn sách về các chủ đề kỹ thuật này và khác. [Vùng công nghệ Java của developerWorks](http://www.ibm.com/developerworks/java?S_TACT=105AGY75): Tìm hàng trăm bài viết về mọi khía cạnh về lập trình Java.
### Thảo luận
- Hãy dành tâm trí cho
[cộng đồng My developerWorks](http://www.ibm.com/developerworks/mydeveloperworks/). Kết nối với những người dùng developerWorks khác trong lúc khám phá các blog, các diễn đàn, các nhóm và các wiki hướng nhà phát triển.
## Bình luận
[Vùng dữ liệu trên developerWorks](http://www.ibm.com/developerworks/vn/views/data/libraryview.jsp)
Khám phá các bài viết xoay quanh lĩnh vực dữ liệu, Quản lý hệ thống thông tin
[Vùng mã nguồn mở trên developerWorks](http://www.ibm.com/developerworks/vn/views/opensource/libraryview.jsp)
Xem các bài viết về HTML, CSS, JavaScript,...
[Điện toán đám mây](http://www.ibm.com/developerworks/vn/views/cloud/libraryview.jsp)
Tìm hiểu về điện toán đám mây

Content-Language: en-US

Kp-eeAlive: timeout=10, max=12


markdown: jcc-ann-arbor Loading

X-Seen-By: app4.vac.aws-wix-public-html-renderer-webapp,app9.vae.aws-wix public webapp, p1.vae.aws.wixpress.com

Cache-Control: max-age=0, must-revalidate

Set-Cookie: _wixAB3=;Path=/;Domain=.wix.com;Expires=Thu, 01-Jan-1970 00:00:00 GMT

Vary: User-Agent,Accept-Encoding

Via: 1.0 username.wix.com

X-Wix-Dispatcher-Cache-Hit: no