Đề tài Tìm hiểu C# và webservice

-Quá trình thực hiện đề tài đã giúp em tích lũy được nhiều kiến thức cũng như kinh nghiệm thực tế trong việc thiết kế các ứng dụng Web database. Từ việc cài đặt Internet Information Server, SQL Server, Windows Services, sử dụng các công cụ của Visual Studio.NET, cho đến việc tìm hiểu sâu hơn những nguyên lý hoạt động, phương thức tổ chức, quản trị và đặc biệt là khả năng tích hợp những dịch vụ được cung cấp bởi các hệ thống kể trên trong một ứng dụng Web. Qua làm việc với SQL Server, giúp chúng tôi có dịp tiếp cận được với một trong những hệ quản trị cơ sở dữ liệu client-server tiên tiến mà trước đây chúng tôi chưa biết sức mạnh của nó. -Đưa ra được mô hình hoạt động của Web Service và một số công nghệ liên quan .NET. -Có thể truy xuất thông tin một đầy đủ nhất .

doc75 trang | Chia sẻ: baoanh98 | Lượt xem: 849 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu C# và webservice, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
oại Size, cơ sỡ dữ liệu có thể chiếm toàn bộ thiết bị mà nó đang chứa,nhưng không thể lớn hơn ,ta cũng có thể điều chỉnh lại kích cỡ cơ sỡ dữ liệu. Bước 3: Để thay đổi giá trị mặc định cho tập tin cơ sở ,ngay tab General ,ta nhập giá trị vào các ô tương ứng . Tương tự với tab Transaction log ta cũng có thể mặc định lại các giá trị mặc định cho tập tin lưu vết. Bước 4: Click nú lệnh OK để việc tạo mới bảng . TABLES Tạo bảng bằng Enterprise Manager Bước 1: Chọn Database muốn tạo Table , ví dụ như chúng ta đã tạo được một database mới là Sach , mở cơ sỡ dữ liệu sách ra chọn Tables và click phải chuột à chọn New Table . Bước 2: Trên hộp thoại Choose Name , ví dụ tao table tên là NXB , gõ tên table mới ,sau đó nhấp váo nút OK để hoàn tất. Bước 3 : Lúc này ta có khung hiển thị cho phép thêm các trường trong table. Trong đó : Column Name : Tên của column. Datatype : Kiểu dữ liệu cho column. Length : Kích thước dữ liệu. Precision :Là số thể hiện số ký số của column có kiểu dữ liệu dạng số. Scale :là số thể hiện số ký số phần thập phân của column có kiểu dữ liệu là số thực. Allow null: Xác nhận column có chấp nhận giá trị null. Default value: Xác định giá trị mặc định. Indentity : Check vào ô nếu muốn column là thuộc tính nhận dạng có tính duy nhất. Indentity seed : Giá trị khởi đầu của column được xác định là indentity (giá trị mặc định là 1). Indentity Increment : Giá trị xác định bước tăng kế tiếp kể từ giá trị Indentity seed của column được xác định. Bước 4: Sau khi hoàn tất công việc thiết kế các trường trong table .Ta chọn column dự định là khoá chính , click biểu tượng có hình chìa khoá .Nếu có từ 2 column trở lên tham gia khoá chính ,nhấn Ctrl và click chuột lần lượt vào các column cần chọn tham gia khoá , sau đó click biểu tượng có hình chía khoá. Chỉ những column nào không chấp nhận null mới có thể là thành viên của khoá chính . Bước 5 : Click nút lệnh Save để kết thúc việc tạo bảng . Câu truy vấn trong SQL QUERY ANALYZER : SELECT list of expressions FROM list of tables [ WHERE row conditions ] [GROUP BY list of columns [HAVING group conditions] ] [ORDER BY list of column]; PHẦN 5 : WINDOWS SERVICES WINDOWS SERVICES là gì ? Trong môi trường Windows ,có rất nhiều ứng dụng thực thi không cần bất kỳ một giao tiếp nào với người dùng ,hay yêu cầu người dùng đăng nhập vào ứng dụng đó,để thực thi các ứng dụng này.Ta có thể nhận thấy tất cả các ứng dụng đang thực thi trong dịch vu (Service). Một dịch vụ (Service) là một chương trình ,mà chúng tự động thực hiện hay khơỉ động khi hệ điều hành được nạp lên và không giao tiếp với người dùng,chúng hoạt động liên tục 24/24 cho đến khi hệ điều hành có thể khởi động lại,cứ tiếp tục như vậy cho đến khi ta không muốn sử dụng chúng. Tạo Một Ứng dụng Windows Service Sử dụng VS.Net ,ta dễ dàng tạo một ứng dụng Windows Services,bằng cách tạo một ứng dụng để cài đặt như một dịch vụ trong môi trường Windows. Khi xây dựng một ứng dụng Windows Service ,ta cần quan tâm đến các điều khiển trong khi dịch vụ này được khơỉ động và được dừng lại ,những lệnh nào gưỉ đến cho dịch vụ ,những hành động nào sẽ thực thi ,những lệnh nào sẽ nhận ,điều được khai báo trong những sự kiện của Service ,chẳng hạn như sự kiện OnStart hay OnStop. Khi thực hiện một đoạn mã trong sự kiện OnStart ,ta ra lệnh yêu cầu ứng dụng thực hiện các nhiệm vụ nào khi ứng dụng khơỉ tạo ,điều này giống như một chương trình chính trong điều khiển ứng dụng ,tuy nhiên ta cần có nhiều nhiệm vụ cần phải thực thi khi service được khơỉ tạo. Trong sự kiện OnStop,cũng tương tự như trường hợp OnStart.Khi người dùng ngừng Service ,ta có thể viết đoạn mã thực thi một số nhiệm void ,bên cạnh đó ta có thể gửi thông báo ra hệ thống. Ta cũng có thể chỉ ra rằng ,khi người dùng tạm dừng(Pause) hay dừng (Stop) một Service,ứng với quyền hạn tài khoản hay User nào đó,để tránh trường hợp một user khác có thể thực hiện quá trình dừng hay tạm dừng lại các services đang thực hiện ngoài thẫm quyền của User hiện hành . Để tạo một ứng dụng Service ,bằng cách : -Khơỉ động Microsoft Visual Studio .NET -Chọn Create New Project ,chọn Visual C# Projects ,chọn Windows service ,như sau: Tạo Một Ứng Dụng Windows Service Với Project vừa tạo ,ta sẽ có một tập tin Service1.cs .Kích hoạt trình soạn mã ta thấy rằng lớp Service1 này được tạo ra từ lớp ServiceBase ,sử dụng lớp này ta có thể định nghiã các nhiệm void trong các lệnh Start,Stop,Pause,Continue ,cũng như khi hệ thống kết thúc.Lớp cơ bản này được gọi khi dịch vụ bắt đầu khởi động và kích hoạt đến sự kiện OnStart,tương tự như vậy cho các sự kiện OnStop,OnPause,OnContinue bằng khai báo : public class Service1 : System.ServiceProcess.ServiceBase { } Với lớp này,ta có thể sử dụng các phương thức để thực hiện các nhiệm void trong qúa trình Start ,Stop : protected override void OnStart(string[] args) { . . . . } protected override void OnStop() { . . . . . . . . } Khi sử dụng OnContinue hay OnPause ,phải chắc chắn rằng thuộc tính ServiceBaseCanPauseAndContinue đang có giá trị là true. Cài Đặt Ứng Dụng Service : Ứng dụng dịch vụ không thực thi từ Command Line hay IDE ,chúng phải được cài đặt trong môi trường windows mà chúng có thể kiễm soát . Trước khi cài đặt dịch vụ ta cần phải cài đặt thuộc tính của dịch vụ, ta cần gán lớp Installer trong ứng dụng Windows Service ,lớp này rất cần thiết khi thi hành ứng dụng dịch vụ cuả ta.Để thêm đối tượng cài đặt vào trong ứng dụng,bằng cách nhắp phải trên Servicé trong ứng dụng Trong ứng dụng WindowsService cuả ta chọn Add Installer. Một lớp gọi là ProjectInstaller sẽ tự động thêm vào trong ứng dụng ,hai thành phần của lớp này gồm ServiceProcessInstaller1 và ServiceInstaller1 như hình : Tạo Installer Gán thuộc tính Account cuả ServiceProcessInstaller1 với gía trị LocalSystem,kế tiếp thay đổi một số thuộc tính cuả ServiceInstaller1 ,với thuộc tính ServiceName là tên Service sẽ dược thực thi,và StartType được gán giá trị Manual.(hoặc Automatic). Để cài đặt dịch vụ ta phải thực thi tập tin InstallUtil.exe bằng Visual Studio .NET Command Prompt trong Microsoft Visual Studio .NET : InstallUtil Tên Service . exe Để thi hành Service ,ta khởi động Service bằng phát biểu sau : Net Start Ten Service Đối với Win2000 ,dùng ControlPanel | Administrative Tools | Services ta cũng khởi động được WindowsService. PHẦN 6 : WEBSERVICE WebService là gì ? Một dịch vụ Web [Web service] là một mẫu lôgic ứng dụng được phô diễn công khai và sẵn có đối với mọi hệ thống đa dạng qua việc dùng các chuẩn Internet chung,chẳng hạn như HTTP,XML,và SOAP.Về cơ bản ,dịch vụ Web là mã mà ta phô diễn trong một ứng dụng có thể được truy cập cục bộ ,qua một intranet ,hay qua internet.Ta có thể cho phép bất kỳ hệ khách nào truy cập dịch vụ Web của ta,hoặc hạn chế khả năng truy cập cho chỉ các hệ khách đã được thẫm định quyền. Trong những năm qua,các lập trình viên Microsoft Windows đã quen sữ dụng COM (Component Object Model) và vai trò của nó trong việc tạo những thành phần gắn kết tạo nên phần mềm.COM cho phép lập trình viên tạo những thành phần tự mô tả,độc lập ngôn ngữ và có thể kết hợp cùng nhau trong hệ thống lớn,và COM có thể sữ dụng để hình thành cơ sở sữ dụng mềm dẻo cho những ứng dụng phân tán. Những hệ thống dạng component khác cũng được sữ dụng rộng rãi như CORBA và RMI của Java. Mặc dù COM rất hữu ích nhưng nó có một vài khuyết điễm.Trước hết,việc viết những thành phần COM có thể khó,yêu cầu bạn phải có kiến thức sâu theo bí quyết riêng của từng nguời lập trình,tài liệu không rõ ràng.Thứ hai,COM sữ dụng giao thức nhi phân để giao tiếp giữa những thành phần đối tượng ở xa và khiến cho khó sữ dụng thành phần COM ở bất kỳ nơi đâu khác ngoài môi trường Microsoft Windows ra.Việc tích hợp một hệ thống COM với những thành phần sử dụng CORBA hoặc RMI không đơn giản chút nào. Dịch vụ Web giúp đở và giải quyết vấn đề theo hai cách. Trước hết,ta không cần nhiều kiến thức chuyên dụng để viết dịch vụ Web,và rất dễ để cung cấp một giao diện Dịch vụ Web đối với đoạn mã hiện đang tồn tại trước đây.Lợi thế thứ hai là các dịch vụ Web sữ dụng chuẩn dữ liệu và những giao thức internet phục vụ cho việc giao tiếp, vì vậy dễ dàng hơn nhiều khi xây dựng những hệ thống phân tán không đồng nhất. Một dịch vụ Web sẽ phô diễn một giao diện để triệu gọi một phương thức,hàm trên một hệ thống,từ một hệ thống khác.Để thực hiện lệnh gọi đến phương thức này,ta dùng một trong ba giao thức Internet :HTTP GET, HTTP POST ,hoặc SOAP.Sau khi triệu gọi phương thức của Web service,mọi dữ liệu cần được trả về đều được nối tiếp hoá dưới dạng XML trong thân của thông điệp SOAP.Mô hình trao đổi dữ liệu này cho phép mọi đối tượng có thể được nối tiếp hoá dưới dạng XML-các chuổi ,các số nguyên, các mảng, ADO.NET Datasets, hoặc thậm chí các đối tượng tùy biến- được trao đỗi giữa bên cung cấp và bên tiêu thụ. Toàn bộ khái niệm trên trông giống Mô hình như sau : Mô Hình WebServices CÁC CHUẨN CHUNG Do khó khăn trong việc trao đổi dữ liệu giữa một hệ thống gốc Java với một hệ thống gốc COM vào thời tiền Web Service.Cơ chế gom chuyển kiểu dữ liệu [data type marshaling] và những điễm không tương thích giữa hai hệ thống đã khiến cho tiến trình đó gặp không ít rắc rối khi thực thi.Do các Web Service dựa vào một loạt các chuẩn chung,chẳng hạn như HTTP,XML,và SOAP ,nên công việc trao đổi dữ liệu trở nên dễ dàng. Nhờ các chuẩn chung,ta bảo đảm mọi hệ thống đa dạng có thể trao đổi dữ liệu dễ dàng và suôn sẽ.Sau đây là phần mô tả khái quát về năm công nghệ mà các dịch vụ Web vận dụng : XML, SOAP, WSDL, DISCO và UDDI. XML XML (Extensible Markup Language ) đã trở thành một chuẩn Internet được chấp nhận để mô tả và trao đổi dữ liệu,giống như HTML đã trở thành một chuẩn để hiển thị thông tin cách đây nhiều năm.Sau hậu trường,các Web service dùng XML làm dạng thức truyền dữ liệu.Khi triệu gọi một phương thức của Web Service ,dữ liệu được trả về ,dẫu nó là một chuỗi,một số nguyên,một Dataset ,hoặc một đối tượng tùy biến, sẽ được nối tiếp hóa dưới dạng XML và được gửi trả về cho bên tiêu thụ. SOAP SOAP (Simple Object Access Protocol) là giao thức truy cập đối tượng đơn giản cung cấp cách thức triệu gọi các phương thức thừ xa thông qua XML và HTTP.Các Web Service có thề dùng SOAP làm bên truyền tải cho dữ liệu XML đang được trao đổi giữa bên cung cấp và bên tiêu thụ dịch vụ Web. Nếu một phương thức dịch vụ Web mong đợi một đối tượng phức hợp, chẳng hạn như một đối tượng tùy biến định nghĩa một sản phẫm có các tính chất mô tả nó,dưới dạng một phần đầu vào của nó,một thông điệp SOAP được yêu cầu để mang tải đối tượng đó, được nối tiếp hoá dưới dạng XML trong thân thông điệp SOAP. WSDL WSDL (Web Service Description Language) là một phần mô tả gốc XML của một dịch vụ Web.Thực tế,WSDL là một giao ước mà bên cung cấp và bên tiêu thụ đồng ý.WSDL mô tả các giao diện của một dịch vụ Web ,và cách các thông điệp sẽ được định dạng khi dùng các giao thức HTTP GET, HTTP POST,hoặc SOAP. DISCO DISCO (Web Service Discovery) là tiến trình định vị (khám phá ) tập tin WSDL kết hợp với một dịch vụ Web.Tiến trình khám phá [discovery] định danh một dịch vụ Web và vị trí của nó.Tiến trình khám phá chủ yếu được dùng bới các cung cụ , như Visual Studio .NET ,để định vị một tập tin WSDL ,và xây dựng các lớp proxy client để có thể triệu gọi các phương thức dịch vụ Web từ xa. UDDI UDDI (Universal Description ,Discovery ,and Integration ) là một cơ chế giúp các nhà cung cấp Web Service quảng cáo sự tồn tại của những dịch vụ mà họ đưa ra, và cho phép trình khách client định vị những dịch vụ Web mà chương trình quan tâm. CUNG VÀ CẦU-Các Bên Cung Cấp và Các Bên Tiêu Thụ Dịch Vụ Web Các Web Service làm việc bằng cách trao đỗi dữ liệu giữa hai thực thể chính :bên cung cấp dịch vụ Web và bên tiêu thụ dịch vụ Web.Bên cung cấp dịch vụ Web là một ứng dụng phô diễn một vài phương thức công công (public) ,mà các ứng dụng khác –bên tiêu thụ dịch vụ Web- sẽ truy cập.Bên cung cấp phô diễn WSDL mà bên tiêu thụ phải tuân thủ để dùng dịch vụ Web. Bên tiêu thụ phát hiện dịch vụ Web, bằng cách tìm nó trong sổ đăng ký UDDI,hoặc một biện pháp khám phá khác.Sau khi bên tiêu thụ hiểu rõ dịch vụ Web,thông qua tư liệu WSDL ,một phương thức có thể được triệu gọi ,dùng bất kỳ một trong ba giao thức có thể chấp nhận ,HTTP GET ,HTTP POST, hoặc SOAP. Khi triệu gọi phương thức Web Service bên cung cấp trả về dữ liệu cho bên tiêu thụ dưới dạng một tư liệu XML , như một đáp ứng Web ,hoặc được nhúng trong thông điệp SOAP. Sau Đây là sơ đồ giao tiếp với WebServices và Client: Universal Discovery DesCription and Intergration (UDDI) Visual C# Client Web Services Web Services Description Language 2 1 3 S Retrieve the Web Search Services Description UDDI for WebServices Invoke The WebServices Sơ đồ giao tiếp với WebServices và Client Web Service Namespaces Dịch vụ Web được hổ trợ bởi một số không gian tên namespace trong .NET Framework. Không gian tên Mô tả System.Web.Services Chứa các lớp dùng Tạo và triệu gọi WebService System.Web.Services.Description Chứa các lớp cho phép mô tả web Service theo WSDL. System.Web.Services.Discovery Chứa các lớp cho phép truy tìm dịch Vụ Web từ trình khách System.Web.Services.Protocols Chứa các lớp định nghĩa giao thức truy Cập Web Service. Không gian tên System::Web::Services chứa các lớp bạn có thể dùng để tạo và sử dụng các dịch vụ Web.Đây không phải là một không gian tên lớp,ba lớp chính được liệt kê trong bảng sau : Lớp Mô tả WebMethod Thuộc tính đánh dấu một phương thức cho phép triệu gọi từ xa. WebService Một lớp cơ sở tuỳ chọn dùng để xây dựng Web Service. WebServiceAttribute Một thuộc tính đựơc sữ dụng để Thêm thông tin bổ sung vào một Lớp có cài dịch vụ Web. Các lớp dịch vụ Web thường bắt nguồn từ WebService, nhưng điều này chỉ cần thiết khi ta muốn truy cập đến các đối tượng Microsoft ASP.NET được liệt kê trong bảng dưới đây : Thuộc tính Mô tả Application Context Server Session User -Cung cấp truy xuất đến các biến được lưu trong đối tượng Application bên trong ASP.NET.Đây là một thuộc tính tắt của Context.Application. -Cung cấp truy xuất đến tất cả dữ liệu được cung cấp bên trong ASP.NET.Bao gồm các đối tượng Request và Response,đối tượng Cache ,và các thuộc tính khác của các yêu cầu. -Cung cấp truy xuất đến đối tượng Server.Đối tượng naỳ được sử dụng để truy vấn Web Server có đặt Web Service,hoặc chuyển mã các thông điệp.(Ví dụ,để chuyển một một chuỗi sang một câu QueryString).Đây là thuộc tính tắt của Context.Server. -Cung cấp truy xuất đến các biến lưu trong đối tượng Session bên trong ASP.NET.Đây là thuộc tính tắt của Context.Session. -Trả về một đối tượng ASP.NET đại diện cho người dùng hiện hành.Đối tượng này có thể sử dụng cho các mục đích chứng thực. Bảng thuộc tính của WebService CÁC BƯỚC CƠ BẢN XÂY DỰNG MỘT DỊCH VỤ WEB Dưới đây là các bước để xây dựng một dịch vụ web : 1.Xây dựng một lớp public kế thừa từ System.Web.Services.WebService 2.Tạo một phương thức public 3.Aùp dụng thuộc tính WebMethod cho phương thức trên. 4.Tạo một tập tin dịch vụ web dùng đuôi .asmx (ví dụ MyWebService.asmx) 5.Bổ sung thuộc tính @Webservice vào tập tin .asmx và thừa kế từ lớp được định nghĩa trong bước 1 . Mã sau đây nêu một lớp cơ bản diễn một phương pháp ,phương pháp Add : Using System ; Using System.Web ; Namespace Test { public class TestService { public int Add(int a,int b) { return (a+b); } } } Từ lớp cơ bản trên dưạ vaò các bước trên ta được một WebService như sau : Using System ; Using System.Web ; Namespace Test { [WebService(Decription=”Đây là Dịch vụ Web Cơ bản “)] public class TestService : System.Web.Service.WebService { [WebMethod(Decription =”Cộng 2 số”)] public int Add(int a,int b) { return (a+b); } } } Các phương pháp mà ta đang phô diễn dưới dạng các phương pháp WebService(dùng thuộc tính WebMethod) phải được khai báo dưới dạng public Và phải nằm trong một lớp public . Tạo một Webservice đơn giản Với Visual Studio .NET ta dễ dàng tạo một ứng dụng Webservice bằng cách thêm một project WebService vào solution,hoặc tạo mới một solution chứa một project Webservice. Tạo một project WebService mới Tạo Project Trong Visual Studio .NET , chọn New | New Project ,Chọn ASP.NET WebService.Đặt tên cho Webservice. Sau khi project được tạo ,một số file được tạo sẳn trong project : Web.config : Đây là file để trình thông dịch ASP.NET lấy các thông số cấu hình của WebService .Người lập trình có thể sử dụng nó để thay đổi các thông số cho các thư mục aỏ ( virtual directory ) được sử dụng cho webservice này. Global.asax : Đây là file được sử dụng bơì trình thông dịch ASP.NET để bắt các sự kiện.Người lập trình có thể sử dụng file này để viết code được thực hiện khi các sự kiện quan trọng xảy ra trên ứng dụng Web. WebService.vsdisco : Đây là file DISCO của WebService.Nó cho phép client phát hiện ra các webservice đặt trong thư mục ảo.File DISCO được tạo trong project này là file DISCO động. Service1.asmx : Đây là file mà người lập trình phải thay đổi để tạo chức năng cho web service. XÂY DỰNG MỘT BÊN TIÊU THỤ CƠ BẢN (WebService Client) Ứng dụng tiêu thụ có thể truy cập dịch vụ Web theo một trong ba giao thức ,HTTP GET ,HTTP POST ,hoặc SOAP .Mỗi giao thức có các ưu và nhược điểm được liệt kê dưới đây : Giao thức Các Ưu điểm Các nhược điểm HTTP GET Dễ thực thi -Mọi giá trị nhập sẽ được Chuyền vào chuỗi Truy vấn.Không thể trao đổi các kiểu dữ liệu phức hợp. HTTP POST Dễ thực thi -Không thể trao đổi các kiểu dữ liệu Phức hợp. SOAP Có thể trao đỗi các kiểu -Dùng nhiều băng thông hơn. Dữ liệu phức hợp. Các Web Service cho phép bên tiêu thụ có bất kỳ kiểu giao diện người dùng nào cần thiết ,bao gồm một ứng dụng Web hoặc để bàn [destop] (windows).Dịch vụ Web sẽ được truy cập bằng mã, và sau đó dữ liệu trả về có thể được định dạng và xuất hiện khi thích hợp. Xây Dựng một bên tiêu thụ HTTP : Để Xây dựng một bên tiêu thụ truy cập dịch vụ web dùng http GET hoặc http POST ,ta chỉ bổ sung một thẻ gán vào một trang Web html ,dùng Get hoặc Post làm Method và URL dịch vu web làm Action : hoặc Xây Dựng một bên tiêu thụ SOAP trong Visual Studio .NET : Để tiêu thụ một dịch vu web bằng giao thức SOAP ,ta dùng một công cụ ,như Visual Studio .NET .Với công cụ này nó sẽ cung cấp các đồ thực [wizard] hoặc các trình tiện tích ích trừu tượng hoá tiến trình xây dựng một bên tiêu thụ gốc SOAP tách khỏi nhà phát triển ,giúp ta dễ dàng thực thi .Bên tiêu thụ có thể là bất kỳ ứng dụng nào có thể truy cập Internet. Phát hiện các dịch vụ web Với tư cách là một bên tiêu thụ ,ta cần biết URL của dịch vu web bằng cách lấy nó trực tiếp từ công ty bên cung cấp ,hoặc phát hiện nó trong sổ đăng ký UDDI .Trong sổ đăng ký UDDI,ta có thể tìm kiếm các dịch vu web sẳn có công khai theo nhiều cách ,bao gồm theo tên doanh nghiệp ,vị trí ,hoặc phân loại . Ngoài ra,nếu ta biết vị trí tập tin khám phá .disco hoặc .vsdisco ,ta có thể phát hiện các dịch vu web sẳn có bằng công năng Add Web Reference trong Visual Studio.net ,hoặc bằng một công cụ khám phá ,như DISCO.exe Bổ sung một tham chiếu Web trong Visual Studio.NET Khi tạo một tham chiếu Web trong Visual Studio.NET ,có khá nhiều việc phải làm ngoài việc khám phá dịch vụ Web.Khi ta hoàn tất các bước để bổ sung một tham chiếu Web,một lớp hệ khách giám quản[proxy client] được tự động phát sinh.Hệ khách giám quản được tạo dựa vào WSDL mà dịch vụ web cung cấp .Hệ khách giám quản phô diển các giao diện dịch vụ web cho ứng dụng tiêu thụ như thể dịch vụ web là một lớp cục bộ trong ứng dụng tiêu thụ.Lớp hệ khách giám quản sẽ được dùng để triệu gọi các phương pháp của dịch vụ Web. Để taọ một tham chiếu Web trong Visual Studio.NET ,ta nhắp lên Project | Add Web Reference.Sau đó ,trong cửa sổ hộp thoại Add Web Reference ,ta có thể nhập URL của dịch void Web hoặc URL của tập tin discovery vào hộp văn bản Address ,hoặc nhắp lên một trong các kết nối UDDI để tìm trong Microsoft UDDI : Từ đây ta có thể nhắp nút Add Reference,hoặc gõ URL đến một trong các Web Service sẵn có vào hộp Address, và Xem trang thông tin dịch vụ Web: Hệ Khách Giám Quản là gì (proxy)? Việc trao đổi giữa client và Web Service được thực hiện với sự trợ giúp của một lớp cơ sở ,goị là proxy. Một Proxy là một component nhỏ ở phiá client .Khi chương trình client có yêu cầu đến proxy , nó phát sinh SOAP request tương ứng cho web service và truyền đến Webservice .Khi Web service trả lời bằng một SOAP response ,proxy chuyển nó thành giá trị trả về ,và trả về cho client .Hình sau sẽ cho thấy quá trình naỳ : Proxy Object Web Service User Request Client Server 1.Client 5.Proxy gọi chuyển phương đổi thức Soap response trên proxy cho client 2.Proxy phát sinh yêu cầu SOAP 3.WebService thực (SOAP Request) hiện yêu cầu 4.Web Service tạo trả lời SOAP (SOAP Response) Luồng thông tin giữa client,proxy,và webservice Trao Đỗi Dữ Liệu Trong Các Dịch Vụ Web Các WebService có thể làm việc với vài kiểu dử liệu ,kể cả các kiểu đơn giản –như chuổi và số nguyên-lẫn các kiểu phức hợp –như các DataSet và các lớp tùy biến được nối tiếp hóa .Một dịch vụ web có thể có các kiểu dữ liệu sau đây làm các đối số đầu vào ,hoặc các kết qủa được trả về : XML Schema Definition Kiểu dữ liệu C++ Kiểu dữ liệu CRL boolean bool Boolean byte char,_ _int8 double double Double datatype struct decimal Decimal enumeration enum Enum float float Single int int,long,_ _int32 Int32 long int64 Int64 Qname XmlQualifiedName short short,_int16 Int16 string BSTR String timeInstant DateTime unsignedByte unsigned_int8 unsignedInt unsigned_int32 Uint32 unsignedLong unsigned_int64 Uint64 unsignedShort unsigned_int16 Uint16 Chế Độ Bảo Mật Dịch Vụ Web Có 2 cách để bảo mật Dịch vụ Web :Dùng Cơ chế thẩm định quyền Windows [ Windows Authentication ] và thẩm định quyền gốc SOAP . Cơ chế thẩm định quyền Windows: dùng các dấu ủy nhiệm tài khoản windows [ Windows account credentials] để giao quyền truy cập các tài nguyên. Ta có thể bảo mật ứng dụng ,hoặc một phần của ứng dụng ,để chỉ cho phép những người dùng có các tài khoản hợp lệ trên Windows domain của ta mới có quyền truy cập các tài nguyên. Điều này yêu cầu mọi người dùng mà bạn muốn giao quyền truy cập phải được gán một tài khoản trên domain của ta .Kiểu thẩm định quyền này chủ yếu dành cho các mạng nội kết [intranet] và mạng ngoại kết [extranet],ở đó người dùng có thể có các tài khoản trong mạng cuả ta. Để thực thi cơ chế thẩm định quyền windows trong ứng dụng ASP.NET ,ta xác lập cấu hình trong tập tin web.config gốc : Sau đó ta hạn chế quyền truy cập dịch vu web theo một trong hai cách sau : 1.Dùng phần tử trong tập tin web.config gốc gộp một phần tử .Cách này hữu ích khi bạn chỉ muốn hạn chế quyền truy cập theo một tài nguyên đơn lẻ .Kỹ thuật này hạn chế quyền truy cập vào chỉ tập tin đã chỉ định : Đặt tập tin dịch vu Web trong một thư mục con với một tập tin web.config gộp một phần tử .Cách hữu ích khi ta có nhiều tài nguyên mà ta muốn hạn chế truy cập .Cách này hạn chế quyền truy cập đối với tất cả các tập tin .NET có quản lý trong thư mục con : Cơ chế thẩm định quyền gốc SOAP : Ta có thể baỏ mật các dịch vu web ở một cấp rất chi tiết : bảo mật riêng lẻ từng phương thức của dịch vu web .Ngoài ra ,ta có thể cho phép truy cập dưạ vào các tên người dùng ,các mật hiệu ,số ID khách hàng ,hoặc mọi tổ hợp dử liệu mà ta muốn .Dữ liệu thẩm định quyền cần thiết được gửi đi trong phần đầu thông điệp SOAP khi 1 phương thức của dịch vu web được triệu gọi. Để thực thi kiểu thẩm định quyền này ,ta tạo một lớp tuỳ biến phát sinh từ lớp System.web.services.protocol.Soapheader .Lớp này biểu thị dử liệu sẽ được truyền vào phần đầu soap –tên người dùng và mật hiệu .Các giá trị được truyền vào phần đầu Soap là văn bản thông thường .Có thể được mật mả hoá các giá trị trước khi đặt chúng vào phần đầu Soap ,và được giải mả khi được kéo ra . //tạo một class header trong dịch vu web public mysoapheader Header; [webMethod(Description=”Bao mat dich vu web”)] [SoapHeader(“Header”)] public string GetMySecret() { if (Header.ValidUser()) { return “This is my secret”; }else{ return “the username or password was incorrect”; } } public class mySoapHeader :SoapHeader { public string Username; public string password; public Boolean ValidUser() { if(Username=”myuser” && Password=”mypassword”) { return true; }else{ return false; } } } PHẦN 7 : GIỚI THIỆU XML 7.1 XML là gì ? : XML : Ngôn ngữ định dạng mở rộng (eXtensible Markup Language ) được định nghĩa bởi tổ chức mạng toàn cầu W3C (World Wide Web Consortium) có địa chỉ internet đặt tại XML là công nghệ tạo ra những ngôn ngữ định dạng, cho phép tạo ra các thẻ(tag) mới. XML là một bộ qui luật về cách chia một tài liệu làm nhiều phần ,rồi định dạng và ráp các phần khác nhau lại đểå dễ nhận diện. XML diễn tả cấu trúc và ý nghĩa của các phần của tài liệu, không quan tâm đến cách trình bày tài liệu, trong khi đó ngược lại HTML bao gồm vừa cách trình bày. Bây giờ chúng ta thử xem một chương trình XML đầu tiên Xin Chào XML Đây là chương trình XML đầu tiên Tài liệu này chỉ chứa dữ liệu, không nhắc đến cách trình bày. Điều này có ý nghĩa đó là một XML parser, không cần phải hiểu ý nghĩa của các thẻ. Nó chỉ cần tìm các thẻ và xác định đây là một tài liệu XML hợp lệ vì trình duyệt không cần phải hiểu ý nghĩa của các thẻ, nên ta có thể tạo ra các thẻ bất kì để sử dụng. Việc viết XML cũng giống như khi chúng ta viết trang HTML, chúng ta có thể viết bằng Notepad, hay bất cứ trình soạn thảo văn bản nào. Sau khi soạn thảo xong chương trình XML đầu tiên , chúng ta sẽ đặt tên là helloXML.xml , thế là giờ đây chúng ta sẽ có một chương trình XML đầu tiên. Ở chương trình trên ,chúng ta thấy chương trình bắt đầu bằng thẻ khai báo chỉ thị xử lý XML . Tất cả các chỉ thị xử lý XML bắt đầu bằng Theo đó ta chỉ định XML sử dụng phiên bản 1.0 và mã hóa kí tự theo UTF-8 ( phiên bản thu gọn 8 bit của mã Unicode). Ta tạo ra thẻ mới tên là , việc đặt tên thẻ ta có thể dùng bất kì tên nào để đặt cho thẻ không riêng gì tên DOCUMENT, tên thẻ có thể bắt đầu bằng số, dấu gạch dưới (_), kí tự (a,b,c..), dấu chấm, gạch nối (-), nhưng không được có khoảng trắng. XML phân biệt chữ hoa và chữ thường khi tạo ra các thẻ. Ví dụ: Xin Chào XML Ở ví dụ trên , thì thẻ không hợp lệ , viết đúng phải là: Xin Chào XML Tài Liệu XML hợp khuôn dạng (Well-formaed document) : Để hợp khuôn dạng, một tài liệu XML cần phải tuân theo qui tắc cú pháp thiết lập cho XML bởi tổ chức quốc tế W3C. Một trang XML cần tuân theo các qui tắc sau đây: Trang XML phải bắt đầu bằng câu tuyên bố XML (XML declaration). Mỗi bộ phận, gọi là”element” phải nằm giữa một Tag Pair (cặp thẻ), phải có bắt đầu và kết thúc. Nếu thẻ nào không chứa gì ở giữa thì phải chấm dứt bằng “/>”. Một trang XML phải có một phần tử (element) gốc duy nhất chứa các phần tử khác trong tài liệu . Các cặp thẻ không được xen kẻ nhau, tức các phần tử con phải nằm trong phần tử cha. Các cặp thẻ phải cùng mẫu tự giống nhau, có phân biệt giữa chữ hoa và chữ thường, tất cả các Attribute (thuộc tính) đều phải nằm giữa hai dấu ngoặc kép. Xét ví dụ minh hoạ sau: Xin Chào XML Đây là chương trình XML đầu tiên Ở đây ta xét lại ví dụ helloXML.xml, chúng ta sẽ thấy một câu chỉ thị XML <?xml version=”1.0” encoding =”UTF-8”?, và các thuộc tính nằm trong dấu ngoặc kép. Phần tử gốc là cặp thẻ 7.2 Các Element : Một Element là khối cơ bản của tất cả mọi file XML.Nó bao gồm tag bắt đầu ,tag kết thúc ,và nội dung ở giữa hai tag .ví dụ,có ba element trong đoạn XML sau : John Bull Một element là employee .Element naỳ bắt đầu bằng tag ,kết thúc với tag kết thúc ,chứa hai tag khác, và . Các thuộc tính (Attribute) Các thuộc tính dùng để cung cấp thêm thông tin cho các element.Các thuộc tính không thể đứng một mình và nó phải được áp dụng cho các element.Các thuộc tính luôn xuất hiện bên trong tag bắt đầu(tag mở) của một element ,và luôn có dạng sau : Name=”value” Nghiã là,một thuộc tính gồm hai phần :name(tên) và value(giá trị) .Name phải duy nhất trong một element ,nhưng hai element có thể có cùng các thuộc tính .Một element có thể có nhiều thuộc tính . Giản đồ-Schema Mặc dù các giản đồ không thực sự là một phần của XML ,nhưng nó trở nên quan trọng khi trở thành chuẩn chính thức .XML schema định nghĩa một cách tốt hơn để cấu trúc một file XML.Bao gồm kiểu dữ liệu của mỗi element và các thuộc tính ,cái nào sẽ là element con của một element khác Hình sau minh hoạ một XML schema đơn giản : Làm việc với XML XML thường xử dụng với nhiều mục đích khác nhau trong các ừng dụng ,nhưng thông dụng nhất là : Thông tin cấu hình –Nhiều người sử dụng XML để lưu thông tin cấu hình. Truyền dữ liệu –XML là một định dạng tốt để truy thông tin giữa các máy tính.Bất kỳ máy tính nào nhận được nó đều có thể đọc được nội dung chứa bên trong,không quan trọng là hệ điều hành nào ,hay sử dụng ngôn ngữ lập trình gì.Đây là ứng dụng quan trọng được sử dụng trong Webservice. Lưu dữ liệu –XML là một thay thế tốt cho các database nhỏ.Nó cho phép tạo định dạng file đơn giản để tự mô tả ,cho phép tạo relationship. Ta sẽ tìm hiểu hai cách C# làm cho việc dùng XML dễ dàng hơn : °Document Object Model (Mô hình đối tượng tài liệu) °Reader và Writer (Bộ đọc và bộ ghi). Document Object Model Document Object Model(DOM) có thể nói là “một cách chuẩn để đọc ghi XML”.Hầu hết các hệ điều hành phổ biến đều có một phiên bản DOM ,có thể sử dụng trong hầu hết các ngôn ngữ lập trình ,bao gồm C# .Nó là một Application Programming Interface(API) để truy vấn các file XML . Ý tưởng của DOM là bất kỳ file XML nào có thể được mô tả dưới dạng một cây chứa các node .ví dụ : Customer element Order element Id attribute Items element Date attribute Item element Item element quatity element Itemid element 100 foo foo 100 Bảng sau đây mô tả các node thường được sử dụng trong file XML Kiểu Node Mô tả XmlElement Tương ứng một element trong file XML XmlAttribute Tương ứng một thuộc tính XmlDocument Tương ứng toàn bộ tài liệu XmlComment Tương ứng với một ghi chú trong file Xml .Ghi chú trong file Xml bắt đầu bằng Các phương thức và thuộc tính chung của tất cả các node trong XML : Tên Mô Tả Các Thuộc Tính Attributes Tập hợp tất cả thuộc tính của một node ChildNodes Tập hợp tất cả các node con cuả node hiện hành FirstChild Trả về node con đầu tiên cuả node hiện hành InnerText Văn bản chưá trong mỗi node.Kể cả bất kỳ node con nào chưá trong nó. Name Văn bản bên trong hai dấu cuả node hiện hành NextSibing Trả về node kế tiếp(nếu có)cùng cấp với node hiện hành NodeType Trả về kiểu node hiện hành Các Phương Thức AppendChild Thêm một node con mới vào node hiện hành. Ta thường sử dụng XmlDocument và DOM để đọc XML .Sau đây là các phương thức và thuộc tính cuả XmlDocument : Tên Mô tả Các Thuộc tính DocumentElement Node gốc(root) của tài liệu(document) Các phương thức CreateNode Tạo node mới thêm vào trong tài liệu CreateElement Tương tự như CreateNode;nhưng CreateElement chỉ dùng để tạo các element CreateAttribute Được sử sụng để tạo các thuộc tính Load Đưa nội dung của một file XML vào document LoadXml Đưa nội dung của một chuỗi chưá XML vào document Save Lưu nội dung của XML document vào một file Reader và Writer Mặc dù DOM là một cách thuận lợi để đọc và ghi XML,nhưng nó cũng có một số giới hạn.Điều đáng nói khi load một tài liệu XML vào DOM ,toàn bộ tài liệu phải được load vào bộ nhớ.Vào lúc này,DOM xây dựng toàn bộ cây mô tả tài liệu,với tất cả các node.Nghiã là khi ,khi file XML có kích thước lớn thì sẽ tốn nhiều bộ nhớ.Quá trình này cũng chiếm nhiều thời gian,đặc biệt khi cần một hoặc hai node trong tài liệu. Với XmlTextReader và XmlTextWriter đã cải thiện được hai điều của DOM : °Toàn bộ file không cần thiết đưa vào bộ nhớ trước khi xử lý document ° XmlTextReader và XmlTextWriter làm việc rất nhanh do không cần phải xây dựng cấu trúc cây. Tuy nhiên , XmlTextReader và XmlTextWriter có một số nhược điểm .Bởi vì chúng không lưu toàn bộ file vào bộ nhớ nên đôi khi khi trong việc liên hệ giữa một phần và các phần khác trong document. Sau đây là bảng thuộc tính và phương thức cuả XmlTextReader Tên Mô tả Các thuộc tính Name Tên của node hiện hành Node Type Kiểu của node hiện hành-là element,attribute,. Các phương thức Read Đọc node kế tiếp trong XML document.Mỗi lần phương thức này được gọi,đầu đọc di chuyển đến node kế tiếp. XmlTextReader được sử dụng để xây dựng tài liệu XML bằng cách thêm tag bắt đầu và kết thúc element. Tương tư, ta có bảng các phương thức và thuộc tính thường dùng của XmlTextWriter. Tên Mô tả Các thuộc tính Formatting Được sử dụng chỉ định XML kết qủa được định dạng.Nếu đặt là Formatting.Indented thì sẽ dễ dàng đọc hơn.Nếu đặt là Formatting.None ,tất cả XML sẽ hiển thị trên một dòng. Các phương thức Close Đóng Writer WriteElementString Tạo một element trong tài liệu.Element mới này bao gồm tag bắt đầu và tag kết thúc ,và văn bảng của element.Đây là phương thức nên dùng khi tạo một element đơn không có node con nào. WriteStartElement Tạo một element mới trong tài liệu.Phương thức này chỉ tạo tag bắt đầu.Đây là phương thức sử dụng để tạo các node con. WriterEndElement Ghi tag kết thúc cho element. CHƯƠNG II : PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG I. Phân tích đề tài Xác định mục tiêu của chương trình Nhiệm vụ của chương trình là tìm hiểu về C# và viết chương trình ứng dụng với Web service, trên đó ta có thể truy xuất các thông tin về chứng khoán ,dự báo thơì tiết và giá cả thị trường được cập nhật thường xuyên. Thêm vào đó ứng phải có những hướng dẫn thật đầy đủ, chi tiết về những tính năng, tác vụ, với mục tiêu là một người sử dụng bình thường, khi đọc qua những hướng dẫn, cũng có thể dễ dàng sử dụng ứng dụng này như một cách dễ dàng. Xác định cách hiện thực chương trình Do nhiệm vụ của đề tài viết chương trình ứng dụng WebService với ngôn ngữ lập trình là C#, do đó yêu cầu phải nắm vững những kiến thức cơ bản của C#, như các điều lệnh, các toán tử, các cấu trúc tuyển, cách làm việc với biến, với file,các đối tượng . Ngoài phải nắm vững các kiến thức cơ bản đó, chúng em còn phải tìm hiểu thêm các công nghệ liên quan đến Web service như : ADO.NET ,XML ,Windows Services ,SQL Server , COM,. . . để tiện cho việc triển khai ứng dụng sau này. Do yêu cầu của đề tài là tạo ra 1 ứng dụng Webservice , mà người sử dụng có thể sử dụng trên mạng. Vấn đề đặt ra là phải tìm một công cụ mà C# cung cấp để tạo ra một ứng dụng với khả năng đồ họa và tương tác cao với người sử dụng trên mạng và cả trên giao diện winform . Sau khi tìm hiểu các công cụ, vơí Visual Studio .net và kiến trúc hoạt động của .Net FrameWork đã hỗ trợ một cách hiệu qủa yêu cầu của ứng dụng. II.Thiết Kế Dữ Liệu II.1 .Thiết Kế Các Bảng Tên Bảng : tblCONGTYNIEMYET STT Thuộc Tính Kiểu Khoá chính Null/ NotNull Diễn Giải 01 MaCTy SỐ Khoá chính NotNull Mã số Công ty niêm yết chứng khoán 02 MaCK CHUỖI NotNull Mã chứng khoán 03 TenCTy CHUỖI Null Tên Công ty 04 LoaiHinhDoanh Nghiep CHUỖI Null Loại hình doanh nghiệp 05 DiaChi CHUỖI Null Điạ chỉ Công ty niêm yết 06 Dien Thoai CHUỖI Null Điện thọai Công Ty Niêm yết 07 NganhNgheKD CHUỖI Null Nghành nghề KD Tên Bảng tblDSCOPHIEU STT Thuộc Tính Kiểu Khoá chính Null/ NotNull Diễn Giải 01 MaCK CHUỖI Khoá chính NotNull Mã chứng khoán 02 TenCK CHUỖI Null Tên chứng Khoán Tên Bảng tblGIAODICHCOPHIEU STT Thuộc Tính Kiểu Khoá chính Null/ NotNull Diễn Giải 01 MaCK CHUỖI Khoá chính NotNull Mã chứng khoán 02 NgayGiaoDich DateTime Null Ngày GD 03 GiaCK CHUỔI Null Giá Chứng Khoán 04 LuongGiaoDich SỐ Null Lượng GD Chứng Khoán 05 GiaTriGiaoDich SỐ Null Giá Chứng Khoán 06 Phiên GD SỐ Null Phiên GD Tên Bảng tblDSTINHTHANHPHO STT Thuộc Tính Kiểu Khoá chính Null/ NotNull Diễn Giải 01 MaTTP CHUỖI Khoá chính NotNull Mã Điạ Điễm Nơi dự báo Thời Tiết 02 TenTTP CHUỖI Null Tên Địa Điểm Nơi dự báo Thời Tiết Tên Bảng tblTHOITIET STT Thuộc Tính Kiểu Khoá chính Null/ NotNull Diễn Giải 01 MaTTP CHUỖI Khoá chính NotNull Mã Điạ Điễm Nơi dự báo Thời Tiết 02 Ngay DateTime Null Ngày Dự Báo Thời Tiết 03 NhietDo SỐ Null Nhiệt Độ 04 MoTa CHUỖI Null Mô tả Tên Bảng tblDSNGOAITE STT Thuộc Tính Kiểu Khoá chính Null/ NotNull Diễn Giải 01 MaNgoaiTe CHUỖI Khoá chính NotNull Mã Ngoaị Tệ 02 TenNgoaiTe CHUỖI Null Tên Ngoại Tệ Tên Bảng tblTYGIANGOAITE STT Thuộc Tính Kiểu Khoá chính Null/ NotNull Diễn Giải 01 MaNgoaiTe CHUỖI Khoá chính NotNull Mã Ngoại Tệ 02 Ngay DateTime Null Ngày cập Nhật Ngoaị Tệ 03 TyGiaMua SỐ Null Tỷ Giá Mua 04 TyGiaBan SỐ Null Tỷ Giá Bán II.2. SỰ LIÊN HỆ GIỮA CÁC LOẠI THỰC THỂ : II.2 .1.ĐÁNH GIÁ DẠNG CHUẨN CỦA TỪNG LƯỢC ĐỒ QUAN HỆ tblCONGTYNIEMYET(MaCTy,MaCK,TenCTy, LoaiHinhDoanhNghiep,DiaChi,DienThoai,NganhNgheKD) Có tập phụ thuộc hàm tầm thường là: MaCTy -> MaCK,TenCTy,LoaiHinhDoanhNghiep, DiaChi,DienThoai,NganhNgheKD. Ta thấy rằng tất cả các thuộc tính không khóa : ”TenCTy,LoaiHinhDoanhNghiep, DiaChi,DienThoai,NganhNgheKD” đều phụ thuộc duy nhất vào khóa ” MaCTy” Nên ” MaCTy” là một siêu khóa Vậy tblCONGTYNIEMYET(MaCTy,MaCK,TenCTy, LoaiHinhDoanhNghiep,DiaChi,DienThoai,NganhNgheKD) đạt dạng chuẩn B-C tblDSCOPHIEU (MaCK, TenCK) Có tập phụ thuộc hàm tầm thường là:MaCK -> TenCK Ta thấy rằng thuộc tính không khóa :”TenCTy” phụ thuộc duy nhất vào khóa ” MaCK” Nên ” MaCK” là một siêu khóa Vậy tblDSCOPHIEU (MaCK, TenCK) đạt dạng chuẩn B-C tblGIAODICHCOPHIEU(MaCK,NgayGD,GiaCK,LuongGiaoDich, GiaTriGiaoDich,PhienGD) Có tập phụ thuộc hàm tầm thường là: MaCK,NgayGD -> GiaCK,LuongGiaoDich, GiaTriGiaoDich,PhienGD Ta thấy rằng tất cả các thuộc tính không khóa :” GiaCK,LuongGiaoDich, GiaTriGiaoDich,PhienGD” đều phụ thuộc đồng thời vào khóa “MaCK” và khóa”NgayGD” hay tất cả các thuộc tính không khóa đều phụ thuộc đầy đủ váo thuộc tính khóa Vậy tblGIAODICHCOPHIEU(MaCK,NgayGD,GiaCK,LuongGiaoDich, GiaTriGiaoDich,PhienGD) đạt dạng chuẩn 3 tblDSTINHTHANHPHO(MaTTP,TenTTP) Có tập phụ thuộc hàm tầm thường là:MaTTP -> TenTTP Ta thấy rằng thuộc tính không khóa :”TenTTP” phụ thuộc duy nhất vào khóa ” MaTTP” Nên ” MaTTP” là một siêu khóa Vậy tblDSTINHTHANHPHO(MaTTP,TenTTP) đạt dạng chuẩn B-C tblTHOITIET(MaTTP,Ngay,NhietDo,MoTa) Có tập phụ thuộc hàm tầm thường là: MaTTP,Ngay -> NhietDo,MoTa Ta thấy rằng tất cả các thuộc tính không khóa :” NhietDo,MoTa” đều phụ thuộc đồng thời vào khóa “MaTTP” và khóa”Ngay” hay tất cả các thuộc tính không khóa đều phụ thuộc đầy đủ váo thuộc tính khóa Vậy tblTHOITIET(MaTTP,Ngay,NhietDo,MoTa) đạt dạng chuẩn 3 tblDSNGOAITE(MaNgoaiTe,TenNgoaiTe) Có tập phụ thuộc hàm tầm thường là:MaNgoaiTe -> TenNgoaiTe Ta thấy rằng thuộc tính không khóa :”TenNgoaiTe” phụ thuộc duy nhất vào khóa ” MaNgoaiTe” Nên ” MaNgoaiTe” là một siêu khóa Vậy tblDSNGOAITE(MaNgoaiTe,TenNgoaiTe) đạt dạng chuẩn B-C TblTYGIANGOAITE(MaNgoaiTe,Ngay,TyGiaMua,TyGiaBan) Có tập phụ thuộc hàm tầm thường là: MaNgoaiTe,Ngay -> TyGiaMua,TyGiaBan Ta thấy rằng tất cả các thuộc tính không khóa :” TyGiaMua,TyGiaBan” đều phụ thuộc đồng thời vào khóa “MaNgoaiTe” và khóa”Ngay” hay tất cả các thuộc tính không khóa đều phụ thuộc đầy đủ váo thuộc tính khóa Vậy TblTYGIANGOAITE(MaNgoaiTe,Ngay,TyGiaMua,TyGiaBan) đạt dạng chuẩn 3 II.2 .2. CÁC RÀNG BUỘC Ký hiệu : RB : Ràng buộc T : Thêm X : Xóa S : Sửa + : Có thể gây nên vi phạm ràng buộc. - : Không thể gây ra vi phạm ràng buộc. Ràng Buộc Về Khóa (RB1) : MaCTy là Khóa Chính (Primary Key) của TABLE tblCONGTYNIEMYET. RB1 T X S tblCONGTYNIEMYET - - + (RB2) : MaCK là Khóa Chính (Primary Key) của TABLE tblDSCOPHIEU. RB2 T X S tblDSCOPHIEU - - + (RB3) : MACK,NgayGD là Khóa Chính (Primary Key) của TABLE tblGIAODICHCOPHIEU. RB3 T X S tblGIAODICHCOPHIEU - - + (RB4) : MaTTP là Khóa Chính (Primary Key) của TABLE tblDSTINHTHANHPHO. RB4 T X S tblDSTINHTHANHPHO - - + (RB5) : MATTP,Ngay là Khóa Chính (Primary Key) của TABLE tblTHOITIET. RB5 T X S TblTHOITIET - - + (RB6) : MaNgoaiTe là Khóa Chính (Primary Key) của TABLE tblDSNGOAITE. RB6 T X S TblDSNGOAITE - - + (RB7) : MaNgoaiTe,Ngay là Khóa Chính (Primary Key) của TABLE tblTYGIANGOAITE. RB7 T X S TblDSNGOAITE - - + Ràng Buộc Tham Chiếu (RB8) : " ck Ỵ tblDSCOPHIEU , $! ctyniemyet Ỵ tblCONGTYNIEMYET sao cho tblDSCOPHIEU.MaCK = tblCONGTYNIEMYET.MaCK RB8 T X S tblDSCOPHIEU + - + tblCONGTYNIEMYET - + + Ràng Buộc Liên Bộä (RB9) : " ck1, ck2 Ỵ tblDSCOPHIEU sao cho ck1[MaCK]¹ ck2[MaCK] RB9 T X S tblDSCOPHIEU + - + (RB10) : " tp1,tp2 Ỵ tblDSTINHTHANHPHO sao cho tp1[MaTTP]¹ tp2[MaTTP] RB9 T X S tblDSTINHTHANHPHO + - + (RB11) : " nt1,nt2 Ỵ TblDSNGOAITE sao cho nt1[MaNgoaiTe]¹ nt2[MaNgoaiTe] RB9 T X S TblDSNGOAITE + - + CHƯƠNG III : DEMO VÀ HÌNH ẢNH Màn hình giao diện dịch vụ Web Màn hình chính của chương trình truy cập dịch vụ web ªMỘT SỐ MÀN HÌNH GIAO DỊCH CHỨNG KHOÁN Màn hình Dịch Vụ Chứng Khoán Màn hình Xem Chứng Khóan Theo chỉ số chứng Khoán Màn hình Xem Chứng Khóan Phiên Giao Dịch Màn hình Xem Chứng Khóan Giao Dịch Trên Thị Trường Màn hình Dịch Vụ Thời Tiết Màn hình Dịch Vụ Ngoại Tệ CHƯƠNG IV: TỔNG KẾT & ĐÁNH GIÁ Nhiệm vụ của đề tài khi thiết kế chương trình này là để giúp đỡ những người sử dụng có thể nắm bắt thông tin được cập nhật thường xuyên về :thông tin chứng khoán ,thông tin thời tiết ,thông tin ngoại tệ thông qua webservice .Với webservice việc cập nhật dữ liệu sẽ nhanh chóng và chính xác hơn, đặc biệt đó là những thông tin thường được cập nhật trên internet. Và để thiết kế chương trình trên ta đã trải qua những bước chi tiết sau: - Nghiên cứu SQL Server ,Webservice,ADO.NET,.. - Nghiên cứu C# để viết mã cho Webservice - Xác định vấn đề cần giải quyết -Chuẩn hóa các quan hệ. -Xác định các ràng buộc toàn vẹn. -Cài đặt các table vào SQL. -Thiết kế và cài đặt các giao diện cho người sử dụng. Những yêu cầu đã đạt được: -Quá trình thực hiện đề tài đã giúp em tích lũy được nhiều kiến thức cũng như kinh nghiệm thực tế trong việc thiết kế các ứng dụng Web database. Từ việc cài đặt Internet Information Server, SQL Server, Windows Services, sử dụng các công cụ của Visual Studio.NET, cho đến việc tìm hiểu sâu hơn những nguyên lý hoạt động, phương thức tổ chức, quản trị và đặc biệt là khả năng tích hợp những dịch vụ được cung cấp bởi các hệ thống kể trên trong một ứng dụng Web. Qua làm việc với SQL Server, giúp chúng tôi có dịp tiếp cận được với một trong những hệ quản trị cơ sở dữ liệu client-server tiên tiến mà trước đây chúng tôi chưa biết sức mạnh của nó. -Đưa ra được mô hình hoạt động của Web Service và một số công nghệ liên quan .NET. -Có thể truy xuất thông tin một đầy đủ nhất . Hướng phát triển đề tài : -Ứng dụng WebService chưa cập nhật một cách linh hoạt thông tin trong một vài website thực tế trên internet :phân tích ,trích một số trang thông tin liên quan đưa vào Web service mà đòi hỏi người cung cấp WebService phải thường xuyên cập nhật dữ liệu . - Do yêu cầu đề tài nên chưa thể hiện hết chức năng của Web Service :baỏ mật ,quản trị ,phân quyền trong WebService . -Do vừa tìm hiểu vừa làm thử nên bước đầu tinh chế ứng dụng gặp nhiều khó khăn và kinh nghiệm xây dựng ứng dụng còn ít nên mức độ tiện dụng đối với người sử dụng chưa tốt. Tuy nhiên em đã cố gắng hết mình để ứng dụng đạt hiệu quả nhất. Đây là những giới hạn cơ bản của chương trình em sẽ cố gắng khắc phục trong thời gian kế./. Tài Liệu Tham Khảo XML Nền tảng và Ứng dụng Tác giả: Nguyễn Phương Lan Nhà xuất bản: Giáo Dục , năm 2001 Từng bước học lập trình Visual C++.Net Tác giả :Phương Lan , Hoàng Đức Hải Nhà xuất bản :Lao Động Xã Hội ,năm 2002 Lập trình C#.Net Tác giả :Phương Lan , Hoàng Đức Hải Nhà xuất bản :Lao Động Xã Hội ,năm 2002 Lập Trình C# Tác giả :Nguyễn Tiến,Nguyễn Phú ,Phạm Kỳ Nhà xuất bản :NXB Thống Kê Kỹ Thuật Lập Trình Ứng dụng chuyên nghiệp VB.NET ,tập 2 Tác giả :Phạm Hữu Khang Nhà xuất bản :Lao Động Xã Hội ,năm 2002 ADO.NET Tác giả :Nguyễn Tiến ,Ngyễn vũ Thịnh ,Hồ Bích Thuỷ Nhà xuất bản :Thống Kê ,năm 2002 Tự học VB.NET trong 21 ngày Tác giả :Hồ Hoàng Triết Nhà xuất bản :NXB Thống Kê ,năm 2002 8.www.vovisoft.com,www.hcmcstc.org.vn,www.home.vnn.vn, www.msdn.microsoft.com,www.vbip.com ,.v.v.

Các file đính kèm theo tài liệu này:

  • docBAOCAO.doc