Tôi đang viết một ứng dụng khách cho dịch vụ WCF. Đây là một ứng dụng duy nhất trong một hệ thống lớn hơn bao gồm các mô-đun được viết bằng C#, C++, VB và Java. Tất cả các ứng dụng đều có chung cấu hình và cơ chế ghi nhật ký, bất kể chúng được viết bằng ngôn ngữ nào..NET - triển khai ứng dụng khách WCF, không có app.config
Tôi muốn tìm hiểu cách xây dựng ứng dụng khách để ứng dụng chạy mà không có app.config. Tại sao? Bởi vì hầu hết những gì trong app.config là boilerplate rằng sysadmins không nên được phép thay đổi, và những thiết lập nào thì sysadmins nên được phép thay đổi nên ở trong cấu hình toàn hệ thống, chứ không phải trong tệp app.config ngồi trong thư mục bin.
Trường hợp tại điểm - app.config của khách hàng hiện nay trông như thế này:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="WSHttpBinding_ICourierService">
<security defaultAlgorithmSuite="Default" authenticationMode="SecureConversation"
...
</security>
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Default" writeEncoding="utf-8">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpTransport manualAddressing="false"
...
useDefaultWebProxy="true" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://localhost:57102/MyService.svc"
...
>
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
Đó là một loạt các soạn sẵn đục rằng quản trị hệ thống không cần phải giải quyết. Hầu hết nó đã được chèn bởi Visual Studio. Tôi đã thực hiện một thay đổi trong tệp - tôi đã tăng kích thước tối đa trong <readerQuotas/>
. Nhưng đó là một sự thay đổi mà tôi không muốn các sysadmins gây rối. Và không có gì khác trong tập tin tôi muốn các sysadmins gây rối với ngoại trừ <endpoint address=""/>
.
Và tôi đang kéo địa chỉ điểm cuối từ cấu hình trên toàn hệ thống và đặt nó trong mã. Không có gì trong tệp này nên người dùng có thể chỉnh sửa.
Vì vậy, làm cách nào để định cấu hình mọi thứ để tôi không cần phải có nó?
Tôi có thể nhúng nó làm tài nguyên trong hội đồng và móc vào quy trình tải app.config, cách tôi thực hiện với các DLL bắt buộc không?
Là lựa chọn duy nhất để tạo mã để định cấu hình mọi thứ, cách tôi đang sử dụng mã để đặt địa chỉ điểm cuối? Tạo các ràng buộc cần thiết, vv, trong mã? Làm thế nào, sau đó, tôi có biết mã nào để viết, cho các đoạn mã XML mờ đục này không?
Tôi nghĩ SysAdmins có thể thay đổi những thứ như cài đặt dịch vụ WCF, ngớ ngẩn cho tôi. – ChrisBint
Loại cài đặt nào? URL? Chắc chắn rồi. Bindings? Tại sao? Tôi đang xây dựng một khách hàng để nói chuyện với một dịch vụ đang chạy trên IIS. Không cần phải cho phép các hệ thống quản trị thay đổi ràng buộc thành một thứ gì đó ngoài HTTP. –
Làm thế nào về tên máy chủ và bất cứ điều gì để làm với thực sự nói chuyện với dịch vụ. – ChrisBint